7 changed files with 378 additions and 230 deletions
			
			
		| @ -1,178 +1,178 @@ | |||||
| // import Cookies from 'js-cookie'
 |  | ||||
| 
 |  | ||||
| import qs from 'qs' |  | ||||
| 
 |  | ||||
| // import qs from 'qs'
 |  | ||||
| export default { |  | ||||
|   data() { |  | ||||
|     /* eslint-disable */ |  | ||||
|     return { |  | ||||
|       // 设置属性
 |  | ||||
|       mixinViewModuleOptions: { |  | ||||
|         createdIsNeed: true,       // 此页面是否在创建时,调用查询数据列表接口?
 |  | ||||
|         activatedIsNeed: false,    // 此页面是否在激活(进入)时,调用查询数据列表接口?
 |  | ||||
|         getDataListURL: '',       // 数据列表接口,API地址
 |  | ||||
|         getDataListIsPage: false, // 数据列表接口,是否需要分页?
 |  | ||||
|         deleteURL: '',            // 删除接口,API地址
 |  | ||||
|         deleteIsBatch: false,     // 删除接口,是否需要批量?
 |  | ||||
|         deleteIsBatchKey: 'id',   // 删除接口,批量状态下由那个key进行标记操作?比如:pid,uid...
 |  | ||||
|         exportURL: ''             // 导出接口,API地址
 |  | ||||
|       }, |  | ||||
|       // 默认属性
 |  | ||||
|       dataForm: {},               // 查询条件
 |  | ||||
|       dataList: [],               // 数据列表
 |  | ||||
|       order: '',                  // 排序,asc/desc
 |  | ||||
|       orderField: '',             // 排序,字段
 |  | ||||
|       page: 1,                    // 当前页码
 |  | ||||
|       limit: 10,                  // 每页数
 |  | ||||
|       total: 0,                   // 总条数
 |  | ||||
|       dataListLoading: false,     // 数据列表,loading状态
 |  | ||||
|       dataListSelections: [],     // 数据列表,多选项
 |  | ||||
|       addOrUpdateVisible: false,   // 新增/更新,弹窗visible状态
 |  | ||||
|       deleteParams:{} |  | ||||
|     } |  | ||||
|     /* eslint-enable */ |  | ||||
|   }, |  | ||||
|   created() { |  | ||||
|     if (this.mixinViewModuleOptions.createdIsNeed) { |  | ||||
|       this.getDataList() |  | ||||
|     } |  | ||||
|   }, |  | ||||
|   activated() { |  | ||||
|     if (this.mixinViewModuleOptions.activatedIsNeed) { |  | ||||
|       this.getDataList() |  | ||||
|     } |  | ||||
|   }, |  | ||||
|   methods: { |  | ||||
|     // 获取数据列表
 |  | ||||
|     getDataList() { |  | ||||
|       this.dataListLoading = true |  | ||||
|       this.mixinViewModuleOptions.getDataListURL ? this.$http.get( |  | ||||
|         this.mixinViewModuleOptions.getDataListURL, { |  | ||||
|           params: { |  | ||||
|             // order: this.order,
 |  | ||||
|             // orderField: this.orderField,
 |  | ||||
|             page: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null, |  | ||||
|             limit: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null, |  | ||||
|             ...this.dataForm |  | ||||
|           } |  | ||||
|         } |  | ||||
|       ).then(({ data: res }) => { |  | ||||
|         this.dataListLoading = false |  | ||||
|         if (res.code !== 0) { |  | ||||
|           this.dataList = [] |  | ||||
|           this.total = 0 |  | ||||
|           return this.$message.error(res.msg) |  | ||||
|         } |  | ||||
|         this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data |  | ||||
|         res.data.drgsName ? this.drgsName = res.data.drgsName : '' |  | ||||
|         this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0 |  | ||||
|       }).catch(() => { |  | ||||
|         this.dataListLoading = false |  | ||||
|       }) : '' |  | ||||
|     }, |  | ||||
|     // 多选
 |  | ||||
|     dataListSelectionChangeHandle(val) { |  | ||||
|       this.dataListSelections = val |  | ||||
|     }, |  | ||||
|     // 排序
 |  | ||||
|     dataListSortChangeHandle(data) { |  | ||||
|       if (!data.order || !data.prop) { |  | ||||
|         this.order = '' |  | ||||
|         this.orderField = '' |  | ||||
|         return false |  | ||||
|       } |  | ||||
|       this.order = data.order.replace(/ending$/, '') |  | ||||
|       this.orderField = data.prop.replace(/([A-Z])/g, '_$1').toLowerCase() |  | ||||
|       this.getDataList() |  | ||||
|     }, |  | ||||
|     // 分页, 每页条数
 |  | ||||
|     pageSizeChangeHandle(val) { |  | ||||
|       this.page = 1 |  | ||||
|       this.limit = val |  | ||||
|       this.getDataList() |  | ||||
|     }, |  | ||||
|     // 分页, 当前页
 |  | ||||
|     pageCurrentChangeHandle(val) { |  | ||||
|       this.page = val |  | ||||
|       this.getDataList() |  | ||||
|     }, |  | ||||
|     // 初始化查询
 |  | ||||
|     getDataListInitial() { |  | ||||
|       this.page = 1 |  | ||||
|       this.getDataList() |  | ||||
|     }, |  | ||||
|     // 新增 / 修改
 |  | ||||
|     addOrUpdateHandle(id, params, title, noParams) { |  | ||||
|       this.addOrUpdateVisible = true |  | ||||
|       this.$nextTick(() => { |  | ||||
|         this.$refs.addOrUpdate.dataForm.id = id |  | ||||
|         noParams ? '' : this.$refs.addOrUpdate.params = params || {} |  | ||||
|         this.$refs.addOrUpdate.dataForm.title = title |  | ||||
|         // 存在BUG,params无法覆盖,弃用
 |  | ||||
|         // this.$refs.addOrUpdate.dataForm = { id, ...params, title }
 |  | ||||
|         this.$refs.addOrUpdate.init() |  | ||||
|       }) |  | ||||
|     }, |  | ||||
|     // 分配人员
 |  | ||||
|     assignPeopleHandle(scope) { |  | ||||
|       this.currentPeopleId = scope.id |  | ||||
|       this.dialogVisible = true |  | ||||
|       // 添加科研人员时,获取人员列表
 |  | ||||
|       this.getUserList(scope.id) |  | ||||
|     }, |  | ||||
|     // 关闭当前窗口
 |  | ||||
|     closeCurrentTab(data) { |  | ||||
|       var tabName = this.$store.state.contentTabsActiveName |  | ||||
|       this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName) |  | ||||
|       if (this.$store.state.contentTabs.length <= 0) { |  | ||||
|         this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home' |  | ||||
|         return false |  | ||||
|       } |  | ||||
|       if (tabName === this.$store.state.contentTabsActiveName) { |  | ||||
|         this.$router.push({ name: this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1].name }) |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     // 删除
 |  | ||||
|     deleteHandle(id, callback) { |  | ||||
|       if (this.mixinViewModuleOptions.deleteIsBatch && !id && this.dataListSelections.length <= 0) { |  | ||||
|         return this.$message({ |  | ||||
|           message: this.$t('prompt.deleteBatch'), |  | ||||
|           type: 'warning', |  | ||||
|           duration: 500 |  | ||||
|         }) |  | ||||
|       } |  | ||||
|       this.$confirm(this.$t('prompt.info', { handle: this.$t('delete') }), this.$t('prompt.title'), { |  | ||||
|         confirmButtonText: this.$t('confirm'), |  | ||||
|         cancelButtonText: this.$t('cancel'), |  | ||||
|         type: 'warning' |  | ||||
|       }).then(() => { |  | ||||
|         (Array.isArray(id) ? this.$http({ |  | ||||
|           url: this.mixinViewModuleOptions.deleteURL, |  | ||||
|           method: 'delete', |  | ||||
|           data: id |  | ||||
|         }) : this.$http.delete(this.mixinViewModuleOptions.deleteURL + `/${id}`)).then(({ data: res }) => { |  | ||||
|           if (res.code !== 0) { |  | ||||
|             return this.$message.error(res.msg) |  | ||||
|           } |  | ||||
|           this.$message({ |  | ||||
|             message: this.$t('prompt.success'), |  | ||||
|             type: 'success', |  | ||||
|             duration: 500, |  | ||||
|             onClose: () => { |  | ||||
|               callback ? callback() : this.getDataList() |  | ||||
|             } |  | ||||
|           }) |  | ||||
|         }).catch(() => {}) |  | ||||
|       }).catch(() => {}) |  | ||||
|     }, |  | ||||
|     // 导出
 |  | ||||
|     exportHandle() { |  | ||||
|       // var params = qs.stringify({
 |  | ||||
|       //   token: Cookies.get('qg-token'),
 |  | ||||
|       //   ...this.dataForm
 |  | ||||
|       // })
 |  | ||||
|       // window.location.href = `${window.SITE_CONFIG.apiURL}${this.mixinViewModuleOptions.exportURL}?${params}`
 |  | ||||
|     } |  | ||||
|   } |  | ||||
| } |  | ||||
|  | // import Cookies from 'js-cookie'
 | ||||
