index.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <!--
  2. * @Descripttion: 用户权限--数据集
  3. * @version:
  4. * @Author: qianlishi
  5. * @Date: 2021-12-11 14:48:27
  6. * @LastEditors: qianlishi
  7. * @LastEditTime: 2022-04-14 18:48:24
  8. -->
  9. <template>
  10. <anji-crud ref="listPage" :option="crudOption">
  11. <template v-slot:tableButtons>
  12. <el-dropdown placement="bottom" @command="operateDataset">
  13. <el-button type="primary" icon="el-icon-plus">
  14. 新增
  15. <i class="el-icon-arrow-down el-icon--right"></i>
  16. </el-button>
  17. <el-dropdown-menu slot="dropdown">
  18. <el-dropdown-item command="sql">SQL</el-dropdown-item>
  19. <el-dropdown-item command="http">HTTP</el-dropdown-item>
  20. </el-dropdown-menu>
  21. </el-dropdown>
  22. </template>
  23. <template v-slot:pageSection>
  24. <EditDataSet
  25. ref="EditDataSet"
  26. :dataSet="dataSet"
  27. :visib="dialogVisibleSetDataSet"
  28. @handleClose="dialogVisibleSetDataSet = false"
  29. @refreshList="refreshList"
  30. />
  31. <DataView
  32. ref="DataView"
  33. :visib="dialogCaseResult"
  34. @handleClose="dialogCaseResult = false"
  35. />
  36. <copyDialog :visib.sync="copyVisible" :rowData="rowData" @close="close" />
  37. </template>
  38. </anji-crud>
  39. </template>
  40. <script>
  41. import {
  42. reportDataSetList,
  43. reportDataSetAdd,
  44. reportDataSetDeleteBatch,
  45. reportDataSetUpdate,
  46. reportDataSetDetail,
  47. reportDataSetCopy
  48. } from "@/api/reportDataSet";
  49. import EditDataSet from "./components/EditDataSet";
  50. import DataView from "./components/DataView";
  51. import copyDialog from "./components/copyDialog.vue";
  52. export default {
  53. name: "ReportDataSet",
  54. components: {
  55. EditDataSet: EditDataSet,
  56. DataView: DataView,
  57. copyDialog
  58. },
  59. data() {
  60. return {
  61. dialogVisibleSetDataSet: false,
  62. dataSet: {},
  63. dialogCaseResult: false,
  64. crudOption: {
  65. // 使用菜单做为页面标题
  66. title: "数据集",
  67. // 详情页中输入框左边文字宽度
  68. labelWidth: "120px",
  69. // 查询表单条件
  70. queryFormFields: [
  71. {
  72. inputType: "input",
  73. label: "数据集编码",
  74. field: "setCode"
  75. },
  76. {
  77. inputType: "input",
  78. label: "数据集名称",
  79. field: "setName"
  80. },
  81. {
  82. inputType: "anji-select", //form表单类型 input|input-number|anji-select(传递url或者dictCode)|anji-tree(左侧树)|date|datetime|datetimerange
  83. anjiSelectOption: {
  84. url: "/dataSource/queryAllDataSource",
  85. label: "sourceName",
  86. option: "sourceCode",
  87. mergeLabel: true
  88. },
  89. label: "数据源",
  90. field: "sourceCode"
  91. },
  92. {
  93. inputType: "anji-select", //form表单类型 input|input-number|anji-select(传递url或者dictCode)|anji-tree(左侧树)|date|datetime|datetimerange
  94. anjiSelectOption: {
  95. dictCode: "SET_TYPE"
  96. },
  97. label: "数据集类型",
  98. field: "setType"
  99. }
  100. ],
  101. // 表头按钮
  102. tableButtons: [
  103. {
  104. label: "删除",
  105. type: "danger",
  106. permission: "resultsetManage:delete",
  107. icon: "el-icon-delete",
  108. plain: false,
  109. click: () => {
  110. return this.$refs.listPage.handleDeleteBatch();
  111. }
  112. }
  113. ],
  114. // 表格行按钮
  115. rowButtons: [
  116. {
  117. label: "编辑",
  118. permission: "resultsetManage:update",
  119. click: row => {
  120. return this.operateDataset("edit", row);
  121. }
  122. },
  123. {
  124. label: "数据预览",
  125. permission: "resultsetManage:query",
  126. click: this.dataView
  127. },
  128. {
  129. label: "复制",
  130. permission: "resultsetManage:copy",
  131. click: this.copyDataSet
  132. },
  133. {
  134. label: "删除",
  135. permission: "resultsetManage:delete",
  136. click: row => {
  137. return this.$refs.listPage.handleDeleteBatch(row);
  138. }
  139. }
  140. ],
  141. // 操作按钮
  142. buttons: {
  143. rowButtonsWidth: 180, // row自定义按钮表格宽度
  144. query: {
  145. api: reportDataSetList,
  146. permission: "resultsetManage:query",
  147. sort: "update_time",
  148. order: "DESC"
  149. },
  150. queryByPrimarykey: {
  151. api: reportDataSetDetail,
  152. permission: "resultsetManage:detail"
  153. },
  154. add: {
  155. api: reportDataSetAdd,
  156. permission: "resultsetManage:insert",
  157. isShow: false
  158. },
  159. delete: {
  160. api: reportDataSetDeleteBatch,
  161. permission: "resultsetManage:delete"
  162. },
  163. edit: {
  164. api: reportDataSetUpdate,
  165. permission: "resultsetManage:update",
  166. isShow: false
  167. }
  168. },
  169. // 表格列
  170. columns: [
  171. {
  172. label: "",
  173. field: "id",
  174. primaryKey: true, // 根据主键查询详情或者根据主键删除时, 主键的
  175. tableHide: true, // 表格中不显示
  176. editHide: true // 编辑弹框中不显示
  177. },
  178. {
  179. label: "数据集编码", //数据集编码
  180. placeholder: "",
  181. field: "setCode",
  182. editField: "setCode",
  183. inputType: "input",
  184. rules: [
  185. { min: 1, max: 50, message: "不超过50个字符", trigger: "blur" }
  186. ],
  187. disabled: false
  188. },
  189. {
  190. label: "数据集名称", //数据集名称
  191. placeholder: "",
  192. field: "setName",
  193. editField: "setName",
  194. inputType: "input",
  195. rules: [
  196. { min: 1, max: 100, message: "不超过100个字符", trigger: "blur" }
  197. ],
  198. disabled: false
  199. },
  200. {
  201. label: "描述", //数据集描述
  202. placeholder: "",
  203. field: "setDesc",
  204. editField: "setDesc",
  205. inputType: "input",
  206. rules: [
  207. { min: 1, max: 255, message: "不超过255个字符", trigger: "blur" }
  208. ],
  209. disabled: false
  210. },
  211. {
  212. label: "数据源编码", //数据源编码
  213. placeholder: "",
  214. field: "sourceCode",
  215. editField: "sourceCode",
  216. inputType: "input",
  217. rules: [
  218. { min: 1, max: 50, message: "不超过50个字符", trigger: "blur" }
  219. ],
  220. disabled: false
  221. },
  222. {
  223. label: "数据集类型", //数据源编码
  224. placeholder: "",
  225. field: "setType",
  226. editField: "setType",
  227. inputType: "input",
  228. rules: [
  229. { min: 1, max: 50, message: "不超过50个字符", trigger: "blur" }
  230. ],
  231. disabled: false
  232. },
  233. {
  234. label: "动态查询sql或者接口中的请求体", //动态查询sql或者接口中的请求体
  235. placeholder: "",
  236. field: "dynSentence",
  237. editField: "dynSentence",
  238. tableHide: true,
  239. inputType: "input",
  240. rules: [
  241. {
  242. min: 1,
  243. max: 2048,
  244. message: "不超过2048个字符",
  245. trigger: "blur"
  246. }
  247. ],
  248. disabled: false
  249. },
  250. {
  251. label: "结果案例", //结果案例
  252. placeholder: "",
  253. field: "caseResult",
  254. tableHide: true,
  255. editField: "caseResult",
  256. inputType: "input",
  257. rules: [
  258. {
  259. min: 1,
  260. max: 65535,
  261. message: "不超过65535个字符",
  262. trigger: "blur"
  263. }
  264. ],
  265. disabled: false
  266. },
  267. {
  268. label: "状态", //0--已禁用 1--已启用 DIC_NAME=ENABLE_FLAG
  269. placeholder: "",
  270. field: "enableFlag",
  271. fieldTableRowRenderer: row => {
  272. return this.getDictLabelByCode("ENABLE_FLAG", row["enableFlag"]);
  273. },
  274. colorStyle: {
  275. 0: "table-danger", //key为editField渲染的值(字典的提交值)'红色': 'danger','蓝色': 'primary','绿色': 'success','黄色': 'warning','灰色': 'info','白色':''
  276. 1: "table-success"
  277. },
  278. editField: "enableFlag",
  279. inputType: "input",
  280. rules: [],
  281. disabled: false
  282. },
  283. {
  284. label: "删除标记", //0--未删除 1--已删除 DIC_NAME=DELETE_FLAG
  285. placeholder: "",
  286. field: "deleteFlag",
  287. editField: "deleteFlag",
  288. tableHide: true,
  289. inputType: "input",
  290. rules: [],
  291. disabled: false
  292. }
  293. ]
  294. },
  295. // 复制
  296. copyVisible: false,
  297. rowData: {}
  298. };
  299. },
  300. methods: {
  301. operateDataset(type, prop) {
  302. this.dialogVisibleSetDataSet = true;
  303. if (prop && prop.setType) {
  304. this.dataSet = prop;
  305. type = prop.setType;
  306. } else {
  307. this.dataSet = {};
  308. }
  309. this.$refs.EditDataSet.addOrEditDataSet(this.dataSet, type);
  310. },
  311. refreshList() {
  312. this.$refs.listPage.handleQueryForm("query");
  313. },
  314. dataView(prop) {
  315. this.dialogCaseResult = true;
  316. this.$refs.DataView.dataViewPreview(
  317. prop.setName,
  318. JSON.parse(prop.caseResult)
  319. );
  320. },
  321. //复制
  322. async copyDataSet(val) {
  323. this.copyVisible = true;
  324. this.rowData = val;
  325. },
  326. close() {
  327. this.copyVisible = false;
  328. this.$refs.listPage.handleQueryForm("query");
  329. }
  330. }
  331. };
  332. </script>
  333. <style lang="scss" scoped>
  334. :deep().el-dropdown {
  335. margin-right: 20px;
  336. }
  337. </style>