国产综合成人久久大片91,精品亚洲成a人,成人做爰69片免费看网站 http://www.wwhk520.com PDM產(chǎn)品數(shù)據(jù)管理軟件、項(xiàng)目管理系統(tǒng) Fri, 17 Jan 2025 00:44:41 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.3 http://www.wwhk520.com/wp-content/uploads/2022/11/cropped-plmico512-32x32.png 低代碼 – 共好plm系統(tǒng) http://www.wwhk520.com 32 32 mobox3打開某一個(gè)項(xiàng)目后進(jìn)入項(xiàng)目領(lǐng)域里面的3000功能獲取prjid方法 http://www.wwhk520.com/3149/ Fri, 17 Jan 2025 00:44:41 +0000 http://www.wwhk520.com/?p=3149 — 項(xiàng)目領(lǐng)域進(jìn)入后,里面的3000功能獲取Prj_id 方法
? ? local nRet, strRetInfo
? ? — 獲取外部輸入?yún)?shù)
? ? 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), “輸入?yún)?shù)有問題!”)
? ? ? ? return
? ? end
? ? local strPrjID = tP.prjId
? ? if (strPrjID == nil) then
? ? ? ? Error( strLuaDEID, debug.getinfo(1), “獲取項(xiàng)目標(biāo)識(shí)失敗!”)
? ? ? ? return
? ? end
? ? strPrjID = strPrjID:match(“{(.-)}”) — 去掉 {}
]]>
MBC客戶端擴(kuò)展視圖功能配置過程 http://www.wwhk520.com/3087/ Sat, 14 Sep 2024 06:56:25 +0000 http://www.wwhk520.com/?p=3087 MBC是可以為企業(yè)即時(shí)通訊AM、企業(yè)文檔管理系統(tǒng)Mobox、項(xiàng)目管理系統(tǒng)Gungho多系統(tǒng)的前端表現(xiàn)端。在企業(yè)業(yè)務(wù)擴(kuò)展的情況下甚至可以將mobox3定義的功能點(diǎn)擴(kuò)展到 MBC客戶端

mobox3的功能點(diǎn)擴(kuò)展的MBC客戶端的配置實(shí)現(xiàn)方式

1、人員管理里面需要定義 應(yīng)用程序

需要定義 3個(gè)應(yīng)用 (應(yīng)用名稱 不能變)

MOBOX3

OIOrgSAPI

OIMoboxSAPI

OIDataSAPI

其它2個(gè)服務(wù)類似

 

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

2、mobox3定義的功能領(lǐng)域可以發(fā)布到 MBC客戶端

3、MBC客戶端效果圖

]]>
mobox3 lua 開發(fā)過程中數(shù)據(jù)獲取及Json格式處理 http://www.wwhk520.com/3069/ Tue, 03 Sep 2024 05:53:26 +0000 http://www.wwhk520.com/?p=3069 lua 開發(fā)過程中,我們需要對(duì)當(dāng)前窗體的數(shù)據(jù)進(jìn)行獲取,之后進(jìn)行二次開發(fā)演變?yōu)槲覀冃枰臄?shù)據(jù),并重新給窗體的各字段賦值。

1、獲取當(dāng)前窗體上所需字段的數(shù)值

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

2、得到Json字符串(strRetInfo)內(nèi)容描述(暫且我們稱之為 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)轉(zhuǎn)變?yōu)镴son標(biāo)準(zhǔn)的表格式(strOBJInfo )

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

注意:strOBJInfo 得到其實(shí)還是一個(gè)Json字符串,但其是一個(gè)標(biāo)準(zhǔn)的Json表格式表達(dá)

具體 objAttrToObjJson 函數(shù)怎么用查看手冊(cè)

4、得到Json表字符串(strOBJInfo )(是一種 json對(duì)表的標(biāo)準(zhǔn)格式)

{

“cls”: “JS001”,

“ver”: 1,

“G_PRJ_ID”: “”,

“S_PRJ_CODE”: “PM-0002”,

“S_PRJ_NAME”: “pcy 0999 hard”,

“S_PM_NAME”: “金振興”
}

注意:這個(gè)Json格式是標(biāo)準(zhǔn)表格式字符串表達(dá)。

5、我們需要將這個(gè)字符串轉(zhuǎn)為表(tbOBJ)

local tbOBJ = json.decode (strOBJInfo)

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

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

6、數(shù)據(jù)取值與賦值

取值方法:

local strPMName

strPMName = tbOBJ.S_PRJ_NAME

賦值方法:

tbOBJ.S_PRJ_NAME = ‘潘元元’

 

完整代碼

local strRetInfo , strOBJInfo

local tbOBJ ={}

 

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

— 將json字符串(mobox3)格式轉(zhuǎn)為 json標(biāo)準(zhǔn)表格式
nRet, strOBJInfo = mobox.objAttrToObjJson (‘JS001’, strRetInfo )

