form-edit.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <template>
  2. <div class="admin-authorize-editInfo">
  3. <el-dialog :title="formData.titleText" v-model="formData.isShowDialog" draggable width="769px">
  4. <el-form :model="formData.editData"
  5. :rules="rules"
  6. ref="formRef"
  7. v-loading="formData.loading"
  8. size="default"
  9. label-width="80px">
  10. <el-row :gutter="35">
  11. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  12. <el-form-item label="部件名称" prop="bomName">
  13. <el-input v-model="formData.editData.bomName" placeholder="格式:message.router.xxx" clearable></el-input>
  14. </el-form-item>
  15. </el-col>
  16. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  17. <el-form-item label="物料号" prop="bomNo">
  18. <el-input v-model="formData.editData.bomNo" placeholder="格式:message.router.xxx" clearable></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  22. <el-form-item label="状态" prop="status">
  23. <el-input v-model="formData.editData.status" placeholder="格式:message.router.xxx" clearable></el-input>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  27. <el-form-item label="备注" prop="remark">
  28. <el-input v-model="formData.editData.remark" placeholder="格式:message.router.xxx" clearable type="textarea"></el-input>
  29. </el-form-item>
  30. </el-col>
  31. <!-- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
  32. <!-- <el-form-item label="有效时间" prop="expiedTime">-->
  33. <!-- <el-date-picker-->
  34. <!-- v-model="formData.editData.expiedTime"-->
  35. <!-- type="datetime"-->
  36. <!-- value-format="YYYY-MM-DD HH:mm:ss"-->
  37. <!-- placeholder="选择有效时间"-->
  38. <!-- />-->
  39. <!-- </el-form-item>-->
  40. <!-- </el-col>-->
  41. <!-- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
  42. <!-- <el-form-item label="状态" prop="state">-->
  43. <!-- <el-select v-model="formData.editData.state" class="m-2" placeholder="选择状态" >-->
  44. <!-- <el-option-->
  45. <!-- v-for="item in formData.options"-->
  46. <!-- :key="item.value"-->
  47. <!-- :label="item.label"-->
  48. <!-- :value="item.value"-->
  49. <!-- />-->
  50. <!-- </el-select>-->
  51. <!-- </el-form-item>-->
  52. <!-- </el-col>-->
  53. <!-- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
  54. <!-- <el-form-item label="备注" prop="remark">-->
  55. <!-- <el-input v-model="formData.editData.remark" placeholder="格式:message.router.xxx" clearable type="textarea"></el-input>-->
  56. <!-- </el-form-item>-->
  57. <!-- </el-col>-->
  58. </el-row>
  59. </el-form>
  60. <template #footer>
  61. <span class="dialog-footer">
  62. <el-button @click="onCancel" size="default">取 消</el-button>
  63. <el-button type="primary" @click="onSubmit" size="default">{{formData.buttonText}}</el-button>
  64. </span>
  65. </template>
  66. </el-dialog>
  67. </div>
  68. </template>
  69. <script setup lang="ts">
  70. import {reactive, ref, watch} from "vue";
  71. import {oilSdkTableModel} from "/@/api/admin/deviceAuthorization/oilSdkAuthorDto";
  72. import {OilSdkAuthorAPI} from "/@/api/admin/deviceAuthorization/oilSdkAuthor";
  73. import eventBus from "/@/utils/mitt";
  74. import {FormRules} from "element-plus";
  75. import {typeTable} from "/@/api/admin/productionManagement/ComponentTypeDto";
  76. enum Form {
  77. ADD,
  78. UPDATE
  79. }
  80. /**数据对象 */
  81. const formData = reactive({
  82. loading: false,
  83. formType: Form,
  84. titleText:'',
  85. buttonText:'',
  86. isShowDialog: false,
  87. editData:{} as typeTable,
  88. /**动态表头 */
  89. dynamicColumns: [
  90. { prop: 'bomName', label: '部件名称' },
  91. { prop: 'bomNo', label: '物料号' },
  92. { prop: 'remark', label: '备注' },
  93. { prop: 'status', label: '状态' },
  94. ],
  95. options:[
  96. {label:'正常',value:'正常'},
  97. {label:'未授权',value:'未授权'},
  98. ]
  99. })
  100. /**有效时间选择校验*/
  101. const validateDate = (rule: any, value: any, callback: any) => {
  102. if(new Date(value).getTime() > Date.now()){
  103. callback()
  104. }else{
  105. callback(new Error('选择的时间已失效'))
  106. }
  107. }
  108. /**表单校验*/
  109. const rules = reactive<FormRules>({
  110. bomName: [
  111. { required: true, message: '请输入部件名称', trigger: 'blur' },
  112. ],
  113. bomNo: [
  114. { required: true, message: '请输入物料号', trigger: 'blur' },
  115. ],
  116. status: [
  117. { required: true, message: '请输入状态', trigger: 'blur' },
  118. ],
  119. key: [
  120. { required: true, message: '请输入设备授权码', trigger: 'blur' },
  121. ],
  122. expiedTime: [
  123. { type: 'date', required: true, message: '请选择有效期', trigger: 'blur' },
  124. { validator: validateDate, trigger: 'blur' }
  125. ],
  126. state: [
  127. { required: true, message: '请选择状态', trigger: 'blur' },
  128. ],
  129. })
  130. const formRef = ref()
  131. const openDialog = (val) => {
  132. if(val){
  133. formData.editData = JSON.parse(JSON.stringify(val))
  134. formData.titleText = '更新部件'
  135. formData.buttonText = '更新'
  136. //更新操作
  137. formData.formType = Form.UPDATE
  138. }else {
  139. formData.editData = {} as typeTable
  140. formData.titleText = '添加部件'
  141. formData.buttonText = '添加'
  142. //添加操作
  143. formData.formType = Form.ADD
  144. }
  145. formData.isShowDialog = true
  146. formData.isShowDialog = true
  147. }
  148. const onCancel = () => {
  149. formData.editData = {} as typeTable
  150. formData.isShowDialog = false
  151. }
  152. /***监听弹窗关闭表单验证*/
  153. watch(() => formData.isShowDialog,(newVal) => {
  154. if(newVal) formRef.value?.resetFields()
  155. })
  156. const onSubmit = () => {
  157. formRef.value.validate(async (valid: boolean) =>{
  158. if(!valid) return
  159. console.log(formData)
  160. })
  161. }
  162. defineExpose({
  163. openDialog,
  164. })
  165. </script>
  166. <style scoped lang="scss">
  167. </style>