check.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <template>
  2. <el-dialog
  3. class="api-edit"
  4. v-model="showDialog"
  5. :title="`${formData.id ? '编辑升级包' : '新增升级包'}`"
  6. width="768px"
  7. :close-on-click-modal="false"
  8. :close-on-press-escape="false"
  9. >
  10. <el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="160px">
  11. <el-form-item label="升级包类型" prop="typo">
  12. <el-radio-group v-model="formData.typo">
  13. <el-radio label="1">整包</el-radio>
  14. <el-radio label="2">差分</el-radio>
  15. </el-radio-group>
  16. </el-form-item>
  17. <el-form-item label="升级包名称" prop="name">
  18. <el-input v-model="formData.name" placeholder="请输入升级包名称" />
  19. </el-form-item>
  20. <el-form-item label="所属产品" prop="productId">
  21. <el-select v-model="formData.productId" filterable placeholder="请选择产品" @change="seletChange">
  22. <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
  23. </el-select>
  24. </el-form-item>
  25. <div>
  26. <el-form-item label="升级包模块" prop="module">
  27. <el-select v-model="formData.module" filterable placeholder="请选择产品">
  28. <el-option v-for="item in moduleData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
  29. </el-select>
  30. </el-form-item>
  31. </div>
  32. <el-form-item label="升级包版本号" prop="version" v-if="formData.typo == 1">
  33. <el-input v-model="formData.version" placeholder="请输入待升级包版本号" />
  34. </el-form-item>
  35. <el-form-item label="待升级版本号" prop="waitVersion" v-if="formData.typo == 2">
  36. <el-input v-model="formData.waitVersion" placeholder="请输入待升级版本号" />
  37. </el-form-item>
  38. <el-form-item label="升级后版本号" prop="afterVersion" v-if="formData.typo == 2">
  39. <el-input v-model="formData.afterVersion" placeholder="请输入升级后版本号" />
  40. </el-form-item>
  41. <el-form-item label="算法签名" prop="are">
  42. <el-select v-model="formData.are" filterable placeholder="请选择算法签名">
  43. <el-option v-for="item in areType" :key="item.value" :label="item.label" :value="item.value"> </el-option>
  44. </el-select>
  45. </el-form-item>
  46. <el-form-item label="选择升级包" prop="url">
  47. <el-upload :accept="['.bin','.tar','.gz','.tar.xz','.zip','.gzip','.apk','.dav','.pack']" :show-file-list="false" :limit="1" :headers="headers" :action="uploadUrl" :on-success="updateImg">
  48. <el-button type="Default">上传升级包</el-button>
  49. </el-upload>
  50. </el-form-item>
  51. <el-form-item label="升级包是否验证" prop="check">
  52. <el-radio-group v-model="formData.check">
  53. <el-radio :label="1">是</el-radio>
  54. <el-radio :label="2">否</el-radio>
  55. </el-radio-group>
  56. </el-form-item>
  57. <el-form-item label="升级包描述" prop="describe">
  58. <el-input v-model="formData.describe" type="textarea" :rows="3" />
  59. </el-form-item>
  60. <el-form-item label="推送设备的自定义消息" prop="info">
  61. <el-input v-model="formData.info" type="textarea" :rows="3" />
  62. </el-form-item>
  63. </el-form>
  64. <template #footer>
  65. <div class="dialog-footer">
  66. <el-button @click="showDialog = false">取消</el-button>
  67. <el-button type="primary" @click="onSubmit">确定</el-button>
  68. </div>
  69. </template>
  70. </el-dialog>
  71. </template>
  72. <script lang="ts" setup>
  73. import { ref, reactive, nextTick } from 'vue'
  74. import api from '/@/api/ota'
  75. import { ruleRequired } from '/@/utils/validator'
  76. import { ElMessage } from 'element-plus'
  77. import getOrigin from '/@/utils/origin';
  78. const emit = defineEmits(['getList'])
  79. const showDialog = ref(false)
  80. const formRef = ref()
  81. const uploadUrl: string = getOrigin(import.meta.env.VITE_API_URL + "/dev_ota_fireware/upload");
  82. const headers = {
  83. Authorization: 'Bearer ' + localStorage.token,
  84. };
  85. const areType = ref([
  86. {
  87. label: 'MD5',
  88. value: 'MD5',
  89. },
  90. {
  91. label: 'SHA256',
  92. value: 'SHA256',
  93. },
  94. ])
  95. const productData = ref([
  96. {
  97. id: '',
  98. name: '',
  99. },
  100. ])
  101. const moduleData = ref([
  102. {
  103. id: '',
  104. name: '',
  105. },
  106. ])
  107. const baseForm = {
  108. id: undefined,
  109. typo: '1',
  110. name: '',
  111. productId: '',
  112. module: '',
  113. version: '',
  114. are: 'MD5',
  115. url: '',
  116. check: 1,
  117. describe: '',
  118. info: '',
  119. afterVersion: '',
  120. waitVersion: '',
  121. }
  122. const formData = reactive({
  123. ...baseForm,
  124. })
  125. const ruleForm = {
  126. typo: [ruleRequired('请选择升级包类型')],
  127. name: [ruleRequired('升级包名称不能为空')],
  128. productId: [ruleRequired('请选择所属产品')],
  129. module: [ruleRequired('请选择升级包模块')],
  130. version: [ruleRequired('升级包版本号不能为空')],
  131. are: [ruleRequired('算法签名不能为空')],
  132. check: [ruleRequired('升级包是否验证不能为空')],
  133. // url: [ruleRequired('升级包不能为空')],
  134. afterVersion: [ruleRequired('待升级版本号不能为空')],
  135. waitVersion: [ruleRequired('升级后版本号不能为空')],
  136. }
  137. const updateImg = (res: any) => {
  138. console.log(res);
  139. if (res.code === 0) {
  140. ElMessage.success('上传成功');
  141. } else {
  142. ElMessage.error(res.message);
  143. }
  144. };
  145. const onSubmit = async () => {
  146. await formRef.value.validate()
  147. const theApi = formData.id ? api.manage.edit : api.manage.add
  148. await theApi(formData)
  149. ElMessage.success('操作成功')
  150. resetForm()
  151. showDialog.value = false
  152. emit('getList')
  153. }
  154. const seletChange = (val: Number) => {
  155. formData.module='';
  156. getModuleList(val);
  157. };
  158. const getModuleList = (productID: Number) => {
  159. api.module.getList({productID:productID}).then((res: any) => {
  160. let productDataList = res.Data
  161. moduleData.value = productDataList
  162. })
  163. }
  164. const getProductList = () => {
  165. api.module.getSubList().then((res: any) => {
  166. let productDataList = res.product
  167. productData.value = productDataList
  168. })
  169. }
  170. getProductList()
  171. const resetForm = async () => {
  172. Object.assign(formData, { ...baseForm })
  173. formRef.value && formRef.value.resetFields()
  174. }
  175. const open = async (row: any) => {
  176. resetForm()
  177. showDialog.value = true
  178. nextTick(() => {
  179. Object.assign(formData, { ...row })
  180. })
  181. }
  182. defineExpose({ open })
  183. </script>
  184. <style>
  185. .vertical-form-item {
  186. display: block;
  187. margin-bottom: 10px;
  188. /* 可选,设置间距 */
  189. }
  190. </style>