models-add-or-update.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <el-dialog :title="!dataForm.id ? '新增模板' : '修改模板'" :close-on-click-modal="false" :visible.sync="visible">
  3. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
  4. label-width="80px">
  5. <el-form-item label="模板名称" prop="modelName">
  6. <el-input v-model="dataForm.modelName" placeholder="请输入模板名称"></el-input>
  7. </el-form-item>
  8. <el-form-item label="类别" size="mini" prop="categoryId">
  9. <el-radio-group v-model="dataForm.categoryId">
  10. <el-radio v-for="category in categoryList" :key="category.categoryId" :label="category.categoryId">{{ category.categoryName }}
  11. </el-radio>
  12. </el-radio-group>
  13. </el-form-item>
  14. <el-form-item label="文件" size="mini">
  15. <el-upload class="upload-demo" action="#" :on-preview="handlePreview"
  16. :on-remove="handleRemove" multiple :limit="10" :on-exceed="handleExceed"
  17. :on-change="fileChange"
  18. :file-list="fileList">
  19. <el-button size="small" type="primary">点击上传</el-button>
  20. </el-upload>
  21. </el-form-item>
  22. <el-form-item label="形式" prop="form">
  23. <el-select v-model="dataForm.form" placeholder="选择算法形式">
  24. <el-option v-for="data in forms" :key="data.value" :label="data.label" :value="data.value">
  25. </el-option>
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item label="描述信息" prop="remark">
  29. <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 6}" placeholder="请输入内容" v-model="dataForm.remark">
  30. </el-input>
  31. </el-form-item>
  32. <!-- <el-form-item label="状态" size="mini" prop="status">
  33. <el-radio-group v-model="dataForm.status">
  34. <el-radio :label="0">禁用</el-radio>
  35. <el-radio :label="1">正常</el-radio>
  36. </el-radio-group>
  37. </el-form-item> -->
  38. </el-form>
  39. <span slot="footer" class="dialog-footer">
  40. <el-button @click="visible = false">取消</el-button>
  41. <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
  42. </span>
  43. </el-dialog>
  44. </template>
  45. <script>
  46. import { MessageBox } from 'element-ui'
  47. import { Message } from "element-ui"
  48. export default {
  49. data() {
  50. return {
  51. visible: false,
  52. // 获取所有类别列表
  53. categoryList: [],
  54. dataForm: {
  55. id: 0,
  56. modelName: "",
  57. // 本模板的类别
  58. categoryId: 1,
  59. form:null,
  60. remark: "",
  61. },
  62. textarea2: "",
  63. fileList: [
  64. ],
  65. forms:[
  66. {
  67. label:"传统算法",
  68. value:1
  69. },
  70. {
  71. label:"智能算法",
  72. value:2
  73. }
  74. ],
  75. dataRule: {
  76. modelName: [
  77. { required: true, message: "模板名称不能为空", trigger: "blur" },
  78. ],
  79. form: [
  80. { required: true, message: "算法形式不能为空", trigger: "blur" },
  81. ],
  82. // email: [
  83. // { required: true, message: "邮箱不能为空", trigger: "blur" },
  84. // { validator: validateEmail, trigger: "blur" },
  85. // ],
  86. // mobile: [
  87. // { required: true, message: "手机号不能为空", trigger: "blur" },
  88. // { validator: validateMobile, trigger: "blur" },
  89. // ],
  90. // codes: [
  91. // { required: true, message: "代码文件不能为空", trigger: "blur" },
  92. // ],
  93. },
  94. };
  95. },
  96. methods: {
  97. init(id) {
  98. this.dataForm.id = id || 0;
  99. this.$http({
  100. url: this.$http.adornUrl("/category/select"),
  101. method: "get",
  102. params: this.$http.adornParams(),
  103. })
  104. // 这块修改为获取类别
  105. .then(({ data }) => {
  106. this.categoryList = data && data.code === 0 ? data.list : [];
  107. })
  108. .then(() => {
  109. this.fileList=[];
  110. this.visible = true;
  111. this.$nextTick(() => {
  112. this.$refs["dataForm"].resetFields();
  113. });
  114. })
  115. .then(() => {
  116. if (this.dataForm.id) {
  117. this.$http({
  118. url: this.$http.adornUrl(`/algs/models/info/${this.dataForm.id}`),
  119. method: "get",
  120. params: this.$http.adornParams(),
  121. }).then(({ data }) => {
  122. if (data && data.code === 0) {
  123. this.dataForm.modelName = data.model.modelName;
  124. this.dataForm.categoryId = data.model.categoryId;
  125. this.dataForm.remark = data.model.remark;
  126. // 模板文件地址
  127. // this.dataForm.dfsUrlv = data.temp.dfsUrlv;
  128. }
  129. });
  130. }
  131. });
  132. },
  133. // 表单提交
  134. dataFormSubmit() {
  135. this.$refs["dataForm"].validate((valid) => {
  136. if (valid) {
  137. this.visible=false;
  138. MessageBox.confirm(`是否上传该算法?`, '提示', {
  139. confirmButtonText: '确定',
  140. cancelButtonText: '取消',
  141. type: 'warning'
  142. }).then(() => {
  143. let formData=new FormData();
  144. this.fileList.forEach(file=>{
  145. formData.append('file',file.raw);
  146. });
  147. formData.append('modelName',this.dataForm.modelName);
  148. formData.append('categoryId',this.dataForm.categoryId);
  149. formData.append('remark',this.dataForm.remark);
  150. formData.append('uid',this.$store.state.user.id);
  151. formData.append('form',this.dataForm.form);
  152. this.$http({
  153. url: this.$http.adornUrl(
  154. `/algs/models/${!this.dataForm.id ? "save" : "update"}`
  155. ),
  156. method: "post",
  157. data:formData,
  158. }).then(({ data }) => {
  159. if (data && data.code === 0) {
  160. Message({
  161. message: "操作成功",
  162. type: "success",
  163. duration: 1500,
  164. onClose: () => {
  165. this.visible = false;
  166. this.$emit("refreshDataList");
  167. },
  168. });
  169. } else {
  170. Message.error(data.msg);
  171. }
  172. });
  173. }).catch(() => {})
  174. }
  175. });
  176. },
  177. // 以下4个函数是文件上传功能的
  178. handleRemove(file, fileList) {
  179. console.log(file, fileList);
  180. },
  181. handlePreview(file) {
  182. console.log(file);
  183. },
  184. handleExceed(files, fileList) {
  185. Message.warning(
  186. `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
  187. files.length + fileList.length
  188. } 个文件`
  189. );
  190. },
  191. beforeRemove(file, fileList) {
  192. return MessageBox.confirm(`确定移除 ${file.name}?`);
  193. },
  194. // 文件改变时
  195. fileChange(file, fileList) {
  196. this.fileList=fileList;
  197. this.fileList.append(file);
  198. },
  199. },
  200. };
  201. </script>