盗墓笔记第二季,我欲封天 耳根 小说,《完美世界》txt全集 http://www.shyd8.com PDM產品數據管理軟件、項目管理系統 Fri, 17 Jan 2025 00:44:41 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.3 http://www.shyd8.com/wp-content/uploads/2022/11/cropped-plmico512-32x32.png 低代碼 – 共好plm系統 http://www.shyd8.com 32 32 mobox3打開某一個項目后進入項目領域里面的3000功能獲取prjid方法 http://www.shyd8.com/3149/ Fri, 17 Jan 2025 00:44:41 +0000 http://www.shyd8.com/?p=3149 — 項目領域進入后,里面的3000功能獲取Prj_id 方法
? ? local nRet, strRetInfo
? ? — 獲取外部輸入參數
? ? nRet, strRetInfo = mobox.getCurEditExtInfo(strLuaDEID)
? ? if (nRet ~= 0 ) then
? ? ? ? Error( strLuaDEID, debug.getinfo(1), strRetInfo)
? ? ? ? return
? ? end
? ? local tTmp = json.decode(strRetInfo)
? ? local tP = tTmp.urlParams
? ? if (tP == nil) then
? ? ? ? Error( strLuaDEID, debug.getinfo(1), “輸入參數有問題!”)
? ? ? ? return
? ? end
? ? local strPrjID = tP.prjId
? ? if (strPrjID == nil) then
? ? ? ? Error( strLuaDEID, debug.getinfo(1), “獲取項目標識失敗!”)
? ? ? ? return
? ? end
? ? strPrjID = strPrjID:match(“{(.-)}”) — 去掉 {}
]]>
MBC客戶端擴展視圖功能配置過程 http://www.shyd8.com/3087/ Sat, 14 Sep 2024 06:56:25 +0000 http://www.shyd8.com/?p=3087 MBC是可以為企業即時通訊AM、企業文檔管理系統Mobox、項目管理系統Gungho多系統的前端表現端。在企業業務擴展的情況下甚至可以將mobox3定義的功能點擴展到 MBC客戶端

mobox3的功能點擴展的MBC客戶端的配置實現方式

1、人員管理里面需要定義 應用程序

需要定義 3個應用 (應用名稱 不能變)

MOBOX3

OIOrgSAPI

OIMoboxSAPI

OIDataSAPI

其它2個服務類似

 

pack)20241113
增加? OIDataSAPI 的配置, MBC客戶端也需要更換。 解決 MBC與Mobx3網頁集成的時候,獲取當前客戶端的 MAC地址

2、mobox3定義的功能領域可以發布到 MBC客戶端

3、MBC客戶端效果圖

]]>
mobox3 lua 開發過程中數據獲取及Json格式處理 http://www.shyd8.com/3069/ Tue, 03 Sep 2024 05:53:26 +0000 http://www.shyd8.com/?p=3069 lua 開發過程中,我們需要對當前窗體的數據進行獲取,之后進行二次開發演變為我們需要的數據,并重新給窗體的各字段賦值。

1、獲取當前窗體上所需字段的數值

nRet, strRetInfo = mobox.getCurEditDataObjAttr(strLuaDEID, “G_PRJ_ID”, “S_PRJ_CODE”, “S_PRJ_NAME”, “S_PM_NAME”, “S_PD_NAME”)

2、得到Json字符串(strRetInfo)內容描述(暫且我們稱之為 mobox3 格式)

[

{

“attr”: “G_PRJ_ID”,

“value”: “”

},

{

“attr”: “S_PRJ_CODE”,

“value”: “PM-0002”

},

{

“attr”: “S_PRJ_NAME”,

“value”: “pcy 0999 hard”

},

{

“attr”: “S_PM_NAME”,

“value”: “金振興”

},

{

“attr”: “S_PD_NAME”,

“value”: “”

}
]

3、將得到的Json字符串(strRetInfo)轉變為Json標準的表格式(strOBJInfo )

nRet, strOBJInfo = mobox.objAttrToObjJson (‘JS001’, strRetInfo )

注意:strOBJInfo 得到其實還是一個Json字符串,但其是一個標準的Json表格式表達

具體 objAttrToObjJson 函數怎么用查看手冊

4、得到Json表字符串(strOBJInfo )(是一種 json對表的標準格式)

{

“cls”: “JS001”,

“ver”: 1,

“G_PRJ_ID”: “”,

“S_PRJ_CODE”: “PM-0002”,

“S_PRJ_NAME”: “pcy 0999 hard”,

“S_PM_NAME”: “金振興”
}

注意:這個Json格式是標準表格式字符串表達。

5、我們需要將這個字符串轉為表(tbOBJ)

local tbOBJ = json.decode (strOBJInfo)

注,只有變成表后,我們可以這樣來理解這個表:

字段名 cls ver G_PRJ_ID S_PRJ_CODE S_PRJ_NAME S_PM_NAME
數值 JS001 1 PM-0002 pcy 0999 hard 金振興

6、數據取值與賦值

取值方法:

local strPMName

strPMName = tbOBJ.S_PRJ_NAME

