From db42d47f5692ef64e5436c5a6d29dcb537b44596 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 26 一月 2026 16:36:13 +0800
Subject: [PATCH] 浪潮对接单点登录:mis调整

---
 src/views/equipmentManagement/inspectionManagement/components/formDia.vue |  302 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 302 insertions(+), 0 deletions(-)

diff --git a/src/views/equipmentManagement/inspectionManagement/components/formDia.vue b/src/views/equipmentManagement/inspectionManagement/components/formDia.vue
new file mode 100644
index 0000000..3202d32
--- /dev/null
+++ b/src/views/equipmentManagement/inspectionManagement/components/formDia.vue
@@ -0,0 +1,302 @@
+<template>
+	<div>
+		<el-dialog :title="operationType === 'add' ? '鏂板宸℃浠诲姟' : '缂栬緫宸℃浠诲姟'"
+							 v-model="dialogVisitable" width="800px" @close="cancel">
+			<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
+				<el-row>
+					<el-col :span="12">
+						<el-form-item label="璁惧鍚嶇О" prop="taskId">
+							<el-select v-model="form.taskId" @change="setDeviceModel" filterable>
+								<el-option
+									v-for="(item, index) in deviceOptions"
+									:key="index"
+									:label="item.deviceName"
+									:value="item.id"
+								></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="宸℃浜�" prop="inspector">
+							<el-select v-model="form.inspector"                 filterable
+												 default-first-option
+												 :reserve-keyword="false" placeholder="璇烽�夋嫨" multiple clearable>
+								<el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId"/>
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="12">
+						<el-form-item label="澶囨敞" prop="remarks">
+							<el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" type="textarea" />
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鐧昏鏃堕棿" prop="dateStr">
+							<el-date-picker
+								v-model="form.dateStr"
+								type="date"
+								placeholder="閫夋嫨鐧昏鏃ユ湡"
+								format="YYYY-MM-DD"
+								value-format="YYYY-MM-DD"
+								style="width: 100%"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="12">
+						<el-form-item label="浠诲姟棰戠巼" prop="frequencyType">
+							<el-select v-model="form.frequencyType" placeholder="璇烽�夋嫨" clearable>
+								<el-option label="姣忔棩" value="DAILY"/>
+								<el-option label="姣忓懆" value="WEEKLY"/>
+								<el-option label="姣忔湀" value="MONTHLY"/>
+								<!-- <el-option label="瀛e害" value="QUARTERLY"/> -->
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12" v-if="form.frequencyType === 'DAILY' && form.frequencyType">
+						<el-form-item label="鏃ユ湡" prop="frequencyDetail">
+							<el-time-picker v-model="form.frequencyDetail" placeholder="閫夋嫨鏃堕棿" format="HH:mm"
+															value-format="HH:mm" />
+						</el-form-item>
+					</el-col>
+					<el-col :span="12" v-if="form.frequencyType === 'WEEKLY' && form.frequencyType">
+						<el-form-item label="鏃ユ湡" prop="frequencyDetail">
+							<el-select v-model="form.week" placeholder="璇烽�夋嫨" clearable style="width: 50%">
+								<el-option label="鍛ㄤ竴" value="MON"/>
+								<el-option label="鍛ㄤ簩" value="TUE"/>
+								<el-option label="鍛ㄤ笁" value="WED"/>
+								<el-option label="鍛ㄥ洓" value="THU"/>
+								<el-option label="鍛ㄤ簲" value="FRI"/>
+								<el-option label="鍛ㄥ叚" value="SAT"/>
+								<el-option label="鍛ㄦ棩" value="SUN"/>
+							</el-select>
+							<el-time-picker v-model="form.time" placeholder="閫夋嫨鏃堕棿" format="HH:mm"
+															value-format="HH:mm"  style="width: 50%"/>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12" v-if="form.frequencyType === 'MONTHLY' && form.frequencyType">
+						<el-form-item label="鏃ユ湡" prop="frequencyDetail">
+							<el-date-picker
+								v-model="form.frequencyDetail"
+								type="datetime"
+								clearable
+								placeholder="閫夋嫨寮�濮嬫棩鏈�"
+								format="DD,HH:mm"
+								value-format="DD,HH:mm"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12" v-if="form.frequencyType === 'QUARTERLY' && form.frequencyType">
+						<el-form-item label="鏃ユ湡" prop="frequencyDetail">
+							<el-date-picker
+								v-model="form.frequencyDetail"
+								type="datetime"
+								clearable
+								placeholder="閫夋嫨寮�濮嬫棩鏈�"
+								format="MM,DD,HH:mm"
+								value-format="MM,DD,HH:mm"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<div class="dialog-footer">
+					<el-button @click="cancel">鍙栨秷</el-button>
+					<el-button type="primary" @click="submitForm">淇濆瓨</el-button>
+				</div>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script setup>
+import {reactive, ref, getCurrentInstance, toRefs} from "vue";
+import useUserStore from '@/store/modules/user'
+import {addOrEditTimingTask} from "@/api/inspectionManagement/index.js";
+import {userListNoPageByTenantId} from "@/api/system/user.js";
+import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
+
+const { proxy } = getCurrentInstance()
+const emit = defineEmits()
+const userStore = useUserStore()
+const dialogVisitable = ref(false);
+const operationType = ref('add');
+const deviceOptions = ref([]);
+const data = reactive({
+	form: {
+		taskId: undefined,
+		taskName: undefined,
+		inspector: '',
+		inspectorIds: '',
+		remarks: '',
+		frequencyType: '',
+		frequencyDetail: '',
+		week: '',
+		time: '',
+		dateStr: ''
+	},
+	rules: {
+		taskId: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" },],
+		inspector: [{ required: true, message: "璇疯緭鍏ュ贰妫�浜�", trigger: "blur" },],
+		dateStr: [{ required: true, message: "璇烽�夋嫨鐧昏鏃堕棿", trigger: "change" }],
+		frequencyType: [{ required: true, message: "璇烽�夋嫨浠诲姟棰戠巼", trigger: "change" }],
+		frequencyDetail: [
+			{ 
+				required: true, 
+				message: "璇烽�夋嫨鏃ユ湡", 
+				trigger: "change",
+				validator: (rule, value, callback) => {
+					if (!form.value.frequencyType) {
+						callback()
+						return
+					}
+					if (form.value.frequencyType === 'WEEKLY') {
+						if (!form.value.week || !form.value.time) {
+							callback(new Error("璇烽�夋嫨鏃ユ湡鍜屾椂闂�"))
+						} else {
+							callback()
+						}
+					} else {
+						if (!value) {
+							callback(new Error("璇烽�夋嫨鏃ユ湡"))
+						} else {
+							callback()
+						}
+					}
+				}
+			}
+		],
+		week: [
+			{ 
+				required: true, 
+				message: "璇烽�夋嫨鏄熸湡", 
+				trigger: "change",
+				validator: (rule, value, callback) => {
+					if (form.value.frequencyType === 'WEEKLY' && !value) {
+						callback(new Error("璇烽�夋嫨鏄熸湡"))
+					} else {
+						callback()
+					}
+				}
+			}
+		],
+		time: [
+			{ 
+				required: true, 
+				message: "璇烽�夋嫨鏃堕棿", 
+				trigger: "change",
+				validator: (rule, value, callback) => {
+					if (form.value.frequencyType === 'WEEKLY' && !value) {
+						callback(new Error("璇烽�夋嫨鏃堕棿"))
+					} else {
+						callback()
+					}
+				}
+			}
+		]
+	}
+})
+const { form, rules } = toRefs(data)
+const userList = ref([])
+
+const loadDeviceName = async () => {
+	const { data } = await getDeviceLedger();
+	deviceOptions.value = data;
+};
+
+const setDeviceModel = (id) => {
+	const option = deviceOptions.value.find((item) => item.id === id);
+	if (option) {
+		form.value.taskName = option.deviceName;
+	}
+}
+
+// 鎵撳紑寮规
+const openDialog = async (type, row) => {
+	dialogVisitable.value = true
+	operationType.value = type
+	
+	// 閲嶇疆琛ㄥ崟
+	resetForm();
+	
+	// 鍔犺浇鐢ㄦ埛鍒楄〃
+	userListNoPageByTenantId().then((res) => {
+		userList.value = res.data;
+	});
+	
+	// 鍔犺浇璁惧鍒楄〃
+	await loadDeviceName();
+	
+	if (type === 'edit' && row) {
+		form.value = {...row}
+		form.value.inspector = form.value.inspectorIds.split(',').map(Number)
+		
+		// 濡傛灉鏈夎澶嘔D锛岃嚜鍔ㄨ缃澶囦俊鎭�
+		if (form.value.taskId) {
+			setDeviceModel(form.value.taskId);
+		}
+	}
+}
+
+// 鍏抽棴瀵硅瘽妗�
+const cancel = () => {
+	resetForm()
+	dialogVisitable.value = false
+	emit('closeDia')
+}
+
+// 閲嶇疆琛ㄥ崟鍑芥暟
+const resetForm = () => {
+	if (proxy.$refs.formRef) {
+		proxy.$refs.formRef.resetFields()
+	}
+	// 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
+	form.value = {
+		taskId: undefined,
+		taskName: undefined,
+		inspector: '',
+		inspectorIds: '',
+		remarks: '',
+		frequencyType: '',
+		frequencyDetail: '',
+		week: '',
+		time: ''
+	}
+}
+
+// 鎻愪氦琛ㄥ崟
+const submitForm = () => {
+	proxy.$refs["formRef"].validate(async valid => {
+		if (valid) {
+			try {
+				form.value.inspectorIds = form.value.inspector.join(',')
+				delete form.value.inspector
+				
+				if (form.value.frequencyType === 'WEEKLY') {
+					let frequencyDetail = ''
+					frequencyDetail = form.value.week + ',' + form.value.time
+					form.value.frequencyDetail = frequencyDetail
+				}
+				
+				let res = await userStore.getInfo()
+				form.value.registrantId = res.user.userId
+				
+				await addOrEditTimingTask(form.value)
+				cancel()
+				proxy.$modal.msgSuccess('鎻愪氦鎴愬姛')
+			} catch (error) {
+				proxy.$modal.msgError('鎻愪氦澶辫触锛岃閲嶈瘯')
+			}
+		}
+	})
+}
+defineExpose({ openDialog })
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file

--
Gitblit v1.9.3