From 7482313cc90753e730c275ad133b22da210f84f9 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 21 三月 2025 19:50:36 +0800
Subject: [PATCH]  test

---
 pages/modal/3200.vue |  344 ++++++++++-----------------------------------------------
 1 files changed, 60 insertions(+), 284 deletions(-)

diff --git a/pages/modal/3200.vue b/pages/modal/3200.vue
index 45fb2f3..33e678a 100644
--- a/pages/modal/3200.vue
+++ b/pages/modal/3200.vue
@@ -2,40 +2,8 @@
 	<view class="uni-page-modal-3200">
 		<view class="v-content">
 			<!-- 琛ㄥご鏍峰紡 -->
-			<view class="v-headStyle" v-for="(item,index) in head_styledef.form.items" v-if="isFilter==true">
-				<text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text>
-				<!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections-->
-				<uni-data-select id="dv_select" v-if="item.name=='Select'" :class="item.disabled?'input-disabled':''"
-					v-model="item.value" :localdata="item.dict" @change="onEnterChange(item)" :disabled="item.disabled"
-					:clear="false"></uni-data-select>
-				<view class="input-wrapper" v-if="item.name=='Input' || item.name=='InputNumber'">
-					<text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
-						@click="onEnterChange(item)">&#xe568;</text>
-					<input class="uni-input" :class="item.disabled?'input-disabled':''"
-						:type="item.name=='Input'?'text':'number'" 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)" @keyup.enter="onEnterChange(item)"
-						@blur="onEnterChange(item)" :maxlength="-1" />
-					<text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
-						@click="onEnterChange(item)">&#xe568;</text>
-				</view>
-				<view class="input-wrapper"
-					v-if="item.name=='TimePicker' || item.name=='DatePicker'|| item.name=='DatePickerRange'">
-					<OIDatePicker v-if="item.name=='DatePicker'" :class="item.disabled?'input-disabled':''"
-						:disabled="item.disabled" v-model="item.value" :placeholder="item.placeholder"
-						:defaultToday="item.setting.defaultToday" :format="item.setting.format"
-						@change="onModelValue(item)" />
-					<OIDatePickerRange v-if="item.name=='DatePickerRange'" :rangeSeparator="item.setting.separator"
-						:format="item.setting.format" :class="item.disabled?'input-disabled':''"
-						:disabled="item.disabled" v-model="item.value" :placeholder="item.placeholder"
-						@change="onModelValue(item)" />
-					<OITimePicker v-if="item.name=='TimePicker'" :class="item.disabled?'input-disabled':''"
-						:disabled="item.disabled" v-model="item.value" :placeholder="item.placeholder"
-						@change="onModelValue(item)" />
-				</view>
-			</view>
-
+			<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">
@@ -51,45 +19,14 @@
 								</checkbox-group>
 							</div>
 							<!-- HTML椤甸潰绫诲瀷鏄剧ず -->
-							<div class="dv-listHtml-Panel" v-if="ListHtml_Panel" v-html="ListHtml_Panel[ii]" :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':
-				  param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':
-				  param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
+							<div class="dv-listHtml-Panel" v-if="ListHtml_Panel" v-html="ListHtml_Panel[ii]"
+								:style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;': param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
 
 							</div>
-							<div class="dv-panel-input" v-if="!ListHtml_Panel" :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':
-				  param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':
-				  param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
-								<div v-for="(item,index) in style.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.value}}</span>
-										<!-- 鏂囨湰妗�鏁板瓧妗�-->
-										<view v-else class="form-item-input">
-											<input :type="item.name=='InputNumber'?'number':'text'" v-model="item.value"
-												:placeholder="item.placeholder" :maxlength="-1"
-												@on-enter="onDetail1EnterChange(item)" />
-										</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.value}}</span>
-												<!-- 鏂囨湰妗�鏁板瓧妗�-->
-												<view v-else class="form-item-input">
-													<input :type="cols.name=='InputNumber'?'number':'text'"
-														v-model="cols.value" :placeholder="cols.placeholder"
-														:maxlength="-1" @on-enter="onDetail1EnterChange(cols)" />
-												</view>
-											</view>
-										</uni-col>
-									</uni-row>
-								</div>
+							<div class="dv-panel-input" v-if="!ListHtml_Panel"
+								:style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
+								<OIForm class="v-area dv-panel" :form="style.form.items" viewMode></OIForm>
+
 							</div>
 							<div class="dv-panel-button" v-if="param.ListPage.Click_View==true">
 								<a @click="onViewPageClick(style)"><i class="mobox-normal-right-arrow" /></a>
