index-tree.vue.vm 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4. {%- for column in table.columns %}
  5. {%- if column.is_query %}
  6. {%- set dict_type = column.dict_type if column.dict_type else '' %}
  7. {%- set attr_name = capitalize_first(column.java_field) %}
  8. {%- set comment = column.column_comment %}
  9. {%- if '(' in comment or '(' in comment %}
  10. {%- if '(' in comment %}
  11. {%- set comment = comment.split('(')[0] %}
  12. {%- elif '(' in comment %}
  13. {%- set comment = comment.split('(')[0] %}
  14. {%- endif %}
  15. {%- endif %}
  16. {%- if column.html_type == 'input' %}
  17. <el-form-item label="{{ comment }}" prop="{{ underscore(column.java_field) }}">
  18. <el-input
  19. v-model="queryParams.{{ underscore(column.java_field) }}"
  20. placeholder="请输入{{ comment }}"
  21. clearable
  22. @keyup.enter.native="handleQuery"
  23. />
  24. </el-form-item>
  25. {%- elif (column.html_type == 'select' or column.html_type == 'radio') and dict_type != '' %}
  26. <el-form-item label="{{ comment }}" prop="{{ underscore(column.java_field) }}">
  27. <el-select v-model="queryParams.{{ underscore(column.java_field) }}" placeholder="请选择{{ comment }}" clearable>
  28. <el-option
  29. v-for="dict in dict.type.{{ dict_type }}"
  30. :key="dict.value"
  31. :label="dict.label"
  32. :value="dict.value"
  33. />
  34. </el-select>
  35. </el-form-item>
  36. {%- elif (column.html_type == 'select' or column.html_type == 'radio') and dict_type == '' %}
  37. <el-form-item label="{{ comment }}" prop="{{ underscore(column.java_field) }}">
  38. <el-select v-model="queryParams.{{ underscore(column.java_field) }}" placeholder="请选择{{ comment }}" clearable>
  39. <el-option label="请选择字典生成" value="" />
  40. </el-select>
  41. </el-form-item>
  42. {%- elif column.html_type == 'datetime' and column.query_type != 'BETWEEN' %}
  43. <el-form-item label="{{ comment }}" prop="{{ underscore(column.java_field) }}">
  44. <el-date-picker clearable
  45. v-model="queryParams.{{ underscore(column.java_field) }}"
  46. type="date"
  47. value-format="yyyy-MM-dd"
  48. placeholder="选择{{ comment }}">
  49. </el-date-picker>
  50. </el-form-item>
  51. {%- elif column.html_type == 'datetime' and column.query_type == 'BETWEEN' %}
  52. <el-form-item label="{{ comment }}">
  53. <el-date-picker
  54. v-model="daterange{{ attr_name }}"
  55. style="width: 240px"
  56. value-format="yyyy-MM-dd"
  57. type="daterange"
  58. range-separator="-"
  59. start-placeholder="开始日期"
  60. end-placeholder="结束日期"
  61. ></el-date-picker>
  62. </el-form-item>
  63. {%- endif %}
  64. {%- endif %}
  65. {%- endfor %}
  66. <el-form-item>
  67. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  68. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  69. </el-form-item>
  70. </el-form>
  71. <el-row :gutter="10" class="mb8">
  72. <el-col :span="1.5">
  73. <el-button
  74. type="primary"
  75. plain
  76. icon="el-icon-plus"
  77. size="mini"
  78. @click="handleAdd"
  79. v-hasPermi="['{{ table.module_name }}:{{ table.business_name }}:add']"
  80. >新增</el-button>
  81. </el-col>
  82. <el-col :span="1.5">
  83. <el-button
  84. type="info"
  85. plain
  86. icon="el-icon-sort"
  87. size="mini"
  88. @click="toggleExpandAll"
  89. >展开/折叠</el-button>
  90. </el-col>
  91. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
  92. </el-row>
  93. <el-table
  94. v-if="refreshTable"
  95. v-loading="loading"
  96. :data="{{ table.business_name }}List"
  97. row-key="{% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %}"
  98. :default-expand-all="isExpandAll"
  99. :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
  100. >
  101. {%- for column in table.columns %}
  102. {%- set java_field = column.java_field %}
  103. {%- set comment = column.column_comment %}
  104. {%- if '(' in comment or '(' in comment %}
  105. {%- if '(' in comment %}
  106. {%- set comment = comment.split('(')[0] %}
  107. {%- elif '(' in comment %}
  108. {%- set comment = comment.split('(')[0] %}
  109. {%- endif %}
  110. {%- endif %}
  111. {%- if column.is_pk == '1' %}
  112. {%- elif column.is_list and column.list_index is not none and column.html_type == 'datetime' %}
  113. <el-table-column label="{{ comment }}" align="center" v-if="columns[{{ column.list_index }}].visible" prop="{{ underscore(java_field) }}" width="180">
  114. <template slot-scope="scope">
  115. <span>{{ "{{ parseTime(scope.row." }}{{ underscore(java_field) }}{{ ", '{y}-{m}-{d}') }}" }}</span>
  116. </template>
  117. </el-table-column>
  118. {%- elif column.is_list and column.list_index is not none and column.html_type == 'imageUpload' %}
  119. <el-table-column label="{{ comment }}" align="center" v-if="columns[{{ column.list_index }}].visible" prop="{{ underscore(java_field) }}" width="100">
  120. <template slot-scope="scope">
  121. <image-preview :src="scope.row.{{ underscore(java_field) }}" :width="50" :height="50"/>
  122. </template>
  123. </el-table-column>
  124. {%- elif column.is_list and column.list_index is not none and column.html_type == 'fileUpload' %}
  125. <el-table-column label="{{ comment }}" align="center" v-if="columns[{{ column.list_index }}].visible" prop="{{ underscore(java_field) }}" width="100">
  126. <template slot-scope="scope">
  127. <div v-if="scope.row.{{ underscore(java_field) }}">
  128. <el-tooltip placement="top" effect="light">
  129. <div slot="content">
  130. <div v-for="(file,index) in scope.row.{{ underscore(java_field) }}.split(',')"
  131. :key="index"
  132. style="text-align: left;padding: 5px;">
  133. <el-link
  134. :download="getFileName(file)"
  135. :href="getFilePath(file)"
  136. :underline="false"
  137. target="_blank"
  138. style="font-size: 14px"
  139. >
  140. <span style="cursor: pointer;"> {{ "{{ getFileName(file) }}" }} </span>
  141. </el-link>
  142. </div>
  143. </div>
  144. <span style="cursor: pointer; color: #409EFF;">查看文件</span>
  145. </el-tooltip>
  146. </div>
  147. <div v-else>
  148. -
  149. </div>
  150. </template>
  151. </el-table-column>
  152. {%- elif column.is_list and column.list_index is not none and column.dict_type and column.dict_type != '' %}
  153. <el-table-column label="{{ comment }}" align="center" v-if="columns[{{ column.list_index }}].visible" prop="{{ underscore(java_field) }}">
  154. <template slot-scope="scope">
  155. {%- if column.html_type == 'checkbox' %}
  156. <dict-tag :options="dict.type.{{ column.dict_type }}" :value="scope.row.{{ underscore(java_field) }} ? scope.row.{{ underscore(java_field) }}.split(',') : []"/>
  157. {%- else %}
  158. <dict-tag :options="dict.type.{{ column.dict_type }}" :value="scope.row.{{ underscore(java_field) }}"/>
  159. {%- endif %}
  160. </template>
  161. </el-table-column>
  162. {%- elif column.is_list and column.list_index is not none and java_field %}
  163. {%- if column.list_index == 0 %}
  164. <el-table-column label="{{ comment }}" :show-overflow-tooltip="true" v-if="columns[{{ column.list_index }}].visible" prop="{{ underscore(java_field) }}" />
  165. {%- else %}
  166. <el-table-column label="{{ comment }}" align="center" :show-overflow-tooltip="true" v-if="columns[{{ column.list_index }}].visible" prop="{{ underscore(java_field) }}" />
  167. {%- endif %}
  168. {%- endif %}
  169. {%- endfor %}
  170. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  171. <template slot-scope="scope">
  172. <el-button
  173. size="mini"
  174. type="text"
  175. icon="el-icon-edit"
  176. @click="handleUpdate(scope.row)"
  177. v-hasPermi="['{{ table.module_name }}:{{ table.business_name }}:edit']"
  178. >修改</el-button>
  179. <el-button
  180. size="mini"
  181. type="text"
  182. icon="el-icon-plus"
  183. @click="handleAdd(scope.row)"
  184. v-hasPermi="['{{ table.module_name }}:{{ table.business_name }}:add']"
  185. >新增</el-button>
  186. <el-button
  187. size="mini"
  188. type="text"
  189. icon="el-icon-delete"
  190. @click="handleDelete(scope.row)"
  191. v-hasPermi="['{{ table.module_name }}:{{ table.business_name }}:remove']"
  192. >删除</el-button>
  193. </template>
  194. </el-table-column>
  195. </el-table>
  196. <!-- 添加或修改{{ table.function_name }}对话框 -->
  197. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  198. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  199. {%- for column in table.columns %}
  200. {%- set field = column.java_field %}
  201. {%- if column.is_insert and column.is_pk != '1' %}
  202. {%- set comment = column.column_comment %}
  203. {%- if '(' in comment or '(' in comment %}
  204. {%- if '(' in comment %}
  205. {%- set comment = comment.split('(')[0] %}
  206. {%- elif '(' in comment %}
  207. {%- set comment = comment.split('(')[0] %}
  208. {%- endif %}
  209. {%- endif %}
  210. {%- set dict_type = column.dict_type if column.dict_type else '' %}
  211. {%- if table.tree_parent_code and (underscore(column.java_field) == underscore(table.tree_parent_code) or column.java_field == table.tree_parent_code) %}
  212. <el-form-item label="{{ comment }}" prop="{{ underscore(table.tree_parent_code) }}">
  213. <treeselect v-model="form.{{ underscore(table.tree_parent_code) }}" :options="{{ table.business_name }}Options" :normalizer="normalizer" placeholder="请选择{{ comment }}" />
  214. </el-form-item>
  215. {%- elif column.html_type == 'input' %}
  216. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  217. <el-input v-model="form.{{ underscore(field) }}" placeholder="请输入{{ comment }}" />
  218. </el-form-item>
  219. {%- elif column.html_type == 'imageUpload' %}
  220. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  221. <image-upload v-model="form.{{ underscore(field) }}"/>
  222. </el-form-item>
  223. {%- elif column.html_type == 'fileUpload' %}
  224. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  225. <file-upload v-model="form.{{ underscore(field) }}"/>
  226. </el-form-item>
  227. {%- elif column.html_type == 'editor' %}
  228. <el-form-item label="{{ comment }}">
  229. <editor v-model="form.{{ underscore(field) }}" :min-height="192"/>
  230. </el-form-item>
  231. {%- elif column.html_type == 'select' and dict_type != '' %}
  232. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  233. <el-select v-model="form.{{ underscore(field) }}" placeholder="请选择{{ comment }}">
  234. <el-option
  235. v-for="dict in dict.type.{{ dict_type }}"
  236. :key="dict.value"
  237. :label="dict.label"
  238. {%- if column.java_type == 'Integer' or column.java_type == 'Long' %}
  239. :value="parseInt(dict.value)"
  240. {%- else %}
  241. :value="dict.value"
  242. {%- endif %}
  243. ></el-option>
  244. </el-select>
  245. </el-form-item>
  246. {%- elif column.html_type == 'select' and dict_type == '' %}
  247. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  248. <el-select v-model="form.{{ underscore(field) }}" placeholder="请选择{{ comment }}">
  249. <el-option label="请选择字典生成" value="" />
  250. </el-select>
  251. </el-form-item>
  252. {%- elif column.html_type == 'checkbox' and dict_type != '' %}
  253. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  254. <el-checkbox-group v-model="form.{{ underscore(field) }}">
  255. <el-checkbox
  256. v-for="dict in dict.type.{{ dict_type }}"
  257. :key="dict.value"
  258. :label="dict.value">
  259. {{ "{{dict.label}}" }}
  260. </el-checkbox>
  261. </el-checkbox-group>
  262. </el-form-item>
  263. {%- elif column.html_type == 'checkbox' and dict_type == '' %}
  264. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  265. <el-checkbox-group v-model="form.{{ underscore(field) }}">
  266. <el-checkbox>请选择字典生成</el-checkbox>
  267. </el-checkbox-group>
  268. </el-form-item>
  269. {%- elif column.html_type == 'radio' and dict_type != '' %}
  270. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  271. <el-radio-group v-model="form.{{ underscore(field) }}">
  272. <el-radio
  273. v-for="dict in dict.type.{{ dict_type }}"
  274. :key="dict.value"
  275. {%- if column.java_type == 'Integer' or column.java_type == 'Long' %}
  276. :label="parseInt(dict.value)"
  277. {%- else %}
  278. :label="dict.value"
  279. {%- endif %}
  280. >{{ "{{dict.label}}" }}</el-radio>
  281. </el-radio-group>
  282. </el-form-item>
  283. {%- elif column.html_type == 'radio' and dict_type == '' %}
  284. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  285. <el-radio-group v-model="form.{{ underscore(field) }}">
  286. <el-radio label="1">请选择字典生成</el-radio>
  287. </el-radio-group>
  288. </el-form-item>
  289. {%- elif column.html_type == 'datetime' %}
  290. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  291. <el-date-picker clearable
  292. v-model="form.{{ underscore(field) }}"
  293. type="date"
  294. value-format="yyyy-MM-dd"
  295. placeholder="选择{{ comment }}">
  296. </el-date-picker>
  297. </el-form-item>
  298. {%- elif column.html_type == 'textarea' %}
  299. <el-form-item label="{{ comment }}" prop="{{ underscore(field) }}">
  300. <el-input v-model="form.{{ underscore(field) }}" type="textarea" placeholder="请输入内容" />
  301. </el-form-item>
  302. {%- endif %}
  303. {%- endif %}
  304. {%- endfor %}
  305. </el-form>
  306. <div slot="footer" class="dialog-footer">
  307. <el-button type="primary" @click="submitForm">确 定</el-button>
  308. <el-button @click="cancel">取 消</el-button>
  309. </div>
  310. </el-dialog>
  311. </div>
  312. </template>
  313. <script>
  314. import { list{{ table.class_name }}, get{{ table.class_name }}, del{{ table.class_name }}, add{{ table.class_name }}, update{{ table.class_name }} } from "@/api/{{ table.module_name }}/{{ table.business_name }}";
  315. import Treeselect from "@riophae/vue-treeselect";
  316. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  317. {%- set has_file_upload = false %}
  318. {%- for column in table.columns %}
  319. {%- if column.is_list and column.html_type == 'fileUpload' %}
  320. {%- set has_file_upload = true %}
  321. {%- endif %}
  322. {%- endfor %}
  323. {%- if has_file_upload %}
  324. import { getFileName, getFilePath } from '@/utils/ruoyi'
  325. {%- endif %}
  326. export default {
  327. name: "{{ table.class_name }}",
  328. {%- set dicts_list = [] %}
  329. {%- for column in table.columns %}
  330. {%- if column.dict_type and column.dict_type != '' %}
  331. {%- if column.dict_type not in dicts_list %}
  332. {%- set _ = dicts_list.append(column.dict_type) %}
  333. {%- endif %}
  334. {%- endif %}
  335. {%- endfor %}
  336. {%- if dicts_list|length > 0 %}
  337. dicts: [{%- for dict_type in dicts_list %}'{{ dict_type }}'{%- if not loop.last %}, {% endif %}{%- endfor %}],
  338. {%- endif %}
  339. components: {
  340. Treeselect
  341. },
  342. data() {
  343. return {
  344. //表格展示列
  345. columns: [
  346. {%- for column in table.columns %}
  347. {%- set comment = column.column_comment %}
  348. {%- if '(' in comment or '(' in comment %}
  349. {%- if '(' in comment %}
  350. {%- set comment = comment.split('(')[0] %}
  351. {%- elif '(' in comment %}
  352. {%- set comment = comment.split('(')[0] %}
  353. {%- endif %}
  354. {%- endif %}
  355. {%- if column.is_pk == '1' %}
  356. {%- elif column.is_list and column.list_index is not none %}
  357. { key: {{ column.list_index }}, label: '{{ comment }}', visible: true }{% if not loop.last %},{% endif %}
  358. {%- endif %}
  359. {%- endfor %}
  360. ],
  361. // 遮罩层
  362. loading: true,
  363. // 显示搜索条件
  364. showSearch: true,
  365. // {{ table.function_name }}表格数据
  366. {{ table.business_name }}List: [],
  367. // {{ table.function_name }}树选项
  368. {{ table.business_name }}Options: [],
  369. // 弹出层标题
  370. title: "",
  371. // 是否显示弹出层
  372. open: false,
  373. // 是否展开,默认全部展开
  374. isExpandAll: true,
  375. // 重新渲染表格状态
  376. refreshTable: true,
  377. {%- for column in table.columns %}
  378. {%- if column.html_type == 'datetime' and column.query_type == 'BETWEEN' %}
  379. {%- set attr_name = capitalize_first(column.java_field) %}
  380. {%- set comment = column.column_comment %}
  381. {%- if '(' in comment or '(' in comment %}
  382. {%- if '(' in comment %}
  383. {%- set comment = comment.split('(')[0] %}
  384. {%- elif '(' in comment %}
  385. {%- set comment = comment.split('(')[0] %}
  386. {%- endif %}
  387. {%- endif %}
  388. // {{ comment }}时间范围
  389. daterange{{ attr_name }}: [],
  390. {%- endif %}
  391. {%- endfor %}
  392. // 查询参数
  393. queryParams: {
  394. {%- set query_cols = [] %}
  395. {%- for column in table.columns %}
  396. {%- if column.is_query %}
  397. {%- set _ = query_cols.append(column) %}
  398. {%- endif %}
  399. {%- endfor %}
  400. {%- for column in query_cols %}
  401. {{ underscore(column.java_field) }}: null{% if not loop.last %},{% endif %}
  402. {%- endfor %}
  403. },
  404. // 表单参数
  405. form: {},
  406. // 表单校验
  407. rules: {
  408. {%- set required_cols = [] %}
  409. {%- for column in table.columns %}
  410. {%- if column.is_required == '1' %}
  411. {%- set _ = required_cols.append(column) %}
  412. {%- endif %}
  413. {%- endfor %}
  414. {%- for column in required_cols %}
  415. {%- set comment = column.column_comment %}
  416. {%- if '(' in comment or '(' in comment %}
  417. {%- if '(' in comment %}
  418. {%- set comment = comment.split('(')[0] %}
  419. {%- elif '(' in comment %}
  420. {%- set comment = comment.split('(')[0] %}
  421. {%- endif %}
  422. {%- endif %}
  423. {{ underscore(column.java_field) }}: [
  424. { required: true, message: "{{ comment }}不能为空", trigger: {% if column.html_type == 'select' or column.html_type == 'radio' %}"change"{% else %}"blur"{% endif %} }
  425. ]{% if not loop.last %},{% endif %}
  426. {%- endfor %}
  427. }
  428. };
  429. },
  430. created() {
  431. this.getList();
  432. },
  433. methods: {
  434. /** 查询{{ table.function_name }}列表 */
  435. getList() {
  436. this.loading = true;
  437. {%- set has_datetime_between = false %}
  438. {%- for column in table.columns %}
  439. {%- if column.html_type == 'datetime' and column.query_type == 'BETWEEN' %}
  440. {%- if not has_datetime_between %}
  441. this.queryParams.params = {};
  442. {%- set has_datetime_between = true %}
  443. {%- endif %}
  444. {%- set attr_name = capitalize_first(column.java_field) %}
  445. if (null != this.daterange{{ attr_name }} && '' != this.daterange{{ attr_name }}) {
  446. this.queryParams.params["begin{{ attr_name }}"] = this.daterange{{ attr_name }}[0];
  447. this.queryParams.params["end{{ attr_name }}"] = this.daterange{{ attr_name }}[1];
  448. }
  449. {%- endif %}
  450. {%- endfor %}
  451. list{{ table.class_name }}(this.queryParams).then(response => {
  452. const list = Array.isArray(response && response.data) ? response.data : (Array.isArray(response && response.rows) ? response.rows : []);
  453. this.{{ table.business_name }}List = this.handleTree(list, "{% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %}", "{% if table.tree_parent_code %}{{ table.tree_parent_code }}{% else %}parent_id{% endif %}");
  454. this.loading = false;
  455. });
  456. },
  457. {%- if has_file_upload %}
  458. getFilePath,
  459. getFileName,
  460. {%- endif %}
  461. /** 转换{{ table.function_name }}数据结构 */
  462. normalizer(node) {
  463. if (node.children && !node.children.length) {
  464. delete node.children;
  465. }
  466. return {
  467. id: node.{% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %},
  468. label: node.{% if table.tree_name %}{{ table.tree_name }}{% else %}name{% endif %},
  469. children: node.children
  470. };
  471. },
  472. /** 查询{{ table.function_name }}下拉树结构 */
  473. getTreeselect() {
  474. list{{ table.class_name }}().then(response => {
  475. this.{{ table.business_name }}Options = [];
  476. const data = { {% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %}: 0, {% if table.tree_name %}{{ table.tree_name }}{% else %}name{% endif %}: '顶级节点', children: [] };
  477. const list = Array.isArray(response && response.data) ? response.data : (Array.isArray(response && response.rows) ? response.rows : []);
  478. data.children = this.handleTree(list, "{% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %}", "{% if table.tree_parent_code %}{{ table.tree_parent_code }}{% else %}parent_id{% endif %}");
  479. this.{{ table.business_name }}Options.push(data);
  480. });
  481. },
  482. // 取消按钮
  483. cancel() {
  484. this.open = false;
  485. this.reset();
  486. },
  487. // 表单重置
  488. reset() {
  489. this.form = {
  490. {%- for column in table.columns %}
  491. {%- if column.html_type == 'checkbox' %}
  492. {{ underscore(column.java_field) }}: []
  493. {%- else %}
  494. {{ underscore(column.java_field) }}: null
  495. {%- endif %}{% if not loop.last %},{% endif %}
  496. {%- endfor %}
  497. };
  498. this.resetForm("form");
  499. },
  500. /** 搜索按钮操作 */
  501. handleQuery() {
  502. this.getList();
  503. },
  504. /** 重置按钮操作 */
  505. resetQuery() {
  506. {%- for column in table.columns %}
  507. {%- if column.html_type == 'datetime' and column.query_type == 'BETWEEN' %}
  508. {%- set attr_name = capitalize_first(column.java_field) %}
  509. this.daterange{{ attr_name }} = [];
  510. {%- endif %}
  511. {%- endfor %}
  512. this.resetForm("queryForm");
  513. this.handleQuery();
  514. },
  515. /** 新增按钮操作 */
  516. handleAdd(row) {
  517. this.reset();
  518. this.getTreeselect();
  519. if (row != null && row.{% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %}) {
  520. this.form.{% if table.tree_parent_code %}{{ underscore(table.tree_parent_code) }}{% else %}parent_id{% endif %} = row.{% if table.tree_code %}{{ table.tree_code }}{% else %}id{% endif %};
  521. } else {
  522. this.form.{% if table.tree_parent_code %}{{ underscore(table.tree_parent_code) }}{% else %}parent_id{% endif %} = 0;
  523. }
  524. this.open = true;
  525. this.title = "添加{{ table.function_name }}";
  526. },
  527. /** 展开/折叠操作 */
  528. toggleExpandAll() {
  529. this.refreshTable = false;
  530. this.isExpandAll = !this.isExpandAll;
  531. this.$nextTick(() => {
  532. this.refreshTable = true;
  533. });
  534. },
  535. /** 修改按钮操作 */
  536. handleUpdate(row) {
  537. this.reset();
  538. this.getTreeselect();
  539. if (row != null) {
  540. this.form.{% if table.tree_parent_code %}{{ underscore(table.tree_parent_code) }}{% else %}parent_id{% endif %} = row.{% if table.tree_parent_code %}{{ underscore(table.tree_parent_code) }}{% else %}parent_id{% endif %};
  541. }
  542. get{{ table.class_name }}(row.{% if table.pk_column %}{{ underscore(table.pk_column.java_field) }}{% else %}id{% endif %}).then(response => {
  543. this.form = response.data;
  544. {%- for column in table.columns %}
  545. {%- if column.html_type == 'checkbox' %}
  546. this.form.{{ underscore(column.java_field) }} = this.form.{{ underscore(column.java_field) }}.split(",");
  547. {%- endif %}
  548. {%- endfor %}
  549. this.open = true;
  550. this.title = "修改{{ table.function_name }}";
  551. });
  552. },
  553. /** 提交按钮 */
  554. submitForm() {
  555. this.$refs["form"].validate(valid => {
  556. if (valid) {
  557. {%- for column in table.columns %}
  558. {%- if column.html_type == 'checkbox' %}
  559. this.form.{{ underscore(column.java_field) }} = this.form.{{ underscore(column.java_field) }}.join(",");
  560. {%- endif %}
  561. {%- endfor %}
  562. if (this.form.{% if table.pk_column %}{{ underscore(table.pk_column.java_field) }}{% else %}id{% endif %} != null) {
  563. update{{ table.class_name }}(this.form).then(response => {
  564. this.$modal.msgSuccess("修改成功");
  565. this.open = false;
  566. this.getList();
  567. });
  568. } else {
  569. add{{ table.class_name }}(this.form).then(response => {
  570. this.$modal.msgSuccess("新增成功");
  571. this.open = false;
  572. this.getList();
  573. });
  574. }
  575. }
  576. });
  577. },
  578. /** 删除按钮操作 */
  579. handleDelete(row) {
  580. this.$modal.confirm('是否确认删除{{ table.function_name }}编号为"' + row.{% if table.pk_column %}{{ underscore(table.pk_column.java_field) }}{% else %}id{% endif %} + '"的数据项?').then(function() {
  581. return del{{ table.class_name }}(row.{% if table.pk_column %}{{ underscore(table.pk_column.java_field) }}{% else %}id{% endif %});
  582. }).then(() => {
  583. this.getList();
  584. this.$modal.msgSuccess("删除成功");
  585. }).catch(() => {});
  586. }
  587. }
  588. };
  589. </script>