Files
tianrunCRM/Assets/trCRM/upgradeRes4Dev/priority/lua/ui/panel/TRPOrderDetail.lua
2020-08-04 21:58:27 +08:00

520 lines
17 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.

---@type IDBasePanel
local TRBasePanel = require("ui.panel.TRBasePanel")
---@class TRPOrderDetail:TRBasePanel
local TRPOrderDetail = class("TRPOrderDetail", TRBasePanel)
local uiobjs = {}
-- 初始化,只会调用一次
function TRPOrderDetail:init(csObj)
TRPOrderDetail.super.init(self, csObj)
self:prepareMoreData()
self:setEventDelegate()
uiobjs.TogglesPanel = getCC(self.transform, "Top/SpriteToggle/Toggles", "UIPanel")
local v4 = MyUtl.getUIContent(self.csSelf, 0, 0)
---@type UnityEngine.Vector4
local baseClipRegion = uiobjs.TogglesPanel.baseClipRegion
baseClipRegion.z = v4.z - 100
uiobjs.TogglesPanel.baseClipRegion = baseClipRegion
---@type UIScrollView
uiobjs.TogglesScroll = uiobjs.TogglesPanel:GetComponent("UIScrollView")
---@type UIGrid
uiobjs.ToggleGrid = getCC(uiobjs.TogglesPanel.transform, "Grid", "UIGrid")
---@type UIToggle
uiobjs.ToggleDetail = getCC(uiobjs.ToggleGrid.transform, "ToggleDetail", "UIToggle")
MyUtl.setContentView(getChild(self.transform, "PanelContent"), MyUtl.defaultTopHeight + 160 + 30, 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.DetailRoot = getCC(uiobjs.Table.transform, "DetailRoot", "CLCellLua")
uiobjs.ExtendRoot = getCC(uiobjs.Table.transform, "ExtendRoot", "CLCellLua")
uiobjs.ProductRoot = getCC(uiobjs.Table.transform, "ProductRoot", "UITable")
uiobjs.ProductPrefab = getChild(uiobjs.ProductRoot.transform, "00000").gameObject
---@type Coolape.CLUILoopGrid
uiobjs.Records = getCC(uiobjs.Table.transform, "Records", "CLUILoopGrid")
uiobjs.ButtonEndList = getChild(uiobjs.Records.transform, "ButtonEndList")
uiobjs.AttachmentRoot = getCC(uiobjs.Table.transform, "AttachmentRoot", "UIGrid")
uiobjs.AttachmentPrefab = getChild(uiobjs.AttachmentRoot.transform, "00000").gameObject
uiobjs.FinanceRoot = getCC(uiobjs.Table.transform, "FinanceRoot", "CLCellLua")
---@type Coolape.CLUILoopGrid
uiobjs.SubOrders = getCC(uiobjs.Table.transform, "SubOrders", "CLUILoopGrid")
uiobjs.ButtonEndListSub = getChild(uiobjs.SubOrders.transform, "ButtonEndList")
end
function TRPOrderDetail:prepareMoreData()
self.baseFileds = {}
---@type _ParamFieldAttr
local attr = {}
attr.id = "id"
attr.attrName = "订单ID"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "title"
attr.attrName = "订单名称"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "templetName"
attr.attrName = "订单模板"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "urgency"
attr.attrName = "紧急程度"
attr.attrType = DBCust.FieldType.popuplist
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
local popInfor = DBOrder.getPopupList(DBOrder.PopListGroup.urgencyLevels)
attr.popOptions = popInfor.options
attr.popValues = popInfor.values
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "custName"
attr.attrName = "客户名称"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "_phoneNo"
attr.attrName = "联系方式"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "companyName"
attr.attrName = "公司名称"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "address"
attr.attrName = "联系地址"
attr.attrType = DBCust.FieldType.text
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
attr = {}
attr.id = "content"
attr.attrName = "订单内容"
attr.attrType = DBCust.FieldType.multext
attr.ifMust = 0
attr.height = 160
attr.donotJoinKey = true
table.insert(self.baseFileds, attr)
--------------------------------------------
end
-- 设置数据
---@param paras _ParamTRPOrderDetail
function TRPOrderDetail:setData(paras)
self.mdata = paras
self.mdata._phoneNo = MyUtl.hidePhone(self.mdata.phoneNo)
if type(self.mdata.attrJson) == "string" then
self.mdata.attrJson = json.decode(self.mdata.attrJson)
end
if type(self.mdata.prodJson) == "string" then
self.mdata.prodJson = json.decode(self.mdata.prodJson)
end
if type(self.mdata.wfOptJson) == "string" then
self.mdata.wfOptJson = json.decode(self.mdata.wfOptJson)
end
end
---public 当有通用背板显示时的回调
---@param cs Coolape.CLPanelLua
function TRPOrderDetail:onShowFrame(cs)
if cs.frameObj then
---@type _BGFrame1Param
local d = {}
-- d.title = LGet(cs.titleKeyName)
d.title = self.mdata.companyName
d.panel = cs
cs.frameObj:init(d)
end
end
-- 显示在c#中。show为调用refreshshow和refresh的区别在于当页面已经显示了的情况当页面再次出现在最上层时只会调用refresh
function TRPOrderDetail:show()
self.records = nil
uiobjs.ToggleDetail:Set(true)
self.currToggle = 1
uiobjs.TogglesScroll:ResetPosition()
self:showDetail()
end
function TRPOrderDetail:showDetail()
self:release()
SetActive(uiobjs.DetailRoot.gameObject, true)
SetActive(uiobjs.FinanceRoot.gameObject, false)
SetActive(uiobjs.Records.gameObject, false)
SetActive(uiobjs.AttachmentRoot.gameObject, false)
SetActive(uiobjs.SubOrders.gameObject, false)
self:showBaseFileds()
self:reposition()
end
function TRPOrderDetail:showProducts()
if #self.mdata.prodJson > 0 then
SetActive(uiobjs.ProductRoot.gameObject, true)
CLUIUtl.resetList4Lua(
uiobjs.ProductRoot,
uiobjs.ProductPrefab,
self.mdata.prodJson,
self:wrapFunc(self.initProductCell)
)
else
SetActive(uiobjs.ProductRoot.gameObject, false)
end
self:reposition()
end
function TRPOrderDetail:initProductCell(cell, data)
local formRoot = cell:GetComponent("CLUIFormRoot")
formRoot:setValue(data)
end
function TRPOrderDetail:reposition()
uiobjs.Table:Reposition()
uiobjs.scrollView.disableDragIfFits = true
uiobjs.scrollView:ResetPosition()
self.csSelf:invoke4Lua(
function()
uiobjs.scrollView:ResetPosition()
end,
0.1
)
end
function TRPOrderDetail:showBaseFileds()
---@type _ParamCellExtendFiledRoot
local param = {}
param.data = self.mdata or {}
param.onFinish = function()
self:showExtentFiles(self.mdata.templetId)
self:showProducts()
self:wrapFunc(self.reposition)
end
param.fields = {}
local fields = self.baseFileds
---@type _ParamCellExtendFiled
local filedInfor
for i, v in ipairs(fields) do
filedInfor = {}
filedInfor.attr = v
filedInfor.showMode = _FieldMode.showOnly
table.insert(param.fields, filedInfor)
end
uiobjs.DetailRoot:init(param, nil)
end
---public 显示扩展字段
function TRPOrderDetail:showExtentFiles(templetId)
---@type _ParamCellExtendFiledRoot
local param = {}
param.data = self.mdata and self.mdata.attrJson or {}
param.onFinish = self:wrapFunc(self.reposition)
param.fields = {}
local fields = DBCust.getFieldsByTask(templetId) or {}
---@type _ParamCellExtendFiled
local filedInfor
for i, v in ipairs(fields) do
filedInfor = {}
filedInfor.attr = v
filedInfor.showMode = _FieldMode.showOnly
table.insert(param.fields, filedInfor)
end
if #fields > 0 then
SetActive(uiobjs.ExtendRoot.gameObject, true)
uiobjs.ExtendRoot:init(param, nil)
else
SetActive(uiobjs.ExtendRoot.gameObject, false)
end
end
function TRPOrderDetail:showAttachment()
self:release()
SetActive(uiobjs.DetailRoot.gameObject, false)
SetActive(uiobjs.ExtendRoot.gameObject, false)
SetActive(uiobjs.ProductRoot.gameObject, false)
SetActive(uiobjs.AttachmentRoot.gameObject, true)
SetActive(uiobjs.Records.gameObject, false)
SetActive(uiobjs.FinanceRoot.gameObject, false)
SetActive(uiobjs.SubOrders.gameObject, false)
CLUIUtl.resetList4Lua(
uiobjs.AttachmentRoot,
uiobjs.AttachmentPrefab,
self.mdata.wfOptJson,
self:wrapFunc(self.initAttachmentCell)
)
self:reposition()
end
function TRPOrderDetail:initAttachmentCell(cell, data)
cell:init(data, self:wrapFunc(self.onClickAttachment))
end
function TRPOrderDetail:onClickAttachment(cell, data)
end
function TRPOrderDetail:showRecords()
self:release()
SetActive(uiobjs.DetailRoot.gameObject, false)
SetActive(uiobjs.ExtendRoot.gameObject, false)
SetActive(uiobjs.ProductRoot.gameObject, false)
SetActive(uiobjs.AttachmentRoot.gameObject, false)
SetActive(uiobjs.Records.gameObject, true)
SetActive(uiobjs.FinanceRoot.gameObject, false)
SetActive(uiobjs.SubOrders.gameObject, false)
if self.records then
uiobjs.Records:setList(
self.records.data or {},
self:wrapFunc(self.initRecordCell),
self:wrapFunc(self.onHeadList),
self:wrapFunc(self.onEndList)
)
else
showHotWheel()
NetProto.send.query_cust_calllog(self.mdata.phoneNo, nil, 1)
uiobjs.Records:setList({}, self:wrapFunc(self.initRecordCell))
end
MyUtl.toastW("TODO:流转记录接口还没有")
self:reposition()
end
function TRPOrderDetail:initRecordCell(cell, data)
cell:init(data, nil)
end
function TRPOrderDetail:onHeadList(head)
printw("到最顶端了")
end
function TRPOrderDetail:onEndList(tail)
printw("到最后了==" .. tail.name)
if self.records and self.records.meta.current_page < self.records.meta.total_pages then
showHotWheel()
-- 取得下一页
NetProto.send.query_cust_calllog(self.mdata.phoneNo, nil, self.records.meta.current_page + 1)
else
uiobjs.ButtonEndList.localPosition = tail.transform.localPosition + Vector3.up * -270
SetActive(uiobjs.ButtonEndList.gameObject, true)
end
end
function TRPOrderDetail:showFinance()
self:release()
SetActive(uiobjs.DetailRoot.gameObject, false)
SetActive(uiobjs.ExtendRoot.gameObject, false)
SetActive(uiobjs.ProductRoot.gameObject, false)
SetActive(uiobjs.AttachmentRoot.gameObject, false)
SetActive(uiobjs.Records.gameObject, false)
SetActive(uiobjs.FinanceRoot.gameObject, true)
SetActive(uiobjs.SubOrders.gameObject, false)
MyUtl.toastW("TODO:财务数据怎么来??")
self:reposition()
end
function TRPOrderDetail:showSubOrders()
self:release()
SetActive(uiobjs.DetailRoot.gameObject, false)
SetActive(uiobjs.ExtendRoot.gameObject, false)
SetActive(uiobjs.ProductRoot.gameObject, false)
SetActive(uiobjs.AttachmentRoot.gameObject, false)
SetActive(uiobjs.Records.gameObject, false)
SetActive(uiobjs.FinanceRoot.gameObject, false)
SetActive(uiobjs.SubOrders.gameObject, true)
MyUtl.toastW("TODO:子订单数据怎么来??")
self:reposition()
end
-- 刷新
function TRPOrderDetail:refresh()
end
function TRPOrderDetail:release()
if uiobjs.ExtendRoot.luaTable then
uiobjs.ExtendRoot.luaTable.release()
end
if uiobjs.DetailRoot.luaTable then
uiobjs.DetailRoot.luaTable.release()
end
end
-- 关闭页面
function TRPOrderDetail:hide()
self:release()
end
-- 网络请求的回调cmd指命succ成功失败msg消息paras服务器下行数据
function TRPOrderDetail:procNetwork(cmd, succ, msg, paras)
if (succ == NetSuccess) then
if cmd == NetProto.cmds.query_cust_calllog then
local result = paras.result
if self.records == nil then
self.records = result
else
if self.records.meta.current_page < result.meta.current_page then
self.records.meta = result.meta
for i, v in ipairs(result.data) do
table.insert(self.records.data, v)
end
end
end
hideHotWheel()
if self.records and uiobjs.Records.gameObject.activeInHierarchy then
if self.records.meta.current_page == 1 then
self:showRecords()
else
uiobjs.Records:appendList(result.data)
end
end
end
end
end
function TRPOrderDetail:setEventDelegate()
self.EventDelegate = {
ToggleDetail = function()
self.currToggle = 1
self:showDetail()
end,
ToggleAttachment = function()
self.currToggle = 2
self:showAttachment()
end,
ToggleProcessHis = function()
self.currToggle = 3
self:showRecords()
end,
ToggleFinance = function()
self.currToggle = 4
self:showFinance()
end,
ToggleSub = function()
self.currToggle = 5
self:showSubOrders()
end,
ButtonAddAttachment = function(go)
self:addAttachment(go)
end,
ButtonAddMoney = function()
end,
ButtonAddLogistics = function()
end,
ButtonAdd = function()
end
}
end
function TRPOrderDetail:addAttachment(go)
-- 添加附件
---@type UIPopupList
local popList = go:GetComponent("UIPopupList")
if popList.value == "1" then
-- 相机
local permission = MyCamera.getImage(self:wrapFunc(self.onGetImage))
if permission ~= NativeCamera.Permission.Granted then
if permission == NativeCamera.Permission.ShouldAsk then
NativeCamera.RequestPermission()
else
CLUIUtl.showConfirm(
"没有使用相机的权限,打开设置允许使用相机",
function()
if not MyCamera.openSetting() then
MyUtl.toastW("打开权限设置失败")
end
end,
nil
)
end
end
elseif popList.value == "2" then
local permission = MyGallery.getImage(self:wrapFunc(self.onGetImage))
if permission ~= NativeGallery.Permission.Granted then
if permission == NativeGallery.Permission.ShouldAsk then
NativeGallery.RequestPermission()
else
CLUIUtl.showConfirm(
"没有使用相册的权限,打开设置允许使用相册",
function()
if not MyGallery.openSetting() then
MyUtl.toastW("打开权限设置失败")
end
end,
nil
)
end
NativeCamera.RequestPermission()
end
end
end
function TRPOrderDetail:onGetImage(path)
if isNilOrEmpty(path) then
return
end
-- table.insert(self.images, {path = path, onDelete = self:wrapFunc(self.onDelImage)})
--//TODO:
MyUtl.toastW("接口要修改")
end
-- 处理ui上的事件例如点击等
function TRPOrderDetail:uiEventDelegate(go)
local func = self.EventDelegate[go.name]
if func then
func(go)
end
end
-- 当顶层页面发生变化时回调
function TRPOrderDetail:onTopPanelChange(topPanel)
end
--------------------------------------------
return TRPOrderDetail