index.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. label-width="68px"
  10. >
  11. <el-form-item
  12. label="表单名称
  13. "
  14. prop="dfName"
  15. >
  16. <el-input
  17. v-model="queryParams.dfName"
  18. placeholder="请输入表单名称
  19. "
  20. clearable
  21. @keyup.enter.native="handleQuery"
  22. />
  23. </el-form-item>
  24. <el-form-item
  25. label="表单别名
  26. "
  27. prop="dfNickname"
  28. >
  29. <el-input
  30. v-model="queryParams.dfNickname"
  31. placeholder="请输入表单别名
  32. "
  33. clearable
  34. @keyup.enter.native="handleQuery"
  35. />
  36. </el-form-item>
  37. <!-- <el-form-item label="表单sql" prop="dfFormSql">
  38. <el-input
  39. v-model="queryParams.dfFormSql"
  40. placeholder="请输入表单sql"
  41. clearable
  42. @keyup.enter.native="handleQuery"
  43. />
  44. </el-form-item> -->
  45. <!-- <el-form-item label="节点ID" prop="dfNodeId">
  46. <el-input
  47. v-model="queryParams.dfNodeId"
  48. placeholder="请输入节点ID"
  49. clearable
  50. @keyup.enter.native="handleQuery"
  51. />
  52. </el-form-item> -->
  53. <el-form-item
  54. label="数据源名称
  55. "
  56. prop="dfDatabase"
  57. >
  58. <el-input
  59. v-model="queryParams.dfDatabase"
  60. placeholder="请输入数据源名称"
  61. clearable
  62. @keyup.enter.native="handleQuery"
  63. />
  64. </el-form-item>
  65. <el-form-item label="绑定表名称" prop="dfTableName">
  66. <el-input
  67. v-model="queryParams.dfTableName"
  68. placeholder="请输入绑定表名称"
  69. clearable
  70. @keyup.enter.native="handleQuery"
  71. />
  72. </el-form-item>
  73. <el-form-item label="表单描述" prop="dfNotes">
  74. <el-input
  75. v-model="queryParams.dfNotes"
  76. placeholder="请输入表单描述"
  77. clearable
  78. @keyup.enter.native="handleQuery"
  79. />
  80. </el-form-item>
  81. <el-form-item>
  82. <el-button
  83. type="primary"
  84. icon="el-icon-search"
  85. size="mini"
  86. @click="handleQuery"
  87. >搜索</el-button
  88. >
  89. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  90. >重置</el-button
  91. >
  92. </el-form-item>
  93. </el-form>
  94. <!-- v-hasPermi="['dragform:form:add']"
  95. v-hasPermi="['dragform:form:edit']"
  96. v-hasPermi="['dragform:form:remove']"
  97. v-hasPermi="['dragform:form:export']"
  98. -->
  99. <el-row :gutter="10" class="mb8">
  100. <el-col :span="1.5">
  101. <el-button
  102. type="primary"
  103. plain
  104. icon="el-icon-plus"
  105. size="mini"
  106. @click="handleAdd"
  107. >新增
  108. </el-button>
  109. </el-col>
  110. <el-col :span="1.5">
  111. <el-button
  112. type="success"
  113. plain
  114. icon="el-icon-edit"
  115. size="mini"
  116. :disabled="single"
  117. @click="handleUpdate"
  118. >修改
  119. </el-button>
  120. </el-col>
  121. <el-col :span="1.5">
  122. <el-button
  123. type="danger"
  124. plain
  125. icon="el-icon-delete"
  126. size="mini"
  127. :disabled="multiple"
  128. @click="handleDelete"
  129. >删除
  130. </el-button>
  131. </el-col>
  132. <el-col :span="1.5">
  133. <el-button
  134. type="warning"
  135. plain
  136. icon="el-icon-download"
  137. size="mini"
  138. @click="handleExport"
  139. >导出
  140. </el-button>
  141. </el-col>
  142. <right-toolbar
  143. :showSearch.sync="showSearch"
  144. @queryTable="getList"
  145. ></right-toolbar>
  146. </el-row>
  147. <el-table
  148. tooltip-effect="dark"
  149. v-loading="loading"
  150. :data="formList"
  151. @selection-change="handleSelectionChange"
  152. >
  153. <el-table-column
  154. type="selection"
  155. width="55"
  156. align="center"
  157. show-overflow-tooltip
  158. />
  159. <el-table-column
  160. label="表单主键"
  161. align="center"
  162. prop="fId"
  163. show-overflow-tooltip
  164. />
  165. <el-table-column
  166. label="表单名称
  167. "
  168. align="center"
  169. prop="dfName"
  170. show-overflow-tooltip
  171. />
  172. <el-table-column
  173. label="表单别名
  174. "
  175. align="center"
  176. prop="dfNickname"
  177. show-overflow-tooltip
  178. />
  179. <el-table-column
  180. label="表单vue模版"
  181. align="center"
  182. prop="dfVueTemplate"
  183. show-overflow-tooltip
  184. />
  185. <el-table-column
  186. label="表单html模版"
  187. align="center"
  188. prop="dfHtmlTemplate"
  189. show-overflow-tooltip
  190. />
  191. <el-table-column
  192. label="表单sql"
  193. align="center"
  194. prop="dfFormSql"
  195. show-overflow-tooltip
  196. />
  197. <el-table-column
  198. label="节点ID"
  199. align="center"
  200. prop="dfNodeId"
  201. show-overflow-tooltip
  202. />
  203. <el-table-column
  204. label="数据源名称
  205. "
  206. align="center"
  207. prop="dfDatabase"
  208. show-overflow-tooltip
  209. />
  210. <el-table-column
  211. label="绑定表名称"
  212. align="center"
  213. prop="dfTableName"
  214. show-overflow-tooltip
  215. />
  216. <el-table-column
  217. label="表单描述"
  218. align="center"
  219. prop="dfNotes"
  220. show-overflow-tooltip
  221. />
  222. <!-- <el-table-column
  223. label="备用列"
  224. align="center"
  225. prop="spare"
  226. show-overflow-tooltip
  227. />
  228. <el-table-column
  229. label="备用列"
  230. align="center"
  231. prop="spare1"
  232. show-overflow-tooltip
  233. />
  234. <el-table-column
  235. label="文件路径"
  236. align="center"
  237. prop="dfFliePath"
  238. show-overflow-tooltip
  239. /> -->
  240. <el-table-column
  241. label="操作"
  242. align="center"
  243. class-name="small-padding fixed-width"
  244. >
  245. <template slot-scope="scope">
  246. <el-dropdown>
  247. <el-button type="warning" plain size="small">
  248. 处理<i class="el-icon-arrow-down el-icon--right"></i>
  249. </el-button>
  250. <el-dropdown-menu slot="dropdown">
  251. <el-dropdown-item
  252. ><el-button
  253. size="mini"
  254. type="text"
  255. icon="el-icon-edit"
  256. @click="handleUpdate(scope.row)"
  257. >修改
  258. </el-button></el-dropdown-item
  259. >
  260. <el-dropdown-item>
  261. <el-button
  262. size="mini"
  263. type="text"
  264. icon="el-icon-delete"
  265. @click="handleDelete(scope.row)"
  266. >删除
  267. </el-button>
  268. </el-dropdown-item>
  269. </el-dropdown-menu>
  270. </el-dropdown>
  271. <!-- <el-button
  272. size="mini"
  273. type="text"
  274. icon="el-icon-edit"
  275. @click="handleUpdate(scope.row)"
  276. >修改
  277. </el-button> -->
  278. <!-- v-hasPermi="['dragform:form:edit']"
  279. -->
  280. <!-- <el-button
  281. size="mini"
  282. type="text"
  283. icon="el-icon-delete"
  284. @click="handleDelete(scope.row)"
  285. >删除
  286. </el-button> -->
  287. </template>
  288. </el-table-column>
  289. </el-table>
  290. <pagination
  291. v-show="total > 0"
  292. :total="total"
  293. :page.sync="queryParams.pageNum"
  294. :limit.sync="queryParams.pageSize"
  295. @pagination="getList"
  296. />
  297. <!-- 添加或修改动态单
  298. 对话框 -->
  299. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  300. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  301. <el-form-item label="表单名" prop="dfName">
  302. <el-input v-model="form.dfName" placeholder="请输入表单名称" />
  303. </el-form-item>
  304. <el-form-item label="表单别名" prop="dfNickname">
  305. <el-input v-model="form.dfNickname" placeholder="请输入表单别名" />
  306. </el-form-item>
  307. <el-form-item label="表单vue模版" prop="dfVueTemplate">
  308. <el-input
  309. v-model="form.dfVueTemplate"
  310. type="textarea"
  311. placeholder="请输入内容"
  312. />
  313. </el-form-item>
  314. <el-form-item label="表单html模版" prop="dfHtmlTemplate">
  315. <el-input
  316. v-model="form.dfHtmlTemplate"
  317. type="textarea"
  318. placeholder="请输入内容"
  319. />
  320. </el-form-item>
  321. <el-form-item label="表单sql" prop="dfFormSql">
  322. <el-input v-model="form.dfFormSql" placeholder="请输入表单sql" />
  323. </el-form-item>
  324. <el-form-item label="节点ID" prop="dfNodeId">
  325. <el-input v-model="form.dfNodeId" placeholder="请输入节点ID" />
  326. </el-form-item>
  327. <el-form-item label="数据源名称" prop="dfDatabase">
  328. <el-input v-model="form.dfDatabase" placeholder="请输入数据源名称" />
  329. </el-form-item>
  330. <el-form-item label="绑定表名称" prop="dfTableName">
  331. <el-input v-model="form.dfTableName" placeholder="请输入绑定表名称" />
  332. </el-form-item>
  333. <el-form-item label="逻辑删除" prop="delFlag">
  334. <el-input v-model="form.delFlag" placeholder="请输入逻辑删除" />
  335. </el-form-item>
  336. <el-form-item label="表单描述" prop="dfNotes">
  337. <el-input v-model="form.dfNotes" placeholder="请输入表单描述" />
  338. </el-form-item>
  339. <el-form-item label="备用列" prop="spare">
  340. <el-input v-model="form.spare" placeholder="请输入备用列" />
  341. </el-form-item>
  342. <el-form-item label="备用列" prop="spare1">
  343. <el-input v-model="form.spare1" placeholder="请输入备用列" />
  344. </el-form-item>
  345. </el-form>
  346. <div slot="footer" class="dialog-footer">
  347. <el-button type="primary" @click="submitForm">确 定</el-button>
  348. <el-button @click="cancel">取 消</el-button>
  349. </div>
  350. </el-dialog>
  351. </div>
  352. </template>
  353. <script>
  354. import { delForm, addForm, updateForm, listForm } from "@/api/dragform/form";
  355. // import fromModel from '../system/fromModel/index.vue'
  356. export default {
  357. name: "Form",
  358. data() {
  359. return {
  360. // 遮罩层
  361. loading: true,
  362. // 选中数组
  363. ids: [],
  364. // 非单个禁用
  365. single: true,
  366. // 非多个禁用
  367. multiple: true,
  368. // 显示搜索条件
  369. showSearch: true,
  370. // 总条数
  371. total: 0,
  372. // 动态单表格数据
  373. formList: [],
  374. // 弹出层标题
  375. title: "",
  376. // 是否显示弹出层
  377. open: false,
  378. // 查询参数
  379. queryParams: {
  380. pageNum: 1,
  381. pageSize: 10,
  382. dfName: null,
  383. dfNickname: null,
  384. dfVueTemplate: null,
  385. dfHtmlTemplate: null,
  386. dfFormSql: null,
  387. dfNodeId: null,
  388. dfDatabase: null,
  389. dfTableName: null,
  390. dfNotes: null,
  391. spare: null,
  392. spare1: null,
  393. },
  394. // 表单参数
  395. form: {},
  396. // 表单校验
  397. rules: {},
  398. };
  399. },
  400. created() {
  401. this.getList();
  402. },
  403. methods: {
  404. /** 查询动态单
  405. 列表 */
  406. getList() {
  407. this.loading = true;
  408. listForm(this.queryParams).then((response) => {
  409. console.log(response);
  410. this.formList = response.rows;
  411. this.total = response.total;
  412. this.loading = false;
  413. });
  414. },
  415. // 取消按钮
  416. cancel() {
  417. this.open = false;
  418. this.reset();
  419. },
  420. // 表单重置
  421. reset() {
  422. this.form = {
  423. fId: null,
  424. dfName: null,
  425. dfNickname: null,
  426. dfVueTemplate: null,
  427. dfHtmlTemplate: null,
  428. dfFormSql: null,
  429. dfNodeId: null,
  430. dfDatabase: null,
  431. dfTableName: null,
  432. delFlag: null,
  433. dfNotes: null,
  434. createTime: null,
  435. createBy: null,
  436. updateBy: null,
  437. updateTime: null,
  438. spare: null,
  439. spare1: null,
  440. };
  441. this.resetForm("form");
  442. },
  443. /** 搜索按钮操作 */
  444. handleQuery() {
  445. this.queryParams.pageNum = 1;
  446. this.getList();
  447. },
  448. /** 重置按钮操作 */
  449. resetQuery() {
  450. this.resetForm("queryForm");
  451. this.handleQuery();
  452. },
  453. // 多选框选中数据
  454. handleSelectionChange(selection) {
  455. this.ids = selection.map((item) => item.fId);
  456. this.single = selection.length !== 1;
  457. this.multiple = !selection.length;
  458. },
  459. /** 新增按钮操作 */
  460. handleAdd() {
  461. sessionStorage.removeItem("fid");
  462. this.$router.push("/system/fromModel/index/formBuild");
  463. },
  464. /** 修改按钮操作 */
  465. handleUpdate(row) {
  466. const fId = row.fId || this.ids[0];
  467. sessionStorage.setItem("fid", fId);
  468. // this.$router.replace("system/fromModel/index");
  469. this.$router.push({
  470. path: "/system/fromModel/index/formBuild",
  471. query: { fId },
  472. });
  473. },
  474. /** 提交按钮 */
  475. submitForm() {
  476. this.$refs["form"].validate((valid) => {
  477. if (valid) {
  478. console.log(this.form);
  479. if (this.form.fId != null) {
  480. updateForm(this.form).then((response) => {
  481. this.$modal.msgSuccess("修改成功");
  482. this.open = false;
  483. this.getList();
  484. });
  485. } else {
  486. addForm(this.form).then((response) => {
  487. this.$modal.msgSuccess("新增成功");
  488. this.open = false;
  489. this.getList();
  490. });
  491. }
  492. }
  493. });
  494. },
  495. /** 删除按钮操作 */
  496. handleDelete(row) {
  497. const fIds = row.fId || this.ids;
  498. this.$modal
  499. .confirm('是否确认删除动态单编号为"' + fIds + '"的数据项?')
  500. .then(function () {
  501. return delForm(fIds);
  502. })
  503. .then(() => {
  504. this.getList();
  505. this.$modal.msgSuccess("删除成功");
  506. })
  507. .catch(() => {});
  508. },
  509. /** 导出按钮操作 */
  510. handleExport() {
  511. this.download(
  512. process.env.VUE_APP_BASE_API3 + "dragform/form/export",
  513. {
  514. ...this.queryParams,
  515. },
  516. `form_${new Date().getTime()}.xlsx`
  517. );0
  518. },
  519. },
  520. };
  521. </script>
  522. <style scoped lang="scss">
  523. ::v-deep .el-form-item__label{
  524. width: 85px !important;
  525. }
  526. </style>