alg-publish.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <el-dialog :title=" '算法发布'" :close-on-click-modal="false" :visible.sync="visible">
  3. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
  4. label-width="150px">
  5. <el-form-item label="算法名称" prop="missName">
  6. <el-input v-model="dataForm.missName" :disabled=true></el-input>
  7. </el-form-item>
  8. <el-form-item label="类别" size="mini" prop="categoryId">
  9. <el-radio-group v-model="dataForm.categoryId" :disabled=true>
  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="选择模型">
  15. <el-tooltip class="item" effect="dark" content="选择训练产生的模型,可多选" placement="right">
  16. <el-select v-model="modelSelected" multiple placeholder="选择模型">
  17. <el-option v-for="item in models" :key="item.filename" :label="item.filename" :value="item.filename">
  18. </el-option>
  19. </el-select>
  20. </el-tooltip>
  21. </el-form-item>
  22. <el-form-item label="选择文件">
  23. <el-tooltip class="item" effect="dark" content="选择要发布的文件,可多选" placement="right">
  24. <el-select v-model="pythonFileSelected" multiple placeholder="选择文件">
  25. <el-option v-for="item in pythonFiles" :key="item.filename" :label="item.filename" :value="item.filename">
  26. </el-option>
  27. </el-select>
  28. </el-tooltip>
  29. </el-form-item>
  30. <el-form-item label="指定镜像主文件">
  31. <el-tooltip class="item" effect="dark" content="指定算法制作为镜像后的主运行文件,限单选" placement="right">
  32. <el-select v-model="imageFileSelected" placeholder="选择文件">
  33. <el-option v-for="item in pythonFiles" :key="item.filename" :label="item.filename" :value="item.filename">
  34. </el-option>
  35. </el-select>
  36. </el-tooltip>
  37. </el-form-item>
  38. <el-form-item label="指定应用主文件">
  39. <el-tooltip class="item" effect="dark" content="指定算法制作为应用后的主运行文件,限单选" placement="right">
  40. <el-select v-model="appFileSelected" placeholder="选择文件">
  41. <el-option v-for="item in pythonFiles" :key="item.filename" :label="item.filename" :value="item.filename">
  42. </el-option>
  43. </el-select>
  44. </el-tooltip>
  45. </el-form-item>
  46. <!-- <el-form-item label="状态" size="mini" prop="status">
  47. <el-radio-group v-model="dataForm.status">
  48. <el-radio :label="0">禁用</el-radio>
  49. <el-radio :label="1">正常</el-radio>
  50. </el-radio-group>
  51. </el-form-item> -->
  52. </el-form>
  53. <span slot="footer" class="dialog-footer">
  54. <el-button @click="visible = false">取消</el-button>
  55. <el-button type="primary" @click="algPublish()">确定</el-button>
  56. </span>
  57. </el-dialog>
  58. </template>
  59. <script>
  60. import { Message } from "element-ui"
  61. export default {
  62. data() {
  63. return {
  64. visible: false,
  65. // 获取所有类别列表
  66. categoryList: [],
  67. dataForm: {
  68. id: 0,
  69. missName: "",
  70. // 本算法的类别
  71. categoryId: 1,
  72. remark: "",
  73. },
  74. textarea2: "",
  75. models:[],
  76. modelSelected:[],
  77. pythonFiles:[],
  78. pythonFileSelected:[],
  79. appFileSelected:"",
  80. imageFileSelected:"",
  81. dataRule: {
  82. tmpName: [
  83. { required: true, message: "用户名不能为空", trigger: "blur" },
  84. ],
  85. },
  86. };
  87. },
  88. methods: {
  89. init(id) {
  90. this.dataForm.id = id || 0;
  91. this.dataForm.missName="";
  92. this.models=[];
  93. this.modelSelected=[];
  94. this.pythonFiles=[];
  95. this.pythonFileSelected=[];
  96. this.$http({
  97. url: this.$http.adornUrl("/category/select"),
  98. method: "get",
  99. params: this.$http.adornParams(),
  100. })
  101. // 这块修改为获取类别
  102. .then(({ data }) => {
  103. this.categoryList = data && data.code === 0 ? data.list : [];
  104. })
  105. .then(() => {
  106. if (this.dataForm.id) {
  107. this.$http({
  108. url:this.$http.adornUrl('/algstrain/getModelAndPythonFile'),
  109. method:'get',
  110. params:this.$http.adornParams({
  111. algorithmTrainingId:id
  112. }),
  113. }).then(({data})=>{
  114. this.dataForm.missName=data.algTrain.missName;
  115. this.dataForm.categoryId=data.algTrain.categoryId;
  116. this.models=data.models;
  117. this.pythonFiles=data.pythonFiles;
  118. });
  119. }
  120. })
  121. .then(() => {
  122. this.visible = true;
  123. this.$nextTick(() => {
  124. this.$refs["dataForm"].resetFields();
  125. });
  126. });
  127. },
  128. algPublish(){
  129. let formData=new FormData();
  130. formData.append("missName",this.dataForm.missName);
  131. formData.append("categoryId",this.dataForm.categoryId);
  132. formData.append("uid",this.$store.state.user.id);
  133. formData.append("algorithmTrainingId",this.dataForm.id);
  134. formData.append("models",this.modelSelected);
  135. formData.append("pythonFiles",this.pythonFileSelected);
  136. formData.append("appFile",this.appFileSelected);
  137. formData.append("imageFile",this.imageFileSelected);
  138. this.$http({
  139. url:this.$http.adornUrl('/algstrain/algorithmPublish'),
  140. method:'post',
  141. data:formData,
  142. }).then(({data})=>{
  143. if(data&&data.code===0){
  144. Message({
  145. type: 'success',
  146. message: '申请发布成功',
  147. });
  148. }else{
  149. Message.error(data.msg);
  150. }
  151. this.$parent.getDataList();
  152. });
  153. /* this.visible=false
  154. MessageBox.confirm(`是否发布该算法?`, '提示', {
  155. confirmButtonText: '确定',
  156. cancelButtonText: '取消',
  157. type: 'warning'
  158. }).then(() => {
  159. let formData=new FormData();
  160. formData.append("missName",this.dataForm.missName);
  161. formData.append("categoryId",this.dataForm.categoryId);
  162. formData.append("uid",this.$store.state.user.id);
  163. formData.append("algorithmTrainingId",this.dataForm.id);
  164. formData.append("models",this.modelSelected);
  165. formData.append("pythonFiles",this.pythonFileSelected);
  166. formData.append("appFile",this.appFileSelected);
  167. formData.append("imageFile",this.imageFileSelected);
  168. this.$http({
  169. url:this.$http.adornUrl('/algstrain/algorithmPublish'),
  170. method:'post',
  171. data:formData,
  172. }).then(({data})=>{
  173. if(data&&data.code===0){
  174. Message({
  175. type: 'success',
  176. message: '申请发布成功',
  177. });
  178. }else{
  179. Message.error(data.msg);
  180. }
  181. this.$parent.getDataList();
  182. });
  183. }).catch(() => {}) */
  184. },
  185. },
  186. };
  187. </script>