From 0ecc402885f332b21923bb12183dc072306f2b39 Mon Sep 17 00:00:00 2001 From: cuiqian2004 <cuiqian2004@163.com> Date: 星期五, 21 三月 2025 18:36:15 +0800 Subject: [PATCH] vue3 --- pages/modal/3200_view.vue | 348 ++++++++++++--------------------------------------------- 1 files changed, 74 insertions(+), 274 deletions(-) diff --git a/pages/modal/3200_view.vue b/pages/modal/3200_view.vue index 9a14985..f8c0970 100644 --- a/pages/modal/3200_view.vue +++ b/pages/modal/3200_view.vue @@ -4,131 +4,12 @@ <view class="dv-panel dv-panel-bkcolor"> <div class="dv-panel-input"> <!-- HTML椤甸潰绫诲瀷鏄剧ず --> - <div class="dv-viewHtml-Panel" v-if="ViewHtml_Panel" v-html="ViewHtml_Panel"> - <!-- <div> - <label class="item-label">浠诲姟缂栫爜:</label> - <span class="item-span">TA240318-00005</span> - </div> --> - </div> + <view class="dv-viewHtml-Panel" v-if="ViewHtml_Panel" v-html="ViewHtml_Panel"></view> + <!-- 鑷畾涔夎〃鍗曠被鍨嬫樉绀�--> <div v-if="!ViewHtml_Panel"> - <div v-for="(item,index) in detail2_styledef.form.items"> - <!-- 鏅�甯冨眬 --> - <view v-if="item.name!='Layout'"> - <text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text> - <span class="form-item-span" - v-if="item.disabled">{{item.value2?'#'+item.value+'#'+item.value2:item.value}}</span> - <!-- 鏂囨湰妗�鏁板瓧妗�--> - <view class="dv_input" - v-if="(item.name=='Input' || item.name=='InputNumber') && !item.disabled"> - <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]" - @change="onChange(item)"></text> - <input class="uni-input" :class="item.disabled?'input-disabled':''" - :type="item.name=='Input'?'text':item.name=='InputNumber'?'number':'text'" - v-model="item.value" :disabled="item.disabled" :placeholder="item.placeholder" - :style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}" - :focus="focusMateria" @focus="ontap(item)" @blur="onevent(item)" /> - <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]" - @click="onChange(item)"></text> - </view> - <!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections--> - <uni-data-select id="dv_select" v-if="item.name=='Select' && !item.disabled" - :class="item.disabled?'input-disabled':''" v-model="item.value" - :localdata="item.dict" @change="onChange(item)" :disabled="item.disabled" - :clear="false"></uni-data-select> - <!-- 澶氳鏂囨湰 --> - <view class="input-wrapper" v-if="item.name=='Textarea' && !item.disabled"> - <textarea class="uni-input" :value="item.value" - :class="item.disabled?'input-disabled':''" :placeholder="item.placeholder" - @blur="onModelValue(item)" style="height:60px;" :style="{'width':'96%'}" - :disabled="item.disabled"></textarea> - </view> - <!-- 澶嶉�妗�--> - <checkbox-group class="check_rememberPwd" v-if="item.name=='Checkbox'" - :class="item.disabled?'input-disabled':''" @change="onModelValue(item)" - :data-ischeck="item.value" :disabled="item.disabled" - :style="{'margin-left':'10rpx'}"> - <label> - <checkbox :value="item.value" :checked="item.value" /> - <text>{{item.label}}</text> - </label> - </checkbox-group> - <!-- Switch寮�叧 --> - <switch v-if="item.name=='Switch'" :class="item.disabled?'input-disabled':''" - :disabled="item.disabled" v-model="item.value" @change="onModelValue(item)" - :style="{'margin-left':'10rpx'}" /> - <!-- 鏃ユ湡鏃堕棿 --> - <view class="input-wrapper" - v-if="(item.name=='TimePicker' || item.name=='DatePicker') && !item.disabled"> - <picker mode="date" class="date_iput" :class="item.disabled?'input-disabled':''" - :disabled="item.disabled" :value="item.value" @change="onModelValue(item)"> - <view class="picker">{{item.value}}</view> - </picker> - </view> - </view> - <!-- 鏍呮牸甯冨眬 --> - <uni-row class="demo-uni-row" v-if="item.name=='Layout'"> - <uni-col v-for="(cols,key) in item.setting.colList" - :span="item.setting.spanList?item.setting.spanList[key]:24 / item.setting.col"> - <view v-if="cols!=null"> - <text class="txt_title" - :style="{'width':cols.labelWidth+'px'}">{{cols.label}}锛�/text> - <span class="form-item-span" - v-if="cols.disabled">{{cols.value2?'#'+cols.value+'#'+cols.value2:cols.value}}</span> - <view class="dv_input" - v-if="(cols.name=='Input' || cols.name=='InputNumber') && !cols.disabled"> - <text v-if="cols.setting.prefix" class="uni-icon" - :class="[cols.setting.prefix]" @change="onChange(cols)"></text> - <input class="uni-input" :class="cols.disabled?'input-disabled':''" - :type="cols.name=='Input'?'text':cols.name=='InputNumber'?'number':'text'" - v-model="cols.value" :disabled="cols.disabled" - :placeholder="cols.placeholder" - :style="{'width':cols.setting.prefix && cols.setting.suffix?'78%':cols.setting.prefix || cols.setting.suffix?'87%':'96%'}" - :focus="focusMateria" @focus="ontap(cols)" @blur="onevent(cols)" /> - <text v-if="cols.setting.suffix" class="uni-icon" - :class="[cols.setting.suffix]" @click="onChange(cols)"></text> - </view> - <!-- 涓嬫媺妗�鍗曢� cols.useDict?cols.dict:cols.selections--> - <uni-data-select id="dv_select" v-if="cols.name=='Select' && !cols.disabled" - :class="cols.disabled?'input-disabled':''" v-model="cols.value" - :localdata="cols.dict" @change="onChange(cols)" :disabled="cols.disabled" - :clear="false"></uni-data-select> - <!-- 澶氳鏂囨湰 --> - <view class="input-wrapper" v-if="cols.name=='Textarea' && !cols.disabled"> - <textarea class="uni-input" :value="cols.value" - :class="cols.disabled?'input-disabled':''" - :placeholder="cols.placeholder" @blur="onModelValue(cols)" - style="height:60px;" :style="{'width':'96%'}" - :disabled="cols.disabled"></textarea> - </view> - <!-- 澶嶉�妗�--> - <checkbox-group class="check_rememberPwd" v-if="cols.name=='Checkbox'" - :class="cols.disabled?'input-disabled':''" :disabled="item.disabled" - @change="onModelValue(cols)" :data-ischeck="cols.value" - :style="{'margin-left':'10rpx'}"> - <label> - <checkbox :value="cols.value" :checked="cols.value" /> - <text>{{cols.label}}</text> - </label> - </checkbox-group> - <!-- Switch寮�叧 --> - <switch v-if="cols.name=='Switch'" :class="cols.disabled?'input-disabled':''" - :disabled="item.disabled" v-model="cols.value" @change="onModelValue(cols)" - :style="{'margin-left':'10rpx'}" /> - <!-- 鏃ユ湡鏃堕棿 --> - <view class="input-wrapper" - v-if="(cols.name=='TimePicker' || cols.name=='DatePicker') && !cols.disabled"> - <picker mode="date" class="date_iput" - :class="cols.disabled?'input-disabled':''" :disabled="item.disabled" - :value="cols.value" @change="onModelValue(cols)"> - <view class="picker">{{cols.value}}</view> - </picker> - </view> + <OIForm :form="detail2_styledef.form.items" viewMode></OIForm> - </view> - </uni-col> - </uni-row> - </div> </div> </div> </view> @@ -144,7 +25,7 @@ <view class="uni-padding-wrap" v-if="param.ViewPage.Page_Button.length>2"> <view class="uni-btn-v"> <a @tap="actionSheetTap"> - <Icon class="mobox-normal-more" /> + <text class="mobox-normal-more" /> </a> </view> </view> @@ -153,7 +34,9 @@ </template> <script> - import Base64 from '../../components/js-base64/base64.js' + import { + Base64 + } from '@/js/Base64.js'; import classUtils from "@/js/utils.js" import { appGetInfo, @@ -164,14 +47,17 @@ runCustomEvent, dataObjQuery } from "@/api/data.js" - + import OIForm from '@/components/oi-form/index.vue' + import buttonClickMixin from '@/mixins/button-click.js'; + export default { - modules: { - Base64, + mixins: [buttonClickMixin], + components: { + OIForm }, onBackPress(e) { // console.log("鐩戝惉杩斿洖鎸夐挳浜嬩欢",e); - var eventChannel = this.$scope.eventChannel; + const eventChannel = this.getOpenerEventChannel(); // const eventChannel = this.getOpenerEventChannel(); eventChannel.emit('ExitViewEvent', ""); // uni.navigateBack({ @@ -210,11 +96,11 @@ uni.setNavigationBarTitle({ title: options.titlename }); //璁剧疆椤堕儴鏍囬 - this.$data.title = options.titlename; - this.$data.param = JSON.parse(options.param); - console.log(this.$data.param); - this.$data.styleDef = JSON.parse(options.style); - // console.log(this.$data.styleDef); + this.title = options.titlename; + this.param = JSON.parse(options.param); + console.log(this.param); + this.styleDef = JSON.parse(options.style); + // console.log(this.styleDef); if (this.param.ViewPage.View_UIDef.ui_type == "HTML椤甸潰") { // HTML椤甸潰 //鑾峰彇鏁版嵁绫荤殑HTML椤甸潰 @@ -251,7 +137,7 @@ title: this.translateSys("error"), content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } } @@ -295,9 +181,9 @@ if (!result.style_def.includes('"')) styledef = Base64.decode(result .style_def); } - $this.$data.detail2_styledef = result.style_def ? JSON.parse(styledef) : {}; - $this.$data.detail2_styledef.SelBut_Checked = false; - // console.log($this.$data.detail2_styledef); + $this.detail2_styledef = result.style_def ? JSON.parse(styledef) : {}; + $this.detail2_styledef.SelBut_Checked = false; + // console.log($this.detail2_styledef); if ($this.detail2_styledef.form?.items) { $this.styleDef.form.attrs.forEach((attr) => { // info[attr.name]=attr.value; @@ -330,7 +216,7 @@ title: this.translateSys("error") + "1.1", content: tip, showCancel: false, - confirmText: this.translateSys("cancel") + confirmText: this.translateSys('close') }); } @@ -379,7 +265,7 @@ title: this.translateSys("error") + "6.1", content: tip, showCancel: false, - confirmText: this.translateSys("cancel") + confirmText: this.translateSys('close') }); } @@ -424,127 +310,28 @@ title: this.translateSys("error") + "5.2", content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } }, + onCheckBoxValue(e) { //缁戝畾Model鍊�+ let values = e.detail.value || [] + var attr = item.fieldId; + this.detail2_styledef.form.model[attr] = values; - // 鍐呭鍙樺寲鍚庝簨浠�- async onChange(event) { - try { - if (event.id) { - var obj_attr = this.detail2_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.$data.detail2_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) uni.showModal({ - title: this.translateSys("tip"), - content: tip, - showCancel: false, - confirmText: this.translateSys('cancel') - }); - else uni.showModal({ - title: this.translateSys("tip"), - content: tip + ',' + this.translateSys('tip') + ':' + result - .ret, - showCancel: false, - confirmText: this.translateSys('cancel') - }); - 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('cancel') - }); - - 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.$data.detail2_styledef.form.items.forEach(async ( - ele, index) => { - data.forEach(async (ele2, index) => { - if (ele.fieldId == ele2 - .attr) { - ele.value = ele2 - .value; - } - }); - }); - } - }); - } else { - // this.detail2StyleDefList=[]; - if (result.info) { - uni.showModal({ - title: this.translateSys("tip"), - content: result.info, - showCancel: false, - confirmText: this.translateSys('cancel') - }); - } - } - } - - - }).catch(ex => { - // console.log(ex); - uni.showModal({ - title: this.translateSys("error") + "8.1", - content: ex.errMsg, - showCancel: false, - confirmText: this.translateSys('cancel') - }); - }); - } - } 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('cancel') - }); - - } + }, + onRadioBoxValue(e) { //缁戝畾Model鍊�+ let values = e.detail.value || "" + var attr = item.fieldId; + this.detail2_styledef.form.model[attr] = values; + }, + onModelValue(item) { + var attr = item.fieldId; + this.detail2_styledef.form.model[attr] = item.value; + }, + onEnterChange(item) { + var attr = item.fieldId; + this.detail2_styledef.form.model[attr] = item.value; }, //鐐瑰嚮鎸夐挳 onBtnClick(btn) { @@ -553,15 +340,25 @@ uni.showModal({ title: this.translateSys("tip"), content: btn.PromptContent || this.translate("are_you_sure"), + cancelText: this.translateSys('ok'), + confirmText: this.translateSys('cancel'), success: function(res) { - if (res.confirm) { + if (res.cancel) { that.onButtonClicked(btn); // } else if (res.cancel) { // console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷'); } } }); - } else that.onButtonClicked(btn); + } else{ + this.handleButtonClick((done) => { + that.onButtonClicked(btn); + setTimeout(() => { + done(); // 閲嶇疆鐘舵� + }, 1000); + }); + + } }, //鐐瑰嚮鎸夐挳鍒楄〃 actionSheetTap() { @@ -581,8 +378,10 @@ uni.showModal({ title: this.translateSys("tip"), content: btn.PromptContent || this.translate("are_you_sure"), + cancelText: this.translateSys('ok'), + confirmText: this.translateSys('cancel'), success: function(res) { - if (res.confirm) { + if (res.cancel) { that.onButtonClicked(btn); // } else if (res.cancel) { // console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷'); @@ -614,7 +413,7 @@ title: this.translateSys("tip"), content: this.translateSys("unrealized"), showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } } catch (ex) { @@ -624,7 +423,7 @@ title: this.translateSys("error") + "2", content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } }, @@ -656,7 +455,7 @@ title: this.translateSys("error") + "3", content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } }, @@ -673,13 +472,13 @@ title: this.translateSys("tip"), content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); else uni.showModal({ title: this.translateSys("tip"), content: tip + ',' + this.translateSys('tip') + ':' + result.ret, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); return false; } else { @@ -689,14 +488,14 @@ title: this.translateSys("tip"), content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + 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; - // const eventChannel = this.$scope.eventChannel; + // const eventChannel = this.getOpenerEventChannel(); // // const eventChannel = this.getOpenerEventChannel(); // eventChannel.emit('ExitViewEvent',""); uni.navigateBack({ @@ -726,7 +525,7 @@ title: this.translateSys("tip"), content: tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } } @@ -739,7 +538,7 @@ "comma") + this.translate('reason') + this.translateSys("colon") + tip, showCancel: false, - confirmText: this.translateSys('cancel') + confirmText: this.translateSys('close') }); } @@ -906,7 +705,7 @@ }, cancel(e) { //鍙栨秷 - var eventChannel = this.$scope.eventChannel; + const eventChannel = this.getOpenerEventChannel(); // const eventChannel = this.getOpenerEventChannel(); eventChannel.emit('ExitViewEvent', ""); uni.navigateBack({ @@ -976,7 +775,8 @@ .uni-icon { /* border: 1px solid red; */ - width: 8%; + width: 30rpx; + padding: 10rpx 5rpx; font-family: uniicons; font-size: 40rpx; font-weight: 400; @@ -1111,7 +911,7 @@ margin-top: 25rpx; padding: 20rpx; line-height: 1.5; - background: #4D6AF4; + background: #27A6E1; border: none; color: #fff; font-size: 38rpx; @@ -1131,9 +931,9 @@ margin-top: 25rpx; padding: 20rpx; line-height: 1.5; - background: #fff; - border: none; - color: #000; + // background: #fff; + // border: none; + // color: #000; font-size: 38rpx; font-weight: bold; float: left; -- Gitblit v1.9.1