| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 | 
							- 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;
 
- }
 
 
  |