賦值方法:

tbOBJ.S_PRJ_NAME = ‘潘元元’

 

完整代碼

local strRetInfo , strOBJInfo

local tbOBJ ={}

 

— 得到當前窗體上指定字段的json字符串
nRet, strRetInfo = mobox.getCurEditDataObjAttr(strLuaDEID, “G_PRJ_ID”, “S_PRJ_CODE”, “S_PRJ_NAME”, “S_PM_NAME”, “S_PD_NAME”)

— 將json字符串(mobox3)格式轉為 json標準表格式
nRet, strOBJInfo = mobox.objAttrToObjJson (‘JS001’, strRetInfo )

–將json字符串轉變為表
tbOBJ = json.decode (strOBJInfo)

 

— 獲取表字段內容及設置表字段值
local strPMName
strPMName = tbOBJ.S_PM_NAME
tbOBJ.S_PM_NAME = ‘潘元元’

 

若需要將數據轉會mobox3數據格式

–將表轉變為json字符串(標準格式)
strOBJInfo = json.encode (tbOBJ)

— 將json標準表格式格式轉為 json字符串(mobox3)
nRet, strRetInfo = mobox.objJsonToObjAttr (‘JS001’, strOBJInfo )

 

 

 

 

]]>
lua 對回車(%3Cbr%3E)處理方法 http://www.shyd8.com/2537/ Thu, 11 Apr 2024 05:02:28 +0000 http://www.shyd8.com/?p=2537 我們在Gird列出數據的時候,若數據內帶%3Cbr%3E,其實是回車的意思,若grid讀出數據不做任何處理,那么就會影響系統表達

為了解決這個問題,我們可以編輯一個lua腳本,將這個數據做處理后再顯示(在顯示前事件里面定義這個lua腳本)

腳本列子

–[[
? ? 功能說明:
? ? ? ? 1) 顯示前做一些字段的處理
? ? ? ? 2)前端導入,新增有換行符號 %%3Cbr%%3E  ,替換成 <br> 前端html支持的換行內容
? ? ? ? 3)內容中有&,替換成 & 前端解析 &不支持,最好在輸入時進行替換
–]]
json = require(“json”)
mobox = require(“OILua_JavelinExt”)
require(“oi_basestrfunc”)
function BeforeGridShow(strLuaDEID)
? ? local nRet, strRetInfo
? ? local arobjs, attrs, success
? ? — 獲取輸入的DataJson數據包
? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)
? ? if (nRet ~= 0) then
? ? ? ? mobox.error(strLuaDEID, “無法獲取數據包!”)
? ? ? ? return
? ? end
? ? if (strRetInfo == ” or strRetInfo == nil) then
? ? ? ? return
? ? end
? ? — 解析數據包,數據包格式
? ? — [{“id”:””,”attrs”:[{“attr”:””,”value”:””},..]},..]
? ? local n, nCount
? ? success, arobjs = pcall(json.decode, strRetInfo)
? ? if (success == false) then
? ? ? ? mobox.error(strLuaDEID, “非法的JSON格式!”)
? ? ? ? return
? ? end
? ? nCount = #arobjs
? ? if (nCount == 0) then
? ? ? ? return
? ? end
? ? local obj, attrs
? ? local nattr_count
? ? local strRow, strAttr, strItem
? ? local strDataJson
? ? local id, strValue
? ? local strAttrs
? ? strDataJson = ‘[‘
? ? local seg = {}
? ? local nSegCount = 0
? ? for n = 1, nCount do
? ? ? ? obj = arobjs[n]
? ? ? ? attrs = obj.attrs
? ? ? ? nattr_count = #attrs
? ? ? ? id = obj.id
? ? ? ? strAttrs=”
? ? ? ? — 開始過濾顯示數據對象屬性
? ? ? ? for nIndex = 1, nattr_count do
? ? ? ? ? ? strAttr = attrs[nIndex].attr
? ? ? ? ? ? strValue = attrs[nIndex].value
? ? ? ? ? ? strValue = strValue:gsub(“%%3Cbr%%3E”, “<br>”)
? ? ? ? ? ? strValue = strValue:gsub(“&”, “&”)
? ? ? ? ? ? strItem = ‘{“attr”:”‘ .. strAttr .. ‘”,”value”:”‘ .. strValue .. ‘”},’
? ? ? ? ? ? strAttrs = strAttrs .. strItem
? ? ? ? end
? ? ? ? — 取消最后一個,號
? ? ? ? strAttrs = trim_laster_char(strAttrs)
? ? ? ? strRow = ‘{“id”:”‘ .. id .. ‘”,”attrs”:[‘ .. strAttrs .. ‘]},’
? ? ? ? strDataJson = strDataJson .. strRow
? ? end
? ? — 取消最后一個,號
? ? strDataJson = trim_laster_char(strDataJson)
? ? strDataJson = strDataJson .. ‘]’
? ? local strAction = ‘[{“action_type”:”reset_data_attr”,”value”:’ .. strDataJson .. ‘}]’
? ? mobox.setAction(strLuaDEID, strAction)
end
這個列子也可以用于別的一些非法字符串的處理
]]>
Gungho項目擴展屬性二次開發的實現過程 http://www.shyd8.com/2224/ Thu, 29 Feb 2024 04:27:33 +0000 http://www.shyd8.com/?p=2224 Gungho個性項目屬性描述二次開發的實現過程

 

