You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

188 lines
6.7 KiB

// 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}`
}
}
}