<template>
|
<div class="class_dataImport">
|
<el-steps :active="add_Step" align-center>
|
<el-step title="研究目标" description="明确临床问题"></el-step>
|
<el-step title="方案设计" description="确立方案"></el-step>
|
<el-step title="预览" description=""></el-step>
|
</el-steps>
|
<div style="height: 400px; padding:0px; box-sizing:boder-box; overflow: auto;">
|
<div v-if="add_Step == 0" style="width: 100%; height: 100%;" align="center">
|
<div style="padding-top: 5%; box-sizing:boder-box">
|
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
|
<el-form-item label="项目号:" prop="code" style="width: 50%;">
|
<el-input v-model="ruleForm.code"></el-input>
|
</el-form-item>
|
<el-form-item label="项目名称:" style="width: 50%;">
|
<el-input v-model="ruleForm.name" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="研究类型分类:" prop="type_array" style="width: 50%;">
|
<el-select @change="typeArrayChange_" multiple v-model="ruleForm.type_array" style="width: 100%;">
|
<el-option
|
v-for="(item,k) in options_type"
|
:key="k"
|
:label="item"
|
:value="item"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="研究目的分类:" prop="order_type_array" style="width: 50%;">
|
<el-select @change="order_typeArrayChange_" multiple v-model="ruleForm.order_type_array" style="width: 100%;">
|
<el-option
|
v-for="(item,k) in options_order_type"
|
:key="k"
|
:label="item"
|
:value="item"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<!-- <el-form-item label="研究目的:" prop="objective" style="width: 50%;">
|
<el-select v-model="ruleForm.objective" placeholder="请选择" style="width: 100%;">
|
<el-option
|
v-for="item in options_objectives"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-form-item> -->
|
|
<el-form-item label="起止时间:" prop="items" style="width: 50%;">
|
<!-- :picker-options="pickerOptions01" -->
|
<el-date-picker
|
v-model="ruleForm.items"
|
type="daterange"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
style="width: 100%;"
|
>
|
</el-date-picker>
|
</el-form-item>
|
|
<el-form-item label="项目引进人:" prop="leadUserList" style="width: 50%;">
|
<el-cascader
|
style="width: 100%;"
|
:options="options_leadUserId"
|
:props="props_"
|
@change="leadUserIdChange"
|
v-model="ruleForm.leadUserList"
|
clearable>
|
</el-cascader>
|
</el-form-item>
|
|
<el-form-item label="项目负责人:" style="width: 50%;">
|
<el-cascader
|
style="width: 100%;"
|
:options="options_charge"
|
@change="chargeArrayChange_"
|
:props="{ expandTrigger: 'hover' }"
|
|
v-model="ruleForm.charge_id_array"
|
placeholder="请选择负责人"
|
>
|
</el-cascader>
|
<!-- <el-select @change="chargeArrayChange_" v-model="ruleForm.charge_id_array" style="width: 100%;">
|
<el-option
|
v-for="(item,k) in options_charge"
|
:key="k"
|
:label="item.label"
|
:value="item.value"
|
></el-option>
|
</el-select> -->
|
</el-form-item>
|
|
<el-form-item label="项目描述:" prop="desc" style="width: 50%;">
|
<el-input type="textarea" v-model="ruleForm.desc"></el-input>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<div v-if="add_Step == 1" style="width: 100%; height: 100%;" align="center">
|
<substep ref="substep_zj" v-bind:xmId="xmId" v-bind:totalItems="totalItems"></substep>
|
</div>
|
<div v-if="add_Step == 2" style="width: 100%; height: 100%;" align="center">
|
<!-- <substepReadOnly v-bind:form_objs="form_objs" v-bind:showData_="showData_"></substepReadOnly> -->
|
<substepReadOnly v-bind:xmId="xmId"></substepReadOnly>
|
</div>
|
</div>
|
|
<div style="width: 100%; text-align: center;">
|
<el-button v-if="add_Step > 0" style="margin-top: 12px;" @click="UpwardStep">上一步</el-button>
|
<el-button :loading="loading_nextStep" style="margin-top: 12px;" @click="NextStep">{{nextStepName}}</el-button>
|
<!-- <el-button :loading="loading_cancel" style="margin-top: 12px;" @click="Cancel">{{cancelName}}</el-button> -->
|
</div>
|
|
</div>
|
</template>
|
|
<script>
|
import substep from './portion/substep.vue'
|
import substepReadOnly from './portion/substepReadOnly.vue'
|
export default {
|
name: 'dataImport',
|
props:{
|
rowData:{
|
type: Object,
|
required: true
|
}
|
},
|
components: {
|
substep,
|
substepReadOnly
|
},
|
data () {
|
var validateTtems = (rule, value, callback) => {
|
if (value && value.length > 1) {
|
let a1 = new Date(value[0]);
|
let a2 = new Date(this.ruleForm.items[1]);
|
|
|
if (this.rowData.beginDate && !this.rowData.endDate) {
|
let bb0 = new Date(this.rowData.beginDate);
|
let bb0str = this.$moment(bb0).format('YYYY-MM-DD');
|
if (a1 > bb0) {
|
callback(new Error('开始时间应小于' + bb0str));
|
}
|
else if (a2 < bb0) {
|
callback(new Error('结束时间应大于' + bb0str));
|
}
|
}
|
|
else if (this.rowData.beginDate && this.rowData.endDate) {
|
let bb0 = new Date(this.rowData.beginDate);
|
let bb1 = new Date(this.rowData.endDate);
|
let bb0str = this.$moment(bb0).format('YYYY-MM-DD');
|
let bb1str = this.$moment(bb1).format('YYYY-MM-DD');
|
if (a1 > bb0) {
|
callback(new Error('开始时间应小于' + bb0str));
|
}
|
else if (a2 < bb1) {
|
callback(new Error('结束时间应大于' + bb1str));
|
}
|
}
|
callback();
|
}
|
else {
|
callback(new Error('选择开始时间和结束时间'));
|
}
|
};
|
var validateOrder_type_array = (rule, value, callback) => {
|
if (this.isRules) {
|
if (value && value.length > 0) {
|
callback();
|
}
|
else {
|
callback(new Error('不能为空'));
|
}
|
}
|
else {
|
callback();
|
}
|
};
|
var validateType_array = (rule, value, callback) => {
|
if (this.isRules) {
|
if (value && value.length > 0) {
|
callback();
|
}
|
else {
|
callback(new Error('不能为空'));
|
}
|
}
|
else {
|
callback();
|
}
|
};
|
|
return {
|
props_: {multiple: true},
|
userId: undefined,
|
assign: undefined,
|
add_Step: 0,
|
loading_nextStep: false,
|
nextStepName: "下一步",
|
loading_cancel: false,
|
cancelName: "关 闭",
|
|
//disabled_code: true,
|
ruleForm: {},
|
xmId: null,
|
totalItems: null,
|
showData_: null,
|
form_objs: null,
|
parttimeLists: null,
|
|
options_leadUserId: [],
|
options_charge: [],
|
options_type:[
|
"Health technology assessment (HTA)",
|
"Clinical practice guideline (CPG)",
|
"Evidence mapping",
|
"Overview of review",
|
"Scoping review",
|
"Rapid review",
|
"Systematic review",
|
"Rapid review",
|
"Randomised controlled trial (RCT)",
|
"Other"
|
],
|
options_order_type: [
|
"治疗",
|
"预防",
|
"诊断与鉴别诊断",
|
"预后",
|
"病因",
|
"疾病筛查"
|
],
|
options_objectives: [
|
{
|
value: "干预性系统评价",
|
label: "干预性系统评价"
|
},
|
{
|
value: "诊断性系统评价",
|
label: "诊断性系统评价"
|
},
|
{
|
value: "预后性系统评价",
|
label: "预后性系统评价"
|
},
|
{
|
value: "相关性系统评价",
|
label: "相关性系统评价"
|
}
|
],
|
isRules: false,
|
rules: {
|
code: [
|
{
|
required: true,
|
message: "不能为空",
|
trigger: ["change", "blur"]
|
}
|
],
|
name: [
|
{
|
required: true,
|
message: "不能为空",
|
trigger: ["change", "blur"]
|
}
|
],
|
type_array: [
|
{
|
required: true,
|
//message: "不能为空",
|
validator: validateType_array,
|
trigger: ["change", "blur"]
|
}
|
],
|
order_type_array: [
|
{
|
required: true,
|
//message: "不能为空",
|
validator: validateOrder_type_array,
|
trigger: ["change", "blur"]
|
}
|
],
|
objective: [
|
{
|
required: true,
|
message: "不能为空",
|
trigger: ["change", "blur"]
|
}
|
],
|
items: [
|
{
|
type: "array",
|
validator: validateTtems,
|
required: true,
|
//message: "不能为空",
|
trigger: ["change"]
|
}
|
]
|
|
}
|
|
}
|
},
|
|
created() {
|
this.getUsers();
|
this.getUserCharge();
|
},
|
mounted() {
|
if(this.rowData.id) {
|
this.xmId = this.rowData.id;
|
let url = "/api/scheme/get/" + this.rowData.id;
|
this.$axios.get(url).then(data_ => {
|
window.console.log(data_);
|
let selected_ = data_.data.data;
|
if (selected_) {
|
this.ruleForm = {
|
id:selected_.id,
|
desc:selected_.desc,
|
name: selected_.name,
|
beginDate: selected_.beginDate,
|
endDate: selected_.endDate,
|
objective:selected_.reseachType,
|
leadUserId: selected_.leadUserId,
|
leadUserList: selected_.leadUserList,
|
code: selected_.code,
|
type: selected_.type,
|
orderType: selected_.orderType,
|
chargeId: selected_.chargeId,
|
charge_id_array: selected_.chargeId ? selected_.chargeId.split(";") : [],
|
type_array: selected_.type ? selected_.type.split(";") : [],
|
order_type_array: selected_.orderType ? selected_.orderType.split(";") : [],
|
items:[this.$moment(selected_.startTime).format('YYYY-MM-DD'),this.$moment(selected_.endTime).format('YYYY-MM-DD')]
|
}
|
}
|
//this.$refs.ruleForm.clearValidate();
|
}).catch(error =>{
|
|
})
|
|
}
|
else {
|
this.ruleForm = this.rowData;
|
}
|
|
//this.userId = localStorage.getItem('userId');
|
//this.assign = localStorage.getItem('assign');
|
|
this.userId = this.$cookies.get('userId');
|
this.assign = this.$cookies.get('assign');
|
},
|
methods:{
|
getUsers() {
|
let me = this;
|
let url = "/api/sysRoleMapping/all";
|
this.$axios.get(url)
|
.then(data_ => {
|
let list = data_.data.data;
|
let parId = "";
|
let obj = {};
|
let result = [];
|
|
list.map(el => {
|
obj[el.id] = el;
|
})
|
for(let i=0, len = list.length; i < len; i++) {
|
let id = list[i].roleName;
|
//设置显示字段
|
list[i].value = list[i].id;
|
list[i].label = list[i].name;
|
|
if(id == parId || !id) {
|
if(!obj[list[i].id].children) {
|
obj[list[i].id].children = [];
|
}
|
result.push(list[i]);
|
continue;
|
}
|
if(obj[id].children) {
|
obj[id].children.push(list[i]);
|
} else {
|
obj[id].children = [list[i]];
|
}
|
}
|
|
me.options_leadUserId = result;
|
}).catch(error =>{
|
|
})
|
},
|
|
//options_charge
|
getUserCharge() {
|
let me = this;
|
let url = "/api/sysRoleMapping/detail";
|
this.$axios.get(url)
|
.then(data_ => {
|
let list = data_.data.data;
|
let parId = "";
|
let obj = {};
|
let result = [];
|
|
list.map(el => {
|
obj[el.id] = el;
|
})
|
for(let i=0, len = list.length; i < len; i++) {
|
let id = list[i].roleName;
|
//设置显示字段
|
list[i].value = list[i].id;
|
list[i].label = list[i].name;
|
|
if(id == parId || !id) {
|
if(!obj[list[i].id].children) {
|
obj[list[i].id].children = [];
|
}
|
result.push(list[i]);
|
continue;
|
}
|
if(obj[id].children) {
|
obj[id].children.push(list[i]);
|
} else {
|
obj[id].children = [list[i]];
|
}
|
}
|
|
me.options_charge = result;
|
|
}).catch(error =>{
|
})
|
},
|
Cancel() {
|
this.add_Step = 0;
|
this.nextStepName = "下一步";
|
this.$emit('closeNewProject');
|
},
|
|
UpwardStep() {
|
this.add_Step --;
|
if (this.add_Step == 0) {
|
this.nextStepName = "下一步";
|
}
|
else if (this.add_Step == 2) {
|
this.nextStepName = "保 存";
|
}
|
else {
|
this.nextStepName = "下一步";
|
}
|
},
|
|
NextStep() {
|
if (this.add_Step == 0) {
|
this.isRules = true;
|
let is_null1 = false;
|
this.$refs['ruleForm'].validate((valid) => {
|
if (valid) {
|
is_null1 = true;
|
} else {
|
return false;
|
}
|
});
|
if(is_null1) {
|
this.isRules = false;
|
this.loading_nextStep = true;
|
this.saveStep1();
|
}
|
|
// this.xmId = "c3b7f55c800e4726b53fdc18dd994603";
|
// this.add_Step = 1;
|
}
|
else if (this.add_Step == 1) {
|
this.saveStep2();
|
// this.add_Step = 2;
|
// this.nextStepName = "完 成";
|
}
|
else if (this.add_Step == 2) {
|
this.saveStep3();
|
}
|
},
|
|
saveStep1() {
|
let me = this;
|
//me.disabled_code = true;
|
let ruleForm_ = this.ruleForm;
|
var items1 = this.$moment(ruleForm_.items[0]).format('YYYY-MM-DD');
|
var items2 = this.$moment(ruleForm_.items[1]).format('YYYY-MM-DD');
|
//let items1 = new Date(ruleForm_.items[0]).Format("yyyy-MM-dd").toLocaleString();
|
// let items2 = new Date(ruleForm_.items[1]).Format("yyyy-MM-dd").toLocaleString();
|
let listId = "";
|
let params_ = {
|
reseachType: ruleForm_.objective,
|
code: ruleForm_.code,
|
name: ruleForm_.name,
|
startTime: items1,
|
endTime: items2,
|
id: me.xmId,
|
desc:ruleForm_.desc,
|
userId: me.userId,
|
leadUserId: ruleForm_.leadUserId,
|
type: ruleForm_.type,
|
orderType: ruleForm_.orderType,
|
chargeId: ruleForm_.chargeId
|
};
|
|
if (this.rowData.parentid) {
|
listId = this.rowData.parentid;
|
}
|
|
if (!me.xmId && this.rowData.parentid) {
|
let url_ = "/api/scheme/addOrUpdate";
|
this.$axios.post(url_,
|
params_
|
).then(data_ => {
|
if(data_.data.success) {
|
me.xmId = data_.data.data;
|
me.totalItems = ruleForm_.items;
|
let url = "/api/topic/exam/" + listId;
|
me.$axios.get(url,{
|
params: {
|
projectId: me.xmId
|
}
|
}).then(data_1 => {
|
if(data_1.data.success) {
|
me.loading_nextStep = false;
|
me.add_Step = 1;
|
}else {
|
me.$message({message:'创建项目失败', type: 'warning'});
|
}
|
}).catch(error => {
|
})
|
}
|
else {
|
me.loading_nextStep = false;
|
if (data_.data.status == "2004") {
|
//me.disabled_code = false;
|
me.$message({message:"项目号已存在", type: 'warning'});
|
}
|
else {
|
me.$message({message:data_.data.message, type: 'warning'});
|
}
|
}
|
|
}).catch(error =>{
|
})
|
}
|
else {
|
let url_ = "/api/scheme/addOrUpdate";
|
this.$axios.post(url_,
|
params_
|
).then(data_ => {
|
if(data_.data.success) {
|
me.xmId = data_.data.data;
|
me.totalItems = ruleForm_.items;
|
me.add_Step = 1;
|
me.loading_nextStep = false;
|
}
|
else {
|
me.loading_nextStep = false;
|
if (data_.data.status == "2004") {
|
me.$message({message:"项目号已存在", type: 'warning'});
|
}
|
else {
|
me.$message({message:data_.data.message, type: 'warning'});
|
}
|
}
|
}).catch(error =>{
|
})
|
}
|
},
|
|
saveStep2() {
|
this.showData_ = this.$refs.substep_zj.showData;
|
this.form_objs = this.$refs.substep_zj.form_;
|
this.parttimeLists = this.$refs.substep_zj.parttimeList_;
|
|
let form_array = [];
|
let is_null1 = true;
|
let me = this;
|
for (let itm_k in this.showData_) {
|
let ref_k = "ref_" + itm_k;
|
this.$refs.substep_zj.$refs[ref_k].validate((valid) => {
|
if (!valid) {
|
is_null1 = false;
|
}
|
});
|
|
let form_obj = {};
|
form_obj = this.form_objs[itm_k];
|
if (!form_obj.mustAttach) {
|
form_obj.mustAttach = false;
|
}
|
/* if (form_obj.items_fz.length > 0) {
|
form_obj.startTime = form_obj.items_fz[0];
|
form_obj.endTime = form_obj.items_fz[1];
|
} */
|
|
if (form_obj.startTime) {
|
form_obj.startTime = this.$moment(form_obj.startTime).format('YYYY-MM-DD');
|
// form_obj.startTime = new Date(form_obj.startTime).Format("yyyy-MM-dd").toLocaleString();
|
}
|
if (form_obj.endTime) {
|
form_obj.endTime = this.$moment(form_obj.endTime).format('YYYY-MM-DD');
|
// form_obj.endTime = new Date(form_obj.endTime).Format("yyyy-MM-dd").toLocaleString();
|
}
|
|
if (form_obj.createTime) {
|
form_obj.createTime = this.$moment(form_obj.createTime).format('YYYY-MM-DD');
|
}
|
|
/* if (form_obj.parttimeUser && form_obj.parttimeUser.length>0) {
|
let parttimeUser_ = "";
|
for (let i = 0; i<form_obj.parttimeUser.length; i++) {
|
if (parttimeUser_ == "") {
|
parttimeUser_ = form_obj.parttimeUser[i];
|
}
|
else {
|
parttimeUser_ = parttimeUser_ + ";" + form_obj.parttimeUser[i];
|
}
|
}
|
|
form_obj.parttimeUser = parttimeUser_;
|
} */
|
|
//form_obj.parttimeList = this.parttimeLists[itm_k];
|
|
if (form_obj.userIds) {
|
let leng = form_obj.userIds.length;
|
|
form_obj.roleName = form_obj.userIds[leng-2];
|
form_obj.userId = form_obj.userIds[leng-1];
|
}
|
form_obj.type = itm_k;
|
form_obj.parentId = this.xmId;
|
|
|
form_array.push(form_obj);
|
}
|
|
if (is_null1) {
|
this.loading_nextStep = true;
|
// let datas = "?datas=" + encodeURI(JSON.stringify(form_array));
|
let url = "/api/detail/updates";
|
this.$axios.post(url,
|
{
|
schemeId: me.xmId,
|
datas: form_array
|
}).then(data_ => {
|
window.console.log(data_);
|
me.loading_nextStep = false;
|
if (data_.data.success) {
|
me.add_Step = 2;
|
me.nextStepName = "完 成";
|
}
|
else {
|
me.$message.error(data_.data.message);
|
}
|
}).catch(error =>{
|
me.$message.error("接口错误");
|
me.loading_nextStep = false;
|
})
|
}
|
},
|
saveStep3() {
|
let url = "/api/scheme/working/" + this.xmId;
|
this.$axios.get(url).then(data_ => {
|
if(data_.data.success) {
|
this.$message('项目启动成功');
|
this.Cancel();
|
}else {
|
|
this.$message({message:'项目启动失败', type: 'warning'});
|
}
|
}).catch(error =>{
|
})
|
},
|
|
leadUserIdChange(val) {
|
let aa = val;
|
let s_ = "";
|
for (let i=0; i<val.length; i++) {
|
if (i == 0) {
|
let val_ = val[i];
|
s_ = val_[val_.length - 1];
|
}
|
else {
|
let val_ = val[i];
|
s_ = s_ + ";" + val_[val_.length - 1];
|
}
|
}
|
this.ruleForm.leadUserId = s_;
|
},
|
|
typeArrayChange_(val) {
|
if (val.length > 0) {
|
for (let i = 0; i< val.length; i++) {
|
if (i == 0) {
|
this.ruleForm.type = val[i];
|
}
|
else {
|
this.ruleForm.type += ";" + val[i];
|
}
|
}
|
}
|
else {
|
this.ruleForm.type = "";
|
}
|
},
|
|
order_typeArrayChange_(val) {
|
if (val.length > 0) {
|
for (let i = 0; i< val.length; i++) {
|
if (i == 0) {
|
this.ruleForm.orderType = val[i];
|
}
|
else {
|
this.ruleForm.orderType += ";" + val[i];
|
}
|
}
|
}
|
else {
|
this.ruleForm.orderType = "";
|
}
|
},
|
|
chargeArrayChange_(val) {
|
if (val.length > 0) {
|
for (let i = 0; i< val.length; i++) {
|
if (i == 0) {
|
this.ruleForm.chargeId = val[i];
|
}
|
else {
|
this.ruleForm.chargeId += ";" + val[i];
|
}
|
}
|
}
|
else {
|
this.ruleForm.chargeId = "";
|
}
|
},
|
|
}
|
}
|
</script>
|
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
<style>
|
.class_dataImport .el-tabs__content{
|
position: inherit;
|
}
|
|
.class_dataImport .grid-content {
|
border-radius: 4px;
|
height: 60px;
|
min-height: 26px;
|
}
|
.class_dataImport .main-row .grid-content {
|
line-height: 60px;
|
}
|
|
.class_dataImport .z_grid-content2{
|
display:table-cell;
|
vertical-align:bottom;
|
color: #2c3e50;
|
height: 50px;
|
}
|
|
</style>
|