企業在實施項目管理系統的時候,不通類型的項目其屬性可能是不一樣的。而Gungho標準系統內對項目的屬性,主要包括(項目名稱、編號、開始結束日期等)。為了適應企業個性項目信息的輸入,我們需要通過Mobox平臺定義項目類型去適應這個需求

 

項目類型定義過程

Sa 登錄mobox低代碼開發平臺

進入數據模型(001功能點)創建數據對象

創建一個用于描述項目擴展屬性的數據對象

注意:業務類型必須是 項目

接下來需要做的內容,這里不具體展開

    • 設置數據對象的相關字段屬性
    • 設置數據對象的Gird(列表)
    • 設置數據對象的窗口(界面)
    • 及可能涉及的二次開發

進入項目類型定義(8012功能點)創建項目類型

  • 新建項目類型(基礎)

基礎:主要是綁定哪個數據對象及相關的界面

 

  • 新建項目類型(功能)

功能:主要是可以自定義該類型項目的自定義菜單 (參考下圖)

效果

我們在gungho登錄后,新建項目

]]>
基于Mobox對Gungho任務二次開發的實現 http://www.shyd8.com/2153/ Fri, 23 Feb 2024 03:40:01 +0000 http://www.shyd8.com/?p=2153 基于Mobox對Gungho任務二次開發的實現

 

Gungho項目管理軟件在企業部署的時候因其業務的個性,很有可能需要對任務做各種各樣的二次開發,從而適應企業需求

 

舉例:

某檢測檢驗中心,在做叉車整車檢測的時候會分解出100多個的檢測任務,每一個任務除了要求員工按時間要求完成以外,還需將每個檢測任務所獲取的數據等級下來。這個數據可能是一個表,而且每一個任務所對應的填寫數據也都是不一樣的。

這樣一個需求,我們就必須對任務做二次開發

 

實現過程如下

用sa 登錄Mobox平臺,進入系統管理模塊

  • 增加功能點 任務類型及二次開發 功能點編號(8203)

  • 字典里面增加:SysTaskType,里面定義任務類型的名稱

定義的任務類型名稱,在后面會用到

 

  • 進入二次開發 – gungho領域 – TASK任務 – 自定義事件

開發一個腳本:任務點擊后 腳本 (目的是 任務點擊后能將 prj_id,task_id 等設置到全局變量)

這個任務點擊后(lua腳本)是標準的

 

json?? = require(“json”)

mobox = require(“OILua_JavelinExt”)

require(“oi_basestrfunc”)

 

function AfterClickTask(strLuaDEID)

??? local nRet, strRetInfo, strTaskID,strClsID

 

???? –獲取當前點中的任務對象標識

???? nRet, strClsID, strTaskID = mobox.getCurEditDataObjID( strLuaDEID )

???? if ( nRet ~=0 ) then

???????? mobox.error( strLuaDEID, “獲取當前點中任務對象標識失敗!” )

???????? return

???? end

??? –獲取任務內容

??? nRet, strRetInfo = mobox.getTaskAttr(strLuaDEID,strTaskID, “CN_G_PRJ_ID”)

??? if (nRet ~= 0) then

??????? mobox.error(strLuaDEID, strRetInfo)

??????? return

??? end

??? local taskAttr = json.decode(strRetInfo)

??? local strPrjID = taskAttr[1].value

 

??? if (strPrjID == nil or strPrjID == nil) then

??????? mobox.error(strLuaDEID, “獲取項目信息失敗!”)

??????? return

??? end

??? –去掉空格

??? strPrjID = trim_guid_str(strPrjID)

??? — 把項目ID ,任務ID 加入全局變量

??? local strGlobalAttrs = ‘{“attr”:”prj_id”,”value”:”‘ .. strPrjID .. ‘”}’

??? strGlobalAttrs = strGlobalAttrs .. ‘,{“attr”:”task_id“,”value”:”‘ .. strTaskID .. ‘”}’

??? local strAction = ‘[{“action_type”:”set_global_attr”,”value”:[‘ .. strGlobalAttrs .. ‘]}]’

??? mobox.setAction(strLuaDEID, strAction)

end

 

這個腳本目的是生成 全局變量prj_id , task_id 。 這2個變量描述了當前任務所屬項目唯一標識任務唯一標識。是Gungho系統向Mobox平臺傳遞核心參數,Mobox后期二次開發的時候都需要用到。

注意,這里定義的全局變量 名稱在后期調用的是要完全一樣

這個腳本,會在后面文章的:任務分類定義 –? 事件點擊后事件用到) 參考

 

  • 數據模型定義 (用于任務擴展屬性的定義)

按需分別定義數據模型,及模型里面的字段。這里不詳細展開(需要有mobox二次開經驗)

 

