From d44134d06fc57865bc8995972e9035dbb90fd8b9 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 18 七月 2023 15:19:25 +0800
Subject: [PATCH] 7-18整合代码
---
Source/UBCS-WEB/dist/src/mixins/crud.js | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 209 insertions(+), 0 deletions(-)
diff --git a/Source/UBCS-WEB/dist/src/mixins/crud.js b/Source/UBCS-WEB/dist/src/mixins/crud.js
new file mode 100644
index 0000000..0f32858
--- /dev/null
+++ b/Source/UBCS-WEB/dist/src/mixins/crud.js
@@ -0,0 +1,209 @@
+import {mapGetters} from "vuex";
+
+export default (app, option = {}) => {
+ const mixins = {
+ data() {
+ return {
+ selectionList: [],
+ data: [],
+ form: {},
+ params: {},
+ loading: false,
+ api: require(`@/api/${option.name}`),
+ option: require(`@/option/${option.name}`).default,
+ page: {
+ pageSizes: [10, 30, 50, 100, 200],
+ pageSize: 10
+ },
+ }
+ },
+ computed: {
+ ...mapGetters(['userInfo', 'permission', 'roles']),
+ ids() {
+ const ids = [];
+ this.selectionList.forEach(ele => {
+ ids.push(ele[this.rowKey]);
+ });
+ return ids.join(",");
+ },
+ bindVal() {
+ return {
+ ref: 'crud',
+ option: this.option,
+ data: this.data,
+ tableLoading: this.loading
+ }
+ },
+ onEvent() {
+ return {
+ 'on-load': this.getList,
+ 'row-save': this.rowSave,
+ 'row-update': this.rowUpdate,
+ 'row-del': this.rowDel,
+ 'selection-change': this.selectionChange,
+ 'refresh-change': this.refreshChange,
+ 'date-change': this.dateChange,
+ 'search-change': this.searchChange,
+ 'search-reset': this.searchChange
+ }
+ },
+ rowKey() {
+ return this.option.rowKey || option.rowKey || 'id'
+ }
+ },
+ methods: {
+ getList() {
+ const callback = () => {
+ this.loading = true;
+ this.api[option.list || 'getList'](this.page.currentPage, this.page.pageSize, this.params).then(res => {
+ let data;
+ if (option.res) {
+ data = option.res(res.data);
+ } else {
+ data = res.data.data;
+ }
+ this.page.total = data[option.total || 'total'] || 0;
+ this.data = data[option.records || 'records'];
+ if (this.listAfter) {
+ this.listAfter(data);
+ }
+ this.loading = false;
+ })
+ }
+ if (this.listBefore) {
+ this.listBefore();
+ }
+ callback();
+ },
+ rowSave(row, done, loading) {
+ const callback = () => {
+ delete this.form.params;
+ this.api[option.add || 'add'](this.form).then((data) => {
+ this.getList();
+ if (this.addAfter) {
+ this.addAfter(data);
+ } else {
+ this.$message.success('鏂板鎴愬姛');
+ }
+ done();
+ }).catch(() => {
+ loading();
+ })
+ }
+ if (this.addBefore) {
+ this.addBefore();
+ }
+ callback();
+ },
+ rowUpdate(row, index, done, loading) {
+ const callback = () => {
+ delete this.form.params;
+ this.api[option.update || 'update'](this.form).then((data) => {
+ this.getList();
+ if (this.updateAfter) {
+ this.updateAfter(data);
+ } else {
+ this.$message.success('鏇存柊鎴愬姛');
+ }
+ done();
+ }).catch(() => {
+ loading();
+ })
+ }
+ if (this.updateBefore) {
+ this.updateBefore();
+ }
+ callback();
+ },
+ rowDel(row, index) {
+ const callback = () => {
+ this.api[option.del || 'remove'](row[this.rowKey], row).then((data) => {
+ this.getList();
+ if (this.delAfter) {
+ this.delAfter(data, row, index)
+ } else {
+ this.$message.success('鍒犻櫎鎴愬姛');
+ }
+ })
+ }
+ if (this.delBefore) {
+ this.delBefore();
+ callback();
+ } else {
+ this.$confirm('纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ callback();
+ })
+ }
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ return;
+ }
+ this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ this.api[option.del || 'remove'](this.ids).then((data) => {
+ this.getList();
+ if (this.delMultiAfter) {
+ this.delMultiAfter(data, this.ids);
+ } else {
+ this.$message.success('鍒犻櫎鎴愬姛');
+ }
+ });
+ });
+ },
+ searchChange(params, done) {
+ if (done) done();
+ if (this.validatenull(params)) {
+ Object.keys(this.params).forEach(ele => {
+ if (!['createTime_dategt', 'createTime_datelt'].includes(ele)) {
+ delete this.params[ele];
+ }
+ })
+ } else {
+ Object.keys(params).forEach(ele => {
+ if (this.validatenull(params[ele])) {
+ delete this.params[ele];
+ delete params[ele];
+ }
+ })
+ }
+ this.params = Object.assign(this.params, params);
+ this.page.currentPage = 1;
+ this.getList();
+ },
+ dateChange(date) {
+ if (date) {
+ this.params.createTime_dategt = date[0];
+ this.params.createTime_datelt = date[1];
+ } else {
+ delete this.params.createTime_dategt;
+ delete this.params.createTime_datelt;
+ }
+ this.page.currentPage = 1;
+ this.getList();
+ },
+ selectionChange(list) {
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.crud.toggleSelection();
+ },
+ refreshChange() {
+ this.getList();
+ }
+ }
+ }
+ app.mixins = app.mixins || [];
+ app.mixins.push(mixins);
+ return app;
+}
--
Gitblit v1.9.3