–將json字符串轉(zhuǎn)變?yōu)楸?br /> tbOBJ = json.decode (strOBJInfo)

 

— 獲取表字段內(nèi)容及設(shè)置表字段值
local strPMName
strPMName = tbOBJ.S_PM_NAME
tbOBJ.S_PM_NAME = ‘潘元元’

 

若需要將數(shù)據(jù)轉(zhuǎn)會(huì)mobox3數(shù)據(jù)格式

–將表轉(zhuǎn)變?yōu)閖son字符串(標(biāo)準(zhǔn)格式)
strOBJInfo = json.encode (tbOBJ)

— 將json標(biāo)準(zhǔn)表格式格式轉(zhuǎn)為 json字符串(mobox3)
nRet, strRetInfo = mobox.objJsonToObjAttr (‘JS001’, strOBJInfo )

 

 

 

 

]]>
lua 對(duì)回車(%3Cbr%3E)處理方法 http://www.wwhk520.com/2537/ Thu, 11 Apr 2024 05:02:28 +0000 http://www.wwhk520.com/?p=2537 我們?cè)贕ird列出數(shù)據(jù)的時(shí)候,若數(shù)據(jù)內(nèi)帶%3Cbr%3E,其實(shí)是回車的意思,若grid讀出數(shù)據(jù)不做任何處理,那么就會(huì)影響系統(tǒng)表達(dá)

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

腳本列子

–[[
? ? 功能說明:
? ? ? ? 1) 顯示前做一些字段的處理
? ? ? ? 2)前端導(dǎo)入,新增有換行符號(hào) %%3Cbr%%3E  ,替換成 <br> 前端html支持的換行內(nèi)容
? ? ? ? 3)內(nèi)容中有&,替換成 & 前端解析 &不支持,最好在輸入時(shí)進(jìn)行替換
–]]
json = require(“json”)
mobox = require(“OILua_JavelinExt”)
require(“oi_basestrfunc”)
function BeforeGridShow(strLuaDEID)
? ? local nRet, strRetInfo
? ? local arobjs, attrs, success
? ? — 獲取輸入的DataJson數(shù)據(jù)包
? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)
? ? if (nRet ~= 0) then
? ? ? ? mobox.error(strLuaDEID, “無法獲取數(shù)據(jù)包!”)
? ? ? ? return
? ? end
? ? if (strRetInfo == ” or strRetInfo == nil) then
? ? ? ? return
? ? end
? ? — 解析數(shù)據(jù)包,數(shù)據(jù)包格式
? ? — [{“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=”
? ? ? ? — 開始過濾顯示數(shù)據(jù)對(duì)象屬性
? ? ? ? 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
? ? ? ? — 取消最后一個(gè),號(hào)
? ? ? ? strAttrs = trim_laster_char(strAttrs)
? ? ? ? strRow = ‘{“id”:”‘ .. id .. ‘”,”attrs”:[‘ .. strAttrs .. ‘]},’
? ? ? ? strDataJson = strDataJson .. strRow
? ? end
? ? — 取消最后一個(gè),號(hào)
? ? strDataJson = trim_laster_char(strDataJson)
? ? strDataJson = strDataJson .. ‘]’
? ? local strAction = ‘[{“action_type”:”reset_data_attr”,”value”:’ .. strDataJson .. ‘}]’
? ? mobox.setAction(strLuaDEID, strAction)
end
這個(gè)列子也可以用于別的一些非法字符串的處理
]]>
Gungho項(xiàng)目擴(kuò)展屬性二次開發(fā)的實(shí)現(xiàn)過程 http://www.wwhk520.com/2224/ Thu, 29 Feb 2024 04:27:33 +0000 http://www.wwhk520.com/?p=2224 Gungho個(gè)性項(xiàng)目屬性描述二次開發(fā)的實(shí)現(xiàn)過程

 

企業(yè)在實(shí)施項(xiàng)目管理系統(tǒng)的時(shí)候,不通類型的項(xiàng)目其屬性可能是不一樣的。而Gungho標(biāo)準(zhǔn)系統(tǒng)內(nèi)對(duì)項(xiàng)目的屬性,主要包括(項(xiàng)目名稱、編號(hào)、開始結(jié)束日期等)。為了適應(yīng)企業(yè)個(gè)性項(xiàng)目信息的輸入,我們需要通過Mobox平臺(tái)定義項(xiàng)目類型去適應(yīng)這個(gè)需求

 

項(xiàng)目類型定義過程

Sa 登錄mobox低代碼開發(fā)平臺(tái)

進(jìn)入數(shù)據(jù)模型(001功能點(diǎn))創(chuàng)建數(shù)據(jù)對(duì)象

創(chuàng)建一個(gè)用于描述項(xiàng)目擴(kuò)展屬性的數(shù)據(jù)對(duì)象

注意:業(yè)務(wù)類型必須是 項(xiàng)目

