28 changed files with 1153 additions and 979 deletions
			
			
		| @ -0,0 +1,33 @@ | |||
| import { defHttp } from '@/utils/http/axios'; | |||
| 
 | |||
| enum Api { | |||
|   getSubcategoryType = '/platform/subcategoryType/list', | |||
|   getProjectInfo = '/platform/projectInfo/getNames', | |||
|   getOrganizationType = '/platform/organizationType/list', | |||
|   getContractNamesByProjectName = '/platform/contractInfo/getContractNamesByProjectName', | |||
|   queryPointNames = '/platform/pointInfo/queryPointNames   ', | |||
| 
 | |||
| } | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| export function getSubcategoryType() { | |||
|   return defHttp.get({ url: Api.getSubcategoryType }); | |||
| } | |||
| 
 | |||
| export function getProjectInfo() { | |||
|   return defHttp.get({ url: Api.getProjectInfo }); | |||
| } | |||
| export function getOrganizationType() { | |||
|   return defHttp.get({ url: Api.getOrganizationType }); | |||
| } | |||
| 
 | |||
| export function getContractNamesByProjectName(data:any) { | |||
|   return defHttp.post({ url: Api.getContractNamesByProjectName,data }); | |||
| } | |||
| 
 | |||
| export function queryPointNames() { | |||
|   return defHttp.get({ url: Api.queryPointNames }); | |||
| } | |||
| @ -0,0 +1,173 @@ | |||
| <template> | |||
|   <a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%"  @cancel="closeModal"> | |||
|     <a-form :model="form" layout="vertical" ref="formRef" :rules="rules"> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属项目" name="projectName"> | |||
|             <a-input v-model:value="form.projectName" disabled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属合同" name="contractName"> | |||
|             <a-input v-model:value="form.contractName" disabled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="处理结果" name="handleResult"> | |||
|             <a-select v-model:value="form.handleResult" :options="handleResultOptions" placeholder="请选择" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="接单超期" name="isOrderTakingOverTime"> | |||
|             <a-radio-group v-model:value="form.isOrderTakingOverTime"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="接单超期扣款" name="orderTakingCost"> | |||
|             <a-input v-model:value="form.orderTakingCost" placeholder="接单超期扣款(元/小时)" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="处理超期" name="isHandleOverTime"> | |||
|             <a-radio-group v-model:value="form.isHandleOverTime"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="处理超期扣款" name="handleCost"> | |||
|             <a-input v-model:value="form.handleCost" placeholder="处理超期扣款(元/小时)" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="其他扣款费用" name="otherCost"> | |||
|             <a-input v-model:value="form.otherCost" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="其他扣款原因" name="otherCostReason"> | |||
|             <a-input v-model:value="form.otherCostReason" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="审核意见" name="auditOpinion"> | |||
|             <a-textarea v-model:value="form.auditOpinion" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="是否结案" name="closeCase"> | |||
|             <a-radio-group v-model:value="form.closeCase"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|     </a-form> | |||
|   </a-modal> | |||
| </template> | |||
| 
 | |||
