Add.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <a-button type="primary" :disabled="disabled" @click="visible=true" style="margin-right:10px">新建</a-button>
  3. <a-drawer
  4. v-model:visible="visible"
  5. class="custom-class"
  6. title="新增固件"
  7. placement="right"
  8. width="500px"
  9. :closable="false"
  10. @close="visible = false"
  11. >
  12. <a-form ref="formRef" :model="form" size="small" layout="vertical" mode="multiple" :validateTrigger="['onChange']">
  13. <a-row :gutter="16">
  14. <a-col :span="24">
  15. <a-form-item label="固件名称" name="firmwarename" :rules="[{ required: true, message: '请输入固件名称' }]">
  16. <a-input v-model:value="form.firmwarename" placeholder="请输入固件名称"></a-input>
  17. </a-form-item>
  18. </a-col>
  19. <a-col :span="24">
  20. <a-form-item label="固件版本" name="version" :rules="[{ required: true, message: '请输入固件版本' },{validator:checkNumber}]">
  21. <a-input v-model:value="form.version" placeholder="请输入固件版本"></a-input>
  22. </a-form-item>
  23. </a-col>
  24. <a-col :span="24">
  25. <a-form-item label="所属产品" name="prodname" :rules="[{required:true,message:'请选择所属产品',validateTrigger:'onChange'}]">
  26. <!-- @handleList="handleList" -->
  27. <SelectModel
  28. ref="product"
  29. @selectRowData="selectProduct"
  30. rowKey="w_productid"
  31. :param="productParam"
  32. :filterMultiple="true"
  33. :columns="utils.TBLayout('productListTable').splice(0,utils.TBLayout('productListTable').length - 1)" title="选择所属产品"
  34. :custom="true"
  35. >
  36. <template #custom="{ data }">
  37. <div v-if="data.column.dataIndex == 'isused'">
  38. {{ data.record.isused ? '启用' : '停用' }}
  39. </div>
  40. <div v-else>
  41. {{ data.record[data.column.dataIndex] }}
  42. </div>
  43. </template>
  44. <template v-slot:slot1>
  45. <a-input-search
  46. v-model:value="form.prodname"
  47. enter-button="选择"
  48. readonly
  49. @search="$refs.product.modeVisible=true"
  50. />
  51. </template>
  52. </SelectModel>
  53. </a-form-item>
  54. </a-col>
  55. <a-col :span="24">
  56. <a-form-item label="描述" name="remarks">
  57. <a-textarea v-model:value="form.remarks" placeholder="请输入描述"></a-textarea>
  58. </a-form-item>
  59. </a-col>
  60. <a-col :span="24">
  61. <a-form-item label="附件" name="attinfos" :rules="[{required:true,message:'请选择附件',validateTrigger:'onChange'}]">
  62. <Upload2 :bindData="bindData" ref="upload" v-model:value="form.attinfos"></Upload2>
  63. </a-form-item>
  64. </a-col>
  65. </a-row>
  66. </a-form>
  67. <template #extra>
  68. <a-space>
  69. <a-button @click="visible=false">关闭</a-button>
  70. <a-button type="primary" @click="onSubmit" :loading="loading">保存</a-button>
  71. </a-space>
  72. </template>
  73. </a-drawer>
  74. </template>
  75. <script setup>
  76. import {ref, defineProps, defineEmits, onMounted} from 'vue'
  77. import SelectModel from '@/components/selectModel/index.vue'
  78. import Upload2 from '@/components/upload2/index2.vue'
  79. import Api from '@/api/api'
  80. import utils from '@/utils/utils'
  81. import { useBaseStore } from '@/stores/modules/base'
  82. import { storeToRefs } from 'pinia'
  83. import { log } from 'mathjs'
  84. import { useRouter } from "vue-router";
  85. const router = useRouter()
  86. let base = useBaseStore()
  87. let emit = defineEmits(['onSuccess'])
  88. let props = defineProps(['disabled'])
  89. let visible = ref(false)
  90. let form = ref({
  91. "w_firmwareid": 0,
  92. "version": "",
  93. "firmwarename": "",
  94. "w_productid": "",
  95. "remarks": "",
  96. "prodname":''
  97. })
  98. let productParam = ref({
  99. "id": 20230620133902,
  100. "content": {
  101. "pageNumber": 1,
  102. "pageSize": 20,
  103. "where": {
  104. "condition": "",
  105. "prodtype": "",
  106. "enterprisename": "",
  107. "isused": "" //0,1
  108. }
  109. },
  110. })
  111. let bindData = ref({})
  112. let upload = ref()
  113. let formRef = ref()
  114. let loading = ref(false)
  115. let checkNumber = async (rule,value) => {
  116. if (isNaN(+value)) {
  117. return Promise.reject('请输入数字类型')
  118. } else {
  119. return Promise.resolve()
  120. }
  121. }
  122. let onSubmit = async () => {
  123. form.value.attinfos = upload.value.fileList.length ? '1' : ''
  124. let isCheck = await formRef.value.validateFields()
  125. if (!isCheck) return
  126. let res = await Api.requested({
  127. id:20230619155302,
  128. content: form.value
  129. })
  130. bindData.value = {
  131. "ownertable": 'w_firmware',
  132. "ownerid": res.data.w_firmwareid,
  133. "usetype": 'default',
  134. }
  135. loading.value = true
  136. upload.value.toUpload(() => {
  137. console.log('触发1111');
  138. utils.message(res,'操作成功',() => {
  139. visible.value = false
  140. emit('onSuccess')
  141. bindData.value = {}
  142. upload.value.refresh()
  143. formRef.value.resetFields()
  144. loading.value = false
  145. })
  146. })
  147. }
  148. let selectProduct = (data) => {
  149. form.value.w_productid = data[data.length - 1].w_productid
  150. form.value.prodname = data[data.length - 1].prodname
  151. }
  152. </script>
  153. <style scoped>
  154. </style>