index.vue 8.8 KB

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