From 90e4076a8adf5dac4384f10d9ce22398580eaf34 Mon Sep 17 00:00:00 2001 From: cuiqian2004 <cuiqian2004@163.com> Date: 星期三, 09 七月 2025 17:27:06 +0800 Subject: [PATCH] 5601列表页面中的内容变化处理,自定义表单的set_dlg_attr_show --- pages/modal/3018_2.vue | 44 ++-- libs/mobox.api.js | 1 components/oi-form/index.vue | 2 pages/modal/5601.vue | 330 +++++++++++++++++++++++++++++---- pages/modal/3037_2.vue | 111 +++++----- manifest.json | 4 App.vue | 2 pages/modal/form/index.vue | 74 +++--- 8 files changed, 407 insertions(+), 161 deletions(-) diff --git a/App.vue b/App.vue index c4feda8..ce1885c 100644 --- a/App.vue +++ b/App.vue @@ -4,7 +4,7 @@ showToast, } from "@/js/Page.js" const rfidModule = uni.requireNativePlugin('RFIDModule'); - var main + var main; export default { globalData: { largeMode: false, diff --git a/components/oi-form/index.vue b/components/oi-form/index.vue index 3d23cc7..a288a41 100644 --- a/components/oi-form/index.vue +++ b/components/oi-form/index.vue @@ -53,6 +53,7 @@ }, methods: { setFormItemVisible(attrs) { + console.log(attrs) attrs.forEach((attr) => { let index = this.hiddenIds.findIndex((id) => id == attr.attr); if (attr.show) { @@ -61,6 +62,7 @@ if (index == -1) this.hiddenIds.push(attr.attr); } }); + console.log(this.hiddenIds) }, clearFormValues() { if (!this.form.model) return; diff --git a/libs/mobox.api.js b/libs/mobox.api.js index 3ef2617..17f05a9 100644 --- a/libs/mobox.api.js +++ b/libs/mobox.api.js @@ -12,7 +12,6 @@ options.method = options.method || this.common.method; options.dataType = options.dataType || this.common.dataType; return new Promise((resolve, reject) => { - console.log("request:", options); const app = getApp() let url = options.url let sessionID = app.globalData.sessionId || "" diff --git a/manifest.json b/manifest.json index d53110a..76e8bc6 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "MoboxPDA", "appid" : "__UNI__56D451E", "description" : "", - "versionName" : "1.1.61", - "versionCode" : 1161, + "versionName" : "1.1.62", + "versionCode" : 1162, "transformPx" : false, /* 5+App鐗规湁鐩稿叧 */ "app-plus" : { diff --git a/pages/modal/3018_2.vue b/pages/modal/3018_2.vue index 7431959..3538e49 100644 --- a/pages/modal/3018_2.vue +++ b/pages/modal/3018_2.vue @@ -2,7 +2,7 @@ <view class="uni-page-modal-3018-2" :class="largeMode?'large-mode':''"> <view class="view-content"> <!-- 琛ㄥご鏍峰紡 --> - <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :focusId="focusFieldId" + <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " :focusId="focusFieldId" @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton" @on-click-suffix="classAttr_extButton"></OIForm> @@ -75,7 +75,7 @@ }, data() { return { - largeMode: getApp().globalData.largeMode || false, + largeMode: getApp().globalData.largeMode || false, title: this.translateSys('add2'), btnName: "", param: {}, @@ -544,7 +544,7 @@ ontap(item) { //鎵爜鍔熻兘 - + this.focusOldFieldId = item.fieldId getApp().onScan((result) => { console.log(result); @@ -1568,28 +1568,28 @@ } }, - hideFormItems(data) { - const $this = this + hideFormItems(attrs) { + if (!Array.isArray(attrs)) { + return + } const head_styledef = this.head_styledef - data.forEach(async (attr, key) => { - head_styledef.form.items.forEach(async (ele, index) => { - //鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�- if (ele.name != 'Layout') { - if (ele.fieldId == attr.attr) { - ele.show = attr.show; - } - } else if (ele.name == 'Layout') { - ele.setting.colList.forEach((col) => { - if (col) { - if (col.fieldId == attr.attr) { - col.show = attr.show; - } - } - }); - } - }); + if (!head_styledef.hiddenIds) { + head_styledef.hiddenIds = [] + } + attrs.forEach((attr) => { + let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr); + if (attr.show) { + if (index > -1) head_styledef.hiddenIds.splice(index, 1); + } else { + if (index == -1) head_styledef.hiddenIds.push(attr.attr); + } }); + + this.setData({ + head_styledef: head_styledef + }) }, + afterOK() { this.saving = true const $this = this diff --git a/pages/modal/3037_2.vue b/pages/modal/3037_2.vue index 69b6392..e0896b0 100644 --- a/pages/modal/3037_2.vue +++ b/pages/modal/3037_2.vue @@ -1,7 +1,7 @@ <template> <view class="uni-page-modal-3017-2" :class="largeMode?'large-mode':''"> <!-- 琛ㄥご鏍峰紡 --> - <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @on-focus="ontap" + <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton" @on-click-suffix="classAttr_extButton"> </OIForm> <!-- 浠庢暟鎹�--> @@ -137,7 +137,7 @@ }, data() { return { - largeMode: getApp().globalData.largeMode || false, + largeMode: getApp().globalData.largeMode || false, title: this.translateSys('add2'), param: {}, edit_inital_event: "", //寮圭獥鍒濆鍖栦簨浠禝D @@ -266,11 +266,11 @@ } $this.head_styledef.form.items[index].selections = selections.map(( a) => { - return { - value: a.value, - text: a.label - } - }) + return { + value: a.value, + text: a.label + } + }) } } @@ -557,33 +557,34 @@ } } else if (data.action[i].action_type == 'set_dlg_attr_show') { var result = action.value; - result.forEach(async (attr, key) => { - styledef.form.items.forEach(async (ele, index) => { - //鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�- if (ele.name != 'Layout') { - if (ele.fieldId == attr.attr) { - ele.show = attr.show; - } - } else if (ele.name == 'Layout') { - ele.setting.colList.forEach( - col => { - if (col) { - if (col.fieldId == - attr.attr) { - col.show = attr - .show; - } - } - }); - } - }); - }); - var style_def = JSON.parse(JSON.stringify(styledef)); if (type == 'head') { - $this.head_styledef = []; - $this.head_styledef = style_def; + $this.setFormItemVisible(result) // console.log($this.head_styledef); } else { + result.forEach(async (attr, key) => { + styledef.form.items.forEach(async (ele, index) => { + //鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�+ if (ele.name != 'Layout') { + if (ele.fieldId == attr.attr) { + ele.show = attr.show; + } + } else if (ele.name == 'Layout') { + ele.setting.colList.forEach( + col => { + if (col) { + if (col.fieldId == + attr.attr) { + col.show = attr + .show; + } + } + }); + } + }); + }); + var style_def = JSON.parse(JSON.stringify(styledef)); + + $this.detail1_styledef = []; $this.detail1_styledef = style_def; // console.log($this.detail1_styledef); @@ -1612,31 +1613,8 @@ } } else if (action.action_type == 'set_dlg_attr_show') { - var result = action.value; - result.forEach(async (attr, key) => { - $this.head_styledef.form.items.forEach(async (ele, - index) => { - //鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�- if (ele.name != 'Layout') { - if (ele.fieldId == attr.attr) { - ele.show = attr.show; - } - } else if (ele.name == 'Layout') { - ele.setting.colList.forEach(col => { - if (col) { - if (col.fieldId == attr - .attr) { - col.show = attr - .show; - } - } - }); - } - }); - }); - var head_styledef = JSON.parse(JSON.stringify($this.head_styledef)); - $this.head_styledef = []; - $this.head_styledef = head_styledef; + var data = action.value; + $this.setFormItemVisible(data) // console.log($this.head_styledef); } else if (action.action_type == 'set_global_attr') { $this.global_attr = action.value || []; @@ -1703,6 +1681,27 @@ }); }); }, + setFormItemVisible(attrs) { + if (!Array.isArray(attrs)) { + return + } + const head_styledef = this.head_styledef + if (!head_styledef.hiddenIds) { + head_styledef.hiddenIds = [] + } + attrs.forEach((attr) => { + let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr); + if (attr.show) { + if (index > -1) head_styledef.hiddenIds.splice(index, 1); + } else { + if (index == -1) head_styledef.hiddenIds.push(attr.attr); + } + }); + + this.setData({ + head_styledef: head_styledef + }) + }, scan_DataObjRunCustomEvent(info, data_attr) { var $this = this; var obj_attr = {}; diff --git a/pages/modal/5601.vue b/pages/modal/5601.vue index 9545276..38bfe7e 100644 --- a/pages/modal/5601.vue +++ b/pages/modal/5601.vue @@ -1,7 +1,7 @@ <template> <view class="uni-page-modal-5601" :class="largeMode?'large-mode':''"> <!-- 琛ㄥご鏍峰紡 --> - <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :focusId="focusFieldId" + <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " :focusId="focusFieldId" @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton" @on-click-suffix="classAttr_extButton"></OIForm> @@ -27,7 +27,10 @@ @tap="onPanelClick(ii,style.form.htmlobjId)" :id="'dvpanel'+style.form.htmlobjId" :class="style.form.htmlobjId==active_id?'bk-active':''"> - <OIForm class="dv-panel-form" :form="style.form" viewMode></OIForm> + <OIForm class="dv-panel-form" :form="style.form" + :hiddenIds="style.hiddenIds ?style.hiddenIds :[] " viewMode @on-change="(item2)=>{ + onDetailEnterChange(item2,style,pageIndex) + }"></OIForm> <div class="dv-panel-button" v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0"> @@ -755,6 +758,7 @@ } }, + classAttr_extButton(item) { var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠� var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋�@@ -784,7 +788,155 @@ this.dataObjRunCustomEvent_Return(onSuffixClickEvent.id, '', onSuffixClickCallbackEvent.id, item); }, + onDetailEnterChange(item, style, pageIndex) { + let newVal = item.value + if (typeof item.value == "string") { + newVal = item.value.trim() + if (!newVal) { + item.oldvalue = newVal; + var attr = item.fieldId; + style.form.model[attr] = newVal; + return + } + } + if (item.oldvalue != newVal) { + item.oldvalue = newVal; + var attr = item.fieldId; + style.form.model[attr] = newVal; + var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+ if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠�+ this.runDetailChangeEvent(onChangeEvent, style, pageIndex) + } + } + }, + async runDetailChangeEvent(event, style, pageIndex) { + try { + const detail_attr = {} + style.form.items.forEach(item2 => { + if (item2.name == "Layout") { //鍒ゆ柇鏄惁鏄爡鏍忔牸寮�+ item2.setting.colList.forEach(col => { + if (col != null) detail_attr[col + .fieldId] = col.value; + }); + } else + detail_attr[item2.fieldId] = item2.value; + }); + var obj_attr = detail_attr + var input_param = Base64.encode( + JSON.stringify( + Object.keys(detail_attr).map((a) => ({ + attr: a, + value: detail_attr[a] || "", + })) + ) + ); + var dataInfo = { + ed_type: 0, + start_transaction: true, + class_id: style.form.clsId, + class_name: '', + event_id: event.id, + event_name: '', + data_obj_id: '', + obj_attr: obj_attr, + prj_id: '', + ref_cls_id: '', + rel_obj_id: '', + user_login: '', + data_json: '', + compose_info: '', + ext_info: '', + global_attr: '', + input_param: input_param, + }; + const result = await runCustomEvent(dataInfo) + console.log(result) + if (result.ret != 0) { + var tip = result.err_info ? typeof result + .err_info == 'string' ? result + .err_info : result.err_info.join('<br/>') : + ''; + if (result.ret == 801) { + if (this.param.Only_Script_Error) { + let pos = tip.indexOf("锛�); + if (pos > -1) tip = tip.substring(pos + + 1); + } + uni.showModal({ + title: this.translateSys( + "tip"), + content: tip, + showCancel: false, + confirmText: this.translateSys( + 'close') + }); + } else uni.showModal({ + title: this.translateSys('tip'), + content: tip + ',' + this + .translateSys('tip') + ':' + + result + .ret, + showCancel: false, + confirmText: this.translateSys( + 'close') + }); + return false; + } else { + var tip = result.info ? typeof result.info == + 'string' ? result.info : + result.info.join('<br/>') : ''; + if (tip) uni.showModal({ + title: this.translateSys('tip'), + content: tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + + if (result.result_type == 0 && result.action) { + result.action.forEach(item => { + if (item.action_type == "set_dlg_attr") { + // value = {"attr":"xxx", "value":"xxx"} + var data = item.value; + this.setDetailFormValues(data, style, pageIndex) + } else if (item.action_type == 'set_dlg_attr_show') { + var data = item.value; + this.setDetailFormItemVisible(data, style, pageIndex) + } + }); + } else { + + if (result.info) { + uni.showModal({ + title: this.translateSys( + "error") + "6.3", + content: result.info, + showCancel: false, + confirmText: this + .translateSys('close') + }); + } + } + + } + + } catch (ex) { + console.log(ex) + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({ + title: this.translateSys("error") + "6.1", + content: this.translate( + 'execute_after_change_event_failed') + this + .translateSys( + "comma") + + this.translate('reason') + this.translateSys("colon") + + tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + + }, getDetailAttrList(pageData) { const detailAttrList = []; console.log(pageData) @@ -1057,6 +1209,10 @@ // value = {"attr":"xxx", "value":"xxx"} var data = item.value; $this.setFormValues(data) + } + else if (item.action_type == 'set_dlg_attr_show') { + var data = item.value; + $this.setFormItemVisible(data) } }); } else { @@ -1513,10 +1669,31 @@ $this.$set(this.pageDetail, pageIndex, pageData) }, + setFormItemVisible(attrs) { + if (!Array.isArray(attrs)) { + return + } + const head_styledef = this.head_styledef + if (!head_styledef.hiddenIds) { + head_styledef.hiddenIds = [] + } + attrs.forEach((attr) => { + let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr); + if (attr.show) { + if (index > -1) head_styledef.hiddenIds.splice(index, 1); + } else { + if (index == -1) head_styledef.hiddenIds.push(attr.attr); + } + }); + + this.setData({ + head_styledef: head_styledef + }) + }, setFormValues(attrs) { const head_styledef = this.head_styledef - if (JSON.stringify(attrs) == '{}') { - return; + if (!Array.isArray(attrs)) { + return } console.log(attrs) attrs.forEach(async (attr, key) => { @@ -1595,13 +1772,113 @@ head_styledef: head_styledef }) }, + setDetailFormItemVisible(attrs, style, pageIndex) { + if (pageIndex < 0) + return + if (!Array.isArray(attrs)) { + return + } + const pageData = this.pageDetail[pageIndex] + if (!style.hiddenIds) { + style.hiddenIds = [] + } + attrs.forEach((attr) => { + let index = style.hiddenIds.findIndex((id) => id == attr.attr); + if (attr.show) { + if (index > -1) style.hiddenIds.splice(index, 1); + } else { + if (index == -1) style.hiddenIds.push(attr.attr); + } + }); + this.$set(this.pageDetail, pageIndex, pageData) + }, + setDetailFormValues(attrs, style, pageIndex) { + if (pageIndex < 0) + return + if (!Array.isArray(attrs)) { + return + } + + const pageData = this.pageDetail[pageIndex] + attrs.forEach(async (attr, key) => { + if (attr.choice_list) { + var dictItemList = []; + attr.choice_list.forEach(async (val, index) => { + dictItemList.push({ + text: val, + value: val + }); + }); + + style.form.items.forEach(async (attr_item, index) => { + if (attr_item.name != "Layout") { + if (attr_item.fieldId == attr.attr) { + if (attr_item.useDict) { + attr_item.dict = dictItemList; + } else { + attr_item.selections = dictItemList; + } + } + } else if (attr_item.name == "Layout") { + attr_item.setting.colList.forEach((col) => { + if (col) { + if (col.fieldId == attr.attr) { + if (col.useDict) { + col.dict = dictItemList; + } else { + col.selections = dictItemList; + } + } + } + }); + } + }); + } + if (!style.form.model[attr.attr]) { + style.form.model[attr.attr] = attr.value; + } + style.form.items.forEach(async (ele) => { + if (ele.name != "Layout") { + if (ele.fieldId == attr.attr) { + ele.value = attr.value; + ele.oldvalue = attr.value; + if (ele.name == "Input") { + if (attr.prompt) ele.placeholder = attr.prompt; + } + if (attr.enable !== undefined) { + if (attr.enable) ele.disabled = false; + else ele.disabled = true; + } + } + } else if (ele.name == "Layout") { + ele.setting.colList.forEach((col) => { + if (col) { + if (col.fieldId == attr.attr) { + col.value = attr.value; + col.oldvalue = attr.value; + if (col.name == "Input") { + if (attr.prompt) col.placeholder = attr.prompt; + } + if (attr.enable !== undefined) { + if (attr.enable) col.disabled = false; + else col.disabled = true; + } + } + } + }); + } + + }) + //鍒ゆ柇琛ㄥ崟閲屾槸鍚︽湁杩斿洖瀛楁锛屾病鏈夊氨瑁呰浇鍒癿odel閲岋紝鐐瑰嚮纭畾鎻愪氦鐨勬椂鍊欏甫涓婅繖浜涙暟鎹�+ }) + this.$set(this.pageDetail, pageIndex, pageData) + }, + onClickItem(e) { //閫夋嫨椤电 // console.log(e); this.current = e.currentIndex }, - onDetail1EnterChange(item) { //鐮佺洏涓牱寮忓洖杞︿簨浠�- console.log(item); - }, + async del(pageData, style, event) { //鑾峰彇琛ㄥご灞炴� var head_attr = {}; @@ -1870,39 +2147,8 @@ $this.setFormValues(result) } else if (action.action_type == 'set_dlg_attr_show') { var result = action.value; - result.forEach(async (attr, key) => { - $this.head_styledef.form.items.forEach(async ( - ele, - index) => { - //鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�- if (ele.name != 'Layout') { - if (ele.fieldId == attr - .attr) { - ele.show = attr.show; - } - } else if (ele.name == - 'Layout') { - ele.setting.colList - .forEach((col) => { - if (col) { - if (col - .fieldId == - attr - .attr - ) { - col.show = - attr - .show; - } - } - }); - } - }); - }); - var head_styledef = JSON.parse(JSON.stringify($this.$data - .head_styledef)); - $this.head_styledef = []; - $this.head_styledef = head_styledef; + $this.setFormItemVisible(result) + // console.log($this.head_styledef); } else if (action.action_type == 'set_global_attr') { $this.global_attr = action.value || []; @@ -2846,6 +3092,10 @@ var data = item.value; $this.setFormValues(data) } + else if (item.action_type == 'set_dlg_attr_show') { + var data = item.value; + $this.setFormItemVisible(data) + } }); } else { diff --git a/pages/modal/form/index.vue b/pages/modal/form/index.vue index bb650e4..876b3b5 100644 --- a/pages/modal/form/index.vue +++ b/pages/modal/form/index.vue @@ -2,7 +2,7 @@ <view class="uni-page-modal-form" :class="largeMode?'large-mode':''"> <view class="view-content"> <!-- 琛ㄥご鏍峰紡 --> - <OIForm ref="refBaseForm" class="v-head-style" :form="head_styledef.form" :focusId="focusFieldId" + <OIForm ref="refBaseForm" class="v-head-style" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " :focusId="focusFieldId" @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton" @on-click-suffix="classAttr_extButton"></OIForm> </view> @@ -64,7 +64,7 @@ }, data() { return { - largeMode: getApp().globalData.largeMode || false, + largeMode: getApp().globalData.largeMode || false, okLoading: false, title: this.translateSys('add2'), type: '', @@ -509,6 +509,10 @@ // value = {"attr":"xxx", "value":"xxx"} var data = item.value; $this.setFormValues(data) + } else if (action.action_type == 'set_dlg_attr_show') { + var data = action.value; + + $this.setFormItemVisible(data) } }); } else { @@ -815,6 +819,11 @@ var data = item.value; $this.setFormValues(data) } + else if (action.action_type == 'set_dlg_attr_show') { + var data = action.value; + + $this.setFormItemVisible(data) + } }); } else { @@ -924,6 +933,28 @@ head_styledef: head_styledef }) }, + setFormItemVisible(attrs) { + if (!Array.isArray(attrs)) { + return + } + const head_styledef = this.head_styledef + if (!head_styledef.hiddenIds) { + head_styledef.hiddenIds = [] + } + attrs.forEach((attr) => { + let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr); + if (attr.show) { + if (index > -1) head_styledef.hiddenIds.splice(index, 1); + } else { + if (index == -1) head_styledef.hiddenIds.push(attr.attr); + } + }); + this.setData({ + head_styledef: head_styledef + }) + + }, + popupChange(e) { console.log('褰撳墠妯″紡锛� + e.type + ',鐘舵�锛� + e.show); }, @@ -1106,43 +1137,8 @@ $this.setFormValues(result) } else if (action.action_type == 'set_dlg_attr_show') { var result = action.value; - result.forEach(async (attr, key) => { - $this.head_styledef.form.items - .forEach( - async (ele, - index) => { - //鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�- if (ele.name != 'Layout') { - if (ele.fieldId == attr - .attr) { - ele.show = attr - .show; - } - } else if (ele.name == - 'Layout') { - ele.setting.colList - .forEach( - col => { - if (col) { - if (col - .fieldId == - attr - .attr - ) { - col.show = - attr - .show; - } - } - }); - } - }); - }); - var head_styledef = JSON.parse(JSON.stringify($this.$data - .head_styledef)); - $this.head_styledef = []; - $this.head_styledef = head_styledef; - // console.log($this.head_styledef); + + $this.setFormItemVisible(result) } else if (action.action_type == 'set_global_attr') { $this.global_attr = action.value || []; } else { -- Gitblit v1.9.1