From 9104222d52107d6244d034e4bbfa1c6408376900 Mon Sep 17 00:00:00 2001 From: cuiqian2004 <cuiqian2004@163.com> Date: 星期五, 16 五月 2025 18:53:01 +0800 Subject: [PATCH] 3202 --- pages.json | 39 pages/modal/3202.vue | 1495 +++++++++++++++++++++++++++++++++ pages/index/index.vue | 29 manifest.json | 4 pages/modal/3202_view.vue | 1052 +++++++++++++++++++++++ 5 files changed, 2,596 insertions(+), 23 deletions(-) diff --git a/manifest.json b/manifest.json index a74b4bb..eb5fc7f 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "MoboxPDA", "appid" : "__UNI__56D451E", "description" : "", - "versionName" : "1.1.57", - "versionCode" : 1157, + "versionName" : "1.1.58", + "versionCode" : 1158, "transformPx" : false, /* 5+App鐗规湁鐩稿叧 */ "app-plus" : { diff --git a/pages.json b/pages.json index 3823a6c..bdbf04a 100644 --- a/pages.json +++ b/pages.json @@ -85,20 +85,18 @@ } }, { - "path" : "pages/modal/3018", - "style" : - { - "navigationBarTitleText":"%sys.add2%", - "enablePullDownRefresh": false - } + "path": "pages/modal/3018", + "style": { + "navigationBarTitleText": "%sys.add2%", + "enablePullDownRefresh": false + } }, { - "path" : "pages/modal/form/index", - "style" : - { - "navigationBarTitleText":"%sys.add2%", - "enablePullDownRefresh": false - } + "path": "pages/modal/form/index", + "style": { + "navigationBarTitleText": "%sys.add2%", + "enablePullDownRefresh": false + } }, // { // "path": "pages/modal/small-wnd/index", @@ -122,7 +120,7 @@ "float": "right", //瀵艰埅鏍忕殑宸﹀彸浣嶇疆 "fontSrc": "/static/uni.ttf", "text": "\ue612" - }, + }, { "color": "#000000", "colorPressed": "#2D8CF0", @@ -169,7 +167,22 @@ "navigationBarTitleText": "%sys.view%", "enablePullDownRefresh": false } + }, + { + "path": "pages/modal/3202", + "style": { + "navigationBarTitleText": "%sys.add2%", + "enablePullDownRefresh": false + } }, { + "path": "pages/modal/3202_view", + "style": { + "navigationBarTitleText": "%sys.view%", + "enablePullDownRefresh": false + } + }, + + { "path": "pages/modal/5600", "style": { "navigationBarTitleText": "%sys.sys.coding_disk%", diff --git a/pages/index/index.vue b/pages/index/index.vue index 486f506..01c53d5 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -33,7 +33,9 @@ </template> <script> - import {Base64} from '@/js/Base64.js'; + import { + Base64 + } from '@/js/Base64.js'; import utils from "@/js/utils.js" import { areaFunc @@ -58,7 +60,7 @@ onLoad(options) { console.log(options); // 鑾峰彇鎵�湁AppType="MES",ClientType="2"(PDA)鐨勫紩鐢ㄩ鍩熷姛鑳界偣淇℃伅 - + this.loadData() }, @@ -223,6 +225,12 @@ url: '../modal/3201?param=' + param + "&titlename=" + appName }); } + } else if (defCode == '3202') { + if (this.isMobox3) { //Mobox3 + uni.navigateTo({ + url: '../modal/3202?param=' + param + "&titlename=" + appName + }); + } } else if (defCode == '5600') { //鐮佺洏 if (this.isMobox3) { //Mobox3 uni.navigateTo({ @@ -272,32 +280,36 @@ height: 100vh; background: #EAEAEA; display: flex; + .area-list { width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto; - + .v-area { border-radius: 12rpx; - margin: 10rpx ; + margin: 10rpx; padding: 10rpx; background: #FFFFFF; display: flex; flex-direction: column; - width:calc(100% - 40rpx); + width: calc(100% - 40rpx); + .area-name { font-size: 40rpx; width: 100%; - padding: 10rpx ; + padding: 10rpx; } + .app-list { width: 100%; padding: 0; display: flex; flex-direction: row; flex-wrap: wrap; + .app { padding: 20rpx 25rpx 15rpx 25rpx; text-align: center; @@ -305,6 +317,7 @@ width: 125rpx; display: flex; flex-direction: column; + .logo { height: 105rpx; width: 105rpx; @@ -316,12 +329,12 @@ .ico { color: #000000; font-size: 40px; - line-height:105rpx; + line-height: 105rpx; } } .app-name { - padding-top: 10rpx ; + padding-top: 10rpx; } } } diff --git a/pages/modal/3202.vue b/pages/modal/3202.vue new file mode 100644 index 0000000..86dd61b --- /dev/null +++ b/pages/modal/3202.vue @@ -0,0 +1,1495 @@ +<template> + <view class="uni-page-modal-3202"> + <view class="v-content"> + <!-- 琛ㄥご鏍峰紡 --> + <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @on-focus="ontap" + @on-change="onEnterChange" @on-click-prefix="onEnterChange" @on-click-suffix="onEnterChange"></OIForm> + <view class="v-scroll-view"> + <scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-y" @scrolltolower="scrolltolower" + @scroll="scroll"> + <view class="view-content" id="tabpanel"> + <view class="dv-panel dv-panel-bkcolor" v-for="(style,ii) in detail1StyleDefList" :key="ii" + @click="onPanelClick(ii)" :id="'panel'+style.form.htmlobjId" + :class="activeItem == style?'bk-active':''"> + <div class="dv-panel-input"> + <OIForm class="v-area dv-panel" :form="style.form" viewMode></OIForm> + </div> + <div class="dv-panel-button" v-if="click_item_view"> + <a @click="onViewPageClick(style)"><i class="mobox-normal-right-arrow" /></a> + </div> + </view> + </view> + </scroll-view> + </view> + </view> + </view> +</template> + +<script> + import { + Base64 + } from '@/js/Base64.js'; + import classUtils from "@/js/utils.js" + import { + appGetInfo, + dictGetInfo + } from "@/api/mobox.js" + import { + getUIStyleInfo, + runCustomEvent, + dataObjQuery, + dataObjDel + } from "@/api/data.js" + import dayjs from "dayjs"; + import OIForm from '@/components/oi-form/index.vue' + import buttonClickMixin from '@/mixins/button-click.js'; + + export default { + mixins: [buttonClickMixin], + components: { + OIForm + }, + data() { + return { + title: this.translateSys('add2'), + isFilter: true, + param: {}, + focusMateria: false, + styledef: {}, + head_styledef: { + form: { + items: [] + } + }, + detail1_styledef: {}, + detail1StyleDefList: [], + items: [], + active_id: '', + activeItem: {}, + where: '', + wheres: '', + orderby: '', + query_id: '', + pageindex: 1, + page_size: 10, + page_count: 0, + scrollTop: 0, + old: { + scrollTop: 0 + }, + isScroll: true, + //鑾峰彇鏁版嵁绫荤殑HTML椤甸潰 + click_item_view: false, + refreshing: false + }; + }, + computed: { + clickItemEvent() { + return { + name: this.param?.ClickItem_Event?.name, + id: this.param?.ClickItem_Event?.id, + }; + }, + + }, + async onLoad(options) { + // console.log(options); + uni.setNavigationBarTitle({ + title: options.titlename + }); //璁剧疆椤堕儴鏍囬 + this.title = options.titlename; + this.param = JSON.parse(options.param); + this.styledef = {}; + this.head_styledef = { + form: { + items: [] + } + }; + this.detail1_styledef = {}; + this.detail1StyleDefList = []; + this.items = []; + this.active_id = ''; + this.activeItem = {}; + this.click_item_view = false + if (this.param?.ClickItem_Event?.id) + this.click_item_view = true + await this.Detail1_UIstyleGetInfo(this.param.ClsID, this.param.ListItem_Panel.id); + this.initial() + + }, + methods: { + // + setData: function(obj) { + let that = this; + let keys = []; + let val, data; + + Object.keys(obj).forEach(function(key) { + keys = key.split("."); + val = obj[key]; + data = that.$data; + keys.forEach(function(key2, index) { + if (index + 1 == keys.length) { + that.$set(data, key2, val); + } else { + if (!data[key2]) { + that.$set(data, key2, {}); + } + } + data = data[key2]; + }); + }); + }, + //鍒濆鍖�+ async initial() { + this.refreshing = true + await this.Head_UIStyleGetInfo(this.param.ClsID, this.param.Input_Panel.id); + this.wheres = ''; + this.pageindex = 1; + this.page_size = 3; + this.query_id = ""; + this.detail1StyleDefList = []; + this.refreshing = false + + }, + + //婊氬姩鍒板簳閮ㄥ悗鎳掑姞杞芥暟鎹�+ async scrolltolower(e) { + // console.log(e) + if (this.isScroll) { //鍒ゆ柇鍒锋柊涓�鍚庝笉浼氭寔缁埛鏂�+ if (this.page_count == this.pageindex) { + return; + } + this.pageindex += 1; + if (this.where || this.page_count == 1) { + this.query_id = ""; + this.detail1StyleDefList = []; + } + await this.loadDataGetList(); + } + }, + scroll: function(e) { + // console.log(e.detail.scrollTop) + this.old.scrollTop = e.detail.scrollTop + }, + async Head_UIStyleGetInfo(class_id, style_id) { //鑾峰彇鑷畾涔夎〃鍗曟牱寮�+ try { + var $this = this; + var dataInfo = { + class_id: class_id, + ui_style_id: style_id, + }; + // console.log(dataInfo); + const result = await getUIStyleInfo(dataInfo) + var styledef = ""; + if (result.style_def) { + //mobox2鐨剆tyle_def鏄痡son瀛楃涓�+ styledef = result.style_def.replace(/\\/g, ""); + //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓�+ if (!result.style_def.includes('"')) styledef = Base64.decode(result + .style_def); + } + $this.head_styledef = result.style_def ? JSON.parse(styledef) : {}; + // this.form = this.head_styledef.form.model; + // console.log($this.head_styledef); + if ($this.head_styledef.form?.items) { + $this.head_styledef.form.items.forEach(async (ele, index) => { + if (ele.useDict == true) { //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀 + await this.DictGetInfo(ele.bind.dict, index, 'mast'); + } else { + if (ele?.name === "Select") { + const selections = ele?.selections || [] + //鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ� + let itemName = ele.value || ""; + if (itemName) { + $this.head_styledef.form + .model[ele.fieldId] = itemName; + } + $this.head_styledef.form.items[index].selections = selections.map(( + a) => { + return { + value: a.value, + text: a.label + } + }) + } + + } + + }); + + } + } catch (ex) { + // console.log(ex); + let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex + uni.showModal({ + title: this.translateSys("error") + "1.1", + content: tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + + }, + async Detail1_UIstyleGetInfo(class_id, style_id) { //鑾峰彇鑷畾涔夎〃鍗曟牱寮�+ try { + var $this = this; + var dataInfo = { + class_id: class_id, + ui_style_id: style_id, + }; + // console.log(dataInfo); + const result = await getUIStyleInfo(dataInfo) + var styledef = ""; + if (result.style_def) { + //mobox2鐨剆tyle_def鏄痡son瀛楃涓�+ styledef = result.style_def.replace(/\\/g, ""); + //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓�+ if (!result.style_def.includes('"')) styledef = Base64.decode(result + .style_def); + } + $this.detail1_styledef = result.style_def ? JSON.parse(styledef) : {}; + $this.detail1_styledef.SelBut_Checked = false; + } catch (ex) { + // console.log(ex); + let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex + uni.showModal({ + title: this.translateSys("error") + "1.1", + content: tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + + + }, + async DictGetInfo(dict, index, type) { //Mobox3寰楀埌寰楀埌瀛楀吀淇℃伅瀛楀吀椤瑰垪琛�+ this.data = []; + var $this = this; + var dataInfo = { + dict_id: dict.id, + dict_name: dict.name + }; + try { + const result = await dictGetInfo(dataInfo) + if (type == 'mast') { + var list = []; + var itemName = ''; + (result.dict_item_list || []).forEach((item) => { + if (item.is_default == '1') + itemName = item.name + list.push({ + text: item.value ? item.value : item.name, + value: item.name, + }); + }); + //鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ� + if (itemName) { + $this.head_styledef.form.items[index].value = itemName; + var attr = $this.head_styledef.form.items[index].fieldId; + $this.head_styledef.form.model[attr] = itemName; + } + $this.head_styledef.form.items[index].dict = list; + var head_styledef = JSON.parse(JSON.stringify($this.head_styledef)); + $this.head_styledef = []; + $this.head_styledef = head_styledef; + } + } catch (ex) { + // console.log(ex); + uni.showModal({ + title: this.translateSys("error") + "3", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + }, + + //鏌ヨ鏁版嵁绫绘暟鎹俊鎭�+ async loadDataGetList() { + try { + uni.showLoading({ + title: this.translateSys("loading"), + mask: true + }); + //鏉′欢鏌ヨ + var condition = this.wheres; + if (this.where) { + if (condition) condition += ' and '; + condition += this.where; + } + // console.log(condition); + // console.log(this.orderby); + var $this = this; + var dataInfo = { + class_id: this.param.ClsID, + attrs: [], + condition: this.toWhereBase64String("" + condition + ""), + prj_rel_type: "", + order_by: this.orderby, + page_size: this.page_size, + page: this.pageindex, + query_id: this.query_id, + }; + dataObjQuery(dataInfo).then(result => { + console.log(result); + uni.hideLoading(); + + // var list=[]; + $this.query_id = ''; + if (result) { + $this.page_count = result.page_count; + if (result.page_count > 1) $this.query_id = result.query_id; + + // $this.detail1StyleDefList=[]; + const detail1StyleDefList = [] + result.obj_list.forEach((obj) => { + var styleStr = JSON.stringify($this.detail1_styledef); + var detailStyle = JSON.parse(styleStr); + // var info ={ + // S_ID:obj.id, + // }; + obj.attr_list.forEach((attr) => { + // info[attr.name]=attr.value; + detailStyle.form.items.forEach(ele => { + if (ele.name != 'Layout') { + if (ele.fieldId == attr + .name) ele + .value = attr.value; + } else if (ele.name == + 'Layout') { + ele.setting.colList + .forEach( + col => { + if (col) { + if (col + .fieldId == + attr + .name) + col + .value = + attr + .value; + } + }); + } + }); + }); + + detailStyle.form.htmlobjId = obj.id ? obj.id.replace(/-/g, '') + .replace('{', '').replace('}', '') : 'null'; + detailStyle.form.objId = obj.id; + detailStyle.form.attrs = obj.attr_list; + detail1StyleDefList.push(detailStyle); + + }); + console.log(detail1StyleDefList) + $this.setData({ + detail1StyleDefList: detail1StyleDefList + }) + + + // 瑙e喅view灞備笉鍚屾鐨勯棶棰�+ // $this.scrollTop = $this.old.scrollTop; + $this.isScroll = false; + setTimeout(function() { + $this.isScroll = true; + }, 1000); + // console.log($this.detail1StyleDefList); + } + + + + + }).catch(ex => { + // console.log(ex); + uni.showModal({ + title: this.translateSys("error") + "5.1", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys('close') + }); + }); + } catch (ex) { + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({ + title: this.translateSys("error") + "5.2", + content: tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + }, + //鍒锋柊 + Refresh(value) { + this.initial() + }, + //鐐瑰嚮鏄剧ず娴忚瀵硅薄鏄剧ず椤甸潰 + async onViewPageClick(style) { + if (!this.clickItemEvent.id) { + return; + } + const $this = this + + var obj_attr = this.head_styledef.form.model; + // console.log(obj_attr); + var input_param = Base64.encode( + JSON.stringify( + Object.keys(obj_attr).map((a) => ({ + attr: a, + value: obj_attr[a] || "", + })) + ) + ); + let detail_attr = {}; + style.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) detail_attr[cols.fieldId] = cols.value; + }); + } else detail_attr[item.fieldId] = item.value; + }); + detail_attr["id"] = style.form.objId; + + const attrs = Object.keys(detail_attr) + .map((a) => ({ + attr: a, + value: detail_attr[a] || "", + })) + .filter((a) => { + return a.attr != "id"; + }); + let data_json = Base64.encode(JSON.stringify(attrs)); + runCustomEvent({ + ed_type: 0, + start_transaction: true, + class_id: this.param.ClsID, + event_id: this.clickItemEvent.id, + input_param, + data_json, + }).then(result => { + // 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 == "jump_pda_page") { + // value = {"attr":"xxx", "value":"xxx"} + var data = item.value; + uni.navigateTo({ + url: `../modal/3202_view?param=${JSON.stringify($this.param)}&titlename=${data.page?.page_name || ""}&dataObj=${JSON.stringify(data)}`, + events: { + // 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁 + ExitViewEvent: function(data) { + console.log(data); + this.runCustomEvent(data); + } + } + }); + } + }) + } else { + if (result.info) { + uni.showModal({ + title: this + .translateSys( + "tip"), + content: result.info, + showCancel: false, + confirmText: this + .translateSys( + 'close') + }); + } + } + } + + + }).catch(ex => { + // console.log(ex); + uni.showModal({ + title: this.translateSys("error") + + "8.1", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys( + 'close') + }); + }); + + + + }, + ontap(item) { //鎵爜鍔熻兘 + // var $ele = e; + //console.log(e.target) + getApp().onScan((result) => { + console.log(result.decodedata); + item.value = result.decodedata; + uni.hideKeyboard(); + var $this = this; + console.log(item); + let newVal = item.value.trim() + if (newVal) { + item.oldvalue = newVal; + + var attr = item.fieldId; + this.head_styledef.form.model[attr] = newVal; + var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+ var onSuffixClickCallbackEvent = item.bind + .onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�+ var onSuffixClickEvent = item.bind + .onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋�+ var isflag = false; + + if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+ $this.onChange(onChangeEvent); + } else { + $this.where = item.fieldId + " like '%" + newVal + "%'"; + $this.query_id = ''; + $this.pageindex = 1; + $this.detail1StyleDefList = []; + $this.loadDataGetList(); + } + $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴� + setTimeout(function() { + uni.hideKeyboard(); + }, 1000); + + } + }) + }, + + onEnterChange(item) { //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢 + // console.log(item); + let newVal = item.value + if (typeof item.value == "string") { + newVal = item.value.trim() + if (!newVal) + return + } + if (item.oldvalue != newVal) { + item.oldvalue = newVal; + var attr = item.fieldId; + this.head_styledef.form.model[attr] = newVal; + var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+ var onSuffixClickCallbackEvent = item.bind + .onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�+ var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋�+ var isflag = false; + + if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+ this.onChange(onChangeEvent); + } else { + this.where = item.fieldId + " like '%" + item.value + "%'"; + this.query_id = ''; + this.pageindex = 1; + this.detail1StyleDefList = []; + this.loadDataGetList(); + } + + } + }, + // 鍐呭鍙樺寲鍚庝簨浠�+ async onChange(event) { + try { + if (event.id) { + var obj_attr = this.head_styledef.form.model; + // console.log(obj_attr); + var input_param = Base64.encode( + JSON.stringify( + Object.keys(obj_attr).map((a) => ({ + attr: a, + value: obj_attr[a] || "", + })) + ) + ); + var $this = this; + var dataInfo = { + ed_type: 0, + start_transaction: true, + class_id: this.head_styledef.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, + }; + runCustomEvent(dataInfo).then(result => { + // 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_query_condition") { + var value = item.value; + $this.wheres = value.condition; + $this.orderby = value.order ? value.order : + "" + $this.pageindex = 1; + $this.query_id = ""; + $this.detail1StyleDefList = []; + $this.loadDataGetList(); + } + }) + } else { + if (result.info) { + uni.showModal({ + title: this + .translateSys( + "tip"), + content: result.info, + showCancel: false, + confirmText: this + .translateSys( + 'close') + }); + } + } + } + + + }).catch(ex => { + // console.log(ex); + uni.showModal({ + title: this.translateSys("error") + + "8.1", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys( + 'close') + }); + }); + } + } catch (ex) { + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({ + title: this.translateSys("error") + "8.2", + content: this.translate( + 'execute_after_change_event_failed') + this + .translateSys( + "comma") + + this.translate('reason') + this.translateSys( + "colon") + tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + + } + }, + setFormValues(attrs) { + const head_styledef = this.head_styledef + if (JSON.stringify(attrs) == '{}') { + return; + } + console.log(attrs) + attrs.forEach(async (attr, key) => { + if (attr.choice_list) { + var dictItemList = []; + attr.choice_list.forEach(async (val, index) => { + dictItemList.push({ + text: val, + value: val + }); + }); + + head_styledef.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 (!head_styledef.form.model[attr.attr]) { + head_styledef.form.model[attr.attr] = attr.value; + } + head_styledef.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閲岋紝鐐瑰嚮纭畾鎻愪氦鐨勬椂鍊欏甫涓婅繖浜涙暟鎹�+ }) + console.log(head_styledef) + this.setData({ + head_styledef: head_styledef + }) + }, + //鐐逛腑琛ㄥ崟 + onPanelClick(value) { //鐐瑰嚮闈㈡澘楂樹寒鏄剧ず + // console.log(value); + this.setData({ + activeItem: this.detail1StyleDefList[value] + }) + + }, + + //浜嬩欢澶勭悊 + async runCustomEvent(dataInfo) { + try { + var $this = this; + runCustomEvent(dataInfo).then(result => { + 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 == + "goback_to_pre_page") { //杩斿洖涓婁竴椤�+ var value = item.value; + uni.navigateBack({ + delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉 + }); + } else { + uni.showModal({ + title: this + .translateSys( + "tip" + ), + content: this + .translateSys( + "quotation_mark_left" + ) + + item + .action_type + + this + .translateSys( + "quotation_mark_right" + ) + + this + .translate( + "tip_action_unprocessed" + ), + showCancel: false, + confirmText: this + .translateSys( + 'close' + ) + }); + } + }); + } else { + if (result.info) { + uni.showModal({ + title: this + .translateSys( + "tip"), + content: result.info, + showCancel: false, + confirmText: this + .translateSys( + 'close') + }); + } + } + } + }).catch(ex => { + // console.log(ex); + uni.showModal({ + title: this.translateSys("error") + + "9.1", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys( + 'close') + }); + }); + } catch (ex) { + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({ + title: this.translateSys("error") + "9.2", + content: this.translate('execute_event_failed') + + this.translateSys( + "comma") + + this.translate('reason') + this.translateSys( + "colon") + tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + + } + }, + + cancel(e) { //鍙栨秷 + uni.navigateBack({ + delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉 + }); + }, + /** + * 鍙敮鎸乕"column1='A' or column2='B'", "column3='C' and column4='D'", "column5='E'"]杩欑鏍煎紡 + * { + * "model": 0 / 1, + * "condition": + * [ + * [ + * { }, + * { }, + * { } + * ], + * [ + * { } + * ], + * [ + * { } + * ] + * ] + * } + */ + + toWhereBase64String(list) { + if (typeof list == 'string') list = [list] + var sql = [] + var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', + '>', ' like' + ] + list.forEach(ls => { + var where = ls.trim() + if (where.startsWith('(') && where.endsWith(')')) + where = where.replace( + /^\(/, + '').replace( + /\)$/, '') + if (where.toLowerCase().includes(' and ')) { + // 浜岀骇and鏀惧湪绗竴绾ф暟缁勪腑 + where.split(/ and /i).forEach(li => { + var l = li.trim() + if (l.startsWith('(') && l.endsWith( + ')')) l = l.replace( + /^\(/, + '').replace( + /\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.toLowerCase().includes(seps[ + i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(new RegExp( + sep, 'i')) + var field = values[0]?.trim() + .replace(/^\[/, '') + .replace( + /\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes( + sep) && values[1] + ?.toLowerCase().includes( + 'select ') && values[1] + ?.toLowerCase() + .includes( + ' from ')) { + value = l.replace(field, '') + .replace( + /^\s*(in|not in)\s*/i, + '').trim() + if (value.startsWith('(') && + value.endsWith(')')) + value = value + .replace(/^\(/, '') + .replace(/\)$/, '').trim() + } else { + value = values[1]?.trim() + .replace(/^\'/, '') + .replace( + /\'$/, '') + + if (['in', 'not in'].includes( + op)) { + value = value.replace( + /^\(/, '').replace( + /\)$/, + '') + value = value.split(',') + .map(v => v.trim() + .replace( + /^\'/, '') + .replace(/\'$/, '') + ) + } + } + sql.push([{ + field, + value, + op + }]) + } + }) + } else if (where.toLowerCase().includes(' or ')) { + // 浜岀骇or鏀惧湪绗簩绾у悓涓�粍鏁扮粍涓�+ var s = [] + where.split(/ or /i).forEach(li => { + var l = li.trim() + if (l.startsWith('(') && l.endsWith( + ')')) l = l.replace( + /^\(/, + '').replace( + /\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.toLowerCase().includes(seps[ + i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(new RegExp( + sep, 'i')) + var field = values[0]?.trim() + .replace(/^\[/, '') + .replace( + /\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes( + sep) && values[1] + ?.toLowerCase().includes( + 'select ') && values[1] + ?.toLowerCase() + .includes( + ' from ')) { + value = l.replace(field, '') + .replace( + /^\s*(in|not in)\s*/i, + '').trim() + if (value.startsWith('(') && + value.endsWith(')')) + value = value + .replace(/^\(/, '') + .replace(/\)$/, '').trim() + } else { + value = values[1]?.trim() + .replace(/^\'/, '') + .replace( + /\'$/, '') + + if (['in', 'not in'].includes( + op)) { + value = value.replace( + /^\(/, '').replace( + /\)$/, + '') + value = value.split(',') + .map(v => v.trim() + .replace( + /^\'/, '') + .replace(/\'$/, '') + ) + } + } + sql.push([{ + field, + value, + op + }]) + } + }) + sql.push(s) + } else { + var li = where + // 鍗曚竴鏌ヨ鏉′欢鐩存帴鏀惧湪绗竴绾ф暟缁勪腑 + var l = li.trim() + if (l.startsWith('(') && l.endsWith(')')) l = l + .replace(/^\(/, '') + .replace( + /\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.toLowerCase().includes(seps[i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(new RegExp(sep, 'i')) + var field = values[0]?.trim().replace(/^\[/, + '').replace(/\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes(sep) && values[ + 1]?.toLowerCase() + .includes('select ') && + values[1]?.toLowerCase().includes(' from ') + ) { + value = l.replace(field, '').replace( + /^\s*(in|not in)\s*/i, '') + .trim() + if (value.startsWith('(') && value + .endsWith(')')) value = value + .replace(/^\(/, '') + .replace(/\)$/, '').trim() + } else { + value = values[1]?.trim().replace(/^\'/, + '').replace(/\'$/, '') + + if (['in', 'not in'].includes(op)) { + value = value.replace(/^\(/, '') + .replace(/\)$/, '') + value = value.split(',').map(v => v + .trim().replace(/^\'/, + '') + .replace(/\'$/, + '')) + } + } + sql.push([{ + field, + value, + op + }]) + } + } + }) + + if (sql.length > 0) + return Base64.encode(JSON.stringify({ + model: 1, + condition: sql + })) + else + return '' + }, + translate(t) { + if (typeof this.$t == "function") return this.$t(`page.${t}`) + else return t; + }, + translateSys(t) { + if (typeof this.$t == "function") return this.$t(`sys.${t}`) + else return t; + }, + + }, + }; +</script> +<style lang="scss"> + .uni-page-modal-3202 { + display: flex; + flex-direction: column; + height: calc(100vh - 30rpx); + padding: 15rpx 0; + + .v-headStyle { + width: 95%; + } + + .v-content { + flex: 1; + display: flex; + width: 100%; + flex-direction: column; + min-height: 100px; + overflow: hidden; + /* border:0.1px solid red; */ + } + + .view-content { + width: calc(100% - 30rpx); + padding: 10rpx 10rpx 10rpx 20rpx; + display: flex; + margin-top: 10rpx; + flex-direction: column; + + } + + .dv-panel-bkcolor { + border: 1px solid #ccc; + border-radius: 5px; + background-color: #F5F5F5; + } + + .dv-panel { + padding: 10rpx 10rpx 0rpx 0px; + border-radius: 12rpx; + margin-bottom: 10rpx; + } + + .dv-panel-input { + vertical-align: middle; + width: 92%; + display: inline-block; + text-align: left; + + .uni-forms-item { + padding-bottom: 5rpx; + margin-bottom: 0; + + .uni-forms-item__label { + height: 20px !important; + padding: 0 10rpx 0 0 !important; + } + } + } + + + + .dv-panel-button { + display: inline-block; + } + + .dv-panel-button a i { + font-size: 36rpx; + } + + .dv-panel-button button { + height: 50rpx; + font-size: 26rpx; + padding: 0 24rpx; + } + + .bk-active { + background-color: #D6FCB2; + } + + .uni-padding-wrap { + margin-top: 20rpx; + background-color: #98DAEA; + width: 104rpx; + height: 80rpx; + text-align: center; + border-radius: 54rpx; + padding: 24rpx 0 0 0; + float: right; + display: inline-block; + } + + .uni-padding-wrap a { + font-size: 40rpx; + } + + + .input-disabled { + background-color: #f3f3f3 !important; + } + + .dv_panel_condent { + background-color: #D6FCB2; + padding: 20rpx; + border-radius: 12rpx; + } + + .dv_panel_attr { + margin-bottom: 10rpx; + } + + .dv_panel_attr .dv_inline { + display: inline-block; + text-align: center; + } + + .dv_panel_attr i { + vertical-align: 25px; + margin: 0 10px; + } + + .dv_panel_attr .dv_inline p { + background: #4D6AF4; + color: #fff; + padding: 10rpx 15rpx; + line-height: 1.5; + border-radius: 10rpx; + } + + .v-scroll-view { + flex: 1; + overflow: hidden; + width: 98%; + } + + .scroll-y { + width: 100%; + height: 100%; + } + + .scroll-view_H { + white-space: nowrap; + width: 100%; + } + + .dv_panel_content { + margin: 0 10px; + } + + .dv_panel_content .dv_panel_attr { + margin-bottom: 5px; + } + + .dv_panel_content .dv_panel_attr i { + vertical-align: super; + margin: 0 10px; + } + + .dv_panel_content .dv_panel_attr .circel_node {} + + /* 鏄彵褰㈢殑 */ + .dv_panel_content .dv_panel_attr .dv_diamond_node p { + width: 50px; + height: 50px; + background-color: #4D6AF4; + transform: rotate(45deg); + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + margin: 15px auto; + padding: 9px; + // line-height: 28px; + text-align: center; + } + + .dv_panel_content .dv_panel_attr .dv_diamond_node p span { + color: #fff; + transform: rotate(-45deg); + display: inline-block; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + // white-space: nowrap; + } + + /* 榛樿褰�*/ + .dv_panel_content .dv_panel_attr .dv_box_node, + .dv_panel_content .dv_panel_attr .dv_diamond_node { + vertical-align: middle; + display: inline-block; + text-align: center; + width: 100px; + } + + .dv_panel_content .dv_panel_attr .dv_box_node p { + background: #4D6AF4; + color: #fff; + padding: 3px 7px; + line-height: 1.5; + border-radius: 5px; + } + + .demo-uni-row { + margin-bottom: 0px; + display: block; + } + + ::v-deep .uni-row { + margin-bottom: 0px; + } + + .view-tabpage ::v-deep .uni-row { + margin-bottom: 5px; + } + + .demo-uni-col { + height: 36px; + border-radius: 5px; + } + + .demo-uni-row .uni-input { + width: calc(100% - 120px); + } + } +</style> \ No newline at end of file diff --git a/pages/modal/3202_view.vue b/pages/modal/3202_view.vue new file mode 100644 index 0000000..2fd3cfb --- /dev/null +++ b/pages/modal/3202_view.vue @@ -0,0 +1,1052 @@ +<template> + <view class="uni-page-modal-3202-view"> + <view class="v-content"> + <!-- 琛ㄥご鏍峰紡 --> + <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" viewMode></OIForm> + <view class="v-scroll-view"> + <view class="view-content" id="tabpanel"> + <view class="dv-panel dv-panel-bkcolor" v-for="(style,ii) in detail1StyleDefList" :key="ii" + @click="onPanelClick(ii)" :id="'panel'+style.form.htmlobjId"> + <div class="dv-panel-input"> + <OIForm class="v-area dv-panel" :form="style.form" viewMode></OIForm> + </div> + </view> + </view> + </view> + <view class="view-bottom"> + <view class="uni-padding-wrap" v-if="dropdownBtns.length>0"> + <view class="uni-btn-v"> + <a @tap="clickDropdownBtns"> + <text class="mobox-normal-more" /> + </a> + </view> + </view> + <button type="default" @click="onButtonClicked(btn)" class="btn_add" + :style="{width:90/buttons.length + '%'}" v-for="(btn,key) in buttons">{{btn.ShowName}}</button> + </view> + + </view> + </view> +</template> + +<script> + import { + Base64 + } from '@/js/Base64.js'; + import classUtils from "@/js/utils.js" + import { + appGetInfo, + dictGetInfo + } from "@/api/mobox.js" + import { + getUIStyleInfo, + runCustomEvent, + dataObjQuery, + dataObjDel + } from "@/api/data.js" + import dayjs from "dayjs"; + import OIForm from '@/components/oi-form/index.vue' + import buttonClickMixin from '@/mixins/button-click.js'; + + export default { + mixins: [buttonClickMixin], + components: { + OIForm + }, + data() { + return { + title: this.translateSys('add2'), + param: {}, + styledef: {}, + head_styledef: { + form: { + items: [] + } + }, + detail1_styledef: {}, + detail1StyleDefList: [], + active_id: '', + activeItem: {}, + }; + }, + computed: { + enter_view_event() { + return { + id: this.param.Enter_View_Event?.id || "", + name: this.param.Enter_View_Event?.name || "", + }; + }, + exit_view_event() { + return { + id: this.param.Exit_View_Event?.id || "", + name: this.param.Exit_View_Event?.name || "", + }; + }, + buttons() { + const btns = this.param.ViewPage_Button || []; + const list = []; + if (btns.length > 3) { + for (let i = 2; i > -1; i--) { + list.push(btns[i]); + } + return list; + } else { + return btns; + } + }, + dropdownBtns() { + const btns = this.param.ViewPage_Button || []; + const list = []; + if (btns.length > 3) { + for (let i = 3; i < btns.length; i++) { + list.push(btns[i]); + } + return list; + } else { + return []; + } + }, + }, + onBackPress(e) { + this.navigateBackEvent() + }, + async onLoad(options) { + console.log(options); + uni.setNavigationBarTitle({ + title: options.titlename + }); //璁剧疆椤堕儴鏍囬 + this.title = options.titlename; + this.param = JSON.parse(options.param); + this.head_styledef = { + form: { + items: [] + } + }; + this.detail1_styledef = {}; + this.detail1StyleDefList = []; + this.active_id = ''; + this.activeItem = {}; + await this.Head_UIStyleGetInfo(this.param.ClsID, this.param.MasterView_Panel.id); + await this.Detail1_UIstyleGetInfo(this.param.ClsID, this.param.ViewItem_Panel.id); + const dataObj = options.dataObj ? JSON.parse(options.dataObj) : {}; + if (dataObj) { + let attrs = []; + let master_view = dataObj?.master_view; + Object.keys(master_view).forEach((a) => { + attrs.push({ + attr: a, + value: master_view[a] + }); + }); + attrs.forEach((attr) => { + this.head_styledef.form.items.forEach((ele2) => { + if (ele2.name != "Layout") { + if (ele2.fieldId == attr.attr) { + ele2.value = attr.value; + } + } else if (ele2.name == "Layout") { + ele2.setting.colList.forEach((col) => { + if (col) { + if (col.fieldId == attr.attr) { + col.value = attr.value; + } + } + }); + } + }); + }); + this.viewAceionContent(dataObj.page.list); + } + if (this.enter_view_event.id) + this.enterAfterEvent(this.enter_view_event); + + }, + methods: { + // + setData: function(obj) { + let that = this; + let keys = []; + let val, data; + + Object.keys(obj).forEach(function(key) { + keys = key.split("."); + val = obj[key]; + data = that.$data; + keys.forEach(function(key2, index) { + if (index + 1 == keys.length) { + that.$set(data, key2, val); + } else { + if (!data[key2]) { + that.$set(data, key2, {}); + } + } + data = data[key2]; + }); + }); + }, + async Head_UIStyleGetInfo(class_id, style_id) { //鑾峰彇鑷畾涔夎〃鍗曟牱寮�+ try { + var $this = this; + var dataInfo = { + class_id: class_id, + ui_style_id: style_id, + }; + // console.log(dataInfo); + const result = await getUIStyleInfo(dataInfo) + var styledef = ""; + if (result.style_def) { + //mobox2鐨剆tyle_def鏄痡son瀛楃涓�+ styledef = result.style_def.replace(/\\/g, ""); + //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓�+ if (!result.style_def.includes('"')) styledef = Base64.decode(result + .style_def); + } + $this.head_styledef = result.style_def ? JSON.parse(styledef) : {}; + // this.form = this.head_styledef.form.model; + // console.log($this.head_styledef); + if ($this.head_styledef.form?.items) { + $this.head_styledef.form.items.forEach(async (ele, index) => { + if (ele.useDict == true) { //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀 + await this.DictGetInfo(ele.bind.dict, index, 'mast'); + } else { + if (ele?.name === "Select") { + const selections = ele?.selections || [] + //鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ� + let itemName = ele.value || ""; + if (itemName) { + $this.head_styledef.form + .model[ele.fieldId] = itemName; + } + $this.head_styledef.form.items[index].selections = selections.map(( + a) => { + return { + value: a.value, + text: a.label + } + }) + } + + } + + }); + + } + } catch (ex) { + // console.log(ex); + let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex + uni.showModal({ + title: this.translateSys("error") + "1.1", + content: tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + + }, + async Detail1_UIstyleGetInfo(class_id, style_id) { //鑾峰彇鑷畾涔夎〃鍗曟牱寮�+ try { + var $this = this; + var dataInfo = { + class_id: class_id, + ui_style_id: style_id, + }; + // console.log(dataInfo); + const result = await getUIStyleInfo(dataInfo) + var styledef = ""; + if (result.style_def) { + //mobox2鐨剆tyle_def鏄痡son瀛楃涓�+ styledef = result.style_def.replace(/\\/g, ""); + //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓�+ if (!result.style_def.includes('"')) styledef = Base64.decode(result + .style_def); + } + $this.detail1_styledef = result.style_def ? JSON.parse(styledef) : {}; + $this.detail1_styledef.SelBut_Checked = false; + } catch (ex) { + // console.log(ex); + let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex + uni.showModal({ + title: this.translateSys("error") + "1.1", + content: tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + + + }, + async DictGetInfo(dict, index, type) { //Mobox3寰楀埌寰楀埌瀛楀吀淇℃伅瀛楀吀椤瑰垪琛�+ this.data = []; + var $this = this; + var dataInfo = { + dict_id: dict.id, + dict_name: dict.name + }; + try { + const result = await dictGetInfo(dataInfo) + if (type == 'mast') { + var list = []; + var itemName = ''; + (result.dict_item_list || []).forEach((item) => { + if (item.is_default == '1') + itemName = item.name + list.push({ + text: item.value ? item.value : item.name, + value: item.name, + }); + }); + //鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ� + if (itemName) { + $this.head_styledef.form.items[index].value = itemName; + var attr = $this.head_styledef.form.items[index].fieldId; + $this.head_styledef.form.model[attr] = itemName; + } + $this.head_styledef.form.items[index].dict = list; + var head_styledef = JSON.parse(JSON.stringify($this.head_styledef)); + $this.head_styledef = []; + $this.head_styledef = head_styledef; + } + } catch (ex) { + // console.log(ex); + uni.showModal({ + title: this.translateSys("error") + "3", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys('close') + }); + } + }, + viewAceionContent(list) { + if (!Array.isArray(list)) { + return; + } + let styleStr = JSON.stringify(this.detail1_styledef); //宸茬爜鐩�+ let detailStyle = JSON.parse(styleStr); + list.forEach((cont) => { + let attrs = []; + Object.keys(cont).forEach((a) => { + attrs.push({ + attr: a, + value: cont[a] + }); + }); + attrs.forEach((attr) => { + detailStyle.form.items.forEach((ele) => { + if (ele.name != "Layout") { + if (ele.fieldId == attr.attr) ele.value = attr.value; + } else if (ele.name == "Layout") { + ele.setting.colList.forEach((col) => { + if (col) { + if (col.fieldId == attr.attr) col.value = attr + .value; + } + }); + } + }); + }); + this.detail1StyleDefList.push(detailStyle); //鐮佺洏涓�+ }); + }, + //鐐逛腑琛ㄥ崟 + onPanelClick(value) { //鐐瑰嚮闈㈡澘楂樹寒鏄剧ず + // console.log(value); + this.setData({ + activeItem: this.detail1StyleDefList[value] + }) + + }, + //椤甸潰杩涘叆鍚庝簨浠�+ async enterAfterEvent(event) { + try { + let data_json = []; + let jsonlist = []; + let detailStyleList = this.detail1StyleDefList; + detailStyleList.forEach((style) => { + let detail_attr = {}; + style.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) detail_attr[cols.fieldId] = cols.value; + }); + } else detail_attr[item.fieldId] = item.value; + }); + jsonlist.push(detail_attr); + }); + data_json = Base64.encode(JSON.stringify(jsonlist)); + + let input_param = {}; + this.head_styledef.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) input_param[cols.fieldId] = cols.value; + }); + } else input_param[item.fieldId] = item.value; + }); + input_param = Base64.encode(JSON.stringify(input_param)); + this.runCustomEvent({ + ed_type: 0, + start_transaction: true, + class_id: this.param.ClsID, + event_id: event.id, + input_param, + data_json, + }) + + } catch (ex) { + this.showError(ex); + } + }, + + + //浜嬩欢澶勭悊 + async runCustomEvent(dataInfo) { + try { + var $this = this; + + runCustomEvent(dataInfo).then(result => { + 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 == "goback_to_pre_page") { //杩斿洖涓婁竴椤�+ var value = item.value; + uni.navigateBack({ + delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉 + }); + } else { + uni.showModal({ + title: this + .translateSys( + "tip" + ), + content: this + .translateSys( + "quotation_mark_left" + ) + + item + .action_type + + this + .translateSys( + "quotation_mark_right" + ) + + this + .translate( + "tip_action_unprocessed" + ), + showCancel: false, + confirmText: this + .translateSys( + 'close' + ) + }); + } + }); + } else { + if (result.info) { + uni.showModal({ + title: this + .translateSys( + "tip"), + content: result.info, + showCancel: false, + confirmText: this + .translateSys( + 'close') + }); + } + } + } + }).catch(ex => { + console.log(ex); + uni.showModal({ + title: this.translateSys("error") + + "9.1", + content: ex.errMsg, + showCancel: false, + confirmText: this.translateSys( + 'close') + }); + }); + } catch (ex) { + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({ + title: this.translateSys("error") + "9.2", + content: this.translate('execute_event_failed') + + this.translateSys( + "comma") + + this.translate('reason') + this.translateSys( + "colon") + tip, + showCancel: false, + confirmText: this.translateSys('close') + }); + + } + }, + //鐐瑰嚮鎸夐挳鍒楄〃 + clickDropdownBtns() { + var that = this + var itemlist = []; + this.dropdownBtns.forEach((btn) => { + itemlist.push(btn.ShowName); + }); + uni.showActionSheet({ + // title: '鎸夐挳鍒楄〃', + itemList: itemlist, + success: (e) => { + console.log(e.tapIndex); + var btn = that.dropdownBtns[e.tapIndex]; + that.onButtonClicked(btn); + } + }) + }, + onButtonClicked(btn) { + + let enviroment = { + button: "top", + button_name: btn.ShowName, + cls_id: btn.Cls_ID, + function: "3202", + master: {}, + }; + if (btn.FunCode == "TriggerEvent") { + this.onTriggerEvent(btn, enviroment); + } else { + this.$Message.warning(this.$t("sys.unrealized")); + } + + }, + async onTriggerEvent(btn, enviroment) { + let data_json = []; + let jsonlist = []; + + let detailStyleList = this.detail1StyleDefList; + detailStyleList.forEach((style) => { + let detail_attr = {}; + style.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) detail_attr[cols.fieldId] = cols.value; + }); + } else detail_attr[item.fieldId] = item.value; + }); + jsonlist.push(detail_attr); + }); + data_json = Base64.encode(JSON.stringify(jsonlist)); + + let input_param = {}; + this.head_styledef.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) input_param[cols.fieldId] = cols.value; + }); + } else input_param[item.fieldId] = item.value; + }); + input_param = Base64.encode(JSON.stringify(input_param)); + await this.runCustomEvent({ + ed_type: 0, + start_transaction: true, + class_id: btn.Cls_ID, + event_id: btn.Event.ID, + input_param, + data_json, + }); + }, + navigateBackEvent() { + if (!this.exit_view_event.id) + return + let data_json = []; + let jsonlist = []; + let detailStyleList = this.detail1StyleDefList; + detailStyleList.forEach((style) => { + let detail_attr = {}; + style.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) detail_attr[cols.fieldId] = cols.value; + }); + } else detail_attr[item.fieldId] = item.value; + }); + jsonlist.push(detail_attr); + }); + data_json = Base64.encode(JSON.stringify(jsonlist)); + + let input_param = {}; + this.head_styledef.form.items.forEach((item) => { + if (item.name == "Layout") { + item.setting.colList.forEach((cols) => { + if (cols != null) input_param[cols.fieldId] = cols.value; + }); + } else input_param[item.fieldId] = item.value; + }); + input_param = Base64.encode(JSON.stringify(input_param)); + const eventChannel = this.getOpenerEventChannel(); + + eventChannel.emit('ExitViewEvent', { + ed_type: 0, + start_transaction: true, + class_id: this.param.ClsID, + event_id: this.exit_view_event.id, + input_param, + data_json, + }); + }, + cancel(e) { //鍙栨秷 + this.navigateBackEvent() + uni.navigateBack({ + delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉 + }); + }, + /** + * 鍙敮鎸乕"column1='A' or column2='B'", "column3='C' and column4='D'", "column5='E'"]杩欑鏍煎紡 + * { + * "model": 0 / 1, + * "condition": + * [ + * [ + * { }, + * { }, + * { } + * ], + * [ + * { } + * ], + * [ + * { } + * ] + * ] + * } + */ + + toWhereBase64String(list) { + if (typeof list == 'string') list = [list] + var sql = [] + var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', + '>', ' like' + ] + list.forEach(ls => { + var where = ls.trim() + if (where.startsWith('(') && where.endsWith(')')) + where = where.replace( + /^\(/, + '').replace( + /\)$/, '') + if (where.toLowerCase().includes(' and ')) { + // 浜岀骇and鏀惧湪绗竴绾ф暟缁勪腑 + where.split(/ and /i).forEach(li => { + var l = li.trim() + if (l.startsWith('(') && l.endsWith( + ')')) l = l.replace( + /^\(/, + '').replace( + /\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.toLowerCase().includes(seps[ + i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(new RegExp( + sep, 'i')) + var field = values[0]?.trim() + .replace(/^\[/, '') + .replace( + /\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes( + sep) && values[1] + ?.toLowerCase().includes( + 'select ') && values[1] + ?.toLowerCase() + .includes( + ' from ')) { + value = l.replace(field, '') + .replace( + /^\s*(in|not in)\s*/i, + '').trim() + if (value.startsWith('(') && + value.endsWith(')')) + value = value + .replace(/^\(/, '') + .replace(/\)$/, '').trim() + } else { + value = values[1]?.trim() + .replace(/^\'/, '') + .replace( + /\'$/, '') + + if (['in', 'not in'].includes( + op)) { + value = value.replace( + /^\(/, '').replace( + /\)$/, + '') + value = value.split(',') + .map(v => v.trim() + .replace( + /^\'/, '') + .replace(/\'$/, '') + ) + } + } + sql.push([{ + field, + value, + op + }]) + } + }) + } else if (where.toLowerCase().includes(' or ')) { + // 浜岀骇or鏀惧湪绗簩绾у悓涓�粍鏁扮粍涓�+ var s = [] + where.split(/ or /i).forEach(li => { + var l = li.trim() + if (l.startsWith('(') && l.endsWith( + ')')) l = l.replace( + /^\(/, + '').replace( + /\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.toLowerCase().includes(seps[ + i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(new RegExp( + sep, 'i')) + var field = values[0]?.trim() + .replace(/^\[/, '') + .replace( + /\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes( + sep) && values[1] + ?.toLowerCase().includes( + 'select ') && values[1] + ?.toLowerCase() + .includes( + ' from ')) { + value = l.replace(field, '') + .replace( + /^\s*(in|not in)\s*/i, + '').trim() + if (value.startsWith('(') && + value.endsWith(')')) + value = value + .replace(/^\(/, '') + .replace(/\)$/, '').trim() + } else { + value = values[1]?.trim() + .replace(/^\'/, '') + .replace( + /\'$/, '') + + if (['in', 'not in'].includes( + op)) { + value = value.replace( + /^\(/, '').replace( + /\)$/, + '') + value = value.split(',') + .map(v => v.trim() + .replace( + /^\'/, '') + .replace(/\'$/, '') + ) + } + } + sql.push([{ + field, + value, + op + }]) + } + }) + sql.push(s) + } else { + var li = where + // 鍗曚竴鏌ヨ鏉′欢鐩存帴鏀惧湪绗竴绾ф暟缁勪腑 + var l = li.trim() + if (l.startsWith('(') && l.endsWith(')')) l = l + .replace(/^\(/, '') + .replace( + /\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.toLowerCase().includes(seps[i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(new RegExp(sep, 'i')) + var field = values[0]?.trim().replace(/^\[/, + '').replace(/\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes(sep) && values[ + 1]?.toLowerCase() + .includes('select ') && + values[1]?.toLowerCase().includes(' from ') + ) { + value = l.replace(field, '').replace( + /^\s*(in|not in)\s*/i, '') + .trim() + if (value.startsWith('(') && value + .endsWith(')')) value = value + .replace(/^\(/, '') + .replace(/\)$/, '').trim() + } else { + value = values[1]?.trim().replace(/^\'/, + '').replace(/\'$/, '') + + if (['in', 'not in'].includes(op)) { + value = value.replace(/^\(/, '') + .replace(/\)$/, '') + value = value.split(',').map(v => v + .trim().replace(/^\'/, + '') + .replace(/\'$/, + '')) + } + } + sql.push([{ + field, + value, + op + }]) + } + } + }) + + if (sql.length > 0) + return Base64.encode(JSON.stringify({ + model: 1, + condition: sql + })) + else + return '' + }, + translate(t) { + if (typeof this.$t == "function") return this.$t(`page.${t}`) + else return t; + }, + translateSys(t) { + if (typeof this.$t == "function") return this.$t(`sys.${t}`) + else return t; + }, + + }, + }; +</script> +<style lang="scss"> + .uni-page-modal-3202-view { + display: flex; + flex-direction: column; + height: calc(100vh - 30rpx); + padding: 15rpx 0; + + .v-headStyle { + width: 95%; + } + + .v-content { + flex: 1; + display: flex; + width: 100%; + flex-direction: column; + min-height: 100px; + overflow: hidden; + /* border:0.1px solid red; */ + } + + .view-content { + width: calc(100% - 30rpx); + padding: 10rpx 10rpx 10rpx 20rpx; + display: flex; + margin-top: 10rpx; + flex-direction: column; + + + } + + .dv-panel-bkcolor { + border: 1px solid #ccc; + border-radius: 5px; + } + + .dv-panel { + padding: 10rpx 10rpx 0rpx 0px; + border-radius: 12rpx; + margin-bottom: 10rpx; + } + + .dv-panel-input { + vertical-align: middle; + width: 100%; + display: inline-block; + text-align: left; + } + + .uni-forms-item { + padding-bottom: 5rpx; + margin-bottom: 0; + + .uni-forms-item__label { + height: 20px !important; + padding: 0 10rpx 0 0 !important; + } + } + + .bk-active { + background-color: #D6FCB2; + } + + .uni-padding-wrap { + margin-top: 20rpx; + background-color: #98DAEA; + width: 104rpx; + height: 80rpx; + text-align: center; + border-radius: 54rpx; + padding: 24rpx 0 0 0; + float: right; + display: inline-block; + } + + .uni-padding-wrap a { + font-size: 40rpx; + } + + .input-disabled { + background-color: #f3f3f3 !important; + } + + .v-scroll-view { + flex: 1; + overflow: hidden; + width: 98%; + } + + .view-bottom { + display: block; + width: calc(100% - 30rpx); + padding: 10rpx 15rpx 20rpx 15rpx; + align-items: center; + + .btn_add { + width: 45%; + background: #27A6E1; + border: none; + color: #fff; + font-size: 38rpx; + float: left; + display: inline-block; + } + + .btn_disabled { + background-color: #ddd; + color: #888; + } + + .btn_cancel { + width: 45%; + margin: 0 10rpx; + background: #fff; + border: none; + //color: #000; + font-size: 38rpx; + float: right; + display: inline-block; + } + + .btn_cancel2 { + width: 90%; + margin: 0 10rpx; + background: #fff; + // border: none; + color: #000; + font-size: 38rpx; + float: right; + display: inline-block; + } + + .uni-padding-wrap { + margin: 2rpx 0 0 10rpx; + background-color: #98DAEA; + width: 104rpx; + height: 80rpx; + text-align: center; + border-radius: 54rpx; + padding: 24rpx 0 0 0; + float: right; + display: inline-block; + } + + .uni-padding-wrap a { + font-size: 40rpx; + } + } + + + + + } +</style> \ No newline at end of file -- Gitblit v1.9.1