| <script> | |||
|   import { reactive, ref } from 'vue'; | |||
|   import { message } from 'ant-design-vue'; | |||
|   import { getInfo } from './api'; | |||
|   export default { | |||
|     setup() { | |||
|       const title = ref('派遣'); | |||
|       const visible = ref(false); | |||
|       const form = reactive({ | |||
|         projectName: '', | |||
|         contractName: '', | |||
|         handleResult: null, | |||
|         isOrderTakingOverTime: null, | |||
|         orderTakingCost: '', | |||
|         isHandleOverTime: '', | |||
|         handleCost: null, | |||
|         otherCost: '', | |||
|         otherCostReason: '', | |||
|         auditOpinion:'', | |||
|         closeCase:null, | |||
|         id: null, | |||
|       }); | |||
|       //下拉框 | |||
|       const handleResultOptions = [ | |||
|         { | |||
|           value: '通过', | |||
|         }, | |||
|         { | |||
|           value: '退回', | |||
|         }, | |||
|       ]; | |||
|       const showModal = async (id) => { | |||
|         visible.value = true; | |||
|         const data = await getInfo(id); | |||
|         for (let i in form) { | |||
|           form[i] = data[i]; | |||
|         } | |||
|       }; | |||
| 
 | |||
|       const handleOk = () => { | |||
|         formRef.value.validate().then((valid) => { | |||
|           if (valid) { | |||
|             console.log(form) | |||
|           } | |||
|         }); | |||
|       }; | |||
|       const closeModal = () => { | |||
|         formRef.value.resetFields(); | |||
|         visible.value = false; | |||
|       }; | |||
|       const formRef = ref(); | |||
|       const rules = { | |||
|         handleResult: [{ required: true, message: '请选择' }], | |||
|         isOrderTakingOverTime: [{ required: true, message: '请选择' }], | |||
|         orderTakingCost: [{ required: true, message: '请输入' }], | |||
|         isHandleOverTime: [{ required: true, message: '请选择' }], | |||
|         handleCost: [{ required: true, message: '请输入' }], | |||
|         otherCost: [{ required: true, message: '请输入' }], | |||
|         otherCostReason: [{ required: true, message: '请输入' }], | |||
|         auditOpinion: [{ required: true, message: '请输入' }], | |||
|         closeCase: [{ required: true, message: '请选择' }], | |||
|       }; | |||
|       return { | |||
|         visible, | |||
|         title, | |||
|         form, | |||
|         handleResultOptions, | |||
|         showModal, | |||
|         handleOk, | |||
|         closeModal, | |||
|         formRef, | |||
|         rules, | |||
|       }; | |||
|     }, | |||
|   }; | |||
| </script> | |||
| 
 | |||
| <style scoped> | |||
|   /* 可选样式调整 */ | |||
|   .ant-modal-body { | |||
|     max-width: 600px; | |||
|     margin: 0 auto; | |||
|   } | |||
| </style> | |||
| @ -1,247 +0,0 @@ | |||
| <template> | |||
|   <a-modal v-model:open="visible" title="工单上报" @ok="handleOk" width="70%"> | |||
|     <a-form :model="form" layout="vertical"> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属项目" name="projectName"> | |||
|             <a-select | |||
|               v-model:value="form.projectName" | |||
|               :options="projectNameOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="是否事故" name="isAccident"> | |||
|             <a-radio-group v-model:value="form.isAccident"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="报修人员" name="repairer"> | |||
|             <a-input v-model:value="form.repairer" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="响应级别"> | |||
|             <a-select | |||
|               v-model:value="form.responseLevel" | |||
|               :options="responseLevelOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="响应时限"> | |||
|             <a-input v-model:value="form.responseTime" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障大类" name="faultCategory"> | |||
|             <a-select | |||
|               v-model:value="form.faultCategory" | |||
|               :options="[{ value: '前端' }]" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障小类" name="faultSubcategory"> | |||
|             <a-select | |||
|               v-model:value="form.faultSubcategory" | |||
|               :options="faultSubcategoryOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障机构" name="institution"> | |||
|             <a-select | |||
|               v-model:value="form.institution" | |||
|               :options="institutionOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障地点" name="faultLocation"> | |||
|             <a-input v-model:value="form.faultLocation" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="故障描述" name="faultDescription"> | |||
|             <a-textarea v-model:value="form.faultDescription" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="故障描述" name="faultDescription"> | |||
|             <a-textarea v-model:value="form.faultDescription" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="故障图片" name="faultImg"> | |||
|             <a-upload | |||
|               v-model:file-list="form.faultImg" | |||
|               action="https://www.mocky.io/v2/5cc8019d300000980a055e76" | |||
|             > | |||
|               <a-button type="primary"> 上传 </a-button> | |||
|             </a-upload> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="是否派遣" name="isDispatched"> | |||
|             <a-radio-group v-model:value="form.isDispatched"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12" v-if="form.isDispatched == 1"> | |||
|           <a-form-item label="维护要求" name="maintenanceRequirement"> | |||
|             <a-select | |||
|               v-model:value="form.maintenanceRequirement" | |||
|               :options="maintenanceRequirementOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]" v-if="form.isDispatched == 1"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="派遣意见" name="dispatchOpinion"> | |||
|             <a-textarea v-model:value="form.dispatchOpinion" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|     </a-form> | |||
|   </a-modal> | |||
| </template> | |||
| 
 | |||
