// 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 let params = { page: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null, limit: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null, ...this.dataForm } params = this.dealObjectValue(params) this.mixinViewModuleOptions.getDataListURL ? this.$http.get( this.mixinViewModuleOptions.getDataListURL, { params: params } ).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 }) : '' }, dealObjectValue(obj) { const param = {} if (obj === null || obj === undefined || obj === '') return param for (var key in obj) { if (obj[key] !== null && obj[key] !== undefined && obj[key] !== '') { param[key] = obj[key] } } return param }, // 多选 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}` } } }