Files
tianrunCRM/Assets/trCRM/upgradeRes4Dev/priority/lua/ui/cell/TRCellExtendFieldRoot.lua
2020-07-08 08:01:34 +08:00

128 lines
3.3 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.

-- xx单元
local _cell = {}
---@type Coolape.CLCellLua
local csSelf = nil
local transform = nil
local mData = nil
local uiobjs = {}
---@type _DBCust
local cust
local fields
local fieldsObjs = {}
local isEditMode = true
local taskId = nil
local isFieldLoading = false
local oldtaskId
-- 初始化,只调用一次
function _cell.init(csObj)
csSelf = csObj
transform = csSelf.transform
---@type CLUIFormRoot
uiobjs.formRoot = csSelf:GetComponent("CLUIFormRoot")
---@type UITable
uiobjs.Table = csSelf:GetComponent("UITable")
end
-- 显示,
-- 注意c#侧不会在调用show时调用refresh
function _cell.show(go, data)
mData = data
cust = data.data or {}
isEditMode = data.isEditMode
_cell.release()
local taskId = tostring(cust.taskId)
if (not isFieldLoading) or taskId ~= oldtaskId then
isFieldLoading = true
oldtaskId = taskId
fields = DBCust.getFieldsByTask(taskId)
if fields and #fields > 0 then
showHotWheel()
_cell.initField(1, taskId)
end
end
end
function _cell.initField(index, taskId)
if taskId ~= oldtaskId then
return
end
local fileAttr = fields[index]
local name = ""
if fileAttr.attrType == DBCust.FieldType.popuplist then
name = "InputPoplist"
elseif fileAttr.attrType == DBCust.FieldType.dateTime then
name = "InputDate"
elseif fileAttr.attrType == DBCust.FieldType.multext then
name = "InputMultText"
elseif fileAttr.attrType == DBCust.FieldType.checkbox then
name = "InputCheckboxs"
else
name = "InputText"
end
CLUIOtherObjPool.borrowObjAsyn(name, _cell.onLoadField, {index = index, taskId = taskId})
end
---@param go UnityEngine.GameObject
function _cell.onLoadField(name, go, orgs)
local index = orgs.index
local taskId = orgs.taskId
if taskId ~= oldtaskId then
hideHotWheel()
CLUIOtherObjPool.returnObj(go)
SetActive(go, false)
return
end
go.transform.parent = transform
go.transform.localScale = Vector3.one
go.transform.localEulerAngles = Vector3.zero
local fileAttr = fields[index]
local cell = go:GetComponent("CLCellLua")
SetActive(go, true)
cell:init(
{
attr = fileAttr,
parent = _cell,
isEditMode = isEditMode,
onClick = mData.onClick,
onSelect = mData.onSelect
},
nil
)
table.insert(fieldsObjs, cell)
uiobjs.Table:Reposition()
if index == #fields then
_cell.onFinisInitFields()
else
_cell.initField(index + 1, taskId)
end
end
function _cell.onFinisInitFields()
isFieldLoading = false
uiobjs.Table:Reposition()
uiobjs.formRoot:setValue(cust.jsonStr)
Utl.doCallback(mData.onFinish)
hideHotWheel()
end
function _cell.release()
for i, v in ipairs(fieldsObjs) do
SetActive(v.gameObject, false)
CLUIOtherObjPool.returnObj(v.gameObject)
end
fieldsObjs = {}
end
function _cell.onMultTextInputChg()
uiobjs.Table.repositionNow = true
end
-- 取得数据
function _cell.getData()
return mData
end
--------------------------------------------
return _cell