| <script> | |||
|   import { reactive, ref } from 'vue'; | |||
| 
 | |||
|   export default { | |||
|     setup() { | |||
|       const visible = ref(false); | |||
|       const form = reactive({ | |||
|         projectName: '', | |||
|         isAccident: null, | |||
|         repairer: '', | |||
|         responseTime: '', | |||
|         responseLevel: '', | |||
|         faultCategory: '', | |||
|         faultSubcategory: '', | |||
|         institution: '', | |||
|         faultLocation: '', | |||
|         faultDescription: '', | |||
|         faultImg: [], | |||
|         isDispatched: null, | |||
|         maintenanceRequirement: '', | |||
|         dispatchOpinion: '', | |||
|       }); | |||
|       //下拉框 | |||
|       const responseLevelOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const maintenanceRequirementOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const institutionOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const faultSubcategoryOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const showModal = () => { | |||
|         visible.value = true; | |||
|       }; | |||
| 
 | |||
|       const handleOk = () => { | |||
|         console.log('Form Data:', form); | |||
|         // 在此处可以添加工单上报验证逻辑 | |||
|         visible.value = false; | |||
|       }; | |||
| 
 | |||
|       return { | |||
|         visible, | |||
|         form, | |||
|         showModal, | |||
|         handleOk, | |||
|         responseLevelOptions, | |||
|         maintenanceRequirementOptions, | |||
|         institutionOptions, | |||
|         faultSubcategoryOptions, | |||
|       }; | |||
|     }, | |||
|   }; | |||
| </script> | |||
| 
 | |||
| <style scoped> | |||
|   /* 可选样式调整 */ | |||
|   .ant-modal-body { | |||
|     max-width: 600px; | |||
|     margin: 0 auto; | |||
|   } | |||
| </style> | |||
| @ -0,0 +1,173 @@ | |||
| <template> | |||
|   <a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%"  @cancel="closeModal"> | |||
|     <a-form :model="form" layout="vertical" ref="formRef" :rules="rules"> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属项目" name="projectName"> | |||
|             <a-input v-model:value="form.projectName" disabled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属合同" name="contractName"> | |||
|             <a-input v-model:value="form.contractName" disabled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="处理结果" name="handleResult"> | |||
|             <a-select v-model:value="form.handleResult" :options="handleResultOptions" placeholder="请选择" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="接单超期" name="isOrderTakingOverTime"> | |||
|             <a-radio-group v-model:value="form.isOrderTakingOverTime"> | |||
|               <a-radio value="是">是</a-radio> | |||
|               <a-radio value="否">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="接单超期扣款" name="orderTakingCost"> | |||
|             <a-input v-model:value="form.orderTakingCost" placeholder="接单超期扣款(元/小时)" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="处理超期" name="isHandleOverTime"> | |||
|             <a-radio-group v-model:value="form.isHandleOverTime"> | |||
|               <a-radio value="是">是</a-radio> | |||
|               <a-radio value="否">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="处理超期扣款" name="handleCost"> | |||
|             <a-input v-model:value="form.handleCost" placeholder="处理超期扣款(元/小时)" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="其他扣款费用" name="otherCost"> | |||
|             <a-input v-model:value="form.otherCost" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="其他扣款原因" name="otherCostReason"> | |||
|             <a-input v-model:value="form.otherCostReason" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="审核意见" name="auditOpinion"> | |||
|             <a-textarea v-model:value="form.auditOpinion" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="是否结案" name="closeCase"> | |||
|             <a-radio-group v-model:value="form.closeCase"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|     </a-form> | |||
|   </a-modal> | |||
| </template> | |||
| 
 | |||