定義小窗口的時候需要注意,有一個窗口初始化腳本要執行(目的是個小窗口內設置prj_id, task_id)

 

  • 按功能定義各種需要的腳本

因為是與Gungho集成,前面描述過gungho的全局變量,這里開發的時候已經可以使用這些變量(prj_id , task_id)

根據需求,圍繞數據模型做二次開發(可能有很多過個腳本,按需求開發)比如

1)查詢事件 (我們的擴展屬性,是與任務綁定的,所以需要查出與本任務有關的屬性 如 任務ID過濾 )

因為是與Gungho集成,前面描述過gungho的全局變量,這里開發的時候已經可以使用這些變量(prj_id , task_id

2)初始化腳本 (因為需要與Gungho的任務集成,定義界面(小窗口的時候需要定義初始化腳本 如 設置項目及任務ID

 

  • 功能點定義,一般用 3000 功能定義

任務擴展屬性信息的grid展示(查詢事件)、小窗口數據的輸入保存(需要綁定task_id等)

  • 進入 任務分類及二次開發 (功能點編號 8203) ,進行任務分類定義

任務分類定義,是gungho的任務與Mobox的功能點集合的一個過程

  • 任務分類(常規)配置

注意:數量限制 必須選擇 多數據, 顯示方式必須選擇 自定義頁面

  • 任務分類(事件)配置

注意:點擊任務后事件 是必須選擇( 來源: gungho領域 – TASK任務 – 某自定義事件)

  • 任務分類(自定義頁面)配置

自定義里面是將任務與Mobox的功能點集合在一起

按上圖,A2樣品技術參數,這類任務,綁定了2個功能點

  • Gungho上任務執行的效果

綁定了2個功能點

? 1 個用于技術參數輸入 (可能是一個表)

1 個用于檢測結果輸入

 

]]>
共好合同系統-電子合同自動生成(Word版本) http://www.shyd8.com/1847/ Sun, 31 Dec 2023 04:57:39 +0000 http://www.shyd8.com/?p=1847 共好合同系統支持在合同做好并通過評審后,可以有合同相關人員進行電子合同自動生成。目前這個自動生成的文檔格式是 docx

電子合同自動生成實現過程

  • 我們利用企業現有的合同模版,對里面的:甲方、乙方、采購清單、單價、總價等內容先變量化。我們稱之為:格式化合同模版
  • 將定義到格式化合同模版,上傳到共好合同系統的支撐文檔下面的某一個文檔柜里面。舉例如:合同模版
  • 有開合信息公司的技術支持,幫助定義合同打印功能

1)3000功能點

2)增加打印功能

3)配置打印時用的支撐文檔柜

  • 合同評審完成后,選擇合同,進行合同打印

Word文檔:格式化合同模版 截圖參考

需要定義word模版,必須存儲為 docx

1、電子合同自動生成的變量定義方式

主表變量:{S_KA_NAME}???? 對應的是:客戶名稱

這里的 {S_KA_NAME} 變量輸入(最好的方法)

1)在 notepad 中,將變量輸入后,復制

2)到word 里面進行 粘貼

 

若不采用這個方法,直接在word里面輸入這個變量,有的時候word對這個變量會做特殊處理。從而在打印的時候造成,變量無法賦值

 

2、合同中的子表:

其中,購買產品是一個采購清單,屬于合同的關聯表,其變量定義解釋

舉例:產品名稱 字段 ,變量:

{TN_0012*S_PO_CODE*S_GDS_NAME*2}

 

關聯表變量解釋:

其中:所有這些表名、字段名等都需要系統管理 在后臺進行查看

3、電子合同自動生成后的打印效果圖

 

Word模版可能存在的問題:

帶來的問題:

 

設置正確后:

打印的word 顯示會正常:

]]>
通過Mobox導入項目清單詳細說明 http://www.shyd8.com/1696/ Thu, 30 Nov 2023 03:08:04 +0000 http://www.shyd8.com/?p=1696 項目清單導入

 

我們在實施Gungho項目管理系統剛上線的時候,其實用戶手上有很多的歷史項目需要導入進來。而且用戶的項目屬性與我們標準的項目屬性差異很大。為此,我們需要對Gungho的項目數據屬性進行擴延。而這個擴延設置是在Mobox數據平臺來完成的。為此我們需要做2個事情:

給項目設置擴展屬性,用于對用戶需求的適應

需要將企業歷史項目清單一次性導入

 

Mobox低代碼中心的實現過程

  • Mobox數據建模
  • Mobox設置項目類型
  • Mobox編寫項目導入二次開發腳本
  • Mobox增加導入功能點,綁定數據模型及腳本
  • Mobox通過腳本創建Gungho項目后的g _id 寫入到數據對象的 G_PRJ_ID中

 

數據對象建模

因為,我們是為Gungho的項目管理做配套,所以在mobox建立數據模型的時候,有類型需要選擇? ,業務類型必須是 “項目”

項目類型定義(通過 8012 功能點)

目的,定義適用企業個性需求的項目管理功能及界面

  • 基礎

 

  • 功能

