From 00814401bba75825126baa6675e542ea3c82a5bb Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 14 三月 2025 12:19:39 +0800
Subject: [PATCH] 日期

---
 pages/modal/3018_2.vue |  265 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 151 insertions(+), 114 deletions(-)

diff --git a/pages/modal/3018_2.vue b/pages/modal/3018_2.vue
index 56d6ed0..29fca4f 100644
--- a/pages/modal/3018_2.vue
+++ b/pages/modal/3018_2.vue
@@ -12,7 +12,7 @@
 						<uni-data-select id="dv_select" v-if="item.name=='Select'"
 							:style="'width: calc(100% - '+item.labelWidth-10+'px);'"
 							:class="item.disabled?'input-disabled':''" v-model="item.value" :localdata="item.dict"
-							@change="onChange(item)" :disabled="item.disabled" :clear="false"></uni-data-select>
+							@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]"
@@ -22,22 +22,22 @@
 								v-model="item.value" :disabled="item.disabled" :placeholder="item.placeholder"
 								:style="{'padding-left':item.setting.prefix?0 : '8rpx','right':item.setting.suffix?0 : '8rpx'}"
 								:focus="focusFieldId == item.fieldId" @focus="ontap(item)" @click="onClick(item)"
-								@keyup.enter="onModelValue(item)" @blur="onModelValue(item)" :maxlength="-1" />
+								@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':''" :value="item.value"
+							<textarea class="uni-input" :class="item.disabled?'input-disabled':''" v-model="item.value"
 								:focus="focusFieldId == item.fieldId" :placeholder="item.placeholder"
-								@blur="onModelValue(item)" @click="onClick(item)" :data-index="index"
+								@blur="onEnterChange(item)" @click="onClick(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">
+							@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>
@@ -46,7 +46,7 @@
 						<!-- 鍗曢�妗�-->
 						<radio-group class="check_rememberPwd" v-if="item.name=='Radio'"
 							:class="item.disabled?'input-disabled':''" :disabled="item.disabled"
-							@change="onRadioBoxValue" :data-attr="item.fieldId">
+							@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>
@@ -57,12 +57,23 @@
 							:class="item.disabled?'input-disabled':''" :disabled="item.disabled" v-model="item.value"
 							@change="onModelValue(item)" />
 						<!-- 鏃ユ湡鏃堕棿 -->
-						<view class="input-wrapper" v-if="(item.name=='TimePicker' || item.name=='DatePicker')">
+						<!-- <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> -->
+						<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)" />
 					</uni-forms-item>
 					<!-- 鏍呮牸甯冨眬 -->
 					<uni-row class="demo-uni-row" v-if="item.name=='Layout'">
@@ -78,27 +89,29 @@
 										v-model="cols.value" :disabled="cols.disabled" :placeholder="cols.placeholder"
 										:style="{'padding-left':cols.setting.prefix?0 : '8px','right':cols.setting.suffix?0 : '8px'}"
 										:focus="focusFieldId == cols.fieldId" @focus="ontap(cols)"
-										@click="onClick(cols)" @blur="onevent(cols)" :maxlength="-1" />
+										@click="onClick(cols)" @keyup.enter="onEnterChange(cols)"
+										@blur="onEnterChange(cols)" :maxlength="-1" />
 									<text v-if="cols.setting.suffix" class="uni-icon" :class="[cols.setting.suffix]"
 										@click="classAttr_extButton(cols)">&#xe568;</text>
 								</view>
 								<!-- 涓嬫媺妗�鍗曢� cols.useDict?cols.dict:cols.selections-->
 								<uni-data-select id="dv_select" v-if="cols.name=='Select' "
 									:class="cols.disabled?'input-disabled':''" v-model="cols.value"
-									:localdata="cols.dict" @change="onChange(cols)" :disabled="cols.disabled"
+									:localdata="cols.dict" @change="onEnterChange(cols)" :disabled="cols.disabled"
 									:clear="false"></uni-data-select>
 								<!-- 澶氳鏂囨湰 -->
 								<view class="input-wrapper" v-if="cols.name=='Textarea' ">
-									<textarea class="uni-input" :value="cols.value"
+									<textarea class="uni-input" v-model="cols.value"
 										:class="cols.disabled?'input-disabled':''" :placeholder="cols.placeholder"
-										:focus="focusFieldId == cols.fieldId" @blur="onModelValue(cols)"
+										:focus="focusFieldId == cols.fieldId" @blur="onEnterChange(cols)"
 										@click="onClick(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="cols.disabled"
-									@change="onCheckBoxValue" :data-attr="cols.fieldId">
+									@change="onCheckBoxValue" :data-attr="cols.fieldId" :data-index="index"
+									:data-iindex="key">
 									<label v-for="(cols2) in cols.selections" :key="cols2.value">
 										<checkbox :value="cols2.value" :checked="cols.value.includes(cols2.value)" />
 										<text>{{cols2.label}}</text>