| <script> | |||
|   import { reactive, ref } from 'vue'; | |||
|   import { message } from 'ant-design-vue'; | |||
|   import { getInfo } from './api'; | |||
|   export default { | |||
|     setup() { | |||
|       const title = ref('派遣'); | |||
|       const visible = ref(false); | |||
|       const form = reactive({ | |||
|         projectName: '', | |||
|         contractName: '', | |||
|         handleResult: null, | |||
|         isOrderTakingOverTime: null, | |||
|         orderTakingCost: '', | |||
|         isHandleOverTime: '', | |||
|         handleCost: null, | |||
|         otherCost: '', | |||
|         otherCostReason: '', | |||
|         auditOpinion:'', | |||
|         closeCase:null, | |||
|         id: null, | |||
|       }); | |||
|       //下拉框 | |||
|       const handleResultOptions = [ | |||
|         { | |||
|           value: '通过', | |||
|         }, | |||
|         { | |||
|           value: '退回', | |||
|         }, | |||
|       ]; | |||
|       const showModal = async (id) => { | |||
|         visible.value = true; | |||
|         const data = await getInfo(id); | |||
|         for (let i in form) { | |||
|           form[i] = data[i]; | |||
|         } | |||
|       }; | |||
| 
 | |||
|       const handleOk = () => { | |||
|         formRef.value.validate().then((valid) => { | |||
|           if (valid) { | |||
|             console.log(form) | |||
|           } | |||
|         }); | |||
|       }; | |||
|       const closeModal = () => { | |||
|         formRef.value.resetFields(); | |||
|         visible.value = false; | |||
|       }; | |||
|       const formRef = ref(); | |||
|       const rules = { | |||
|         handleResult: [{ required: true, message: '请选择' }], | |||
|         isOrderTakingOverTime: [{ required: true, message: '请选择' }], | |||
|         orderTakingCost: [{ required: true, message: '请输入' }], | |||
|         isHandleOverTime: [{ required: true, message: '请选择' }], | |||
|         handleCost: [{ required: true, message: '请输入' }], | |||
|         otherCost: [{ required: true, message: '请输入' }], | |||
|         otherCostReason: [{ required: true, message: '请输入' }], | |||
|         auditOpinion: [{ required: true, message: '请输入' }], | |||
|         closeCase: [{ required: true, message: '请选择' }], | |||
|       }; | |||
|       return { | |||
|         visible, | |||
|         title, | |||
|         form, | |||
|         handleResultOptions, | |||
|         showModal, | |||
|         handleOk, | |||
|         closeModal, | |||
|         formRef, | |||
|         rules, | |||
|       }; | |||
|     }, | |||
|   }; | |||
| </script> | |||
| 
 | |||
