takingOrdersModel.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="接单"
  6. @cancel="resetFields"
  7. @ok="handleSubmit"
  8. :min-height="0"
  9. >
  10. <BasicForm @register="registerForm" >
  11. <template #text="{ model, field }">
  12. {{ model[field] }}
  13. </template>
  14. </BasicForm>
  15. </BasicModal>
  16. </template>
  17. <script lang="ts">
  18. import { defineComponent, ref, onMounted, h } from 'vue';
  19. import { BasicModal, useModalInner } from '/@/components/Modal';
  20. import { useMessage } from '/@/hooks/web/useMessage';
  21. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  22. import { supplyOrderList, getByRoleType, orderReceiving } from '/@/api/spares';
  23. import { uploadApi } from '/@/api/product/index';
  24. import { useI18n } from '/@/hooks/web/useI18n';
  25. const { t } = useI18n();
  26. export default defineComponent({
  27. components: { BasicModal, BasicForm },
  28. props: {
  29. userData: { type: Object },
  30. },
  31. emits: ['update'],
  32. setup(_, { emit }) {
  33. const modelRef = ref({});
  34. const schemas: FormSchema[] = [
  35. {
  36. field: 'repairId',
  37. component: 'Input',
  38. slot: 'text',
  39. label: '维修单号',
  40. componentProps: {
  41. maxLength: 50,
  42. }, colProps: {
  43. span: 18,
  44. },
  45. },
  46. {
  47. field: 'deviceType',
  48. component: 'Input',
  49. slot: 'text',
  50. label: '设备信息',
  51. },
  52. {
  53. field: 'warrantyExpirationDateText',
  54. component: 'Input',
  55. slot: 'text',
  56. label: '保修届满日期',
  57. },
  58. {
  59. field: 'cameraFaultInfo',
  60. component: 'InputTextArea',
  61. label: '机器外观',
  62. required: true,
  63. componentProps: {
  64. maxLength: 500,
  65. rows: 3,
  66. placeholder: '请描述检测后的具体故障情况。',
  67. },
  68. colProps: {
  69. span: 24,
  70. },
  71. },
  72. {
  73. field: 'imageUrl',
  74. component: 'Upload',
  75. label: '相关图片',
  76. rules: [{ required: true, message: t('common.uploadMessge') }],
  77. itemProps: {
  78. validateTrigger: 'blur',
  79. },
  80. componentProps: {
  81. api: uploadApi,
  82. // fileFlow:true,
  83. maxNumber: 6,
  84. maxSize: 5,
  85. accept: ['jpeg', 'jpg', 'png'],
  86. },
  87. colProps: {
  88. span: 12,
  89. },
  90. // },{
  91. // field: 'warrantyType',
  92. // component: 'RadioGroup',
  93. // required: true,
  94. // label: '保修类型',
  95. // defaultValue:1,
  96. // componentProps: {
  97. // placeholder: '请填写姓名',
  98. // options:[
  99. // { label: '保内维修', value: 0 },
  100. // { label: '保修期外', value: 1 },
  101. // { label: '非保修项目', value: 2 },
  102. // ],
  103. // },
  104. // },
  105. // {
  106. // field: 'warrantyExpirationDate',
  107. // component: 'DatePicker',
  108. // label: '保修届满日期',
  109. // required: true,
  110. // colProps: {
  111. // span: 18,
  112. // },
  113. // componentProps: {
  114. // valueFormat: 'YYYY-MM-DD',
  115. // },
  116. },{
  117. field: 'repairManId',
  118. label: '维修工程师',
  119. component: 'ApiSelect',
  120. required: true,
  121. componentProps: {
  122. api: getByRoleType,
  123. numberToString: true,
  124. labelField: 'nickName',
  125. valueField: 'id',
  126. immediate: true,
  127. params: {
  128. roleType: 3,
  129. },
  130. },
  131. colProps: {
  132. span: 18,
  133. },
  134. },{
  135. field: 'supplyAdminId',
  136. label: '供应链管理员',
  137. component: 'ApiSelect',
  138. required: true,
  139. componentProps: {
  140. api: getByRoleType,
  141. numberToString: true,
  142. labelField: 'nickName',
  143. valueField: 'id',
  144. immediate: true,
  145. params: {
  146. roleType: 4,
  147. },
  148. },
  149. colProps: {
  150. span: 18,
  151. },
  152. },{
  153. field: 'testerId',
  154. label: '测试工程师',
  155. component: 'ApiSelect',
  156. required: true,
  157. componentProps: {
  158. api: getByRoleType,
  159. numberToString: true,
  160. labelField: 'nickName',
  161. valueField: 'id',
  162. immediate: true,
  163. params: {
  164. roleType: 5,
  165. },
  166. },
  167. colProps: {
  168. span: 18,
  169. },
  170. },
  171. ];
  172. const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
  173. labelWidth: 100,
  174. schemas: schemas,
  175. showActionButtonGroup: false,
  176. actionColOptions: {
  177. span: 24,
  178. },
  179. });
  180. const { createMessage, createConfirm } = useMessage();
  181. onMounted(() => {});
  182. let addListFunc = () => {};
  183. const [register, { closeModal }] = useModalInner((data) => {
  184. // console.log(data);
  185. data && onDataReceive(data);
  186. });
  187. function onDataReceive(data) {
  188. modelRef.value = data;
  189. resetFields();
  190. setFieldsValue({
  191. ...data,
  192. warrantyExpirationDateText: `${data.warrantyDate} (${data.warrantyType==0?'保内维修':data.warrantyType==1?'保内转保外':'保外维修'})`,
  193. deviceType:t(`routes.scene.tableType.${data.cameraType}`) +' '+ data.cameraSnCode
  194. });
  195. }
  196. const handleSubmit = async () => {
  197. // createConfirm({
  198. // iconType: 'warning',
  199. // title: () => h('span', '温馨提示'),
  200. // content: '删除设备后需要重新入库<br/>确定删除吗?',
  201. // onOk: async () => {
  202. const params = await validate()
  203. const res = await orderReceiving(params);
  204. console.log('validate',params,res)
  205. createMessage.success(t('common.optSuccess'));
  206. closeModal();
  207. emit('update');
  208. // },
  209. // });
  210. };
  211. return {
  212. register,
  213. model: modelRef,
  214. registerForm,
  215. handleSubmit,
  216. addListFunc,
  217. resetFields,
  218. t,
  219. };
  220. },
  221. });
  222. </script>
  223. <style lang="less" scoped>
  224. .recoverPage {
  225. .form_item {
  226. line-height: 30px;
  227. .item_lable {
  228. display: inline-block;
  229. width: 100px;
  230. text-align: right;
  231. }
  232. }
  233. }
  234. </style>