接下來需要做的內(nèi)容,這里不具體展開

    • 設(shè)置數(shù)據(jù)對(duì)象的相關(guān)字段屬性
    • 設(shè)置數(shù)據(jù)對(duì)象的Gird(列表)
    • 設(shè)置數(shù)據(jù)對(duì)象的窗口(界面)
    • 及可能涉及的二次開發(fā)

進(jìn)入項(xiàng)目類型定義(8012功能點(diǎn))創(chuàng)建項(xiàng)目類型

  • 新建項(xiàng)目類型(基礎(chǔ))

基礎(chǔ):主要是綁定哪個(gè)數(shù)據(jù)對(duì)象及相關(guān)的界面

 

  • 新建項(xiàng)目類型(功能)

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

效果

我們?cè)趃ungho登錄后,新建項(xiàng)目

]]>
基于Mobox對(duì)Gungho任務(wù)二次開發(fā)的實(shí)現(xiàn) http://www.wwhk520.com/2153/ Fri, 23 Feb 2024 03:40:01 +0000 http://www.wwhk520.com/?p=2153 基于Mobox對(duì)Gungho任務(wù)二次開發(fā)的實(shí)現(xiàn)

 

Gungho項(xiàng)目管理軟件在企業(yè)部署的時(shí)候因其業(yè)務(wù)的個(gè)性,很有可能需要對(duì)任務(wù)做各種各樣的二次開發(fā),從而適應(yīng)企業(yè)需求

 

舉例:

某檢測(cè)檢驗(yàn)中心,在做叉車整車檢測(cè)的時(shí)候會(huì)分解出100多個(gè)的檢測(cè)任務(wù),每一個(gè)任務(wù)除了要求員工按時(shí)間要求完成以外,還需將每個(gè)檢測(cè)任務(wù)所獲取的數(shù)據(jù)等級(jí)下來。這個(gè)數(shù)據(jù)可能是一個(gè)表,而且每一個(gè)任務(wù)所對(duì)應(yīng)的填寫數(shù)據(jù)也都是不一樣的。

這樣一個(gè)需求,我們就必須對(duì)任務(wù)做二次開發(fā)

 

實(shí)現(xiàn)過程如下

用sa 登錄Mobox平臺(tái),進(jìn)入系統(tǒng)管理模塊

  • 增加功能點(diǎn) 任務(wù)類型及二次開發(fā) 功能點(diǎn)編號(hào)(8203)

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

定義的任務(wù)類型名稱,在后面會(huì)用到

 

  • 進(jìn)入二次開發(fā) – gungho領(lǐng)域 – TASK任務(wù) – 自定義事件

開發(fā)一個(gè)腳本:任務(wù)點(diǎn)擊后 腳本 (目的是 任務(wù)點(diǎn)擊后能將 prj_id,task_id 等設(shè)置到全局變量)

這個(gè)任務(wù)點(diǎn)擊后(lua腳本)是標(biāo)準(zhǔn)的

 

json?? = require(“json”)

mobox = require(“OILua_JavelinExt”)

require(“oi_basestrfunc”)

 

function AfterClickTask(strLuaDEID)

??? local nRet, strRetInfo, strTaskID,strClsID

 

???? –獲取當(dāng)前點(diǎn)中的任務(wù)對(duì)象標(biāo)識(shí)

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

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

???????? mobox.error( strLuaDEID, “獲取當(dāng)前點(diǎn)中任務(wù)對(duì)象標(biāo)識(shí)失敗!” )

???????? return

???? end

??? –獲取任務(wù)內(nèi)容

??? 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, “獲取項(xiàng)目信息失敗!”)

??????? return

??? end

??? –去掉空格

??? strPrjID = trim_guid_str(strPrjID)

??? — 把項(xiàng)目ID ,任務(wù)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

 

這個(gè)腳本目的是生成 全局變量prj_id , task_id 。 這2個(gè)變量描述了當(dāng)前任務(wù)所屬項(xiàng)目唯一標(biāo)識(shí)任務(wù)唯一標(biāo)識(shí)。是Gungho系統(tǒng)向Mobox平臺(tái)傳遞核心參數(shù),Mobox后期二次開發(fā)的時(shí)候都需要用到。

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

這個(gè)腳本,會(huì)在后面文章的:任務(wù)分類定義 –? 事件點(diǎn)擊后事件用到) 參考

 

  • 數(shù)據(jù)模型定義 (用于任務(wù)擴(kuò)展屬性的定義)

按需分別定義數(shù)據(jù)模型,及模型里面的字段。這里不詳細(xì)展開(需要有mobox二次開經(jīng)驗(yàn))

 

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

 

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

因?yàn)槭桥cGungho集成,前面描述過gungho的全局變量,這里開發(fā)的時(shí)候已經(jīng)可以使用這些變量(prj_id , task_id)

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

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