| <style scoped> | |||
|   /* 可选样式调整 */ | |||
|   .ant-modal-body { | |||
|     max-width: 600px; | |||
|     margin: 0 auto; | |||
|   } | |||
| </style> | |||
| @ -1,240 +0,0 @@ | |||
| <template> | |||
|   <a-modal v-model:open="visible" title="工单上报" @ok="handleOk" width="70%"> | |||
|     <a-form :model="form" layout="vertical"> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属项目" name="projectName"> | |||
|             <a-select | |||
|               v-model:value="form.projectName" | |||
|               :options="projectNameOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="是否事故" name="isAccident"> | |||
|             <a-radio-group v-model:value="form.isAccident"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="报修人员" name="repairer"> | |||
|             <a-input v-model:value="form.repairer" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="响应级别"> | |||
|             <a-select | |||
|               v-model:value="form.responseLevel" | |||
|               :options="responseLevelOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="响应时限"> | |||
|             <a-input v-model:value="form.responseTime" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障大类" name="faultCategory"> | |||
|             <a-select | |||
|               v-model:value="form.faultCategory" | |||
|               :options="[{ value: '前端' }]" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障小类" name="faultSubcategory"> | |||
|             <a-select | |||
|               v-model:value="form.faultSubcategory" | |||
|               :options="faultSubcategoryOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障机构" name="institution"> | |||
|             <a-select | |||
|               v-model:value="form.institution" | |||
|               :options="institutionOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="故障地点" name="faultLocation"> | |||
|             <a-input v-model:value="form.faultLocation" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="故障描述" name="faultDescription"> | |||
|             <a-textarea v-model:value="form.faultDescription" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="故障图片" name="faultImg"> | |||
|             <a-upload | |||
|               v-model:file-list="form.faultImg" | |||
|               action="https://www.mocky.io/v2/5cc8019d300000980a055e76" | |||
|             > | |||
|               <a-button type="primary"> 上传 </a-button> | |||
|             </a-upload> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="12"> | |||
|           <a-form-item label="是否派遣" name="isDispatched"> | |||
|             <a-radio-group v-model:value="form.isDispatched"> | |||
|               <a-radio :value="1">是</a-radio> | |||
|               <a-radio :value="0">否</a-radio> | |||
|             </a-radio-group> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|         <a-col :span="12" v-if="form.isDispatched == 1"> | |||
|           <a-form-item label="维护要求" name="maintenanceRequirement"> | |||
|             <a-select | |||
|               v-model:value="form.maintenanceRequirement" | |||
|               :options="maintenanceRequirementOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]" v-if="form.isDispatched == 1"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="派遣意见" name="dispatchOpinion"> | |||
|             <a-textarea v-model:value="form.dispatchOpinion" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|     </a-form> | |||
|   </a-modal> | |||
| </template> | |||
| 
 | |||
| <script> | |||
|   import { reactive, ref } from 'vue'; | |||
| 
 | |||
|   export default { | |||
|     setup() { | |||
|       const visible = ref(false); | |||
|       const form = reactive({ | |||
|         projectName: '', | |||
|         isAccident: null, | |||
|         repairer: '', | |||
|         responseTime: '', | |||
|         responseLevel: '', | |||
|         faultCategory: '', | |||
|         faultSubcategory: '', | |||
|         institution: '', | |||
|         faultLocation: '', | |||
|         faultDescription: '', | |||
|         faultImg: [], | |||
|         isDispatched: null, | |||
|         maintenanceRequirement: '', | |||
|         dispatchOpinion: '', | |||
|       }); | |||
|       //下拉框 | |||
|       const responseLevelOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const maintenanceRequirementOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const institutionOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const faultSubcategoryOptions = [ | |||
|         { | |||
|           value: 0, | |||
|           label: '常规', | |||
|         }, | |||
|         { | |||
|           value: 1, | |||
|           label: '紧急', | |||
|         }, | |||
|         { | |||
|           value: 2, | |||
|           label: '特级', | |||
|         }, | |||
|       ]; | |||
|       const showModal = () => { | |||
|         visible.value = true; | |||
|       }; | |||
| 
 | |||
|       const handleOk = () => { | |||
|         console.log('Form Data:', form); | |||
|         // 在此处可以添加工单上报验证逻辑 | |||
|         visible.value = false; | |||
|       }; | |||
| 
 | |||
|       return { | |||
|         visible, | |||
|         form, | |||
|         showModal, | |||
|         handleOk, | |||
|         responseLevelOptions, | |||
|         maintenanceRequirementOptions, | |||
|         institutionOptions, | |||
|         faultSubcategoryOptions, | |||
|       }; | |||
|     }, | |||
|   }; | |||
| </script> | |||
| 
 | |||
