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