@@ -107,7 +120,8 @@
 								<!-- 鍗曢�妗�-->
 								<radio-group class="check_rememberPwd" v-if="cols.name=='Radio'"
 									:class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
-									@change="onRadioBoxValue" :data-attr="cols.fieldId">
+									@change="onRadioBoxValue" :data-attr="cols.fieldId" :data-index="index"
+									:data-iindex="key">
 									<label v-for="(cols2) in cols.selections" :key="cols2.value">
 										<radio :value="cols2.value" :checked="cols2.value === cols.value" />
 										<text>{{cols2.label}}</text>
@@ -118,15 +132,27 @@
 									:disabled="cols.disabled" v-model="cols.value" @change="onModelValue(cols)"
 									:style="{'margin-left':'10rpx'}" />
 								<!-- 鏃ユ湡鏃堕棿 -->
-								<view class="input-wrapper"
+								<!-- <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="cols.disabled" :value="cols.value" @change="onModelValue(cols)">
 										<view class="picker">{{cols.value}}</view>
 									</picker>
-								</view>
-
+								</view> -->
+								<OIDatePicker v-if="cols.name=='DatePicker'" :class="cols.disabled?'input-disabled':''"
+									:disabled="cols.disabled" v-model="cols.value" :placeholder="cols.placeholder"
+									:defaultToday="cols.setting.defaultToday" :format="cols.setting.format"
+									@change="onModelValue(cols)" />
+								<OIDatePickerRange v-if="cols.name=='DatePickerRange'"
+									:rangeSeparator="cols.setting.separator" :format="cols.setting.format"
+									:class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
+									v-model="cols.value" :placeholder="cols.placeholder" @change="onModelValue(cols)" />
+								<OITimePicker v-if="cols.name=='TimePicker'" :class="cols.disabled?'input-disabled':''"
+									:disabled="cols.disabled" v-model="cols.value" :placeholder="cols.placeholder"
+									@change="onModelValue(cols)" />
 							</uni-forms-item>
+							<uni-forms-item v-else label=""></uni-forms-item>
+
 						</uni-col>
 					</uni-row>
 				</view>
@@ -178,6 +204,11 @@
 <script>
 	import Base64 from '../../components/js-base64/base64.js'
 	import utils from "@/js/utils.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 {
 		appGetInfo,
 		dictGetInfo
@@ -191,6 +222,11 @@
 	export default {
 		modules: {
 			Base64,
+		},
+		components: {
+			OIDatePicker,
+			OIDatePickerRange,
+			OITimePicker
 		},
 		data() {
 			return {
@@ -394,8 +430,7 @@
 										//鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ�
 										let itemName = ele.value || "";
 										if (itemName) {
-											styledefHead.form
-												.model[ele.fieldId] = itemName;
+											styledefHead.form.model[ele.fieldId] = itemName;
 										}
 										ele.dict = selections.map((a) => {
 											return {
@@ -403,9 +438,7 @@
 												text: a.label
 											}
 										})
-
 									}
-
 								}
 								if ($this.focusFieldId == "") {
 									if (ele.name == 'Input' || ele.name ==
@@ -441,10 +474,7 @@
 														text: a.label
 													}
 												})
-
-
 											}