| <style scoped> | |||
|   /* 可选样式调整 */ | |||
|   .ant-modal-body { | |||
|     max-width: 600px; | |||
|     margin: 0 auto; | |||
|   } | |||
| </style> | |||
| @ -0,0 +1,148 @@ | |||
| <template> | |||
|   <a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%"  @cancel="closeModal"> | |||
|     <a-form :model="form" layout="vertical" ref="formRef" :rules="rules"> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属项目" name="projectName"> | |||
|             <a-input v-model:value="form.projectName" disabled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="所属合同" name="contractName"> | |||
|             <a-input v-model:value="form.contractName" disabled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="操作处理" name="handle"> | |||
|             <a-select v-model:value="form.handle" :options="handleOptions" placeholder="请选择" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="维护要求" name="maintenanceRequirement"> | |||
|             <a-select | |||
|               v-model:value="form.maintenanceRequirement" | |||
|               :options="maintenanceRequirementOptions" | |||
|               placeholder="请选择" | |||
|             /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="维护单位" name="maintenanceUnit"> | |||
|             <a-input v-model:value="form.maintenanceUnit" placeholder="请输入" disbaled /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|       <a-row :gutter="[16, 16]"> | |||
|         <a-col :span="24"> | |||
|           <a-form-item label="派遣意见" name="dispatchOpinion"> | |||
|             <a-textarea v-model:value="form.dispatchOpinion" :rows="4" placeholder="请输入" /> | |||
|           </a-form-item> | |||
|         </a-col> | |||
|       </a-row> | |||
|     </a-form> | |||
|   </a-modal> | |||
| </template> | |||
| 
 | |||
| <script> | |||
|   import { reactive, ref } from 'vue'; | |||
|   import { message } from 'ant-design-vue'; | |||
|   import { getInfo } from './api'; | |||
|   export default { | |||
|     setup() { | |||
|       const title = ref('派遣'); | |||
|       const visible = ref(false); | |||
|       const form = reactive({ | |||
|         projectName: '', | |||
|         contractName: '', | |||
|         handle: null, | |||
|         maintenanceRequirement: null, | |||
|         maintenanceUnit: '', | |||
|         dispatchOpinion: '', | |||
|         id: null, | |||
|       }); | |||
|       //下拉框 | |||
|       const maintenanceRequirementOptions = [ | |||
|         { | |||
|           value: '修复', | |||
|         }, | |||
|         { | |||
|           value: '新增', | |||
|         }, | |||
|         { | |||
|           value: '拆除', | |||
|         }, | |||
|         { | |||
|           value: '清除', | |||
|         }, | |||
|         { | |||
|           value: '其他', | |||
|         }, | |||
|       ]; | |||
|       const handleOptions = [ | |||
|         { | |||
|           value: '事件派遣', | |||
|         }, | |||
|         { | |||
|           value: '事件转派', | |||
|         }, | |||
|         { | |||
|           value: '事件作废', | |||
|         }, | |||
|       ]; | |||
|       const showModal = async (id) => { | |||
|         visible.value = true; | |||
|         const data = await getInfo(id); | |||
|         for (let i in form) { | |||
|           form[i] = data[i]; | |||
|         } | |||
|       }; | |||
| 
 | |||
|       const handleOk = () => { | |||
|         formRef.value.validate().then((valid) => { | |||
|           if (valid) { | |||
|             console.log(form) | |||
|           } | |||
|         }); | |||
|       }; | |||
|       const closeModal = () => { | |||
|         formRef.value.resetFields(); | |||
|         visible.value = false; | |||
|       }; | |||
|       const formRef = ref(); | |||
|       const rules = { | |||
|         maintenanceRequirement: [{ required: true, message: '请选择' }], | |||
|         handle: [{ required: true, message: '请选择' }], | |||
|         dispatchOpinion: [{ required: true, message: '请输入' }], | |||
|         maintenanceUnit: [{ required: true, message: '请输入' }], | |||
|       }; | |||
|       return { | |||
|         visible, | |||
|         title, | |||
|         form, | |||
|         maintenanceRequirementOptions, | |||
|         handleOptions, | |||
|         showModal, | |||
|         handleOk, | |||
|         closeModal, | |||
|         formRef, | |||
|         rules, | |||
|       }; | |||
|     }, | |||
|   }; | |||
| </script> | |||
| 
 | |||
| <style scoped> | |||
|   /* 可选样式调整 */ | |||
|   .ant-modal-body { | |||
|     max-width: 600px; | |||
|     margin: 0 auto; | |||
|   } | |||
| </style> | |||
					Loading…
					
					
				
		Reference in new issue