因?yàn)槭桥cGungho集成,前面描述過gungho的全局變量,這里開發(fā)的時(shí)候已經(jīng)可以使用這些變量(prj_id , task_id

2)初始化腳本 (因?yàn)樾枰cGungho的任務(wù)集成,定義界面(小窗口的時(shí)候需要定義初始化腳本 如 設(shè)置項(xiàng)目及任務(wù)ID

 

  • 功能點(diǎn)定義,一般用 3000 功能定義

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

  • 進(jìn)入 任務(wù)分類及二次開發(fā) (功能點(diǎn)編號(hào) 8203) ,進(jìn)行任務(wù)分類定義

任務(wù)分類定義,是gungho的任務(wù)與Mobox的功能點(diǎn)集合的一個(gè)過程

  • 任務(wù)分類(常規(guī))配置

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

  • 任務(wù)分類(事件)配置

注意:點(diǎn)擊任務(wù)后事件 是必須選擇( 來源: gungho領(lǐng)域 – TASK任務(wù) – 某自定義事件)

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

自定義里面是將任務(wù)與Mobox的功能點(diǎn)集合在一起

按上圖,A2樣品技術(shù)參數(shù),這類任務(wù),綁定了2個(gè)功能點(diǎn)

  • Gungho上任務(wù)執(zhí)行的效果

綁定了2個(gè)功能點(diǎn)

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

1 個(gè)用于檢測(cè)結(jié)果輸入

 

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

電子合同自動(dòng)生成實(shí)現(xiàn)過程

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

1)3000功能點(diǎn)

2)增加打印功能

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

  • 合同評(píng)審?fù)瓿珊螅x擇合同,進(jìn)行合同打印

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

需要定義word模版,必須存儲(chǔ)為 docx

1、電子合同自動(dòng)生成的變量定義方式

主表變量:{S_KA_NAME}???? 對(duì)應(yīng)的是:客戶名稱

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

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

2)到word 里面進(jìn)行 粘貼

 

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

 

2、合同中的子表:

其中,購(gòu)買產(chǎn)品是一個(gè)采購(gòu)清單,屬于合同的關(guān)聯(lián)表,其變量定義解釋

舉例:產(chǎn)品名稱 字段 ,變量:

{TN_0012*S_PO_CODE*S_GDS_NAME*2}

 

關(guān)聯(lián)表變量解釋:

其中:所有這些表名、字段名等都需要系統(tǒng)管理 在后臺(tái)進(jìn)行查看

3、電子合同自動(dòng)生成后的打印效果圖

 

Word模版可能存在的問題:

帶來的問題:

 

設(shè)置正確后:

打印的word 顯示會(huì)正常:

]]>
通過Mobox導(dǎo)入項(xiàng)目清單詳細(xì)說明 http://www.wwhk520.com/1696/ Thu, 30 Nov 2023 03:08:04 +0000 http://www.wwhk520.com/?p=1696 項(xiàng)目清單導(dǎo)入

 

我們?cè)趯?shí)施Gungho項(xiàng)目管理系統(tǒng)剛上線的時(shí)候,其實(shí)用戶手上有很多的歷史項(xiàng)目需要導(dǎo)入進(jìn)來。而且用戶的項(xiàng)目屬性與我們標(biāo)準(zhǔn)的項(xiàng)目屬性差異很大。為此,我們需要對(duì)Gungho的項(xiàng)目數(shù)據(jù)屬性進(jìn)行擴(kuò)延。而這個(gè)擴(kuò)延設(shè)置是在Mobox數(shù)據(jù)平臺(tái)來完成的。為此我們需要做2個(gè)事情:

給項(xiàng)目設(shè)置擴(kuò)展屬性,用于對(duì)用戶需求的適應(yīng)

需要將企業(yè)歷史項(xiàng)目清單一次性導(dǎo)入

 

Mobox低代碼中心的實(shí)現(xiàn)過程

  • Mobox數(shù)據(jù)建模
  • Mobox設(shè)置項(xiàng)目類型
  • Mobox編寫項(xiàng)目導(dǎo)入二次開發(fā)腳本
  • Mobox增加導(dǎo)入功能點(diǎn),綁定數(shù)據(jù)模型及腳本
  • Mobox通過腳本創(chuàng)建Gungho項(xiàng)目后的g _id 寫入到數(shù)據(jù)對(duì)象的 G_PRJ_ID中

 

數(shù)據(jù)對(duì)象建模

因?yàn)椋覀兪菫镚ungho的項(xiàng)目管理做配套,所以在mobox建立數(shù)據(jù)模型的時(shí)候,有類型需要選擇? ,業(yè)務(wù)類型必須是 “項(xiàng)目”

項(xiàng)目類型定義(通過 8012 功能點(diǎn))

目的,定義適用企業(yè)個(gè)性需求的項(xiàng)目管理功能及界面

  • 基礎(chǔ)

 

  • 功能

根據(jù)需求 自定義功能

 

  • 腳本

根據(jù)需求,加入對(duì)應(yīng)腳本

 

函數(shù) createProject() 說明

