Commit 1dd4c89f4a0ed86c275b364de45d92bae796e39d

Authored by gesilong
1 parent be1d717b

commit:修复设备巡检保养

... ... @@ -124,8 +124,8 @@
124 124 v-model:value="record.checkPlanId"
125 125 :options="planOptions"
126 126 :disabled="isViewMode"
127   - :fieldNames="{ label: 'name', value: 'id' }"
128 127 placeholder="请选择"
  128 + @change="(value) => handleCheckPlanChange(value, record)"
129 129 />
130 130 </div>
131 131 </template>
... ... @@ -264,7 +264,19 @@ const visible = ref(props.visible);
264 264 const isViewMode = ref(props.isViewMode);
265 265 const modalTitle = ref(props.modalTitle);
266 266 const form = ref({ ...props.initialData.form });
267   -const tableData = ref([...props.initialData.tableData]);
  267 +const normalizeDetailRow = (row: any) => {
  268 + const deviceInfo = row?.tkDeviceAccountDTO || row?.deviceInfo;
  269 + const checkDeviceId = row?.checkDeviceId ?? deviceInfo?.id;
  270 + const deviceCode = row?.deviceCode ?? deviceInfo?.code;
  271 + const deviceName = row?.deviceName ?? deviceInfo?.name;
  272 + return {
  273 + ...row,
  274 + checkDeviceId,
  275 + deviceCode,
  276 + deviceName,
  277 + };
  278 +};
  279 +const tableData = ref((props.initialData.tableData || []).map(normalizeDetailRow));
268 280 const emit = defineEmits(['update:visible', 'submit']);
269 281 const deviceVisible = ref(false);
270 282 const deviceSearchInfo = reactive<Recordable>({ code: '', name: '' });
... ... @@ -308,6 +320,13 @@ watch(
308 320 }
309 321 );
310 322
  323 +watch(
  324 + () => props.modalTitle,
  325 + (newVal) => {
  326 + modalTitle.value = newVal;
  327 + }
  328 +);
  329 +
311 330 // 监听 visible 的变化并通知父组件
312 331 watch(
313 332 () => visible.value,
... ... @@ -321,7 +340,7 @@ watch(
321 340 () => props.initialData,
322 341 (newVal) => {
323 342 form.value = { ...newVal.form };
324   - tableData.value = [...newVal.tableData];
  343 + tableData.value = (newVal.tableData || []).map(normalizeDetailRow);
325 344 },
326 345 { deep: true }
327 346 );
... ... @@ -336,12 +355,23 @@ const fetchAgeOptions = async () => {
336 355 const response = await getLedgerList({ page: 1, pageSize: 999 }); // 调用接口
337 356 const response1 = await getPlanList({ page: 1, pageSize: 999, type: 'INSPECTION' }); // 调用接口
338 357 Options.value = response.items || [];
339   - planOptions.value = response1.items || [];
  358 + planOptions.value =
  359 + response1.items?.map((item: any) => ({
  360 + ...item,
  361 + label: item?.name,
  362 + value: item?.id,
  363 + planDetails: item?.planDetails,
  364 + })) || [];
340 365 } catch (error) {
341 366 console.error('失败:', error);
342 367 }
343 368 };
344 369
  370 +const handleCheckPlanChange = (checkPlanId: any, record: any) => {
  371 + const selected = planOptions.value?.find((item: any) => item?.value === checkPlanId);
  372 + record.planDetails = selected?.planDetails || '';
  373 +};
  374 +
345 375 const getDeviceLabel = (record: any) => {
346 376 const code = record?.deviceCode;
347 377 const name = record?.deviceName;
... ... @@ -374,6 +404,12 @@ const handleDeviceOk = () => {
374 404 activeDeviceRecord.value.checkDeviceId = selectedDevice.value.id;
375 405 activeDeviceRecord.value.deviceCode = selectedDevice.value.code;
376 406 activeDeviceRecord.value.deviceName = selectedDevice.value.name;
  407 + activeDeviceRecord.value.tkDeviceAccountDTO = {
  408 + ...(activeDeviceRecord.value.tkDeviceAccountDTO || {}),
  409 + id: selectedDevice.value.id,
  410 + code: selectedDevice.value.code,
  411 + name: selectedDevice.value.name,
  412 + };
377 413 deviceVisible.value = false;
378 414 };
379 415
... ...
... ... @@ -90,7 +90,7 @@
90 90 :initial-data="initialData"
91 91 :is-view-mode="isViewMode"
92 92 @submit="handleSubmit"
93   - :title="modalTitle"
  93 + :modal-title="modalTitle"
94 94 />
95 95 </div>
96 96 </template>
... ...
... ... @@ -306,6 +306,13 @@ watch(
306 306 }
307 307 );
308 308
  309 +watch(
  310 + () => props.modalTitle,
  311 + (newVal) => {
  312 + modalTitle.value = newVal;
  313 + }
  314 +);
  315 +