根據需求 自定義功能

 

  • 腳本

根據需求,加入對應腳本

 

函數 createProject() 說明

方法一: ?(這個一般在mobox數據對象創建后事件調用)

Mobox 數據對象先創建 –》之后通過腳本生成Gungho的項目 –》得到Gungho項目的prj_id –》更新mobox數據對象的 G_PRJ_ID

 

local strPrjInfo

strPrjInfo = ‘{“type“:”漢和項目”,”name“:”‘ .. strPrjName .. ‘”,’

strPrjInfo = strPrjInfo .. ‘”pm_login“:”‘ .. strPMID .. ‘”,”pm_name“:”‘ .. strPMName .. ‘”,’

strPrjInfo = strPrjInfo .. ‘”pd_login“:”‘ .. strPDID .. ‘”,”pd_name“:”‘ .. strPDName .. ‘”,’

— type:定義了項目類型? ? ? ?name:項目名稱

 

strPrjInfo = strPrjInfo .. ‘”class_name“:”項目”,”obj_id“:”‘ .. strObjID .. ‘”,’

— class_name:數據對象名稱? obj_id:數據對象ID ,Mobox數據創建后獲取

 

strPrjInfo = strPrjInfo .. ‘”code“:”‘ .. strPrjCode .. ‘”,’

strPrjInfo = strPrjInfo .. ‘”role“:[{“name”:”項目總監”,”user”:[{“login”:”‘ .. strPDID .. ‘”,”name”:”‘ ..?strPDName .. ‘”}]}’ .. strPrjRoleMember .. ‘]}’

— code:項目編號? role:角色相關

 

— 向共好系統創建一個項目

nRet, strRetInfo = mobox.createProject(strLuaDEID, strPrjInfo)

— strRetInfo:返回的是gungho創建項目的ID (prj_id)

if (nRet ~= 0) then

mobox.error(strLuaDEID, strRetInfo)

return

end

strRetInfo:這個要回寫Mobox數據對象的 G_PRJ_ID

 

— 得到prj_id 將信息寫入mobox數據對象的代碼,這里就不展現了

方法二: ?(這個一般在mobox數據對象的自定義事件入“項目導入”調用)

Gungho的項目所需的所有信息(包括擴展信息)全部定義好,一次性創建Gungho及Mobox所有數據及其相關性

?strPrjInfo = ‘{“type”:”漢和項目”,”class_name”:”項目”,”name”:”‘ .. strPrjName .. ‘”,’

strPrjInfo = strPrjInfo .. ‘”pm_login”:”‘ .. strPMID .. ‘”,”pm_name”:”‘ .. strPMName .. ‘”,’

strPrjInfo = strPrjInfo .. ‘”pd_login”:”‘ .. strPDID .. ‘”,”pd_name”:”‘ .. strPDName .. ‘”,’

strPrjInfo = strPrjInfo .. ‘”code”:”‘ .. strPrjCode .. ‘”,’

 

— 拼接項目的角色屬性

strPrjInfo = strPrjInfo .. ‘”role”:[{“name”:”項目總監”,”user”:[{“login”:”‘ .. strPDID .. ‘”,”name”:”‘ ..? strPDName .. ‘”}]}’ .. strPrjRoleMember .. ‘],’

 

— 拼接項目的擴展項目屬性

strPrjInfo = strPrjInfo .. ‘”ext_obj_attr“:[‘ .. strAddAttr1 .. ‘]}’

ext_obj_attr 項目創建的時候,帶擴展屬性(strAddAttr1 變量事先拼接好了)

 

— 帶擴展屬性,會同時將mobox數據對象及gungho的項目都創建起來,并關聯好

nRet, strRetInfo = mobox.createProject(strLuaDEID, strPrjInfo)

–strRetInfo 返回參數 為兩個GUID :項目ID ;

— 返回的內容如:

— ‘{A52E97CF-BDBE-4EA7-AAD6-949AD5707BF3};{1CB2B481-CA23-42DB-B7A2-546C1EA05364}’

]]>
Excel數據導入Mobox低代碼平臺 http://www.shyd8.com/1686/ Tue, 28 Nov 2023 02:22:55 +0000 http://www.shyd8.com/?p=1686 Excel數據導入Mobox低代碼平臺

 

我們系統上線的時候,原先的歷史數據是沒有的,為了快速接軌企業已有數據,我們可以通過excel 對歷史數據進行導入操作。導入一般可以通過腳本做一些定制開發來實現

 

列子:

數據導入的sheet 要求

這個系統只能導入,左邊第一個sheet (命名無所謂)(注意:若數據列表 這個sheet左邊還有隱藏的sheet,那么系統也不能獲取 數據列表sheet頁的數據)

對Excel單元格的要求

單元個里面的數據,只能是字符串或數值。若是計算公式或函數 ,將無法獲取

另外,單元個內容 不能出現 /\<> & 符號,不能有換行或大量空格

分析excel格式

1、字段分3類:

  • 關鍵字段

如,產品名稱 ,這個是必須有數值的

  • 屬性字段