方法一: ?(這個(gè)一般在mobox數(shù)據(jù)對(duì)象創(chuàng)建后事件調(diào)用)

Mobox 數(shù)據(jù)對(duì)象先創(chuàng)建 –》之后通過腳本生成Gungho的項(xiàng)目 –》得到Gungho項(xiàng)目的prj_id –》更新mobox數(shù)據(jù)對(duì)象的 G_PRJ_ID

 

local strPrjInfo

strPrjInfo = ‘{“type“:”漢和項(xiàng)目”,”name“:”‘ .. strPrjName .. ‘”,’

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

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

— type:定義了項(xiàng)目類型? ? ? ?name:項(xiàng)目名稱

 

strPrjInfo = strPrjInfo .. ‘”class_name“:”項(xiàng)目”,”obj_id“:”‘ .. strObjID .. ‘”,’

— class_name:數(shù)據(jù)對(duì)象名稱? obj_id:數(shù)據(jù)對(duì)象ID ,Mobox數(shù)據(jù)創(chuàng)建后獲取

 

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

strPrjInfo = strPrjInfo .. ‘”role“:[{“name”:”項(xiàng)目總監(jiān)”,”user”:[{“login”:”‘ .. strPDID .. ‘”,”name”:”‘ ..?strPDName .. ‘”}]}’ .. strPrjRoleMember .. ‘]}’

— code:項(xiàng)目編號(hào)? role:角色相關(guān)

 

— 向共好系統(tǒng)創(chuàng)建一個(gè)項(xiàng)目

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

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

if (nRet ~= 0) then

mobox.error(strLuaDEID, strRetInfo)

return

end

strRetInfo:這個(gè)要回寫Mobox數(shù)據(jù)對(duì)象的 G_PRJ_ID

 

— 得到prj_id 將信息寫入mobox數(shù)據(jù)對(duì)象的代碼,這里就不展現(xiàn)了

方法二: ?(這個(gè)一般在mobox數(shù)據(jù)對(duì)象的自定義事件入“項(xiàng)目導(dǎo)入”調(diào)用)

Gungho的項(xiàng)目所需的所有信息(包括擴(kuò)展信息)全部定義好,一次性創(chuàng)建Gungho及Mobox所有數(shù)據(jù)及其相關(guān)性

?strPrjInfo = ‘{“type”:”漢和項(xiàng)目”,”class_name”:”項(xiàng)目”,”name”:”‘ .. strPrjName .. ‘”,’

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

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

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

 

— 拼接項(xiàng)目的角色屬性

strPrjInfo = strPrjInfo .. ‘”role”:[{“name”:”項(xiàng)目總監(jiān)”,”user”:[{“login”:”‘ .. strPDID .. ‘”,”name”:”‘ ..? strPDName .. ‘”}]}’ .. strPrjRoleMember .. ‘],’

 

— 拼接項(xiàng)目的擴(kuò)展項(xiàng)目屬性

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

ext_obj_attr 項(xiàng)目創(chuàng)建的時(shí)候,帶擴(kuò)展屬性(strAddAttr1 變量事先拼接好了)

 

— 帶擴(kuò)展屬性,會(huì)同時(shí)將mobox數(shù)據(jù)對(duì)象及gungho的項(xiàng)目都創(chuàng)建起來,并關(guān)聯(lián)好

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

–strRetInfo 返回參數(shù) 為兩個(gè)GUID :項(xiàng)目ID ;

— 返回的內(nèi)容如:

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

]]>
Excel數(shù)據(jù)導(dǎo)入Mobox低代碼平臺(tái) http://www.wwhk520.com/1686/ Tue, 28 Nov 2023 02:22:55 +0000 http://www.wwhk520.com/?p=1686 Excel數(shù)據(jù)導(dǎo)入Mobox低代碼平臺(tái)

 

我們系統(tǒng)上線的時(shí)候,原先的歷史數(shù)據(jù)是沒有的,為了快速接軌企業(yè)已有數(shù)據(jù),我們可以通過excel 對(duì)歷史數(shù)據(jù)進(jìn)行導(dǎo)入操作。導(dǎo)入一般可以通過腳本做一些定制開發(fā)來實(shí)現(xiàn)

 

列子:

數(shù)據(jù)導(dǎo)入的sheet 要求

這個(gè)系統(tǒng)只能導(dǎo)入,左邊第一個(gè)sheet (命名無所謂)(注意:若數(shù)據(jù)列表 這個(gè)sheet左邊還有隱藏的sheet,那么系統(tǒng)也不能獲取 數(shù)據(jù)列表sheet頁的數(shù)據(jù))

對(duì)Excel單元格的要求

單元個(gè)里面的數(shù)據(jù),只能是字符串或數(shù)值。若是計(jì)算公式或函數(shù) ,將無法獲取

另外,單元個(gè)內(nèi)容 不能出現(xiàn) /\<> & 符號(hào),不能有換行或大量空格