@@ -118,7 +55,7 @@
 			<view class="uni-padding-wrap" v-if="param.ListPage.Page_Button.length>0">
 				<view class="uni-btn-v">
 					<a @tap="actionSheetTap">
-						<Icon class="mobox-normal-more" />
+						<text class="mobox-normal-more" />
 					</a>
 				</view>
 			</view>
@@ -127,7 +64,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,
@@ -140,17 +79,13 @@
 		dataObjDel
 	} from "@/api/data.js"
 	import dayjs from "dayjs";
-	import OIDatePicker from '@/components/oi-date-time-picker/oi-date-picker.vue'
-	import OIDatePickerRange from '@/components/oi-date-time-picker/oi-date-picker-range.vue'
-	import OITimePicker from '@/components/oi-date-time-picker/oi-time-picker.vue'
+	import OIForm from '@/components/oi-form/index.vue'
+	import buttonClickMixin from '@/mixins/button-click.js';
+
 	export default {
-		modules: {
-			Base64,
-		},
+		mixins: [buttonClickMixin],
 		components: {
-			OIDatePicker,
-			OIDatePickerRange,
-			OITimePicker
+			OIForm
 		},
 		onNavigationBarButtonTap(e) {
 			//  	console.log(e);
@@ -218,8 +153,8 @@
 			uni.setNavigationBarTitle({
 				title: options.titlename
 			}); //璁剧疆椤堕儴鏍囬 
-			this.$data.title = options.titlename;
-			this.$data.param = JSON.parse(options.param);
+			this.title = options.titlename;
+			this.param = JSON.parse(options.param);
 
 
 			this.styledef = {};
@@ -277,7 +212,7 @@
 			//   this.query_id = "";
 			//   await this.loadDataGetList();
 			// }
-			// console.log(this.$data.param);
+			// console.log(this.param);
 			//椤甸潰鍒濆鍖栬幏鍙栫劍鐐� 			// this.focusMateria=true; 
 		},
@@ -317,7 +252,7 @@
 					//浼犲叆鍙傛暟鍊� 					if (paramValue) {
 						const attrs = paramValue.attrs || [];
-						(this.$data.head_styledef?.form?.items || []).forEach(async (ele, index) => {
+						(this.head_styledef?.form?.items || []).forEach(async (ele, index) => {
 							if (ele.name != "Layout") {
 								attrs.forEach(async (ele2, index2) => {
 									if (ele.fieldId == ele2.name) {
@@ -389,9 +324,9 @@
 						if (!result.style_def.includes('"')) styledef = Base64.decode(result
 							.style_def);
 					}
-					$this.$data.head_styledef = result.style_def ? JSON.parse(styledef) : {};
+					$this.head_styledef = result.style_def ? JSON.parse(styledef) : {};
 					// this.form = this.head_styledef.form.model;
-					// console.log($this.$data.head_styledef);
+					// console.log($this.head_styledef);
 					if ($this.head_styledef.form?.items) {
 						$this.head_styledef.form.items.forEach(async (ele, index) => {
 							console.log(ele.useDict);
@@ -448,8 +383,8 @@
 						if (!result.style_def.includes('"')) styledef = Base64.decode(result
 							.style_def);
 					}
-					$this.$data.detail1_styledef = result.style_def ? JSON.parse(styledef) : {};
-					$this.$data.detail1_styledef.SelBut_Checked = false;
+					$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
@@ -801,7 +736,7 @@
 				//鍒锋柊褰撳墠椤甸潰
 				this.initial();
 				// uni.redirectTo({
-				// 	url:'../modal/3200?param='+JSON.stringify(this.$data.param)+"&titlename="+this.$data.title,
+				// 	url:'../modal/3200?param='+JSON.stringify(this.param)+"&titlename="+this.title,
 				// });
 			},
 			//鐐瑰嚮鏄剧ず娴忚瀵硅薄鏄剧ず椤甸潰
@@ -874,7 +809,14 @@
 							}
 						}
 					});
-				} else that.onButtonClicked(btn, style);
+				} else {
+					this.handleButtonClick((done) => {
+						that.onButtonClicked(btn, style);
+						setTimeout(() => {
+							done(); // 閲嶇疆鐘舵�
+						}, 1000);
+					});
+				}
 			},
 			//鐐瑰嚮鎸夐挳鍒楄〃
 			actionSheetTap() {
@@ -1260,12 +1202,13 @@
 					item.value = result.decodedata;
 					uni.hideKeyboard();
 					var $this = this;
-
 					console.log(item);
-					if (item.oldvalue != item.value) {
-						item.oldvalue = item.value;
+					let newVal = item.value.trim()
+					if (newVal) {
+						item.oldvalue = newVal;
+
 						var attr = item.fieldId;
-						this.head_styledef.form.model[attr] = item.value;
+						this.head_styledef.form.model[attr] = newVal;
 						var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠� 						var onSuffixClickCallbackEvent = item.bind
 							.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�@@ -1276,24 +1219,19 @@
 						if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠� 							$this.onChange(onChangeEvent);
 						} else {
-							$this.where = '';
-							if (item.value)
-								$this.where = item.fieldId + " like '%" + item
-								.value + "%'";
+							$this.where = item.fieldId + " like '%" + newVal + "%'";
 							$this.query_id = '';
 							$this.pageindex = 1;
 							$this.detail1StyleDefList = [];
 							$this.loadDataGetList();
 						}
-						if (item.value) { //绗竴涓緭鍏ユ涓嶄负绌�-							$this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�
-							// setTimeout(function(){
-							// 	$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
-							setTimeout(function() {
-								uni.hideKeyboard();
-							}, 1000);
-							// },500);
-						}
+						$this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�
+						// setTimeout(function(){
+						// 	$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
+						setTimeout(function() {
+							uni.hideKeyboard();
+						}, 1000);
+						// },500);
 						// if(onSuffixClickCallbackEvent.id){   //鍚庡浘鏍囩偣鍑讳簨浠� 						//   this.onSuffixClick(onSuffixClickCallbackEvent);
 						// }
@@ -1306,10 +1244,16 @@
 
 			onEnterChange(item) { //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢
 				// console.log(item);
-				if (item.oldvalue != item.value) {
-					item.oldvalue = item.value;
+				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] = item.value;
+					this.head_styledef.form.model[attr] = newVal;
 					var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠� 					var onSuffixClickCallbackEvent = item.bind
 						.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�@@ -1319,9 +1263,7 @@
 					if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠� 						this.onChange(onChangeEvent);
 					} else {
-						this.where = '';
-						if (item.value)
-							this.where = item.fieldId + " like '%" + item.value + "%'";
+						this.where = item.fieldId + " like '%" + item.value + "%'";
 						this.query_id = '';
 						this.pageindex = 1;
 						this.detail1StyleDefList = [];
@@ -1353,7 +1295,7 @@
 						var dataInfo = {
 							ed_type: 0,
 							start_transaction: true,
-							class_id: this.$data.head_styledef.form.clsId,
+							class_id: this.head_styledef.form.clsId,
 							class_name: '',
 							event_id: event.id,
 							event_name: '',
@@ -1495,68 +1437,6 @@
 					});
 
 				}
-			},
-			onCheckBoxValue(e) { //缁戝畾Model鍊�-				let values = e.detail.value || []
-				const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
-				if (item?.setting?.colList) {
-					const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
-					if (col) {
-						col.value = values
-						let attr = col.fieldId;
-						this.head_styledef.form.model[attr] = col.value;
-						var onChangeEvent = col.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�-						if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠�-							this.onChange(onChangeEvent);
-						}
-						return
-					}
-				} else {
-					if (item) {
-						item.value = values
-						let attr = item.fieldId;
-						this.head_styledef.form.model[attr] = item.value;
-						var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�-						if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠�-							this.onChange(onChangeEvent);
-						}
-					}
-				}
-
-			},
-			onRadioBoxValue(e) { //缁戝畾Model鍊�-				let values = e.detail.value || ""
-				const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
-				if (item?.setting?.colList) {
-					const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
-					if (col) {
-						col.value = values
-						let attr = col.fieldId;
-						this.head_styledef.form.model[attr] = col.value;
-						var onChangeEvent = col.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�-						if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠�-							this.onChange(onChangeEvent);
-						}
-						return
-					}
-				} else {
-					if (item) {
-						item.value = values
-						let attr = item.fieldId;
-						this.head_styledef.form.model[attr] = item.value;
-						var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�-						if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠�-							this.onChange(onChangeEvent);
-						}
-					}
-
-				}
-
-			},
-
-			onModelValue(item) {
-				var attr = item.fieldId;
-				this.head_styledef.form.model[attr] = item.value;
 			},
 			onDetail1EnterChange() {},
 			//鐐逛腑琛ㄥ崟