用于登記各種屬性信息

  • 計算字段

若有數據,則直接獲取

若沒有,可以通過lua腳本計算生成

這種字段,一般也是必須有數值的

2、第一行是表頭行,數據行從第二行開始

 

定義導入功能

通過Mobox 3000 功能點進行定義,設置界面如下:

導入腳本,參考:

json? = require(“json”)
mobox = require(“OILua_JavelinExt”)
require(“oi_basestrfunc”)
function ImportKA(strLuaDEID)
? ? local nRet, strRetInfo
? ? — 獲取導入的數據, 返回 [[{“attr”:”xx”,”value”:””},…]]
? ? — V2.0
? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)
? ? if (nRet ~= 0 or strRetInfo == ”) then
? ? ? ? mobox.error(strLuaDEID, “無法獲取導入數據!”)
? ? ? ? return
? ? end
? ? local input_rows = json.decode(strRetInfo)
? ? local n, nCount, nValue, nMaxRow, nRow
? ? local strAddAttr = ”
? ? — 一些關鍵屬性
? ? local strKAName = ”
? ? local strKAType = ”
? ? local strArea = ”
? ? — 步驟1 獲取從excel導入的一行數據,根據excel的列定義進行屬性組合 strAddAttr
? ? nMaxRow = #input_rows
? ? for nRow = 1, nMaxRow do
? ? ? ? input = input_rows[nRow]
? ? ? ? nCount = #input
? ? ? ? — V2.1
? ? ? ? strAddAttr = ”
? ? ? ? strKAName = ”
? ? ? ? strKAType = ”
? ? ? ? strArea = ”
? ? ? ? for n = 1, nCount do
? ? ? ? ? ? strAttr = input[n].attr
? ? ? ? ? ? strValue = input[n].value
? ? ? ? ? ? if (strAttr ~= ” and strValue ~= ”) then
? ? ? ? ? ? ? ? — 根據導入的excel列頭名稱進行判斷
? ? ? ? ? ? ? ? — 關鍵屬性判斷
? ? ? ? ? ? ? ? if (strAttr == “客戶名稱”) then
? ? ? ? ? ? ? ? ? ? if (strValue == ”) then
? ? ? ? ? ? ? ? ? ? ? ? mobox.error(strLuaDEID, strAttr .. “不能為空!”)
? ? ? ? ? ? ? ? ? ? ? ? return
? ? ? ? ? ? ? ? ? ? end
? ? ? ? ? ? ? ? ? ? strKAName = strValue
? ? ? ? ? ? ? ? ? ? strAddAttr = strAddAttr .. ‘{“attr”:”S_KA_NAME”,”value”:”‘ .. strKAName .. ‘”},’
? ? ? ? ? ? ? ?— 常規屬性
? ? ? ? ? ? ? ? elseif (strAttr == “所屬地區”) then
? ? ? ? ? ? ? ? ? ? strArea = strValue
? ? ? ? ? ? ? ? ? ? strAddAttr = strAddAttr .. ‘{“attr”:”S_AREA”,”value”:”‘ .. strArea .. ‘”},’
? ? ? ? ? ? ? ? elseif (strAttr == “客戶類型”) then
? ? ? ? ? ? ? ? ? ? strKAType = strValue
? ? ? ? ? ? ? ? ? ? strAddAttr = strAddAttr .. ‘{“attr”:”S_KA_TYPE”,”value”:”‘ .. strKAType .. ‘”},’
? ? ? ? ? ? ? ? end
? ? ? ? ? ? end
? ? ? ? end
? ? ? ? –去除最后一個,
? ? ? ? local strAddAttr1 = trim_laster_char(strAddAttr)
? ? ? ? — 步驟2 根據客戶名稱來判斷導入的客戶是否已經存在
? ? ? ? —? ? ? ?如果已經存在,根據導入的數據進行覆蓋
? ? ? ? —? ? ? ?如果不存在需要創建
? ? ? ? local attrs
? ? ? ? local strCondition = “S_KA_NAME='” .. strKAName .. “‘”
? ? ? ? nRet, strRetInfo = mobox.existThisData(strLuaDEID, “客戶”, strCondition)
? ? ? ? if (nRet ~= 0) then
? ? ? ? ? ? mobox.error(strLuaDEID, “在檢查客戶是否存在時失敗! ” .. strRetInfo)
? ? ? ? ? ? return
? ? ? ? end
? ? ? ? if (strRetInfo == ‘yes’) then
? ? ? ? ? ? — 已經存在,根據導入的數據進行覆蓋
? ? ? ? ? ? strCondition = “S_KA_NAME='” .. strKAName .. “‘”
? ? ? ? ? ? strSetSQL =? “S_KA_NAME = ‘” .. strKAName ..”‘ , S_KA_TYPE ='” ..strKAType .. “‘ , S_AREA = ‘” .. strArea ..”‘ “
? ? ? ? ? ? nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, “客戶”, strCondition, strSetSQL)
? ? ? ? ? ? if (nRet ~= 0) then
? ? ? ? ? ? ? ? mobox.error(strLuaDEID, strRetInfo)
? ? ? ? ? ? ? ? return
? ? ? ? ? ? end
? ? ? ? elseif (strRetInfo == ‘no’) then
? ? ? ? ? ? — 創建客戶
? ? ? ? ? ? –mobox.writeSysLog(“strAddAttr1”, strAddAttr1)
? ? ? ? ? ? strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’
? ? ? ? ? ? –mobox.writeSysLog(“strAddAttr2”, strAddAttr1)
? ? ? ? ? ? nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “客戶”, strAddAttr1)
? ? ? ? ? ? if (nRet ~= 0) then
? ? ? ? ? ? ? ? mobox.error(strLuaDEID, “創建客戶失敗! ” .. strRetInfo )
? ? ? ? ? ? ? ? return
? ? ? ? ? ? end
? ? ? ? end
? ? end
end
]]>
低代碼平臺關于數據對象定版后權限控制 http://www.shyd8.com/1646/ Wed, 13 Sep 2023 02:15:16 +0000 http://www.shyd8.com/?p=1646 在項目實施過程中:Mobox低代碼平臺所需管理的內容,都是通過數據建模而確立的。我們可以將任何一個需要管理的事務抽象為數據對象

