TplTreeVue.txt 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. <!--
  2. * @Descripttion: (${genTable.functionName}/${genTable.remark})
  3. * @version: (1.0)
  4. * @Author: (${replaceDto.Author})
  5. * @Date: (${replaceDto.AddTime})
  6. * @LastEditors: (最后更新作者)
  7. * @LastEditTime: (最后更新时间)
  8. -->
  9. <template>
  10. <div class="app-container">
  11. <!-- :model属性用于表单验证使用 比如下面的el-form-item 的 prop属性用于对表单值进行验证操作 -->
  12. <el-form :model="queryParams" size="small" label-position="right" inline ref="queryForm" :label-width="labelWidth" v-show="showSearch"
  13. @submit.native.prevent>
  14. ${vueQueryFormHtml}
  15. <el-form-item>
  16. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  17. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  18. </el-form-item>
  19. </el-form>
  20. <!-- 工具区域 -->
  21. <el-row :gutter="10" class="mb8">
  22. <el-col :span="1.5">
  23. <el-button type="primary" v-hasPermi="['${replaceDto.PermissionPrefix}:add']" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
  24. </el-col>
  25. <el-col :span="1.5">
  26. <el-button type="info" plain icon="el-icon-sort" size="mini" @click="toggleExpandAll">展开/折叠</el-button>
  27. </el-col>
  28. <el-col :span="1.5">
  29. <el-button type="danger" :disabled="multiple" v-hasPermi="['${replaceDto.PermissionPrefix}:delete']" plain icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
  30. </el-col>
  31. $if(replaceDto.ShowBtnExport)
  32. <el-col :span="1.5">
  33. <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['${replaceDto.PermissionPrefix}:export']">导出</el-button>
  34. </el-col>
  35. $end
  36. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  37. </el-row>
  38. <!-- 数据区域 -->
  39. <el-table v-if="refreshTable" :data="dataList" v-loading="loading" ref="table" border highlight-current-row @selection-change="handleSelectionChange"
  40. :default-expand-all="isExpandAll" row-key="${tool.FirstLowerCase(genTable.Options.TreeCode)}" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
  41. <el-table-column type="selection" width="50" align="center"/>
  42. ${VueViewListContent}
  43. <el-table-column label="操作" align="center" width="140">
  44. <template slot-scope="scope">
  45. <el-button size="mini" v-hasPermi="['${replaceDto.PermissionPrefix}:edit']" type="success" icon="el-icon-edit" title="编辑"
  46. @click="handleUpdate(scope.row)"></el-button>
  47. <el-button size="mini" v-hasPermi="['${replaceDto.PermissionPrefix}:delete']" type="danger" icon="el-icon-delete" title="删除"
  48. @click="handleDelete(scope.row)"></el-button>
  49. </template>
  50. </el-table-column>
  51. </el-table>
  52. <pagination class="mt10" background :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
  53. <!-- 添加或修改${genTable.functionName}对话框 -->
  54. <el-dialog :title="title" :lock-scroll="false" :visible.sync="open" >
  55. <el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
  56. <el-row :gutter="20">
  57. ${VueViewFormContent}
  58. </el-row>
  59. </el-form>
  60. <div slot="footer" class="dialog-footer">
  61. <el-button type="text" @click="cancel">取 消</el-button>
  62. <el-button type="primary" @click="submitForm">确 定</el-button>
  63. </div>
  64. </el-dialog>
  65. </div>
  66. </template>
  67. <script>
  68. import {
  69. treelist${genTable.BusinessName},
  70. list${genTable.BusinessName},
  71. add${genTable.BusinessName},
  72. del${genTable.BusinessName},
  73. update${genTable.BusinessName},
  74. get${genTable.BusinessName},
  75. $if(replaceDto.ShowBtnExport)
  76. export${genTable.BusinessName},
  77. $end
  78. $if(showCustomInput)
  79. changeSort
  80. $end
  81. } from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${tool.FirstLowerCase(genTable.BusinessName)}.js';
  82. import Treeselect from "@riophae/vue-treeselect";
  83. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  84. export default {
  85. name: "${genTable.BusinessName.ToLower()}",
  86. components: { Treeselect },
  87. data() {
  88. return {
  89. labelWidth: "100px",
  90. formLabelWidth:"100px",
  91. // 选中${replaceDto.FistLowerPk}数组
  92. ids: [],
  93. // 非单个禁用
  94. single: true,
  95. // 非多个禁用
  96. multiple: true,
  97. // 遮罩层
  98. loading: false,
  99. // 显示搜索条件
  100. showSearch: true,
  101. // 查询参数
  102. queryParams: {
  103. pageNum: 1,
  104. pageSize: 10,
  105. $foreach(item in genTable.Columns)
  106. $if(item.IsQuery == true)
  107. ${item.CsharpFieldFl}: undefined,
  108. $end
  109. $end
  110. },
  111. // 弹出层标题
  112. title: "",
  113. // 操作类型 1、add 2、edit
  114. opertype: 0,
  115. // 是否显示弹出层
  116. open: false,
  117. // 是否展开,默认全部折叠
  118. isExpandAll: false,
  119. // 重新渲染表格状态
  120. refreshTable: true,
  121. // 表单参数
  122. form: {},
  123. columns: [
  124. $set(index = 0)
  125. $foreach(column in genTable.Columns)
  126. { index: $index, key: '${column.CsharpFieldFl}', label: `${column.ColumnComment}`, checked: $if(index < 9) true $else false $end },
  127. $set(index = index + 1)
  128. $end
  129. ],
  130. $foreach(item in genTable.Columns)
  131. $if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox"))
  132. // ${item.ColumnComment}选项列表
  133. ${item.CsharpFieldFl}Options: [],
  134. $elseif(item.HtmlType == "datetime" && item.IsQuery == true)
  135. //${item.ColumnComment}时间范围
  136. dateRange${item.CsharpField}: [],
  137. $elseif(item.HtmlType == "customInput")
  138. editIndex: -1,
  139. $end
  140. $end
  141. // 数据列表
  142. dataList: [],
  143. // 总记录数
  144. total: 0,
  145. // 提交按钮是否显示
  146. btnSubmitVisible: true,
  147. // 表单校验
  148. rules: {
  149. $foreach(column in genTable.Columns)
  150. $if(column.IsRequired && column.IsIncrement == false)
  151. ${column.CsharpFieldFl}: [
  152. { required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
  153. $if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }
  154. ],
  155. $end
  156. $end
  157. },
  158. };
  159. },
  160. created() {
  161. // 列表数据查询
  162. this.getList();
  163. $set(index = 0)
  164. var dictParams = [
  165. $foreach(item in genTable.Columns)
  166. $if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox") && item.DictType != "")
  167. { dictType: "${item.DictType}", columnName: "${item.CsharpFieldFl}Options" },
  168. $set(index = index + 1)
  169. $end
  170. $end
  171. ];
  172. $if(index > 0)
  173. this.getDicts(dictParams).then((response) => {
  174. response.data.forEach((element) => {
  175. this[element.columnName] = element.list;
  176. });
  177. });
  178. $end
  179. },
  180. methods: {
  181. // 查询数据
  182. getList() {
  183. $foreach(item in genTable.Columns)
  184. $if(item.HtmlType == "datetime" && item.IsQuery == true)
  185. this.addDateRange(this.queryParams, this.dateRange${item.CsharpField}, '${item.CsharpField}');
  186. $end
  187. $end
  188. this.loading = true;
  189. treelist${genTable.BusinessName}(this.queryParams).then(res => {
  190. if (res.code == 200) {
  191. this.dataList = res.data;
  192. this.loading = false;
  193. }
  194. })
  195. },
  196. /** 转换菜单数据结构 */
  197. normalizer(node) {
  198. if (node.children && !node.children.length) {
  199. delete node.children;
  200. }
  201. return {
  202. id: node.${tool.FirstLowerCase(genTable.Options.TreeCode)},
  203. label: node.${tool.FirstLowerCase(genTable.Options.TreeName)},
  204. children: node.children,
  205. };
  206. },
  207. // 取消按钮
  208. cancel() {
  209. this.open = false;
  210. this.reset();
  211. },
  212. // 重置数据表单
  213. reset() {
  214. this.form = {
  215. $foreach(item in genTable.Columns)
  216. $if((item.HtmlType == "checkbox"))
  217. ${item.CsharpFieldFl}Checked: [],
  218. $else
  219. $item.CsharpFieldFl: undefined,
  220. $end
  221. $end
  222. };
  223. this.resetForm("form");
  224. },
  225. /** 重置查询操作 */
  226. resetQuery() {
  227. this.timeRange = [];
  228. $foreach(item in genTable.Columns)
  229. $if(item.HtmlType == "datetime" && item.IsQuery == true)
  230. //${item.ColumnComment}时间范围
  231. this.dateRange${item.CsharpField}= [];
  232. $end
  233. $end
  234. this.resetForm("queryForm");
  235. this.handleQuery();
  236. },
  237. // 多选框选中数据
  238. handleSelectionChange(selection) {
  239. this.ids = selection.map((item) => item.${replaceDto.FistLowerPk});
  240. this.single = selection.length != 1
  241. this.multiple = !selection.length;
  242. },
  243. /** 搜索按钮操作 */
  244. handleQuery() {
  245. this.queryParams.pageNum = 1;
  246. this.getList();
  247. },
  248. /** 新增按钮操作 */
  249. handleAdd() {
  250. this.reset();
  251. this.open = true;
  252. this.title = "添加";
  253. this.opertype = 1;
  254. },
  255. /** 删除按钮操作 */
  256. handleDelete(row) {
  257. const Ids = row.${replaceDto.FistLowerPk} || this.ids;
  258. this.${confirm}confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
  259. .then(function () {
  260. return del${genTable.BusinessName}(Ids);
  261. })
  262. .then(() => {
  263. this.handleQuery();
  264. this.msgSuccess("删除成功");
  265. })
  266. .catch(() => {});
  267. },
  268. /** 修改按钮操作 */
  269. handleUpdate(row) {
  270. this.reset();
  271. const id = row.${replaceDto.FistLowerPk} || this.ids;
  272. get${genTable.BusinessName}(id).then((res) => {
  273. const { code, data } = res;
  274. if (code == 200) {
  275. this.open = true;
  276. this.title = "修改数据";
  277. this.opertype = 2;
  278. this.form = {
  279. ...data,
  280. $foreach(item in genTable.Columns)
  281. $if(item.HtmlType == "checkbox")
  282. ${item.CsharpFieldFl}Checked: data.${item.CsharpFieldFl} ? data.${item.CsharpFieldFl}.split(',') : [],
  283. $end
  284. $end
  285. };
  286. }
  287. });
  288. },
  289. $if(replaceDto.UploadFile == 1)
  290. //图片上传成功方法
  291. handleUploadSuccess(column, filelist) {
  292. this.form[column] = filelist;
  293. },
  294. $end
  295. $foreach(item in genTable.Columns)
  296. $if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox"))
  297. // ${item.ColumnComment}字典翻译
  298. ${item.CsharpFieldFl}Format(row, column) {
  299. return this.selectDictLabel(this.${item.CsharpFieldFl}Options, row.${item.CsharpFieldFl});
  300. },
  301. $end
  302. $if(item.HtmlType == "customInput")
  303. // 显示编辑排序
  304. editCurrRow(rowId, str) {
  305. this.editIndex = rowId;
  306. let id = rowId + str;
  307. setTimeout(() => {
  308. document.getElementById(id).focus();
  309. }, 100);
  310. },
  311. // 保存排序
  312. handleChangeSort(info) {
  313. this.editIndex = -1;
  314. changeSort({ value: info.${item.CsharpFieldFl}, id: info.${replaceDto.FistLowerPk} }).then(
  315. (response) => {
  316. this.msgSuccess("修改成功");
  317. this.getList();
  318. }
  319. );
  320. },
  321. $end
  322. $end
  323. /** 提交按钮 */
  324. submitForm: function () {
  325. this.${refs}refs["form"].validate((valid) => {
  326. if (valid) {
  327. $foreach(item in genTable.Columns)
  328. $if(item.HtmlType == "checkbox")
  329. this.form.${item.CsharpFieldFl} = this.form.${item.CsharpFieldFl}Checked.toString();
  330. $end
  331. $end
  332. console.log(JSON.stringify(this.form));
  333. if (this.form.${replaceDto.FistLowerPk} != undefined && this.opertype === 2) {
  334. update${genTable.BusinessName}(this.form)
  335. .then((res) => {
  336. this.msgSuccess("修改成功");
  337. this.open = false;
  338. this.getList();
  339. })
  340. .catch((err) => {
  341. //TODO 错误逻辑
  342. });
  343. } else {
  344. add${genTable.BusinessName}(this.form)
  345. .then((res) => {
  346. this.msgSuccess("新增成功");
  347. this.open = false;
  348. this.getList();
  349. })
  350. .catch((err) => {
  351. //TODO 错误逻辑
  352. });
  353. }
  354. }
  355. });
  356. },
  357. $if(replaceDto.ShowBtnExport)
  358. /** 导出按钮操作 */
  359. handleExport() {
  360. const queryParams = this.queryParams;
  361. this.${confirm}confirm("是否确认导出所有${genTable.functionName}数据项?", "警告", {
  362. confirmButtonText: "确定",
  363. cancelButtonText: "取消",
  364. type: "warning",
  365. }).then(async () => {
  366. await export${genTable.BusinessName}(queryParams);
  367. })
  368. },
  369. $end
  370. //展开/折叠操作
  371. toggleExpandAll() {
  372. this.refreshTable = false;
  373. this.isExpandAll = !this.isExpandAll;
  374. this.${nextTick}nextTick(() => {
  375. this.refreshTable = true;
  376. });
  377. },
  378. },
  379. };
  380. </script>