-
 										}
 										if ($this.focusFieldId == "") {
 											if (col.name == 'Input' || col
@@ -798,73 +828,9 @@
 				// console.log("onClick",item);
 				this.focusFieldId = item.fieldId
 			},
-			onevent(item) {
-				// console.log("onevent",item);
-				if (item.oldvalue != item.value && item.value.trim() != "") {
-					item.oldvalue = item.value;
-					var attr = item.fieldId;
-					this.head_styledef.form.model[attr] = item.value;
-					//瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈�-					var eventid = item.bind.onChangeEvent.id; //鍐呭鍙樺寲鍚庝簨浠�-					if (eventid) {
-						var obj_attr = this.head_styledef.form.model;
-						// console.log(obj_attr);
-						var req = Object.keys(obj_attr).map((a) => ({
-							attr: a,
-							value: obj_attr[a] || "",
-						}));
-						var info = {
-							eventid: eventid,
-							edtype: "0",
-							projectid: '',
-							rclsid: '',
-							robjid: '',
-							userlogin: '',
-							clsid: this.$data.param.DataCls.id,
-							objid: "",
-							attr: req,
-							dataJson: [],
-						}
-						this.DataObjRunCustomEvent(info, "");
-					}
-				}
-
-			},
-			onChange(item) {
-				console.log("onChange", item);
-				if (item.oldvalue != item.value && item.value.trim() != "") {
-					item.oldvalue = item.value;
-					var attr = item.fieldId;
-					this.head_styledef.form.model[attr] = item.value;
-					var eventid = item.bind.onChangeEvent.id; //鍐呭鍙樺寲鍚庝簨浠�-					if (eventid) {
-						// self.event_no_sub = 1;
-						var obj_attr = this.head_styledef.form.model;
-						// console.log(obj_attr);
-						var req = Object.keys(obj_attr).map((a) => ({
-							attr: a,
-							value: obj_attr[a] || "",
-						}));
-						var info = {
-							eventid: eventid,
-							edtype: "0",
-							projectid: '',
-							rclsid: '',
-							robjid: '',
-							userlogin: '',
-							clsid: this.$data.param.DataCls.id,
-							objid: "",
-							attr: req,
-							dataJson: []
-						}
-						this.DataObjRunCustomEvent(info);
-					}
-				}
-
-			},
-			onModelValue(item) { //缁戝畾Model鍊�-				var attr = item.fieldId;
-				if (item.oldvalue != item.value && item.value.trim() != "") {
+			onEnterChange(item) {
+				console.log("onEnterChange", item);
+				if (item.oldvalue != item.value) {
 					item.oldvalue = item.value;
 					var attr = item.fieldId;
 					this.head_styledef.form.model[attr] = item.value;
@@ -872,21 +838,99 @@
 					if (onChangeEvent?.id) { //鍐呭鍙樺寲鍚庝簨浠� 						this.onChange(onChangeEvent);
 					}
-
 				}
+
 			},
+			// 鍐呭鍙樺寲鍚庝簨浠�+			async onChange(event) {
+				var eventid = event?.id; //鍐呭鍙樺寲鍚庝簨浠�+				if (eventid) {
+					// self.event_no_sub = 1;
+					var obj_attr = this.head_styledef.form.model;
+					// console.log(obj_attr);
+					var req = Object.keys(obj_attr).map((a) => ({
+						attr: a,
+						value: obj_attr[a] || "",
+					}));
+					var info = {
+						eventid: eventid,
+						edtype: "0",
+						projectid: '',
+						rclsid: '',
+						robjid: '',
+						userlogin: '',
+						clsid: this.$data.param.DataCls.id,
+						objid: "",
+						attr: req,
+						dataJson: []
+					}
+					this.DataObjRunCustomEvent(info);
+				}
+
+			},
+
 			onCheckBoxValue(e) { //缁戝畾Model鍊� 				let values = e.detail.value || []
-				let attr = e.currentTarget?.dataset?.attr || ""
-				this.head_styledef.form.model[attr] = values;
+				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 value = e.detail.value || ""
-				let attr = e.currentTarget?.dataset?.attr || ""
-				this.head_styledef.form.model[attr] = value;
+				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;
 			},
 			classAttr_extButton(item) {
-				console.log("classAttr_extButton", item)
 				var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠� 				var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋� 
@@ -1108,22 +1152,18 @@
 								} else if (action.action_type ==
 									"set_dlg_current_edit_attr"
 								) {
-									if ($this
-										.focusOldFieldId ==
-										action.value) {
+									if ($this.focusOldFieldId == action.value) {
 										$this.setData({
 											focusFieldId: ""
 										})
 									} else {
 										$this.setData({
-											focusFieldId: $this
-												.focusOldFieldId
+											focusFieldId: $this.focusOldFieldId
 										})
 									}
 									$this.$nextTick(() => {
 										$this.setData({
-											focusFieldId: action
-												.value
+											focusFieldId: action.value
 										})
 									});
 								} else {
@@ -1345,13 +1385,10 @@
 										var d = dialog({
 											title: '<i class="ace-icon fa fa-info-circle"></i> ' +
 												$this.translateSys("tip"),
-											content: $this.translateSys(
-													"quotation_mark_left") +
-												action
-												.action_type + $this.translateSys(
-													"quotation_mark_right") + $this
-												.translate(
-													"tip_action_unprocessed")
+											content: $this.translateSys("quotation_mark_left") +
+												action.action_type + $this.translateSys(
+													"quotation_mark_right") +
+												$this.translate("tip_action_unprocessed")
 										});
 										d.show();
 									} else if (action.action_type == 'open_select_userdlg') {
@@ -2274,7 +2311,7 @@
 			}
 
 			.uni-icon {
-				padding: 8rpx;
+				padding: 10rpx 5rpx;
 				font-size: 32rpx;
 				color: rgb(192, 196, 204);
 			}
@@ -2295,7 +2332,7 @@
 
 		.uni-icon {
 			/* border: 1px solid red; */
-			width: 8%;
+			width: 30rpx;
 			font-family: uniicons;
 			font-size: 40rpx;
 			font-weight: 400;

--
Gitblit v1.9.1