From 7b15bbf1363982a03dd33c95f3ccdfdcfb7c1d47 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 14 三月 2025 18:20:31 +0800
Subject: [PATCH] oi-form

---
 pages/modal/3037_2.vue |  234 +++++++++-------------------------------------------------
 1 files changed, 37 insertions(+), 197 deletions(-)

diff --git a/pages/modal/3037_2.vue b/pages/modal/3037_2.vue
index 9487d2a..1aff5ff 100644
--- a/pages/modal/3037_2.vue
+++ b/pages/modal/3037_2.vue
@@ -1,81 +1,8 @@
 <template>
 	<view class="uni-page-modal-3017-2">
 		<!-- 琛ㄥご鏍峰紡 -->
-		<view class="v-headStyle" v-for="(item,index) in head_styledef.form.items">
-			<!-- 鏅�甯冨眬 -->
-			<view v-if="item.name!='Layout' && item.show==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="classAttr_extButton(item)">&#xe568;</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)" @keyup.enter="onEnterChange(item)"
-						@blur="onEnterChange(item)" :maxlength="-1" />
-					<text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
-						@click="classAttr_extButton(item)">&#xe568;</text>
-				</view>
-				<!-- 澶氳鏂囨湰 -->
-				<view class="input-wrapper" v-if="item.name=='Textarea'">
-					<textarea class="uni-input" :class="item.disabled?'input-disabled':''" v-model="item.value"
-						:placeholder="item.placeholder"  @blur="onEnterChange(item)"
-						:data-index="index" 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':''" :disabled="item.disabled" @change="onCheckBoxValue"
-					:data-attr="item.fieldId" :data-index="index">
-					<label v-for="(item2) in item.selections" :key="item2.value">
-						<checkbox :value="item2.value" :checked="item.value.includes(item2.value)" />
-						<text>{{item2.label}}</text>
-					</label>
-				</checkbox-group>
-				<!-- 鍗曢�妗�-->
-				<radio-group class="check_rememberPwd" v-if="item.name=='Radio'"
-					:class="item.disabled?'input-disabled':''" :disabled="item.disabled" @change="onRadioBoxValue"
-					:data-attr="item.fieldId" :data-index="index">
-					<label v-for="(item2) in item.selections" :key="item2.value">
-						<radio :value="item2.value" :checked="item2.value === item.value" />
-						<text>{{item2.label}}</text>
-					</label>
-				</radio-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'">
-					<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 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>
-
-		</view>
+		<OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @focus="ontap" @change="onEnterChange"
+			@click-prefix="classAttr_extButton" @click-suffix="classAttr_extButton"></OIForm>
 		<!-- 浠庢暟鎹�-->
 		<view class="v-panel">
 			<div class="panel_title">{{param.Sub_Cls.Title}}</div>
@@ -105,39 +32,7 @@
 			<!-- 浠庢暟鎹樉绀鸿鎯呭尯 -->
 			<view class="v-panellist" v-for="(subpanel,iiindex) in subPanelList" @tap="onPanelClick(iiindex)"
 				:class="activelist[iiindex].active==true?'bk-active':''">
-				<view class="v-area dv-panel" v-for="(item,index) in subpanel.subClassAttr.form.items">
-					<div class="dv-panel-input">
-						<!-- 鏅�甯冨眬 -->
-						<view v-if="item.name!='Layout' && item.show==true">
-							<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="input-wrapper">
-								<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' && item.show==true">
-							<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="input-wrapper">
-										<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>
-				</view>
+				<OIForm class="v-area dv-panel" :form="subpanel.subClassAttr.form" viewMode></OIForm>
 
 				<view class="v-paneldel" v-if="param.Sub_Cls.Can_Add_Delete == true">
 					<a href="javascript:;" class="panel_del" @tap="panel_del(iiindex)"><i
@@ -199,18 +94,14 @@
 		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'
 
 	export default {
 		modules: {
 			Base64,
 		},
 		components: {
-			OIDatePicker,
-			OIDatePickerRange,
-			OITimePicker
+			OIForm
 		},
 		data() {
 			return {
@@ -694,20 +585,19 @@
 					uni.hideKeyboard();
 					var $this = this;
 					console.log(item);
-					if (item.oldvalue != result.decodedata) {
-						item.oldvalue = result.decodedata;
-						item.value = result.decodedata;
+					item.value = result.decodedata
+					let newVal = item.value.trim()
+					if (item.oldvalue != newVal) {
+						item.oldvalue = newVal;
 						var attr = item.fieldId;
-						$this.head_styledef.form.model[attr] = result.decodedata;
-						if (result.decodedata) { //绗竴涓緭鍏ユ涓嶄负绌�-							$this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�
-							// setTimeout(function(){
-							// 	$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
-							setTimeout(function() {
-								uni.hideKeyboard();
-							}, 1000);
-							// },500);
-						}
+						$this.head_styledef.form.model[attr] = newVal;
+						$this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�
+						// setTimeout(function(){
+						// 	$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
+						setTimeout(function() {
+							uni.hideKeyboard();
+						}, 1000);
+						// },500);
 						//瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈� 						var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;
 						if (eventid) {
@@ -730,7 +620,7 @@
 								mast_attr: [],
 								inputParamter: [{
 									attr: 'mast_input_3037',
-									value: result.decodedata
+									value: newVal
 								}]
 							}
 
@@ -743,10 +633,16 @@
 				// console.log(e.target);
 				var $this = this;
 				console.log(item);
-				if (item.oldvalue != item.value && item.value.trim() != "") {
-					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 eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;
 					if (eventid) {
@@ -769,7 +665,7 @@
 							mast_attr: [],
 							inputParamter: [{
 								attr: 'mast_input_3037',
-								value: item.value
+								value: newVal
 							}]
 						}
 
@@ -1125,10 +1021,16 @@
 
 			onEnterChange(item) {
 				console.log("onEnterChange", item);
-				if (item.oldvalue != item.value && item.value.trim() != "") {
-					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; //鍐呭鍙樺寲鍚庝簨浠� 					if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠� 						this.onChange(onChangeEvent);
@@ -1272,68 +1174,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) { //缁戝畾Model鍊�-				//console.log(e.target)
-				var attr = item.fieldId;
-				this.head_styledef.form.model[attr] = item.value;
 			},
 
 			panel_del(index) { //闈㈡澘鍒犻櫎

--
Gitblit v1.9.1