index.tpl2 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. {[range $index, $item := .Columns]}{[if eq $item.IsQuery "1"]}{[if eq $item.HtmlType "input"]}
  5. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  6. <el-input
  7. v-model="queryParams.{[$item.ColumnNameLower]}"
  8. placeholder="请输入{[$item.ColumnComment]}"
  9. clearable
  10. size="small"
  11. @keyup.enter.native="handleQuery"
  12. />
  13. </el-form-item>
  14. {[else if or (eq $item.HtmlType "select") (eq $item.HtmlType "switch") ]}
  15. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  16. <el-select v-model="queryParams.{[$item.ColumnNameLower]}" placeholder="{[$item.ColumnComment]}" clearable size="small">
  17. <el-option
  18. v-for="dict in {[$item.ColumnNameLower]}Options"
  19. {[if eq $item.Source "2"]}
  20. :key="dict.id"
  21. :label="dict.title"
  22. :value="dict.id"
  23. {[else]}
  24. :key="dict.dictValue"
  25. :label="dict.dictLabel"
  26. :value="dict.dictValue"{[end]}
  27. />
  28. </el-select>
  29. </el-form-item>{[else if eq $item.HtmlType "treeSelect"]}
  30. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  31. <treeselect
  32. v-model="queryParams.{[$item.ColumnNameLower]}"
  33. :options="{[$item.ColumnNameLower]}Options"
  34. :normalizer="normalizer"
  35. :show-count="true"
  36. placeholder="选择{[$item.ColumnComment]}"
  37. />
  38. </el-form-item>{[else if eq $item.HtmlType "radio"]}
  39. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  40. <el-radio-group v-model="queryParams.{[$item.ColumnNameLower]}">
  41. <el-radio
  42. v-for="dict in {[$item.ColumnNameLower]}Options"
  43. :key="dict.dictValue"
  44. :label="dict.dictValue"
  45. >{{ dict.dictLabel }}
  46. </el-radio>
  47. </el-radio-group>
  48. </el-form-item>
  49. {[else if eq $item.HtmlType "textarea"]}
  50. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  51. <el-input v-model="queryParams.{[$item.ColumnNameLower]}" type="textarea" placeholder="请输入{[$item.ColumnComment]}" />
  52. </el-form-item>
  53. {[else if eq $item.HtmlType "datetime"]}
  54. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  55. <DatePicker
  56. v-model="queryParams.{[$item.ColumnNameLower]}"
  57. placeholder="选择日期"
  58. />
  59. </el-form-item>
  60. {[else if eq $item.HtmlType "editor"]}
  61. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  62. <editor v-model="queryParams.{[$item.ColumnNameLower]}" :min-height="192"/>
  63. </el-form-item>
  64. {[else]}
  65. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  66. <el-input
  67. v-model="queryParams.{[$item.ColumnNameLower]}"
  68. placeholder="请输入{[$item.ColumnComment]}"
  69. clearable
  70. size="small"
  71. @keyup.enter.native="handleQuery"
  72. />
  73. </el-form-item>{[end]}{[end]}{[end]}
  74. <el-form-item>
  75. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  76. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  77. </el-form-item>
  78. </el-form>
  79. <el-divider v-if="showSearch"></el-divider>
  80. <el-row :gutter="10" class="mb8">
  81. <el-col :span="1.5">
  82. <el-button
  83. type="primary"
  84. plain
  85. icon="el-icon-plus"
  86. size="mini"
  87. @click="handleAdd"
  88. v-hasPermi="['{[.ModuleName]}:{[.ClassNameCamel]}:add']"
  89. >新增</el-button>
  90. </el-col>
  91. <el-col :span="1.5">
  92. <el-button
  93. type="primary"
  94. plain
  95. icon="el-icon-edit"
  96. size="mini"
  97. :disabled="single"
  98. @click="handleUpdate"
  99. v-hasPermi="['{[.ModuleName]}:{[.ClassNameCamel]}:edit']"
  100. >修改</el-button>
  101. </el-col>
  102. <el-col :span="1.5">
  103. <el-button
  104. type="danger"
  105. plain
  106. icon="el-icon-delete"
  107. size="mini"
  108. :disabled="multiple"
  109. @click="handleDelete"
  110. v-hasPermi="['{[.ModuleName]}:{[.ClassNameCamel]}:remove']"
  111. >删除</el-button>
  112. </el-col>
  113. <el-col :span="1.5">
  114. <el-button
  115. type="primary"
  116. plain
  117. icon="el-icon-download"
  118. size="mini"
  119. :loading="exportLoading"
  120. @click="handleExport"
  121. v-hasPermi="['{[.ModuleName]}:{[.ClassNameCamel]}:export']"
  122. >导出</el-button>
  123. </el-col>
  124. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  125. </el-row>
  126. <el-table v-loading="loading" {[if eq .TplCategory "tree" ]} row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" {[end]}:data="{[.ClassNameCamel]}List" @selection-change="handleSelectionChange">
  127. <el-table-column type="selection" width="55" align="center" />{[range $index, $item := .Columns]}{[if eq $item.IsList "1"]}{[if eq $item.HtmlType "input"]}
  128. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" />{[else if eq $item.HtmlType "select"]}
  129. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" :formatter="{[$item.ColumnNameLower]}Format" />{[else if eq $item.HtmlType "treeSelect"]}
  130. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" :formatter="{[$item.ColumnNameLower]}Format" />{[else if eq $item.HtmlType "radio"]}
  131. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" :formatter="{[$item.ColumnNameLower]}Format" />{[else if eq $item.HtmlType "textarea"]}
  132. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" />{[else if eq $item.HtmlType "imageUpload"]}
  133. <el-table-column prop="icon" label="等级图标">
  134. <template slot-scope="scope">
  135. <a :href="formatUrl(scope.row.{[$item.ColumnNameLower]})" style="color: #42b983" target="_blank">
  136. <img :src="formatUrl(scope.row.{[$item.ColumnNameLower]})" v-default-img="$store.state.settings.defaultUrl" alt="点击打开" class="el-avatar"></a>
  137. </template>
  138. </el-table-column>{[else if eq $item.HtmlType "datetime"]}
  139. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" width="180">
  140. <template slot-scope="scope">
  141. <span>{{ $moment(scope.row.{[$item.ColumnNameLower]}).format('YYYY-MM-DD') }}</span>
  142. </template>
  143. </el-table-column>{[else if eq $item.HtmlType "editor"]}
  144. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" /> {[else ]}
  145. <el-table-column label="{[$item.ColumnComment]}" align="center" prop="{[$item.ColumnNameLower]}" />{[end]}{[end]}{[end]}
  146. <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
  147. <template slot-scope="scope">
  148. <el-button
  149. size="mini"
  150. type="text"
  151. icon="el-icon-edit"
  152. @click="handleUpdate(scope.row)"
  153. v-hasPermi="['{[.ModuleName]}:{[.ClassNameCamel]}:edit']"
  154. >修改</el-button>
  155. <el-button
  156. size="mini"
  157. type="text"
  158. icon="el-icon-delete"
  159. @click="handleDelete(scope.row)"
  160. v-hasPermi="['{[.ModuleName]}:{[.ClassNameCamel]}:remove']"
  161. >删除</el-button>
  162. </template>
  163. </el-table-column>
  164. </el-table>
  165. <pagination
  166. v-show="total>0"
  167. :total="total"
  168. :page.sync="queryParams.pageNum"
  169. :limit.sync="queryParams.pageSize"
  170. @pagination="getList"
  171. />
  172. <!-- 添加或修改{[.FunctionName]}对话框 -->
  173. {[if eq .IsDrawer 2]}
  174. <el-drawer
  175. :title="title"
  176. :wrapperClosable="false"
  177. :visible.sync="open"
  178. :size="this.isMobile()?'100%':'40%'"
  179. direction="rtl">
  180. <el-card class="box-card">
  181. {[else]}
  182. <el-dialog :title="title" :visible.sync="open" :width="this.isMobile()?'100%':'40%'" append-to-body>{[end]}
  183. <el-form ref="form" :size="this.$store.getters.size" :model="form" :rules="rules" label-width="80px">
  184. <el-row :gutter="20">{[range $index, $item := .SubColumns]}{[if eq $item.IsEdit "1"]}{[if eq $item.HtmlType "input"]}{[if eq $item.IsRow "1"]}
  185. <el-col :span="24">{[else]}
  186. <el-col :span="{[$.Span]}">{[end]}
  187. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  188. <el-input
  189. v-model="form.{[$item.ColumnNameLower]}"
  190. placeholder="请输入{[$item.ColumnComment]}"
  191. />
  192. </el-form-item>
  193. </el-col>{[else if eq $item.HtmlType "number"]}{[if eq $item.IsRow "1"]}
  194. <el-col :span="24">{[else]}
  195. <el-col :span="{[$.Span]}">{[end]}
  196. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  197. <el-input-number
  198. v-model="form.{[$item.ColumnNameLower]}"
  199. placeholder="请输入{[$item.ColumnComment]}"
  200. />
  201. </el-form-item>
  202. </el-col>{[else if eq $item.HtmlType "select"]}{[if eq $item.IsRow "1"]}
  203. <el-col :span="24">{[else]}
  204. <el-col :span="{[$.Span]}">{[end]}
  205. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  206. <el-select v-model="form.{[$item.ColumnNameLower]}" placeholder="{[$item.ColumnComment]}">
  207. <el-option
  208. v-for="dict in {[$item.ColumnNameLower]}Options"
  209. {[if eq $item.Source "2"]}
  210. :key="dict.id"
  211. :label="dict.label"
  212. :value="dict.id"
  213. {[else]}
  214. :key="dict.dictValue"
  215. :label="dict.dictLabel"
  216. :value="dict.dictValue"{[end]}
  217. />
  218. </el-select>
  219. </el-form-item>
  220. </el-col>{[else if eq $item.HtmlType "switch"]}{[if eq $item.IsRow "1"]}
  221. <el-col :span="24">{[else]}
  222. <el-col :span="{[$.Span]}">{[end]}
  223. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  224. <el-switch
  225. v-model="form.{[$item.ColumnNameLower]}"
  226. :active-value="1"
  227. :inactive-value="2"
  228. active-text="是"
  229. inactive-text="否">
  230. </el-switch>
  231. </el-form-item>
  232. </el-col>{[else if eq $item.HtmlType "treeSelect"]}{[if eq $item.IsRow "1"]}
  233. <el-col :span="24">{[else]}
  234. <el-col :span="{[$.Span]}">{[end]}
  235. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  236. <treeselect
  237. v-model="form.{[$item.ColumnNameLower]}"
  238. :options="{[$item.ColumnNameLower]}Options"
  239. :normalizer="normalizer"
  240. :show-count="true"
  241. placeholder="选择{[$item.ColumnComment]}"
  242. />
  243. </el-form-item>
  244. </el-col>{[else if eq $item.HtmlType "imageUpload"]}{[if eq $item.IsRow "1"]}
  245. <el-col :span="24">{[else]}
  246. <el-col :span="{[$.Span]}">{[end]}
  247. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  248. <image-upload
  249. v-model="form.{[$item.ColumnNameLower]}"
  250. :limit="1"
  251. />
  252. </el-form-item>
  253. </el-col>{[else if eq $item.HtmlType "fileUpload"]}{[if eq $item.IsRow "1"]}
  254. <el-col :span="24">{[else]}
  255. <el-col :span="{[$.Span]}">{[end]}
  256. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  257. <file-upload
  258. v-model="form.{[$item.ColumnNameLower]}"
  259. :limit="1"
  260. />
  261. </el-form-item>
  262. </el-col> {[else if eq $item.HtmlType "radio"]}{[if eq $item.IsRow "1"]}
  263. <el-col :span="24">{[else]}
  264. <el-col :span="{[$.Span]}"> {[end]}
  265. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  266. <el-radio-group v-model="form.{[$item.ColumnNameLower]}">
  267. <el-radio
  268. v-for="dict in {[$item.ColumnNameLower]}Options"
  269. :key="dict.dictValue"
  270. :label="dict.dictValue"
  271. >{{ dict.dictLabel }}
  272. </el-radio>
  273. </el-radio-group>
  274. </el-form-item>
  275. </el-col>{[else if eq $item.HtmlType "textarea"]}{[if eq $item.IsRow "1"]}
  276. <el-col :span="24">{[else]}
  277. <el-col :span="{[$.Span]}">{[end]}
  278. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  279. <el-input v-model="form.{[$item.ColumnNameLower]}" type="textarea" placeholder="请输入{[$item.ColumnComment]}" />
  280. </el-form-item> </el-col>{[else if eq $item.HtmlType "datetime"]}{[if eq $item.IsRow "1"]}
  281. <el-col :span="24">{[else]}
  282. <el-col :span="{[$.Span]}">{[end]}
  283. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  284. <el-date-picker
  285. v-model="form.{[$item.ColumnNameLower]}"
  286. type="date"
  287. placeholder="选择日期">
  288. </el-date-picker>
  289. </el-form-item>
  290. </el-col>{[else if eq $item.HtmlType "editor"]}{[if eq $item.IsRow "1"]}
  291. <el-col :span="24">{[else]}
  292. <el-col :span="{[$.Span]}">{[end]}
  293. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  294. <editor v-model="form.{[$item.ColumnNameLower]}" :min-height="192"/>
  295. </el-form-item>
  296. </el-col>{[else]}{[if eq $item.IsRow "1"]}
  297. <el-col :span="24">{[else]}
  298. <el-col :span="{[$.Span]}">{[end]}
  299. <el-form-item label="{[$item.ColumnComment]}" prop="{[$item.ColumnNameLower]}">
  300. <el-input
  301. v-model="form.{[$item.ColumnNameLower]}"
  302. placeholder="请输入{[$item.ColumnComment]}"
  303. />
  304. </el-form-item>
  305. </el-col> {[end]} {[end]} {[end]}
  306. </el-row>
  307. </el-form>{[if eq .IsDrawer 2]}
  308. </el-card>
  309. <div class="dialog-footer">
  310. <el-button type="primary" @click="submitForm">确 定</el-button>
  311. <el-button @click="cancel">取 消</el-button>
  312. </div>
  313. </el-drawer>{[else]}
  314. <div slot="footer" class="dialog-footer">
  315. <el-button type="primary" @click="submitForm">确 定</el-button>
  316. <el-button @click="cancel">取 消</el-button>
  317. </div>
  318. </el-dialog>{[end]}
  319. </div>
  320. </template>
  321. {[htmlSafe "<script>"]}
  322. import { list{[.ClassNameUpper]}, get{[.ClassNameUpper]}, del{[.ClassNameUpper]}, add{[.ClassNameUpper]}, update{[.ClassNameUpper]}, export{[.ClassNameUpper]} } from "@/api/{[.ModuleName]}/{[toMiddle .ClassNameCamel]}";
  323. import { getToken } from '@/utils/auth'
  324. import axios from 'axios'
  325. import fileDownload from 'js-file-download'
  326. import { Message } from 'element-ui'{[range $index, $item := .Columns]}{[if eq $item.Source "2"]}
  327. import { listAll{[toUpper $item.Menu]} } from "@/api/{[$.ModuleName]}/{[toMiddle $item.Menu]}";{[end]}{[end]}{[if eq .IsHaveTree "1"]}
  328. import Treeselect from '@riophae/vue-treeselect'
  329. import '@riophae/vue-treeselect/dist/vue-treeselect.css'{[end]}
  330. export default {
  331. name: "{[.ClassNameUpper]}",
  332. components: {{[if eq .IsHaveTree "1"]}Treeselect{[end]}},
  333. data() {
  334. return {
  335. // 遮罩层
  336. loading: true,
  337. // 导出遮罩层
  338. exportLoading: false,
  339. // 选中数组
  340. ids: [],
  341. // 非单个禁用
  342. single: true,
  343. // 非多个禁用
  344. multiple: true,
  345. // 显示搜索条件
  346. showSearch: true,
  347. // 总条数
  348. total: 0,
  349. // {[.FunctionName]}表格数据
  350. {[.ClassNameCamel]}List: [],
  351. // 弹出层标题
  352. title: "",{[range $index, $item := .Columns]}{[if eq $item.HtmlType "treeSelect"]}
  353. //{[$item.ColumnComment]}存放原始列表数据
  354. {[$item.ColumnNameLower]}List: [],
  355. {[end]}{[end]}
  356. // 是否显示弹出层
  357. open: false,{[range $index, $item := .Columns]}{[if eq $item.Source "1"]}
  358. //{[$item.ColumnComment]}数据字典
  359. {[$item.ColumnNameLower]}Options: [],{[else if eq $item.Source "2"]}
  360. //{[$item.ColumnComment]}数据菜单
  361. {[$item.ColumnNameLower]}Options: [],{[else if eq $item.Source "3"]}
  362. //{[$item.ColumnComment]}本地数据
  363. {[if eq $item.GoType "string"]}
  364. {[$item.ColumnNameLower]}Options: [ {[range $i, $it := $item.Data]}
  365. {dictValue:'{[$it.Id]}',dictLabel:"{[$it.Label]}"}{[if not (isLast $i (len $item.Data))]},{[end]}{[end]}],
  366. {[else]}
  367. {[$item.ColumnNameLower]}Options: [ {[range $i, $it := $item.Data]}
  368. {dictValue:{[$it.Id]},dictLabel:"{[$it.Label]}"}{[if not (isLast $i (len $item.Data))]},{[end]}{[end]}],
  369. {[end]}{[end]}{[end]}
  370. // 查询参数
  371. queryParams: {{[range $index, $item := .Columns]}{[if eq $item.IsQuery "1"]}
  372. //{[$item.ColumnComment]}查询字段
  373. {[$item.ColumnNameLower]}: undefined,{[end]}{[end]}
  374. pageNum: 1,
  375. pageSize: 10
  376. },
  377. // 表单参数
  378. form: {},
  379. // 表单校验
  380. rules: {{[range $index, $item := .Columns]}{[if eq $item.IsRequired "1"]}
  381. {[$item.ColumnNameLower]}: [
  382. { required: true, message: "{[$item.ColumnComment]}不能为空", trigger: "blur" }
  383. ],{[end]}{[end]}
  384. }
  385. };
  386. },
  387. created() {
  388. //获取列表数据
  389. this.getList();{[range $index, $item := .Columns]}{[if eq $item.Source "1"]}
  390. //获取{[$item.ColumnComment]}数据字典
  391. this.getDicts("{[$item.DictType]}").then(response => {
  392. this.{[$item.ColumnNameLower]}Options = response.data;
  393. });{[else if eq $item.Source "2"]}
  394. //获取{[$item.ColumnComment]}菜单
  395. this.getList{[$item.ColumnNameUpper]}();
  396. {[end]}{[end]}
  397. },
  398. methods: { {[range $index, $item := .Columns]}{[if eq $item.Source "2"]}
  399. //查询{[$item.ColumnComment]}菜单
  400. getList{[$item.ColumnNameUpper]}() {
  401. listAll{[toUpper $item.Menu]}().then(response =>{ {[if eq $item.HtmlType "select"]}
  402. this.{[$item.ColumnNameLower]}Options = response.data;{[else if eq $item.HtmlType "treeSelect"]}
  403. // response.data.push({ id: 0, menuName: '顶级节点', children: [] });
  404. this.{[$item.ColumnNameLower]}List= Object.assign([],response.data);
  405. this.{[$item.ColumnNameLower]}List.push({ id: 0, menuName: '顶级节点', children: []})
  406. const root = { id: 0, label: '顶级节点', children: [] }
  407. root.children = this.handleTree(response.data, 'id')
  408. this.{[$item.ColumnNameLower]}Options.push(root){[end]}
  409. });
  410. },{[end]}{[end]}
  411. /** 查询{[.FunctionName]}列表 */
  412. getList() {
  413. this.loading = true;
  414. {[if eq .TplCategory "tree" ]}
  415. listAll{[.ClassNameUpper]}(this.queryParams).then(response => {{[if eq .TplCategory "tree" ]}
  416. this.{[.ClassNameCamel]}List = this.handleTree(response.data, 'id');{[else]}
  417. this.{[.ClassNameCamel]}List = response.data.list;
  418. this.total = response.data.total;{[end]}
  419. this.loading = false;
  420. });
  421. {[else]}
  422. list{[.ClassNameUpper]}(this.queryParams).then(response => {{[if eq .TplCategory "tree" ]}
  423. this.{[.ClassNameCamel]}List = this.handleTree(response.data, 'id');{[else]}
  424. this.{[.ClassNameCamel]}List = response.data.list;
  425. this.total = response.data.total;{[end]}
  426. this.loading = false;
  427. });
  428. {[end]}
  429. },{[range $index, $item := .Columns]}{[if or (eq $item.Source "1") (eq $item.Source "3")]}
  430. //获取{[$item.ColumnComment]}字典翻译
  431. {[.ColumnNameLower]}Format(row, column) {
  432. return this.selectDictLabel(this.{[.ColumnNameLower]}Options, row.{[.ColumnNameLower]});
  433. },{[end]}{[if eq $item.Source "2"]}
  434. //获取{[$item.ColumnComment]}字典翻译
  435. {[.ColumnNameLower]}Format(row, column){ {[if eq $item.HtmlType "treeSelect" ]}
  436. return this.selectLabel(this.{[.ColumnNameLower]}List, row.{[.ColumnNameLower]});{[else]}
  437. return this.selectLabel(this.{[.ColumnNameLower]}Options, row.{[.ColumnNameLower]});{[end]}
  438. },{[end]}{[end]}
  439. // 取消按钮
  440. cancel() {
  441. this.open = false;
  442. this.reset();
  443. },
  444. // 表单重置
  445. reset() {
  446. this.form = {{[range $index, $item := .Columns]}{[if eq $item.IsEdit "1"]}{[if $item.ColumnDefault]}{[if eq $item.GoType "string"]}
  447. {[$item.ColumnNameLower]}: '{[$item.ColumnDefault]}',{[else]}
  448. {[$item.ColumnNameLower]}: {[$item.ColumnDefault]},{[end]}{[else]}
  449. //{[$item.ColumnComment]}字段
  450. {[$item.ColumnNameLower]}: undefined,{[end]} {[end]}{[end]}
  451. };
  452. this.resetForm("form");
  453. },
  454. /** 搜索按钮操作 */
  455. handleQuery() {
  456. this.queryParams.pageNum = 1;
  457. this.getList();
  458. },
  459. /** 重置按钮操作 */
  460. resetQuery() {
  461. this.resetForm("queryForm");
  462. this.handleQuery();
  463. },
  464. // 多选框选中数据
  465. handleSelectionChange(selection) {
  466. this.ids = selection.map(item => item.id)
  467. this.single = selection.length!=1
  468. this.multiple = !selection.length
  469. },
  470. /** 新增按钮操作 */
  471. handleAdd() {
  472. this.reset();
  473. this.open = true;
  474. this.title = "添加{[.FunctionName]}";
  475. },
  476. /** 修改按钮操作 */
  477. handleUpdate(row) {
  478. this.reset();
  479. const id = row.id || this.ids
  480. get{[.ClassNameUpper]}(id).then(response => {
  481. this.form = response.data;
  482. this.open = true;
  483. this.title = "修改{[.FunctionName]}";
  484. });
  485. },
  486. /** 提交按钮 */
  487. submitForm: function() {
  488. this.$refs["form"].validate(valid => {
  489. if (valid) {
  490. if (this.form.id != undefined) {
  491. update{[.ClassNameUpper]}(this.form).then(response => {
  492. this.msgSuccess("修改成功");
  493. this.open = false;
  494. this.getList();
  495. });
  496. } else {
  497. add{[.ClassNameUpper]}(this.form).then(response => {
  498. this.msgSuccess("新增成功");
  499. this.open = false;
  500. this.getList();
  501. });
  502. }
  503. }
  504. });
  505. },
  506. /** 删除按钮操作 */
  507. handleDelete(row) {
  508. const ids = row.id || this.ids;
  509. this.$confirm('是否确认删除{[.FunctionName]}编号为"' + ids + '"的数据项?', "警告", {
  510. confirmButtonText: "确定",
  511. cancelButtonText: "取消",
  512. type: "warning"
  513. }).then(function() {
  514. return del{[.ClassNameUpper]}(ids);
  515. }).then(() => {
  516. this.getList();
  517. this.msgSuccess("删除成功");
  518. }).catch(() => {});
  519. },{[if eq .IsHaveTree "1"]}
  520. /** 转换数据结构 */
  521. normalizer(node) {
  522. if (node.children && !node.children.length) {
  523. delete node.children
  524. }
  525. return {
  526. id: node.id,
  527. label: node.label,
  528. children: node.children
  529. }
  530. },{[end]}
  531. /** 导出按钮操作 */
  532. handleExport() {
  533. const queryParams = this.queryParams;
  534. this.$confirm('是否确认导出所有{[.FunctionName]}数据项?', "警告", {
  535. confirmButtonText: "确定",
  536. cancelButtonText: "取消",
  537. type: "warning"
  538. }).then(() => {
  539. this.exportLoading = true
  540. axios.get(process.env.VUE_APP_BASE_API + '/api/v1/{[toLower .ClassNameLower]}/export',
  541. {
  542. headers: {
  543. 'Authorization': 'Bearer ' + getToken()
  544. },
  545. responseType: 'blob',
  546. params: queryParams
  547. }
  548. ).then(res => {
  549. if (!res.headers.filename){
  550. Message({
  551. message: "演示模式,不允许操作",
  552. type: 'error'
  553. })
  554. this.exportLoading = false
  555. return
  556. }
  557. fileDownload(res.data,res.headers.filename)
  558. this.exportLoading = false
  559. })
  560. }).catch(() => {});
  561. }
  562. }
  563. };
  564. {[htmlSafe "</script>"]}