分析excel格式

1、字段分3類:

  • 關(guān)鍵字段

如,產(chǎn)品名稱 ,這個(gè)是必須有數(shù)值的

  • 屬性字段

用于登記各種屬性信息

  • 計(jì)算字段

若有數(shù)據(jù),則直接獲取

若沒有,可以通過lua腳本計(jì)算生成

這種字段,一般也是必須有數(shù)值的

2、第一行是表頭行,數(shù)據(jù)行從第二行開始

 

定義導(dǎo)入功能

通過Mobox 3000 功能點(diǎn)進(jìn)行定義,設(shè)置界面如下:

導(dǎo)入腳本,參考:

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

數(shù)據(jù)對(duì)象它有生命周期:編輯 -> 審核 -> 定版 -> 報(bào)廢? (默認(rèn) 4個(gè)狀態(tài))

我們數(shù)據(jù)在輸入階段,那么就屬于 “編輯”? ,這個(gè)時(shí)候可以修改與之相關(guān)的屬性及關(guān)聯(lián)關(guān)系。而一定數(shù)據(jù)對(duì)象經(jīng)過審核 ,進(jìn)入“定版” 狀態(tài),那么針對(duì)這個(gè)數(shù)據(jù)對(duì)象就不能修改了

參考下圖:

為實(shí)現(xiàn)這個(gè)功能設(shè)置,Mobox系統(tǒng)需要做如下配置

-》在grid列表定義里面 ,必須有 “S_STATE” 狀態(tài)? 這個(gè)字段

