models.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. <!-- -->
  2. <template>
  3. <div class=''>
  4. <el-breadcrumb class="divi2" separator-class="el-icon-arrow-right">
  5. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  6. <el-breadcrumb-item>算法部署</el-breadcrumb-item>
  7. </el-breadcrumb>
  8. <el-divider class="divi"></el-divider>
  9. <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
  10. <el-form-item>
  11. <el-button v-if="isAuth('algs:model:save')" type="primary" @click="addOrUpdateHandle()">上传算法</el-button>
  12. <el-button v-if="isAuth('algs:model:delete')" type="danger" @click="deleteHandle()"
  13. :disabled="dataListSelections.length <= 0">批量删除</el-button>
  14. </el-form-item>
  15. <el-form-item>
  16. <el-input v-model="dataForm.modelName" placeholder="请输入模板名" clearable
  17. @keyup.enter.native="pageIndex = 1;getDataList()"></el-input>
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button @click="pageIndex = 1;getDataList()">查询</el-button>
  21. </el-form-item>
  22. <el-form-item>
  23. <el-tag>筛选:</el-tag>
  24. <el-select v-model="classificationtag" clearable placeholder="类别" size="mini" style="width: 130px;"
  25. @change="pageIndex = 1;getDataList2()">
  26. <el-option v-for="data in classification" :key="data" :label="data" :value="data">
  27. </el-option>
  28. </el-select>
  29. <el-select v-model="form" clearable placeholder="形式" size="mini" style="width: 130px;"
  30. @change="pageIndex = 1;getDataList2()">
  31. <el-option label='干扰算法' value='1'>
  32. </el-option>
  33. <el-option label='抗干扰算法' value='2'>
  34. </el-option>
  35. </el-select>
  36. <!-- <el-form-item>
  37. <el-button @click="testUpload()">测试上传</el-button>
  38. </el-form-item> -->
  39. </el-form-item>
  40. </el-form>
  41. <el-table :data="dataList" border v-loading="dataListLoading" @selection-change="selectionChangeHandle"
  42. style="width: 100%;">
  43. <el-table-column type="selection" header-align="center" align="center" width="50">
  44. </el-table-column>
  45. <!-- <el-table-column prop="modelId" header-align="center" align="center" width="80" label="算法ID">
  46. </el-table-column> -->
  47. <el-table-column label="序号" header-align="center" align="center" width="80" type="index" :index='(index)=>{return (index+1) + (this.pageIndex-1)*this.pageSize}'> </el-table-column>
  48. <el-table-column prop="modelName" header-align="center" align="center" label="算法名称">
  49. </el-table-column>
  50. <el-table-column prop="categoryName" header-align="center" align="center" label="分类">
  51. </el-table-column>
  52. <el-table-column prop="username" header-align="center" align="center" label="创建人">
  53. </el-table-column>
  54. <el-table-column prop="form" header-align="center" align="center" label="形式" :formatter="stateFormat">
  55. </el-table-column>
  56. <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
  57. <template slot-scope="scope">
  58. <el-button v-if="isAuth('algs:model:list')" type="text" size="small" @click="userwatch(scope.row.modelId)">查看
  59. </el-button>
  60. <!-- <el-button v-if="isAuth('algs:model:update')" type="text" size="small"
  61. @click="addOrUpdateHandle(scope.row.modelId)">修改</el-button> -->
  62. <el-button v-if="isAuth('algs:model:delete')" type="text" size="small"
  63. @click="deleteHandle(scope.row.modelId)">
  64. 删除</el-button>
  65. </template>
  66. </el-table-column>
  67. </el-table>
  68. <el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex"
  69. :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalPage"
  70. layout="total, sizes, prev, pager, next, jumper">
  71. </el-pagination>
  72. <!-- 弹窗, 新增 / 修改 -->
  73. <AddOrUpdate v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></AddOrUpdate>
  74. <Watch v-if="newWatchVisible" ref="newWatch" @refreshDataList="getDataList"></Watch>
  75. </div>
  76. </template>
  77. <script>
  78. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  79. //例如:import 《组件名称》 from '《组件路径》';
  80. import AddOrUpdate from "./models-add-or-update";
  81. import Watch from "./models-watch";
  82. import { MessageBox } from 'element-ui'
  83. import { Message } from "element-ui"
  84. export default {
  85. //import引入的组件需要注入到对象中才能使用
  86. data() {
  87. return {
  88. dataForm: {
  89. modelName: "",
  90. },
  91. dataList: [],
  92. pageIndex: 1,
  93. pageSize: 10,
  94. totalPage: 0,
  95. dataListLoading: false,
  96. dataListSelections: [],
  97. addOrUpdateVisible: false,
  98. newWatchVisible: false,
  99. classificationtag: "",
  100. classification: [],
  101. form: null,
  102. };
  103. },
  104. components: {
  105. AddOrUpdate,
  106. Watch,
  107. },
  108. activated() {
  109. this.getDataList();
  110. },
  111. methods: {
  112. // 获取数据列表
  113. getDataList() {
  114. this.dataListLoading = true;
  115. this.classificationtag = '';
  116. this.form = '';
  117. this.$http({
  118. url: this.$http.adornUrl("/category/select"),
  119. method: "get",
  120. }).then(({ data }) => {
  121. this.classification = this.unique(data.list);
  122. });
  123. this.$http({
  124. url: this.$http.adornUrl("/algs/models/list"),
  125. method: "get",
  126. params: this.$http.adornParams({
  127. page: this.pageIndex,
  128. limit: this.pageSize,
  129. modelName: this.dataForm.modelName,
  130. }),
  131. }).then(({ data }) => {
  132. if (data && data.code === 0) {
  133. this.dataList = data.page.list;
  134. this.totalPage = data.page.totalCount;
  135. this.statusunique = this.unique(data.page.list);
  136. } else {
  137. this.dataList = [];
  138. this.totalPage = 0;
  139. }
  140. this.dataListLoading = false;
  141. });
  142. },
  143. //测试上传
  144. testUpload(){
  145. this.$http({
  146. url: this.$http.adornUrl("/algs/models/testUpload"),
  147. method: "get",
  148. params: this.$http.adornParams({
  149. }),
  150. }).then(({ data }) => {
  151. });
  152. },
  153. //筛选查询
  154. getDataList2() {
  155. this.dataListLoading = true;
  156. if(this.classificationtag===''){
  157. this.classificationtag=null;
  158. }
  159. if(this.form===''){
  160. this.form=null;
  161. }
  162. this.$http({
  163. url: this.$http.adornUrl("/algs/models/list"),
  164. method: "get",
  165. params: this.$http.adornParams({
  166. page: this.pageIndex,
  167. limit: this.pageSize,
  168. modelName: this.dataForm.modelName,
  169. // 增加status参数用于筛选查询
  170. classificationtag: this.classificationtag,
  171. form: this.form
  172. }),
  173. }).then(({ data }) => {
  174. if (data && data.code === 0) {
  175. this.dataList = data.page.list;
  176. this.totalPage = data.page.totalCount;
  177. } else {
  178. this.dataList = [];
  179. this.totalPage = 0;
  180. }
  181. this.dataListLoading = false;
  182. });
  183. },
  184. onDialogClose(){
  185. console.log("查看完成");
  186. },
  187. stateFormat(row, column) {
  188. if (row.form === 1) {
  189. return "干扰算法";
  190. } else {
  191. return "抗干扰算法";
  192. }
  193. },
  194. //去重
  195. unique(arr) {
  196. var ss = [];
  197. for (var i = 0; i < arr.length; i++) {
  198. ss[i] = arr[i].categoryName;
  199. }
  200. return Array.from(new Set(ss));
  201. },
  202. // 每页数
  203. sizeChangeHandle(val) {
  204. this.pageSize = val;
  205. this.pageIndex = 1;
  206. this.getDataList();
  207. },
  208. // 当前页
  209. currentChangeHandle(val) {
  210. this.pageIndex = val;
  211. this.getDataList();
  212. },
  213. // 多选
  214. selectionChangeHandle(val) {
  215. this.dataListSelections = val;
  216. },
  217. // 查看
  218. userwatch(id) {
  219. this.newWatchVisible = true;
  220. this.$nextTick(() => {
  221. this.$refs.newWatch.init(id);
  222. });
  223. },
  224. // 新增 / 修改
  225. addOrUpdateHandle(id) {
  226. this.addOrUpdateVisible = true;
  227. this.$nextTick(() => {
  228. this.$refs.addOrUpdate.init(id);
  229. });
  230. },
  231. // 删除
  232. deleteHandle(id) {
  233. var modelId = id
  234. ? [id]
  235. : this.dataListSelections.map((item) => {
  236. return item.modelId;
  237. });
  238. MessageBox.confirm(
  239. `确定对[id=${modelId.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
  240. "提示",
  241. {
  242. confirmButtonText: "确定",
  243. cancelButtonText: "取消",
  244. type: "warning",
  245. }
  246. )
  247. .then(() => {
  248. this.$http({
  249. url: this.$http.adornUrl("/algs/models/delete"),
  250. method: "post",
  251. data: this.$http.adornData(modelId, false),
  252. }).then(({ data }) => {
  253. if (data && data.code === 0) {
  254. Message({
  255. message: "操作成功",
  256. type: "success",
  257. duration: 1500,
  258. onClose: () => {
  259. this.getDataList();
  260. },
  261. });
  262. this.pageIndex = 1;
  263. getDataList();
  264. } else {
  265. Message.error(data.msg);
  266. }
  267. });
  268. })
  269. .catch(() => {});
  270. },
  271. },
  272. };
  273. </script>
  274. </script>
  275. <style scoped>
  276. .divi {
  277. display: block;
  278. height: 1px;
  279. width: 100%;
  280. margin: 24px 0;
  281. background-color: #dcdfe6;
  282. position: relative;
  283. }
  284. .divi2 {
  285. display: block;
  286. height: 1px;
  287. width: 100%;
  288. position: relative;
  289. }
  290. .sele {
  291. border: 1px solid #409eff;
  292. border-radius: 5px;
  293. box-sizing: border-box;
  294. padding: 5px 0px;
  295. margin: 10px;
  296. }
  297. </style>