index.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. <template>
  2. <div>
  3. <el-row>
  4. <el-col :span="5">
  5. <div class="box">
  6. <el-scrollbar>
  7. <basic-container>
  8. <avue-tree :option="treeOption" :data="bfeesdefineType" @node-click="nodeClick" />
  9. </basic-container>
  10. </el-scrollbar>
  11. </div>
  12. </el-col>
  13. <el-col :span="19">
  14. <basic-container>
  15. <avue-crud :option="option"
  16. :table-loading="loading"
  17. :data="data"
  18. :page.sync="page"
  19. :permission="permissionList"
  20. id="out-table"
  21. :header-cell-class-name="headerClassName"
  22. :before-open="beforeOpen"
  23. v-model="form"
  24. ref="crud"
  25. @row-update="rowUpdate"
  26. @row-save="rowSave"
  27. @row-del="rowDel"
  28. @search-change="searchChange"
  29. @search-reset="searchReset"
  30. @selection-change="selectionChange"
  31. @current-change="currentChange"
  32. @size-change="sizeChange"
  33. @refresh-change="refreshChange"
  34. @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 302)"
  35. @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 302)"
  36. @on-load="onLoad">
  37. <template slot="menuLeft">
  38. <el-button type="danger"
  39. size="small"
  40. icon="el-icon-delete"
  41. plain
  42. @click="handleDelete">删 除
  43. </el-button>
  44. </template>
  45. </avue-crud>
  46. </basic-container>
  47. </el-col>
  48. </el-row>
  49. </div>
  50. </template>
  51. <script>
  52. import {bfeesList, bfeesDetail, bfeesSubmit, bfeesRemove} from "@/api/iosBasicData/bfees";
  53. import {mapGetters} from "vuex";
  54. import {bfeesdefineList} from "@/api/iosBasicData/bfeesdefine";
  55. import {getDeptLazyTree} from "@/api/basicData/customerInformation";
  56. import {CDParameter, customerParameter} from "@/enums/management-type";
  57. export default {
  58. data() {
  59. return {
  60. // 费用类别数据
  61. bfeesdefineType:[],
  62. treeOption: {
  63. nodeKey: "id",
  64. lazy: true,
  65. treeLoad: function(node, resolve) {
  66. const parentId = node.level === 0 ? 0 : node.data.id;
  67. },
  68. addBtn: false,
  69. menu: false,
  70. size: "small",
  71. props: {
  72. labelText: "标题",
  73. label: "cnName",
  74. value: "value",
  75. children: "children"
  76. }
  77. },
  78. form: {},
  79. query: {},
  80. loading: true,
  81. page: {
  82. pageSize: 10,
  83. currentPage: 1,
  84. total: 0
  85. },
  86. selectionList: [],
  87. option:{},
  88. optionBack: {
  89. height:'auto',
  90. calcHeight: 30,
  91. tip: false,
  92. searchShow: true,
  93. searchMenuSpan: 24,
  94. border: true,
  95. index: true,
  96. viewBtn: true,
  97. selection: true,
  98. dialogClickModal: false,
  99. column: [
  100. {
  101. label: "费用编码",
  102. prop: "code",
  103. search: true,
  104. rules: [{
  105. required: true,
  106. message: "请输入费用编码",
  107. trigger: "blur"
  108. }]
  109. },
  110. {
  111. label: "中文名称",
  112. prop: "cnName",
  113. search: true,
  114. rules: [{
  115. required: true,
  116. message: "请输入中文名称",
  117. trigger: "blur"
  118. }]
  119. },
  120. {
  121. label: "英文名称",
  122. prop: "enName",
  123. search: true,
  124. rules: [{
  125. required: true,
  126. message: "请输入英文名称",
  127. trigger: "blur"
  128. }]
  129. },
  130. {
  131. label: "费用类别",
  132. prop: "feesTypeName",
  133. rules: [{
  134. required: true,
  135. message: "请选择费用类别",
  136. trigger: "blur"
  137. }]
  138. },
  139. {
  140. label: "计量单位",
  141. prop: "unitNo",
  142. rules: [{
  143. required: true,
  144. message: "请输入计量单位",
  145. trigger: "blur"
  146. }]
  147. },
  148. {
  149. label: "币别",
  150. prop: "curNo",
  151. rules: [{
  152. required: true,
  153. message: "请输入币别",
  154. trigger: "blur"
  155. }]
  156. },
  157. {
  158. label: "收付",
  159. prop: "dc",
  160. type:'select',
  161. dicData:[{
  162. label:'收',
  163. value:'D'
  164. },{
  165. label:'付',
  166. value:'C'
  167. }],
  168. rules: [{
  169. required: true,
  170. message: "请输入收付",
  171. trigger: "blur"
  172. }]
  173. },
  174. {
  175. label: "财务核算要素 Id",
  176. prop: "accElementId",
  177. hide:true,
  178. display:false,
  179. },
  180. {
  181. label: "财务核算要素名称",
  182. prop: "accElementName",
  183. rules: [{
  184. required: true,
  185. message: "请输入财务核算要素名称",
  186. trigger: "blur"
  187. }]
  188. },
  189. {
  190. label: "科目 Id",
  191. prop: "accId",
  192. hide:true,
  193. display:false,
  194. },
  195. {
  196. label: "科目编号",
  197. prop: "accNo",
  198. rules: [{
  199. required: true,
  200. message: "请输入科目编号",
  201. trigger: "blur"
  202. }]
  203. },
  204. {
  205. label: "科目全称",
  206. prop: "accFullName",
  207. rules: [{
  208. required: true,
  209. message: "请输入科目全称",
  210. trigger: "blur"
  211. }]
  212. },
  213. {
  214. label: "版本",
  215. prop: "version",
  216. hide:true,
  217. display:false,
  218. },
  219. {
  220. label: "状态",
  221. prop: "status",
  222. type:'select',
  223. dicData:[{
  224. label:'启用',
  225. value:0
  226. },{
  227. label:'停用',
  228. value:1
  229. }],
  230. rules: [{
  231. required: true,
  232. message: "请输入状态",
  233. trigger: "blur"
  234. }]
  235. },
  236. {
  237. label: "主键",
  238. prop: "id",
  239. hide:true,
  240. display:false,
  241. },
  242. {
  243. label: "创建人 Id",
  244. prop: "createUser",
  245. hide:true,
  246. display:false,
  247. },
  248. {
  249. label: "创建人",
  250. prop: "createUserName",
  251. display:false,
  252. },
  253. {
  254. label: "创建部门 Id",
  255. prop: "createDept",
  256. hide:true,
  257. display:false,
  258. },
  259. {
  260. label: "创建部门",
  261. prop: "createDeptName",
  262. display:false,
  263. },
  264. {
  265. label: "创建时间",
  266. prop: "createTime",
  267. display:false,
  268. },
  269. {
  270. label: "修改人 Id",
  271. prop: "updateUser",
  272. hide:true,
  273. display:false,
  274. },
  275. {
  276. label: "修改人",
  277. prop: "updateUserName",
  278. display:false,
  279. },
  280. {
  281. label: "修改时间",
  282. prop: "updateTime",
  283. width:160,
  284. display:false,
  285. },
  286. {
  287. label: "是否已删除(0 否 1是)",
  288. prop: "isDeleted",
  289. hide:true,
  290. display:false,
  291. },
  292. {
  293. label: "备注",
  294. prop: "remarks",
  295. span:24,
  296. type: 'textarea',
  297. width: "180",
  298. slot: true,
  299. minRows: 3,
  300. },
  301. ]
  302. },
  303. data: []
  304. };
  305. },
  306. computed: {
  307. ...mapGetters(["permission"]),
  308. permissionList() {
  309. return {
  310. // addBtn: this.vaildData(this.permission.bfees_add, false),
  311. // viewBtn: this.vaildData(this.permission.bfees_view, false),
  312. // delBtn: this.vaildData(this.permission.bfees_delete, false),
  313. // editBtn: this.vaildData(this.permission.bfees_edit, false)
  314. };
  315. },
  316. ids() {
  317. let ids = [];
  318. this.selectionList.forEach(ele => {
  319. ids.push(ele.id);
  320. });
  321. return ids.join(",");
  322. }
  323. },
  324. async created() {
  325. this.option = await this.getColumnData(this.getColumnName(302), this.optionBack);
  326. this.bfeesdefineListfun()
  327. },
  328. methods: {
  329. // 获取费用类别数据
  330. bfeesdefineListfun(){
  331. bfeesdefineList(1,10).then(res=>{
  332. this.bfeesdefineType = res.data.data.records
  333. console.log(res,304)
  334. })
  335. },
  336. nodeClick(data) {
  337. console.log(data,331)
  338. // this.feesTypeId = data.id;
  339. // this.page.currentPage = 1;
  340. // this.onLoad(this.page);
  341. },
  342. rowSave(row, done, loading) {
  343. bfeesSubmit(row).then(() => {
  344. this.onLoad(this.page);
  345. this.$message({
  346. type: "success",
  347. message: "操作成功!"
  348. });
  349. done();
  350. }, error => {
  351. loading();
  352. window.console.log(error);
  353. });
  354. },
  355. rowUpdate(row, index, done, loading) {
  356. bfeesSubmit(row).then(() => {
  357. this.onLoad(this.page);
  358. this.$message({
  359. type: "success",
  360. message: "操作成功!"
  361. });
  362. done();
  363. }, error => {
  364. loading();
  365. console.log(error);
  366. });
  367. },
  368. rowDel(row) {
  369. this.$confirm("确定将选择数据删除?", {
  370. confirmButtonText: "确定",
  371. cancelButtonText: "取消",
  372. type: "warning"
  373. })
  374. .then(() => {
  375. return bfeesRemove(row.id);
  376. })
  377. .then(() => {
  378. this.onLoad(this.page);
  379. this.$message({
  380. type: "success",
  381. message: "操作成功!"
  382. });
  383. });
  384. },
  385. handleDelete() {
  386. if (this.selectionList.length === 0) {
  387. this.$message.warning("请选择至少一条数据");
  388. return;
  389. }
  390. this.$confirm("确定将选择数据删除?", {
  391. confirmButtonText: "确定",
  392. cancelButtonText: "取消",
  393. type: "warning"
  394. })
  395. .then(() => {
  396. return bfeesRemove(this.ids);
  397. })
  398. .then(() => {
  399. this.onLoad(this.page);
  400. this.$message({
  401. type: "success",
  402. message: "操作成功!"
  403. });
  404. this.$refs.crud.toggleSelection();
  405. });
  406. },
  407. beforeOpen(done, type) {
  408. if (["edit", "view"].includes(type)) {
  409. bfeesDetail(this.form.id).then(res => {
  410. this.form = res.data.data;
  411. });
  412. }
  413. done();
  414. },
  415. searchReset() {
  416. this.query = {};
  417. this.onLoad(this.page);
  418. },
  419. searchChange(params, done) {
  420. this.query = params;
  421. this.page.currentPage = 1;
  422. this.onLoad(this.page, params);
  423. done();
  424. },
  425. selectionChange(list) {
  426. this.selectionList = list;
  427. },
  428. selectionClear() {
  429. this.selectionList = [];
  430. this.$refs.crud.toggleSelection();
  431. },
  432. currentChange(currentPage){
  433. this.page.currentPage = currentPage;
  434. },
  435. sizeChange(pageSize){
  436. this.page.pageSize = pageSize;
  437. },
  438. refreshChange() {
  439. this.onLoad(this.page, this.query);
  440. },
  441. onLoad(page, params = {}) {
  442. this.loading = true;
  443. bfeesList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
  444. const data = res.data.data;
  445. this.page.total = data.total;
  446. this.data = data.records;
  447. this.loading = false;
  448. this.selectionClear();
  449. });
  450. },
  451. //自定义列保存
  452. async saveColumnTwo(ref, option, optionBack, code) {
  453. /**
  454. * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
  455. * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
  456. * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
  457. */
  458. const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
  459. if (inSave) {
  460. this.$message.success("保存成功");
  461. //关闭窗口
  462. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  463. }
  464. },
  465. //自定义列重置
  466. async resetColumnTwo(ref, option, optionBack, code) {
  467. this[option] = this[optionBack];
  468. const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
  469. if (inSave) {
  470. this.$message.success("重置成功");
  471. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  472. }
  473. },
  474. // 更改表格颜色
  475. headerClassName(tab){
  476. //颜色间隔
  477. let back = ""
  478. if (tab.columnIndex >= 0 && tab.column.level === 1) {
  479. if (tab.columnIndex % 2 === 0) {
  480. back = "back-one"
  481. } else if (tab.columnIndex % 2 === 1) {
  482. back = "back-two"
  483. }
  484. }
  485. return back;
  486. },
  487. }
  488. };
  489. </script>
  490. <style scoped>
  491. ::v-deep#out-table .back-one {
  492. background: #ecf5ff !important;
  493. }
  494. ::v-deep#out-table .back-two {
  495. background: #ecf5ff !important;
  496. }
  497. </style>