|  | 
 | ||||
|  | import qs from 'qs' | ||||
|  | 
 | ||||
|  | // import qs from 'qs'
 | ||||
|  | export default { | ||||
|  |   data() { | ||||
|  |     /* eslint-disable */ | ||||
|  |     return { | ||||
|  |       // 设置属性
 | ||||
|  |       mixinViewModuleOptions: { | ||||
|  |         createdIsNeed: true,       // 此页面是否在创建时,调用查询数据列表接口?
 | ||||
|  |         activatedIsNeed: false,    // 此页面是否在激活(进入)时,调用查询数据列表接口?
 | ||||
|  |         getDataListURL: '',       // 数据列表接口,API地址
 | ||||
|  |         getDataListIsPage: false, // 数据列表接口,是否需要分页?
 | ||||
|  |         deleteURL: '',            // 删除接口,API地址
 | ||||
|  |         deleteIsBatch: false,     // 删除接口,是否需要批量?
 | ||||
|  |         deleteIsBatchKey: 'id',   // 删除接口,批量状态下由那个key进行标记操作?比如:pid,uid...
 | ||||
|  |         exportURL: ''             // 导出接口,API地址
 | ||||
|  |       }, | ||||
|  |       // 默认属性
 | ||||
|  |       dataForm: {},               // 查询条件
 | ||||
|  |       dataList: [],               // 数据列表
 | ||||
|  |       order: '',                  // 排序,asc/desc
 | ||||
|  |       orderField: '',             // 排序,字段
 | ||||
|  |       page: 1,                    // 当前页码
 | ||||
|  |       limit: 10,                  // 每页数
 | ||||
|  |       total: 0,                   // 总条数
 | ||||
|  |       dataListLoading: false,     // 数据列表,loading状态
 | ||||
|  |       dataListSelections: [],     // 数据列表,多选项
 | ||||
|  |       addOrUpdateVisible: false,   // 新增/更新,弹窗visible状态
 | ||||
|  |       deleteParams:{} | ||||
|  |     } | ||||
|  |     /* eslint-enable */ | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |     if (this.mixinViewModuleOptions.createdIsNeed) { | ||||
|  |       this.getDataList() | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   activated() { | ||||
|  |     if (this.mixinViewModuleOptions.activatedIsNeed) { | ||||
|  |       this.getDataList() | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     // 获取数据列表
 | ||||
|  |     getDataList() { | ||||
|  |       this.dataListLoading = true | ||||
|  |       this.mixinViewModuleOptions.getDataListURL ? this.$http.get( | ||||
|  |         this.mixinViewModuleOptions.getDataListURL, { | ||||
|  |           params: { | ||||
|  |             // order: this.order,
 | ||||
|  |             // orderField: this.orderField,
 | ||||
|  |             page: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null, | ||||
|  |             limit: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null, | ||||
|  |             ...this.dataForm | ||||
|  |           } | ||||
|  |         } | ||||
|  |       ).then(({ data: res }) => { | ||||
|  |         this.dataListLoading = false | ||||
|  |         if (res.code !== 0) { | ||||
|  |           this.dataList = [] | ||||
|  |           this.total = 0 | ||||
|  |           return this.$message.error(res.msg) | ||||
|  |         } | ||||
|  |         this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data | ||||
|  |         res.data.drgsName ? this.drgsName = res.data.drgsName : '' | ||||
|  |         this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0 | ||||
|  |       }).catch(() => { | ||||
|  |         this.dataListLoading = false | ||||
|  |       }) : '' | ||||
|  |     }, | ||||
|  |     // 多选
 | ||||
|  |     dataListSelectionChangeHandle(val) { | ||||
|  |       this.dataListSelections = val | ||||
|  |     }, | ||||
|  |     // 排序
 | ||||
|  |     dataListSortChangeHandle(data) { | ||||
|  |       if (!data.order || !data.prop) { | ||||
|  |         this.order = '' | ||||
|  |         this.orderField = '' | ||||
|  |         return false | ||||
|  |       } | ||||
|  |       this.order = data.order.replace(/ending$/, '') | ||||
|  |       this.orderField = data.prop.replace(/([A-Z])/g, '_$1').toLowerCase() | ||||
|  |       this.getDataList() | ||||
|  |     }, | ||||
|  |     // 分页, 每页条数
 | ||||
|  |     pageSizeChangeHandle(val) { | ||||
|  |       this.page = 1 | ||||
|  |       this.limit = val | ||||
|  |       this.getDataList() | ||||
|  |     }, | ||||
|  |     // 分页, 当前页
 | ||||
|  |     pageCurrentChangeHandle(val) { | ||||
|  |       this.page = val | ||||
|  |       this.getDataList() | ||||
|  |     }, | ||||
|  |     // 初始化查询
 | ||||
|  |     getDataListInitial() { | ||||
|  |       this.page = 1 | ||||
|  |       this.getDataList() | ||||
|  |     }, | ||||
|  |     // 新增 / 修改
 | ||||
|  |     addOrUpdateHandle(id, params, title, noParams) { | ||||
|  |       this.addOrUpdateVisible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         this.$refs.addOrUpdate.dataForm.id = id | ||||
|  |         noParams ? '' : this.$refs.addOrUpdate.params = params || {} | ||||
|  |         this.$refs.addOrUpdate.dataForm.title = title | ||||
|  |         // 存在BUG,params无法覆盖,弃用
 | ||||
|  |         // this.$refs.addOrUpdate.dataForm = { id, ...params, title }
 | ||||
|  |         this.$refs.addOrUpdate.init() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 分配人员
 | ||||
|  |     assignPeopleHandle(scope) { | ||||
|  |       this.currentPeopleId = scope.id | ||||
|  |       this.dialogVisible = true | ||||
|  |       // 添加科研人员时,获取人员列表
 | ||||
|  |       this.getUserList(scope.id) | ||||
|  |     }, | ||||
|  |     // 关闭当前窗口
 | ||||
|  |     closeCurrentTab(data) { | ||||
|  |       var tabName = this.$store.state.contentTabsActiveName | ||||
|  |       this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName) | ||||
|  |       if (this.$store.state.contentTabs.length <= 0) { | ||||
|  |         this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home' | ||||
|  |         return false | ||||
|  |       } | ||||
|  |       if (tabName === this.$store.state.contentTabsActiveName) { | ||||
|  |         this.$router.push({ name: this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1].name }) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 删除
 | ||||
|  |     deleteHandle(id, callback) { | ||||
|  |       if (this.mixinViewModuleOptions.deleteIsBatch && !id && this.dataListSelections.length <= 0) { | ||||
|  |         return this.$message({ | ||||
|  |           message: this.$t('prompt.deleteBatch'), | ||||
|  |           type: 'warning', | ||||
|  |           duration: 500 | ||||
|  |         }) | ||||
|  |       } | ||||
|  |       this.$confirm(this.$t('prompt.info', { handle: this.$t('delete') }), this.$t('prompt.title'), { | ||||
|  |         confirmButtonText: this.$t('confirm'), | ||||
|  |         cancelButtonText: this.$t('cancel'), | ||||
|  |         type: 'warning' | ||||
|  |       }).then(() => { | ||||
|  |         (Array.isArray(id) ? this.$http({ | ||||
|  |           url: this.mixinViewModuleOptions.deleteURL, | ||||
|  |           method: 'delete', | ||||
|  |           data: id | ||||
|  |         }) : this.$http.delete(this.mixinViewModuleOptions.deleteURL + `/${id}`)).then(({ data: res }) => { | ||||
|  |           if (res.code !== 0) { | ||||
|  |             return this.$message.error(res.msg) | ||||
|  |           } | ||||
|  |           this.$message({ | ||||
|  |             message: this.$t('prompt.success'), | ||||
|  |             type: 'success', | ||||
|  |             duration: 500, | ||||
|  |             onClose: () => { | ||||
|  |               callback ? callback() : this.getDataList() | ||||
|  |             } | ||||
|  |           }) | ||||
|  |         }).catch(() => {}) | ||||
|  |       }).catch(() => {}) | ||||
|  |     }, | ||||
|  |     // 导出
 | ||||
|  |     exportHandle() { | ||||
|  |       // var params = qs.stringify({
 | ||||
|  |       //   token: Cookies.get('qg-token'),
 | ||||
|  |       //   ...this.dataForm
 | ||||
|  |       // })
 | ||||
|  |       // window.location.href = `${window.SITE_CONFIG.apiURL}${this.mixinViewModuleOptions.exportURL}?${params}`
 | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | |||||
					Loading…
					
					
				
		Reference in new issue