@@ -2015,71 +1895,8 @@
 		height: calc(100vh - 30rpx);
 		padding: 15rpx 0;
 
-		.v-headStyle:first-child {
-			margin-top: 15rpx;
-		}
-
-		.v-headStyle .txt_title {
-			font-size: 34rpx;
-			text-align: right;
-			display: inline-block;
-			vertical-align: 24rpx;
-		}
-
-		.v-headStyle input {
-			display: inline-block;
-			/* border: 1px solid #d5d5d5; */
-			/* width: 65%; */
-			width: 85%;
-			height: 52rpx;
-			line-height: 34rpx;
-			background: #FFF;
-			border-radius: 0 !important;
-			color: #2d8cf0;
-			padding: 10rpx 8rpx 12rpx;
-			font-size: 34rpx;
-			font-family: inherit;
-			box-shadow: none !important;
-			transition-duration: 0.1s;
-			margin-top: 4rpx;
-		}
-
-		.v-headStyle input::-webkit-input-placeholder {
-			font-size: 12rpx;
-		}
-
-		.input-wrapper {
-			border: 1px solid #d5d5d5;
-			display: inline-block;
-			width: 65%;
-			line-height: 22rpx;
-		}
-
-		[nvue] uni-view {
-			position: relative;
-			border: 0 solid #000;
-			box-sizing: border-box;
-		}
-
-		.uni-input {
-			/* border: none; */
-		}
-
-		.uni-icon {
-			/* border: 1px solid red; */
-			width: 30rpx;
-			padding: 10rpx 5rpx;
-			font-family: uniicons;
-			font-size: 40rpx;
-			font-weight: 400;
-			font-style: normal;
-			/* width: 48rpx; */
-			height: 48rpx;
-			line-height: 48rpx;
-			color: #2d8cf0;
-			cursor: pointer;
-			display: inline-block;
-			vertical-align: 18rpx;
+		.v-headStyle {
+			width: 98%;
 		}
 
 		.v-content {
@@ -2150,47 +1967,6 @@
 			border-radius: 8rpx;
 		}
 
-		.dv-panel .txt_title {
-			font-size: 34rpx;
-			text-align: right;
-			display: inline-block;
-		}
-
-		.dv-panel input {
-			vertical-align: middle;
-			display: inline-block;
-			border: 2rpx solid #d5d5d5;
-			width: 68%;
-			height: 52rpx;
-			line-height: 34rpx;
-			background: #FFF;
-			border-radius: 14rpx !important;
-			color: #2d8cf0;
-			padding: 6rpx 8rpx 8rpx;
-			font-size: 32rpx;
-			font-family: inherit;
-			box-shadow: none !important;
-			transition-duration: 0.1s;
-			margin-top: 0rpx;
-		}
-
-		.dv-panel input::-webkit-input-placeholder {
-			font-size: 10rpx;
-		}
-
-		.dv-panel .form-item-span {
-			vertical-align: text-top;
-			color: #2d8cf0;
-			white-space: normal;
-			word-break: break-all;
-			display: inline-block;
-			width: calc(100% - 100px);
-		}
-
-		.dv-panel .form-item-input {
-
-			width: calc(100% - 100px);
-		}
 
 		.dv-panel-button {
 			display: inline-block;

--
Gitblit v1.9.1