若這個(gè)字段不設(shè)置到 grid ,就無法實(shí)現(xiàn)第一圖的效果

]]>
成人sese在线_91免费视频大全_不卡视频一二三_日本怡春院一区二区_日韩和欧美一区二区三区_夫妻av一区二区_国产一区二区三区国产_免费高清不卡av_国产精品538一区二区在线_国产不卡一区视频
日韩精品色哟哟| 9i在线看片成人免费| 成人精品小蝌蚪| 国产激情91久久精品导航| 国产一区二区伦理| 高清国产一区二区三区| 免费一区二区视频| 成人亚洲精品久久久久软件| 不卡大黄网站免费看| aaa国产一区| 黄网站免费久久| 狠狠色丁香九九婷婷综合五月| 精品在线播放免费| 成人综合在线视频| 日韩成人午夜精品| 国产一区二区三区四区在线观看 | 日韩激情av在线| 国产久卡久卡久卡久卡视频精品| 国产成人8x视频一区二区| 成人av在线一区二区| 三级久久三级久久| 国内精品伊人久久久久av一坑| 国产精品一品二品| 日韩精品一二三区| 国产九色精品成人porny| 99久久婷婷国产综合精品电影| 国产成人免费视频网站高清观看视频| 国产在线播精品第三| 成人av午夜电影| 狠狠网亚洲精品| 99久久精品国产一区| 激情综合一区二区三区| av网站免费线看精品| 国产一区二区三区在线看麻豆| 成人av手机在线观看| 黄网站免费久久| 99久免费精品视频在线观看| 国产真实乱偷精品视频免| 成人av第一页| 国产麻豆成人精品| 日本欧美久久久久免费播放网| 国产一区二区精品久久99| 丝袜诱惑制服诱惑色一区在线观看 | 成人av在线播放网址| 久久国产夜色精品鲁鲁99| thepron国产精品| 国产毛片精品一区| 毛片av中文字幕一区二区| 成人综合婷婷国产精品久久免费| 久久99精品久久久| 日本亚洲免费观看| 91色九色蝌蚪| 成人97人人超碰人人99| 久久精品国产一区二区三| 国产成人在线观看免费网站| 免费成人在线观看视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产成人在线观看免费网站| av成人免费在线| 国内欧美视频一区二区| 麻豆视频一区二区| 青青草国产精品97视觉盛宴| 99久久99久久精品国产片果冻 | 99久久99久久综合| 成人性视频网站| 国产成人在线电影| 国产suv精品一区二区6| 国产成人午夜99999| 国精产品一区一区三区mba桃花 | 国产精品影视网| 国产一区二区三区四区五区美女| 黑人巨大精品欧美一区| 精品一区二区三区影院在线午夜| 久久99深爱久久99精品| 蜜桃视频一区二区| 久久精品国产在热久久| 精品在线播放午夜| 国产精品一区二区x88av| 国产成人综合亚洲网站| 成人午夜精品一区二区三区| 成人av片在线观看| 日本中文字幕一区| 激情丁香综合五月| 国产成人无遮挡在线视频| 国产999精品久久久久久| 不卡的av电影在线观看| 视频一区二区不卡| 久久精品国产免费| 国产精品亚洲成人| 9i在线看片成人免费| 国产+成+人+亚洲欧洲自线| 成人听书哪个软件好| 91免费看片在线观看| 蜜臀国产一区二区三区在线播放 | 国产福利电影一区二区三区| 国产风韵犹存在线视精品| www.av精品| 裸体一区二区三区| 成人国产亚洲欧美成人综合网| 91欧美一区二区| 91蜜桃婷婷狠狠久久综合9色| 麻豆成人久久精品二区三区小说| 国产一区二区三区观看| 99久久精品免费| 狠狠色狠狠色综合日日91app| 国产黄色91视频| 97久久超碰国产精品| 久久超级碰视频| 99国产精品久久久久| 久久99热狠狠色一区二区| 国产ts人妖一区二区| 日本欧美一区二区| 成人免费视频一区二区| 久久99久久精品| 97久久精品人人爽人人爽蜜臀| 久久99精品久久久久久动态图| 高清国产一区二区| 精品无人区卡一卡二卡三乱码免费卡| 不卡视频免费播放| 国内精品伊人久久久久影院对白| 91丨国产丨九色丨pron| 国产精品资源在线| 久久精品国产亚洲高清剧情介绍| av在线一区二区| 国产成人在线观看| 99麻豆久久久国产精品免费| 国产精品一区二区久久精品爱涩| 免费日本视频一区| a亚洲天堂av| 国产91精品露脸国语对白| 蜜臀a∨国产成人精品| aaa欧美日韩| 成人高清在线视频| 国产福利电影一区二区三区| 精品一区精品二区高清| 日韩1区2区3区| 91影院在线观看| 波多野结衣精品在线| 国产成人小视频| 国产一区在线观看麻豆| 久久99精品国产.久久久久| 日韩精品视频网| 99国产精品国产精品毛片| 成人午夜在线视频| 高清视频一区二区| 懂色av一区二区夜夜嗨| 免费在线看成人av| 日韩极品在线观看| 99久久综合狠狠综合久久| 久久黄色级2电影| 精品一区二区三区日韩| 国产呦精品一区二区三区网站| 久久精品国产亚洲aⅴ| 免费在线观看视频一区| 奇米影视在线99精品| 日韩av成人高清| 青青草国产精品亚洲专区无| 天堂精品中文字幕在线| 三级成人在线视频| 蜜臂av日日欢夜夜爽一区| 免费精品视频在线| 极品少妇xxxx精品少妇偷拍| 国内成人精品2018免费看| 韩国v欧美v日本v亚洲v| 国产精品影视在线观看| 蜜桃一区二区三区在线| 黄页视频在线91| 国产91在线观看丝袜| 丁香婷婷综合色啪| 99re成人精品视频| 蜜臀av性久久久久av蜜臀妖精| 精品一区二区久久久| 国产成人综合亚洲网站| heyzo一本久久综合| 99久久精品免费观看| 国产综合色产在线精品| 成人三级伦理片| 青青草精品视频| 国产麻豆9l精品三级站| 99久久精品国产网站| 美女精品一区二区| 成人午夜精品在线| 91在线精品秘密一区二区| 日本vs亚洲vs韩国一区三区二区| 免费看欧美女人艹b| 国产成人精品免费在线| 日本aⅴ精品一区二区三区| 国产又黄又大久久| av影院午夜一区| 寂寞少妇一区二区三区| av中文一区二区三区| aa级大片欧美| 日韩av成人高清| 国v精品久久久网| 麻豆久久一区二区| av一区二区不卡| 国产九色精品成人porny| 91亚洲精品久久久蜜桃| 狠狠v欧美v日韩v亚洲ⅴ| av高清不卡在线| 国产一区二区三区不卡在线观看| 91色九色蝌蚪| 日韩av一级片| 成人亚洲一区二区一| 成人高清在线视频| 国产一区二区三区在线观看精品 | 久久国产人妖系列| 97久久久精品综合88久久| 国产一区二区精品在线观看| 免费成人av在线播放| 韩国女主播成人在线| 91麻豆免费观看| zzijzzij亚洲日本少妇熟睡| 国产精一区二区三区| 老司机精品视频导航| 青青草91视频| 91丨国产丨九色丨pron| 久久99精品久久久久久国产越南| 91蜜桃网址入口| 成人免费黄色大片| 国产成人一区二区精品非洲| 狠狠色丁香九九婷婷综合五月| 日本欧美韩国一区三区| 肉丝袜脚交视频一区二区| 99视频超级精品| 粉嫩av一区二区三区粉嫩| 国产一区二区女| 国产毛片精品视频| 国产麻豆精品视频| 国产一区二区三区日韩| 国产一区在线观看视频| 国产乱码精品一区二区三| 国产一区二区三区四区五区美女 | 日韩精品亚洲专区| 日韩专区在线视频| 日韩vs国产vs欧美| 99久精品国产| 肉肉av福利一精品导航| 人人爽香蕉精品| 老司机一区二区| 久久成人久久鬼色| 国产美女精品人人做人人爽 | 国产不卡在线一区| 国产成人欧美日韩在线电影| 国产成人在线视频网站| 成人动漫一区二区三区| 99久久精品国产毛片| 视频一区二区中文字幕| 免费久久精品视频| 国产一区在线视频| 国产激情精品久久久第一区二区 | 国产精品一二三四| 成人丝袜视频网| 91美女蜜桃在线| 蜜臀91精品一区二区三区| 99久久伊人网影院| 日韩av一二三| 国产一区二区视频在线| 成人免费看的视频| 日韩成人av影视| 国产一区在线看| 成人福利视频在线看| 91视频精品在这里| 国内欧美视频一区二区| 成人网在线免费视频| 日韩精品五月天| 国产一区欧美一区| 91丨九色porny丨蝌蚪| 99精品偷自拍| 精品一区二区免费视频| 不卡一区二区三区四区| 日本aⅴ亚洲精品中文乱码| 国产精品亚洲人在线观看| 99re66热这里只有精品3直播| 美女精品自拍一二三四| 国产成人av一区二区三区在线| 91视频你懂的| 国产精品一二三四| 男女视频一区二区| 蜜芽一区二区三区| 成人精品小蝌蚪| 久久丁香综合五月国产三级网站| 国产成人av一区二区三区在线 | 91亚洲精品久久久蜜桃网站| 狠狠网亚洲精品| 日韩激情视频网站| 波多野结衣中文字幕一区二区三区| 男女男精品网站| av亚洲精华国产精华精| 九色综合国产一区二区三区| 国产一区二区在线视频| 青草国产精品久久久久久| 成av人片一区二区| 国产一区二区网址| 卡一卡二国产精品 | 日本在线不卡一区| 99热在这里有精品免费| 国产寡妇亲子伦一区二区| 久久99久久99精品免视看婷婷| 99热这里都是精品| 国产91丝袜在线播放| 狠狠色2019综合网| 久久精品国产99久久6| 91麻豆成人久久精品二区三区| 狠狠狠色丁香婷婷综合激情| 全部av―极品视觉盛宴亚洲| 丝袜亚洲另类欧美| 床上的激情91.| 97久久精品人人做人人爽| 91片在线免费观看| 欧美aaaaaa午夜精品| 久久精品免费看| 国产精品456露脸| 99久久精品99国产精品 | 九一久久久久久| 国产精品主播直播| 波多野结衣亚洲一区| 日韩av电影一区| 国产乱码精品一区二区三| 成人h动漫精品一区二区| 91免费在线看| 韩国三级电影一区二区| 成人毛片视频在线观看| 日韩中文字幕亚洲一区二区va在线| 六月婷婷色综合| 高潮精品一区videoshd| 日本三级亚洲精品| 国产成人免费视| 奇米色一区二区| 丁香网亚洲国际| 久久精品久久久精品美女| 成人午夜av电影| 加勒比av一区二区| av爱爱亚洲一区| 国内成人自拍视频| 手机精品视频在线观看| 国产成人综合网站| 久久国产精品99久久久久久老狼| 国产99久久精品| 久久av资源网| 首页国产欧美久久| 国产.欧美.日韩| 国产尤物一区二区| 秋霞电影一区二区| 99久精品国产| 高清不卡一区二区| 精品一区二区三区免费| 91在线看国产| 国产99久久精品| 国产精品一区二区三区网站| 麻豆免费看一区二区三区| 91一区二区三区在线播放| 国产成人免费视频精品含羞草妖精| 日韩精品乱码av一区二区| 国产suv一区二区三区88区| 久久99精品久久久久久动态图 | 成人av网站大全| 顶级嫩模精品视频在线看| 国产呦萝稀缺另类资源| 老司机午夜精品| 蜜桃一区二区三区在线| 日韩电影免费在线观看网站| 成年人网站91| 成人avav影音| 懂色av一区二区三区免费观看 | 国产一区二区三区四区五区美女| 喷水一区二区三区| 日韩av在线免费观看不卡| 不卡av在线网| 91天堂素人约啪| 99精品视频中文字幕| 菠萝蜜视频在线观看一区| 成人午夜在线播放| 不卡一区在线观看| av中文字幕一区| 91视频观看视频| 91原创在线视频| 青娱乐精品视频| 蜜臀av一区二区在线免费观看 | 成人福利在线看| 91玉足脚交白嫩脚丫在线播放| 91丨porny丨国产入口| 91啪亚洲精品| 免费成人在线观看| 麻豆国产91在线播放| 久久99精品国产麻豆婷婷| 精品一区二区三区在线播放视频| 久久er精品视频| 国产精品自产自拍| 成人黄页毛片网站| 丝袜a∨在线一区二区三区不卡| 91老师片黄在线观看| 美腿丝袜在线亚洲一区| 美国十次了思思久久精品导航| 久久成人18免费观看| 风流少妇一区二区| 91亚洲精品一区二区乱码| 日本91福利区| 国产精品99久久不卡二区| 99久久精品99国产精品|