Files
tianrunCRM/Assets/trCRM/upgradeRes4Dev/priority/lua/ui/panel/TRPNewFollow.lua
2020-08-07 22:40:04 +08:00

314 lines
10 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---@class _ParamTRPNewFollow
---@field cust
---@field followData
---@field bookingData
---@type IDBasePanel
local TRBasePanel = require("ui.panel.TRBasePanel")
---@class TRPNewFollow:TRBasePanel 邮件列表
local TRPNewFollow = class("TRPNewFollow", TRBasePanel)
local uiobjs = {}
local stars = {}
-- 初始化,只会调用一次
function TRPNewFollow:init(csObj)
TRPNewFollow.super.init(self, csObj)
self:initFiledsAttr()
self:setEventDelegate()
MyUtl.setContentView(getChild(self.transform, "PanelContent"), MyUtl.defaultTopHeight, 0)
---@type UIScrollView
uiobjs.scrollView = getCC(self.transform, "PanelContent", "UIScrollView")
uiobjs.scrollView.dampenStrength = MyUtl.dampenStrength
---@type UITable
uiobjs.Table = getCC(uiobjs.scrollView.transform, "Table", "UITable")
---@type CLUIFormRoot
uiobjs.DetailFromRoot = getCC(uiobjs.Table.transform, "DetailRoot", "CLUIFormRoot")
uiobjs.DetailRoot = getCC(uiobjs.Table.transform, "DetailRoot", "CLCellLua")
---@type UITable
uiobjs.DetailRootTabel = uiobjs.DetailRoot:GetComponent("UITable")
uiobjs.ButtonSave = getChild(self.transform, "Top/ButtonSave")
uiobjs.ButtonCustDetail = getChild(self.transform, "ButtonCustDetail")
end
---public 当有通用背板显示时的回调
---@param cs Coolape.CLPanelLua
function TRPNewFollow:onShowFrame(cs)
if cs.frameObj then
---@type _BGFrame1Param
local d = {}
-- d.title = LGet(cs.titleKeyName)
if self.isNewFollow then
d.title = "新建跟进"
else
d.title = "跟进详情"
end
d.panel = cs
cs.frameObj:init(d)
end
end
function TRPNewFollow:initFiledsAttr()
---@type _ParamFieldAttr
local attr
self.baseFiledsAttr = {}
attr = {}
attr.attrName = "商机"
attr.id = "opportunity"
attr.attrType = DBCust.FieldType.popuplist
attr.ifMust = 0
attr.donotJoinKey = true
local popInfor = DBCust.getFilter4Popup(DBCust.FilterGroup.opportunityList)
attr.popOptions = popInfor.options
attr.popValues = popInfor.values
table.insert(self.baseFiledsAttr, attr)
attr = {}
attr.attrName = "跟进类型"
attr.id = "followUpType"
attr.attrType = DBCust.FieldType.popuplist
attr.ifMust = 1
attr.donotJoinKey = true
local popInfor = DBCust.getFilter4Popup(DBCust.FilterGroup.followUpTypeList)
attr.popOptions = popInfor.options
attr.popValues = popInfor.values
table.insert(self.baseFiledsAttr, attr)
attr = {}
attr.attrName = "跟时时间"
attr.id = "recordingTime"
attr.attrType = DBCust.FieldType.dateTime
attr.ifMust = 1
attr.ifTime = 1
attr.donotJoinKey = true
table.insert(self.baseFiledsAttr, attr)
attr = {}
attr.attrName = "客户名称"
attr.id = "custName"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.donotJoinKey = true
table.insert(self.baseFiledsAttr, attr)
attr = {}
attr.attrName = "客户状态"
attr.id = "dealFlag"
attr.attrType = DBCust.FieldType.popuplist
attr.ifMust = 1
attr.donotJoinKey = true
local popInfor = DBCust.getFilter4Popup(DBCust.FilterGroup.dealFlagList)
attr.popOptions = popInfor.options
attr.popValues = popInfor.values
table.insert(self.baseFiledsAttr, attr)
attr = {}
attr.attrName = "跟进内容"
attr.id = "followUpContent"
attr.attrType = DBCust.FieldType.multext
attr.ifMust = 1
attr.donotJoinKey = true
table.insert(self.baseFiledsAttr, attr)
end
-- 设置数据
---@param paras _ParamTRPNewFollow
function TRPNewFollow:setData(paras)
self.cust = paras.cust
self.mdata = paras.followData
self.bookingData = paras.bookingData
if self.mdata and self.mdata.recordingTime then
self.isNewFollow = false
else
self.mdata = {}
self.mdata.custId = self.cust.custId
self.mdata.taskId = self.cust.taskId
self.mdata.custName = self.cust.custName
self.mdata.opportunity = "0"
self.mdata.followUpType = "0"
self.mdata.recordingTime = DateEx.nowString()
self.mdata.dealFlag = "0"
self.isNewFollow = true
end
end
-- 显示在c#中。show为调用refreshshow和refresh的区别在于当页面已经显示了的情况当页面再次出现在最上层时只会调用refresh
function TRPNewFollow:show()
if self.isNewFollow then
SetActive(uiobjs.ButtonCustDetail.gameObject, false)
else
---@type Coolape.CLPanelLua
local panel = CLPanelManager.getPanel("PanelCustDetail")
if panel and panel.gameObject.activeInHierarchy then
SetActive(uiobjs.ButtonCustDetail.gameObject, false)
else
SetActive(uiobjs.ButtonCustDetail.gameObject, true)
end
end
self:refreshContent()
SetActive(uiobjs.ButtonSave.gameObject, self.isNewFollow)
uiobjs.scrollView:ResetPosition()
end
function TRPNewFollow:refreshContent()
self:showBaseFields()
self.csSelf:invoke4Lua(self:wrapFunc(self.reposition), 0.1)
end
function TRPNewFollow:showBaseFields()
---@type _ParamCellExtendFiledRoot
local param = {}
param.data = self.mdata or {}
param.onFinish = self:wrapFunc(self.reposition)
param.onLoadOneField = self:wrapFunc(self.onLoadOneField)
param.fields = {}
---@type _ParamCellExtendFiled
local filedInfor
for i, v in ipairs(self.baseFiledsAttr) do
-- 工单模板
filedInfor = {}
filedInfor.attr = v
if v.id == "custName" then
filedInfor.showMode = _FieldMode.showOnly
else
if self.isNewFollow then
filedInfor.showMode = _FieldMode.inputOnly
else
filedInfor.showMode = _FieldMode.showOnly
end
end
if filedInfor.attr.attrType == DBCust.FieldType.multext then
filedInfor.onMultTextInputChg = self:wrapFunc(self.reposition)
end
filedInfor.onClick = nil
filedInfor.onSelect = self:wrapFunc(self.onPopupFieldValChg)
table.insert(param.fields, filedInfor)
end
uiobjs.DetailRoot:init(param, nil)
end
function TRPNewFollow:onLoadOneField(cell)
local el = cell:GetComponent("CLUIElement")
if el and el.jsonKey == "followUpContent" then
uiobjs.followUpContent = el
end
end
function TRPNewFollow:onPopupFieldValChg(go)
---@type CLUIElement
local el = go:GetComponent("CLUIElement")
if el.jsonKey == "dealFlag" then
if uiobjs.followUpContent then
local popList = go:GetComponent("UIPopupList")
if isNilOrEmpty(uiobjs.followUpContent.value) or self.oldselectedItem == uiobjs.followUpContent.value then
uiobjs.followUpContent.value = popList.selectedItem
self.oldselectedItem = popList.selectedItem
end
end
end
end
function TRPNewFollow:reposition()
uiobjs.DetailRootTabel.repositionNow = true
uiobjs.Table.repositionNow = true
end
-- 刷新
function TRPNewFollow:refresh()
end
-- 关闭页面
function TRPNewFollow:hide()
self.oldselectedItem = nil
if uiobjs.DetailRoot.luaTable then
uiobjs.DetailRoot.luaTable.release()
end
end
-- 网络请求的回调cmd指命succ成功失败msg消息paras服务器下行数据
function TRPNewFollow:procNetwork(cmd, succ, msg, paras)
if (succ == NetSuccess) then
if cmd == NetProto.cmds.update_customer then
self:refreshContent()
end
end
end
function TRPNewFollow:setEventDelegate()
self.EventDelegate = {
ButtonSave = function()
local err = uiobjs.DetailFromRoot:checkValid()
if not isNilOrEmpty(err) then
MyUtl.toastW(err)
return
end
self.mdata = uiobjs.DetailFromRoot:getValue(self.mdata, true)
if self.bookingData then
self.mdata.bookingId = self.bookingData.bookingId
end
showHotWheel()
NetProto.send.create_followUp_record(
self.mdata,
function(content)
hideHotWheel()
if content.success then
if self.bookingData then
-- 刷新预约的状态
self.bookingData.bookingDone = "1"
end
MyUtl.toastS("保存成功")
hideTopPanel(self.csSelf)
end
end
)
end,
InputTask = function()
self:showExtentFiles(uiobjs.InputTask.value)
end,
ButtonCustDetail = function()
showHotWheel()
NetProto.send.get_customerById(
self.mdata.custId,
function(content)
hideHotWheel()
if content.success then
local cust = content.result
---@type _ParamTRPCustDetail
local param = {}
param.cust = cust
param.bookingData = self.mdata
param.needShowMore = false
if cust then
getPanelAsy("PanelCustDetail", onLoadedPanelTF, param)
end
end
end
)
end
}
end
-- 处理ui上的事件例如点击等
function TRPNewFollow:uiEventDelegate(go)
local func = self.EventDelegate[go.name]
if func then
func()
end
end
-- 当顶层页面发生变化时回调
function TRPNewFollow:onTopPanelChange(topPanel)
end
--------------------------------------------
return TRPNewFollow