數據對象它有生命周期:編輯 -> 審核 -> 定版 -> 報廢? (默認 4個狀態)

我們數據在輸入階段,那么就屬于 “編輯”? ,這個時候可以修改與之相關的屬性及關聯關系。而一定數據對象經過審核 ,進入“定版” 狀態,那么針對這個數據對象就不能修改了

參考下圖:

為實現這個功能設置,Mobox系統需要做如下配置

-》在grid列表定義里面 ,必須有 “S_STATE” 狀態? 這個字段

若這個字段不設置到 grid ,就無法實現第一圖的效果

]]>
日韩VA中文字幕无码电影| YYYY1111111午夜少妇| 天美传媒国色天香乱码| 老师黑色丝袜被躁翻了AV| 国产成人亚洲欧美二区综合| 9612黄桃网站进入页面直播| 亚洲国产成人精品无码区在线观看 | 忘忧草在线社区日本WWW| 奶头被几个流浪汉吃肿了| 国内女人喷潮完整视频| 抱着边走边撞水流了一地的水 | 国产又色又爽又黄的在线观看| 99久久免费精品高清特色大片 | 乌克兰ZOOMKOOL| 欧美人交a欧美精品a∨一区| 精品久久人人做人人爽综合 | 人妻激情偷乱视频一区二区三区| 久久丫精品国产亚洲AV| 精品VIDEOSSEXFREEOHDBBW| 国产成人AV综合亚洲色欲美女| Z〇Z〇ZO女人另类Z〇Z○| 约附近的寂寞妇女| 亚洲人成人一区二区三区| 午夜福利一区二区三区在线观看| 日韩人妻无码系列专区| 日韩系列精品无码免费不卡| 欧美一区二区三区放荡人妇| 男女猛烈XX00免费视频试看 | 亚洲色噜噜噜噜噜噜国产| 小怡的暴露耻辱系列小说| 无人区码一码二码三码| 无码国产精成人午夜视频不卡| 日本人妻熟妇丰满成熟HD系列| 欧美在线三级艳情网站| 撒尿BBWBBW毛| 肉大捧一进一出免费视频| 少妇久久久被弄到高潮| 天美传媒免费观看一二三在线| 甜性涩爱在线播放| 亚洲AV无码国产蜜桃麻豆| 亚洲一区二区三区高清AV| 79年熟女大胆露脸啪啪对白P| 国产精品一国产精品| YIN荡到骨子里的SAO货| 成人无码AV一区二区三区| 国产精品久久久影视青草| 精品无码人妻夜人多侵犯18| 男生把QQ放进女生的QQ里在线| 让女人受不了19种新姿势| 天天做日日做天天添天天欢公交车| 亚洲AV永久无码老湿机漫画| 中文字幕乱偷无码动漫AV| 大鷄巴久久久久久久久久| 狠狠CAO2020高清视频| JAPANESE极品少妇| 国产揄拍国产精品| 欧美VIDEOSGRATIS杂| 国产香蕉97碰碰视频VA碰碰看| 久久综合精品国产一区二区三区无| 男人激烈吮乳吃奶到高潮视频| 色噜噜亚洲精品中文字幕| 亚洲AV日韩AV高潮潮喷无码| 中文字幕人妻互换AV久久| 丰满少妇奶水一区二区三区| 精品日产卡一卡二卡927| 全部免费A级毛片| 亚洲大尺度专区无码浪潮AV| 99久久精品国产一区二区蜜芽| 国产精品老熟女露脸视频| 久久亚洲色WWW成人| 私人微信放款24小时在线| 亚洲最大的av网站| 公交车上掀开麻麻超短裙| 久久久午夜精品福利内容| 少妇内射一区27p| 中国CHINESE壮男GⅤ军警| 国产丰满麻豆HDXVIDEOS| 麻豆ā片免费观看在线看| 午夜理论片YY44880影院| FREEZEFRAME丰满少妇| 精品日产1区2卡三卡麻豆| 色偷偷偷久久伊人大杳蕉| 用力挺进她的花苞| 国产精品无码久久AV| 欧美性猛交XXXX黑人猛交| 亚洲一区无码中文字幕| 国产精品久久毛片| 日本老妇XXXXX免费| 中国少妇内射XXXXⅩHD| 黑人大雞巴ⅩⅩⅩ高潮| 天码人妻一区二区三区| JAPAN丰满少妇VIDEOS| 久久香蕉国产线看观看手机| 性一交一乱一伦一| 国产99久久亚洲综合精品| 欧美人与劲物XXXXZ0OZ| 在教室伦流澡到高潮HGL动漫| 精品高潮呻吟AV久久无码| 无码人妻丝袜在线视频| 成人区人妻精品一区二区不卡网站 | 国产精品伦一区二区三级视频| 人人妻人人澡人人| YSL千人千色T9T9T9T| 女的用嘴巴吃鸡会得HPV| 亚洲色大18成人网站WWW| 精品乱人伦一区二区三区| 久久精品国产亚洲AV蜜臀色欲| 亚洲AV蜜桃无码精品无码| 国产乱码卡二卡三卡老狼| 无码AV大香线蕉| 国产成人综合久久久久久| 特区爱奴在线观看| 公侵犯玩弄漂亮人妻优| 乌克兰少妇XXXX做受野外| 国产精品久久久久9999高清| 乌克兰少妇VIDEOS高潮| 国产精品制服一区二区| 亚洲ⅤA中文字幕无码| 国产小呦泬泬99精品| 亚洲成色WWW久久网站夜月| 精品国精品国产自在久国产应用男| 亚洲老熟女XXXXHDWAA| 久久免费的精品国产V∧| 最新精品国偷自产在线婷婷 | ZOOM与牛性胶ZOOM| 上课我穿超短裙被同桌摸出水 | 漂亮人妻被中出中文字幕久久| 成人无码区免费AⅤ片WWW软件| 丝袜 亚洲 另类 欧美 变态| 国产精品久久国产精品99| 亚洲AV无码专区在线观看亚| 久久久精品人妻一区二区三区蜜桃| 在线观看片免费人成视频无码| 欧美顶级METART裸体全部自| 丁香花在线电影小说观看| 香草乱码一二三四区别| 久久久无码精品亚洲日韩蜜桃| AⅤ中文字幕不卡在线无码| 色偷偷人人澡人人爽人人模 | 亚洲精品自产拍在线观看| 乱JAPANESE偷窥PISS| 成人亚洲区无码区在线点播| 性丰满ⅩXXOOO性HD| 麻花传媒MD0076沈芯语在线| 厨房掀开馊了裙子挺进电影| 亚洲国产AV高清无码| 欧美日韩精品一区二区在线视频| 国产成人午夜福利不卡在线观看 | JIZZJIZZ中国18大学生| 天天做天天摸天天爽天天爱| 久久综合亚洲色1080P| 高H乱好爽要尿了潮喷了学生| 亚洲乱亚洲乱少妇无码| 人妻无码久久久久久久久久久| 国产自偷在线拍精品热| FREE嫩白18SEⅩ性HD处| 小浪蹄子蜜水噗呲噗呲的| 欧美喷潮久久久XXXXX| 国内精品宾馆在线精品酒店| 日韩精品久久久免费观看| 精品一区二区三区在线观看| 丰满人妻熟妇乱又伦精品| 中文在线中文在A| 亚州少妇无套内射激情视频| 强行挺进美艳老师的后臀| 久久电影网午夜鲁丝片伦| 国产成人AV无码专区亚洲AV | 免费视频玩乳吃奶不遮挡网站| 国产思思99RE99在线观看| 波多野结衣乳喷高潮视频| 在线观看免费视频| 亚洲国产精品久久久久婷蜜芽| 色费女人18毛片A级毛片视频| 老熟妇仑乱一区二区视頻| 和朋友换娶妻野外夫妇3| 国产白嫩漂亮美女在线观看| AV免费啪啪永久| 在线看片无码永久免费AV| 亚洲成AⅤ人片久青草影院| 天天澡夜夜澡狠狠久久| 人物动物交互第LL0集| 欧美成人精品在线| 里番本子侵犯肉全彩无码| 精品国产AV一区二区三区| 国产一区二区精品丝袜| 国产精品久久久久9999小说| 放荡爆乳女教师电影在线观看| 99无人区码一码二码三码...| 伊人久久大香线焦AV色| 亚洲无人区码一码二码三码的含义| 亚洲AV日韩AV永久无码色欲| 无码一区二区三区不卡AV| 天干天干天啪啪夜爽爽色| 少妇高潮惨叫久久久久电影69| 日本丰满少妇高潮呻吟| 人妻无码一区二区三区AV| 人摸人人人澡人人超碰| 人妻无码精品一区二区| 色老头精品午夜福利视频| 天天爱天天做天天做天天吃中文|