309 316 // 监听 visible 的变化并通知父组件
310 317 watch(
311 318 () => visible.value,
... ...
... ... @@ -46,7 +46,7 @@
46 46 v-model:visible="modalVisible"
47 47 :initial-data="initialData"
48 48 :is-view-mode="isViewMode"
49   - :title="modalTitle"
  49 + :modal-title="modalTitle"
50 50 @submit="handleSubmit"
51 51 />
52 52 </div>
... ...
... ... @@ -99,7 +99,6 @@
99 99 v-model:value="record.checkPlanId"
100 100 :options="planOptions"
101 101 :disabled="isViewMode"
102   - :fieldNames="{ label: 'name', value: 'id' }"
103 102 placeholder="请选择"
104 103 @change="(value) => handleCheckPlanChange(value, record)"
105 104 />
... ... @@ -222,7 +221,19 @@ const statusOptions = [
222 221 { label: t('inspection.servicePlan.STOP'), value: 'STOP' },
223 222 ];
224 223 const form = ref({ ...props.initialData.form });
225   -const tableData = ref([...props.initialData.tableData]);
  224 +const normalizeDetailRow = (row: any) => {
  225 + const deviceInfo = row?.deviceInfo || row?.tkDeviceAccountDTO;
  226 + const deviceId = row?.deviceId ?? deviceInfo?.id;
  227 + const deviceCode = row?.deviceCode ?? deviceInfo?.code;
  228 + const deviceName = row?.deviceName ?? deviceInfo?.name;
  229 + return {
  230 + ...row,
  231 + deviceId,
  232 + deviceCode,
  233 + deviceName,
  234 + };
  235 +};
  236 +const tableData = ref((props.initialData.tableData || []).map(normalizeDetailRow));
226 237 const emit = defineEmits(['update:visible', 'submit']);
227 238 onMounted(() => {
228 239 fetchAgeOptions();
... ... @@ -261,22 +272,39 @@ const fetchAgeOptions = async () => {
261 272 const response = await getLedgerList({ page: 1, pageSize: 999 }); // 调用接口
262 273 const response1 = await getPlanList({ page: 1, pageSize: 999, type: 'MAINTENANCE' }); // 调用接口
263 274 Options.value = response.items || [];
264   - planOptions.value = response1.items || [];
  275 + planOptions.value =
  276 + response1.items?.map((item: any) => ({
  277 + ...item,
  278 + label: item?.name,
  279 + value: item?.id,
  280 + planDetails: item?.planDetails,
  281 + })) || [];
265 282 } catch (error) {
266 283 console.error('失败:', error);
267 284 }
268 285 };
269 286
270 287 const handleCheckPlanChange = (checkPlanId: any, record: any) => {
271   - const selected = planOptions.value?.find((item: any) => item?.id === checkPlanId);
  288 + const selected = planOptions.value?.find((item: any) => item?.value === checkPlanId);
272 289 record.preserveDetail = selected?.planDetails || '';
273 290 };
274 291
275 292 const getDeviceLabel = (record: any) => {
276 293 const code = record?.deviceCode;
277 294 const name = record?.deviceName;
278   - if (code && name) return `${code} / ${name}`;
279   - return name || code || '';
  295 + if (code || name) {
  296 + if (code && name) return `${code} / ${name}`;
  297 + return name || code || '';
  298 + }
  299 +
  300 + const deviceId = record?.deviceId;
  301 + if (!deviceId) return '';
  302 +
  303 + const matched = Options.value?.find((item: any) => item?.id === deviceId);
  304 + const matchedCode = matched?.code;
  305 + const matchedName = matched?.name;
  306 + if (matchedCode && matchedName) return `${matchedCode} / ${matchedName}`;
  307 + return matchedName || matchedCode || '';
280 308 };
281 309
282 310 const goChooseDevice = (record: any) => {
... ... @@ -304,6 +332,12 @@ const handleDeviceOk = () => {
304 332 activeDeviceRecord.value.deviceId = selectedDevice.value.id;
305 333 activeDeviceRecord.value.deviceCode = selectedDevice.value.code;
306 334 activeDeviceRecord.value.deviceName = selectedDevice.value.name;
  335 + activeDeviceRecord.value.deviceInfo = {
  336 + ...(activeDeviceRecord.value.deviceInfo || {}),
  337 + id: selectedDevice.value.id,
  338 + code: selectedDevice.value.code,
  339 + name: selectedDevice.value.name,
  340 + };
307 341 deviceVisible.value = false;
308 342 };
309 343
... ... @@ -326,6 +360,13 @@ watch(
326 360 }
327 361 );
328 362
  363 +watch(
  364 + () => props.modalTitle,
  365 + (newVal) => {
  366 + modalTitle.value = newVal;
  367 + }
  368 +);
  369 +
329 370 // 监听 visible 的变化并通知父组件
330 371 watch(
331 372 () => visible.value,
... ... @@ -339,7 +380,7 @@ watch(
339 380 () => props.initialData,
340 381 (newVal) => {
341 382 form.value = { ...newVal.form };
342   - tableData.value = [...newVal.tableData];
  383 + tableData.value = (newVal.tableData || []).map(normalizeDetailRow);
343 384 },
344 385 { deep: true }
345 386 );
... ...
... ... @@ -90,7 +90,7 @@
90 90 :initial-data="initialData"
91 91 :is-view-mode="isViewMode"
92 92 @submit="handleSubmit"
93   - :title="modalTitle"
  93 + :modal-title="modalTitle"
94 94 />
95 95 </div>
96 96 </template>
... ...
... ... @@ -97,7 +97,6 @@
97 97 v-model:value="record.status"
98 98 :options="defaultOptions"
99 99 :disabled="isViewMode"
100   - :field-names="{ label: 'name', value: 'id' }"
101 100 placeholder="请选择"
102 101 />
103 102 </div>
... ... @@ -352,6 +351,13 @@ watch(
352 351 }
353 352 );
354 353
  354 +watch(
  355 + () => props.modalTitle,
  356 + (newVal) => {
  357 + modalTitle.value = newVal;
  358 + }
  359 +);
  360 +
355 361 // 监听 visible 的变化并通知父组件
356 362 watch(
357 363 () => visible.value,
... ...
... ... @@ -55,7 +55,7 @@
55 55 v-model:visible="modalVisible"
56 56 :initial-data="initialData"
57 57 :is-view-mode="isViewMode"
58   - :title="modalTitle"
  58 + :modal-title="modalTitle"
59 59 @submit="handleSubmit"
60 60 />
61 61 </div>
... ...