Showing
8 changed files
with
59 additions
and
65 deletions
| ... | ... | @@ -177,7 +177,7 @@ const handleSwitch = async (e: any, record: any) => { |
| 177 | 177 | switchLoading.value = false; |
| 178 | 178 | }, 1500); |
| 179 | 179 | createMessage.success( |
| 180 | - `${!e ? t('common.disableText') : t('common.enableText')}${t('common.successText')}` | |
| 180 | + `${e !== 'ENABLE' ? t('common.disableText') : t('common.enableText')}${t('common.successText')}` | |
| 181 | 181 | ); |
| 182 | 182 | handleReload(); |
| 183 | 183 | }; | ... | ... |
| ... | ... | @@ -5,7 +5,7 @@ |
| 5 | 5 | showFooter |
| 6 | 6 | width="35%" |
| 7 | 7 | :maskClosable="true" |
| 8 | - :title="businessText" | |
| 8 | + :title="titleText" | |
| 9 | 9 | @register="registerDrawer" |
| 10 | 10 | wrapClassName="report-drawer" |
| 11 | 11 | @ok="handleSubmit" |
| ... | ... | @@ -14,8 +14,8 @@ |
| 14 | 14 | <BasicForm @register="registerForm"> |
| 15 | 15 | </BasicForm> |
| 16 | 16 | <div style="display: flex;width: 70%;margin-left: 70px"> |
| 17 | - <div style="width: 122px;text-align: center"> | |
| 18 | - 报修人 | |
| 17 | + <div style="width: 115px;align-content: center;display: flex;justify-content: center;" class="inputTitle"> | |
| 18 | + 负责人 | |
| 19 | 19 | </div> |
| 20 | 20 | <a-input |
| 21 | 21 | placeholder="请选择" |
| ... | ... | @@ -62,7 +62,6 @@ import { useResetOrganizationTree, OrganizationIdTree } from '/@/views/common/or |
| 62 | 62 | const { |
| 63 | 63 | setDefaultTime, |
| 64 | 64 | disableCustomWeekly, |
| 65 | - setPropsForModal, | |
| 66 | 65 | removeFields, |
| 67 | 66 | } = useHooks(); |
| 68 | 67 | const userInfo = useUserStore(); |
| ... | ... | @@ -104,12 +103,14 @@ const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = |
| 104 | 103 | } |
| 105 | 104 | ); |
| 106 | 105 | |
| 106 | +const titleText = ref(''); | |
| 107 | 107 | const businessText = ref(''); |
| 108 | 108 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
| 109 | 109 | try { |
| 110 | 110 | await nextTick(); |
| 111 | 111 | handleClose(); |
| 112 | 112 | businessText.value = data.text; |
| 113 | + titleText.value = data.text === 'add' ? '创建台账' : data.text === 'edit' ? '编辑台账' : '查看台账'; | |
| 113 | 114 | if (!selectedItem.value) { |
| 114 | 115 | selectedItem.value = { id: '', username: '' }; |
| 115 | 116 | } |
| ... | ... | @@ -117,7 +118,6 @@ const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async ( |
| 117 | 118 | selectedItem.value.id = data?.record?.directorId || ''; |
| 118 | 119 | setFieldsValue(setDefaultTime()); |
| 119 | 120 | updateSchema(disableCustomWeekly(0)); |
| 120 | - setDrawerProps(setPropsForModal(businessText.value)); | |
| 121 | 121 | if (businessText.value === 'add') return; |
| 122 | 122 | const rest = await ledgerEditDetailPage({id: data.record?.id}); |
| 123 | 123 | restData.data = rest ?? {}; |
| ... | ... | @@ -139,6 +139,11 @@ const resetValue = () => { |
| 139 | 139 | }; |
| 140 | 140 | |
| 141 | 141 | const handleSubmit = () => { |
| 142 | + if (businessText.value === 'view') { | |
| 143 | + closeDrawer(); | |
| 144 | + handleClose(); | |
| 145 | + return; | |
| 146 | + } | |
| 142 | 147 | useThrottle(); |
| 143 | 148 | }; |
| 144 | 149 | |
| ... | ... | @@ -151,6 +156,10 @@ const getValue = async () => { |
| 151 | 156 | setDrawerProps({ confirmLoading: true }); |
| 152 | 157 | const values = await validate(); |
| 153 | 158 | if (!values) return; |
| 159 | + if (!selectedItem?.value?.id) { | |
| 160 | + createMessage.warning('请选择负责人'); | |
| 161 | + return; | |
| 162 | + } | |
| 154 | 163 | const data = { |
| 155 | 164 | ...values, |
| 156 | 165 | buyDate: values.buyDate?.format('YYYY-MM-DD hh:mm:ss'), |
| ... | ... | @@ -211,3 +220,14 @@ const handleSelect = async (organizationId: string) => { |
| 211 | 220 | }; |
| 212 | 221 | |
| 213 | 222 | </script> |
| 223 | +<style scoped> | |
| 224 | +.inputTitle::before { | |
| 225 | + display: inline-block; | |
| 226 | + margin-right: 4px; | |
| 227 | + color: #ff4d4f; | |
| 228 | + font-size: 14px; | |
| 229 | + font-family: SimSun, sans-serif; | |
| 230 | + line-height: 1; | |
| 231 | + content: '*'; | |
| 232 | +} | |
| 233 | +</style> | ... | ... |
| ... | ... | @@ -27,13 +27,13 @@ export const searchFormSchema: FormSchema[] = [ |
| 27 | 27 | }, |
| 28 | 28 | }, |
| 29 | 29 | { |
| 30 | - field: 'startTime', | |
| 30 | + field: 'startTimeStart', | |
| 31 | 31 | label: t('inspection.inspectionPlan.startTimeText'), |
| 32 | 32 | component: 'DatePicker', |
| 33 | 33 | colProps: { span: 6 }, |
| 34 | 34 | }, |
| 35 | 35 | { |
| 36 | - field: 'endTime', | |
| 36 | + field: 'endTimeEnd', | |
| 37 | 37 | label: t('inspection.inspectionPlan.endTimeText'), |
| 38 | 38 | component: 'DatePicker', |
| 39 | 39 | colProps: { span: 6 }, | ... | ... |
| ... | ... | @@ -72,12 +72,12 @@ |
| 72 | 72 | </a-row> |
| 73 | 73 | <a-form-item label="巡检明细" name="tkInspectionDetailsDTOList"> |
| 74 | 74 | <a-table bordered :data-source="tableData" :columns="columns"> |
| 75 | - <template #tkDeviceAccountDTO="{ text, record, index }"> | |
| 75 | + <template #tkDeviceAccountDTO="{record}"> | |
| 76 | 76 | <div> |
| 77 | 77 | {{record?.tkDeviceAccountDTO?.name}} |
| 78 | 78 | </div> |
| 79 | 79 | </template> |
| 80 | - <template #recordResult="{ text, record, index }"> | |
| 80 | + <template #recordResult="{ record }"> | |
| 81 | 81 | <div> |
| 82 | 82 | <a-select |
| 83 | 83 | v-model:value="record.recordResult" |
| ... | ... | @@ -87,7 +87,7 @@ |
| 87 | 87 | /> |
| 88 | 88 | </div> |
| 89 | 89 | </template> |
| 90 | - <template #operation="{ text, record, index }"> | |
| 90 | + <template #operation="{ index }"> | |
| 91 | 91 | <div> |
| 92 | 92 | <a-button type="link" @click="handleDelete(index)" :disabled="isViewMode">删除</a-button> |
| 93 | 93 | </div> |
| ... | ... | @@ -119,7 +119,6 @@ |
| 119 | 119 | <script setup lang="ts"> |
| 120 | 120 | import {computed, onMounted, reactive, ref, unref, watch} from "vue"; |
| 121 | 121 | import {getInspectionPlanList, getInsPlanDetail} from "/@/api/inspection/inspectionPlan"; |
| 122 | -import { ApiTreeSelect } from '/@/components/Form'; | |
| 123 | 122 | import {OrganizationListItem} from "/@/api/system/model/systemModel"; |
| 124 | 123 | import {getOrganizationList} from "/@/api/system/system"; |
| 125 | 124 | import {getUserListByOrg} from "/@/api/equipment/ledger"; |
| ... | ... | @@ -211,7 +210,7 @@ const needReload = ref(true); |
| 211 | 210 | const { createMessage } = useMessage(); |
| 212 | 211 | |
| 213 | 212 | const searchInfo = reactive<Recordable>({}); |
| 214 | -const { organizationIdTreeRef, resetFn } = useResetOrganizationTree(searchInfo); | |
| 213 | +const { organizationIdTreeRef } = useResetOrganizationTree(searchInfo); | |
| 215 | 214 | const userVisible = ref(false); |
| 216 | 215 | const userModalTitle = ref('选人'); |
| 217 | 216 | const selectedItem = ref<{ id: number; username: string } | null>(null); |
| ... | ... | @@ -300,8 +299,9 @@ onMounted(() => { |
| 300 | 299 | |
| 301 | 300 | const fetchAgeOptions = async () => { |
| 302 | 301 | try { |
| 303 | - const response = await getInspectionPlanList({ page: 1, pageSize: 999 }); // 调用接口 | |
| 304 | - planOptions.value = response.items?.map((item: any) => { | |
| 302 | + const _response = await getInspectionPlanList({ page: 1, pageSize: 999}); // 调用接口 | |
| 303 | + const response = _response.items?.filter(item => item.status !== 'STOP'); | |
| 304 | + planOptions.value = response?.map((item: any) => { | |
| 305 | 305 | return { |
| 306 | 306 | value: item?.id, |
| 307 | 307 | label: item?.name |
| ... | ... | @@ -312,49 +312,6 @@ const fetchAgeOptions = async () => { |
| 312 | 312 | } |
| 313 | 313 | }; |
| 314 | 314 | |
| 315 | -const getBindProps = computed<Recordable>(() => { | |
| 316 | - const params = {} | |
| 317 | - return { | |
| 318 | - replaceFields: { children: 'children', key: 'id', title: 'name', value: 'id' }, | |
| 319 | - getPopupContainer: () => document.body, | |
| 320 | - placeholder: t('deviceManagement.device.organizationPlaceholderText'), | |
| 321 | - maxLength: 250, | |
| 322 | - value: form.orgId, | |
| 323 | - dropdownStyle: { maxHeight: '300px' }, | |
| 324 | - api: async (params: OrganizationListItem) => { | |
| 325 | - try { | |
| 326 | - const result = ((await getOrganizationList(params)) as unknown as Recordable[]) || []; | |
| 327 | - orgList.value = result; | |
| 328 | - needReload.value = false; | |
| 329 | - return result; | |
| 330 | - } catch (error) { | |
| 331 | - return unref(orgList); | |
| 332 | - } | |
| 333 | - }, | |
| 334 | - params: { | |
| 335 | - ...params, | |
| 336 | - _t: unref(timespan), | |
| 337 | - }, | |
| 338 | - onChange: async (...args: any[]) => { | |
| 339 | - const _data = { | |
| 340 | - page: '1', | |
| 341 | - pageSize: '999', | |
| 342 | - tenantId: userInfo.getUserInfo.tenantId!, | |
| 343 | - organizationId: args?.[0] | |
| 344 | - } | |
| 345 | - const response = await getUserListByOrg(_data); // 调用接口 | |
| 346 | - Options.value = response.items?.map((item: any) => { | |
| 347 | - return { | |
| 348 | - label: item.username, | |
| 349 | - value: item.id, | |
| 350 | - } | |
| 351 | - }); | |
| 352 | - form.orgId.value = args?.[0] | |
| 353 | - | |
| 354 | - }, | |
| 355 | - }; | |
| 356 | -}); | |
| 357 | - | |
| 358 | 315 | const handleChange = async (value: Value) => { |
| 359 | 316 | const res = await getInsPlanDetail({id:value}) |
| 360 | 317 | form.value.code = res.code |
| ... | ... | @@ -362,7 +319,7 @@ const handleChange = async (value: Value) => { |
| 362 | 319 | return { |
| 363 | 320 | checkDeviceId: item?.checkDeviceId || '', |
| 364 | 321 | recordResult: true, |
| 365 | - planDetails: item?.checkDeviceId || '', | |
| 322 | + planDetails: item?.planDetails || '', | |
| 366 | 323 | tkDeviceAccountDTO: item?.tkDeviceAccountDTO |
| 367 | 324 | } |
| 368 | 325 | }) || [] | ... | ... |
| ... | ... | @@ -164,14 +164,14 @@ |
| 164 | 164 | const handleViewDetail = async (record?: any) => { |
| 165 | 165 | let id = record.id; |
| 166 | 166 | modalTitle.value = '查看'; |
| 167 | + modalVisible.value = true; // 打开弹框 | |
| 168 | + isViewMode.value = true; | |
| 167 | 169 | try { |
| 168 | 170 | const response = await getInsRecordDetail({id}) |
| 169 | 171 | initialData.value = { |
| 170 | 172 | form: response, // 表单数据 |
| 171 | 173 | tableData: response.tkInspectionDetailsDTOList, // 表格数据 |
| 172 | 174 | }; |
| 173 | - modalVisible.value = true; // 打开弹框 | |
| 174 | - isViewMode.value = true; | |
| 175 | 175 | }catch (error) { |
| 176 | 176 | throw error; |
| 177 | 177 | }finally { | ... | ... |
| ... | ... | @@ -16,7 +16,7 @@ export const columns: BasicColumn[] = [ |
| 16 | 16 | }, |
| 17 | 17 | { |
| 18 | 18 | title: t('repair.history.orderText'), |
| 19 | - dataIndex: 'tkRepairOrderDTO', | |
| 19 | + dataIndex: 'orderCode', | |
| 20 | 20 | format: (text, record) => { |
| 21 | 21 | return record.tkRepairOrderDTO?.orderCode || '-' || text; |
| 22 | 22 | }, |
| ... | ... | @@ -27,7 +27,7 @@ export const columns: BasicColumn[] = [ |
| 27 | 27 | }, |
| 28 | 28 | { |
| 29 | 29 | title: t('repair.history.time'), |
| 30 | - dataIndex: 'tkRepairOrderDTO', | |
| 30 | + dataIndex: 'reportDate', | |
| 31 | 31 | format: (text, record) => { |
| 32 | 32 | return record.tkRepairOrderDTO?.reportDate || '-' || text; |
| 33 | 33 | }, | ... | ... |
| ... | ... | @@ -12,7 +12,9 @@ |
| 12 | 12 | <div> |
| 13 | 13 | <BasicForm @register="registerForm" /> |
| 14 | 14 | <div style="display: flex; width: 70%; margin-left: 70px"> |
| 15 | - <div style="width: 122px; text-align: center"> 报修人 </div> | |
| 15 | + <div style="display: flex;width: 115px;align-content: center;justify-content: center;" class="inputTitle"> | |
| 16 | + 报修人 | |
| 17 | + </div> | |
| 16 | 18 | <a-input placeholder="请选择" :disabled="true" v-model:value="selectedUsername" /> |
| 17 | 19 | <a-button type="primary" @click="goChoose">选人</a-button> |
| 18 | 20 | </div> |
| ... | ... | @@ -152,6 +154,10 @@ |
| 152 | 154 | const handleOk = async () => { |
| 153 | 155 | await validate(); |
| 154 | 156 | let values = getFieldsValue(); |
| 157 | + if (!selectedItem?.value?.id) { | |
| 158 | + createMessage.warning('请选择报修人'); | |
| 159 | + return; | |
| 160 | + } | |
| 155 | 161 | if (unref(isUpdate)) { |
| 156 | 162 | values = { |
| 157 | 163 | ...values, |
| ... | ... | @@ -204,3 +210,14 @@ |
| 204 | 210 | Options.value = response.items; |
| 205 | 211 | }; |
| 206 | 212 | </script> |
| 213 | +<style scoped> | |
| 214 | +.inputTitle::before { | |
| 215 | + display: inline-block; | |
| 216 | + margin-right: 4px; | |
| 217 | + color: #ff4d4f; | |
| 218 | + font-size: 14px; | |
| 219 | + font-family: SimSun, sans-serif; | |
| 220 | + line-height: 1; | |
| 221 | + content: '*'; | |
| 222 | +} | |
| 223 | +</style> | ... | ... |