Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
闫晓茹 2024-03-28 10:36:03 +08:00
commit edb71d29b4
13 changed files with 385 additions and 181 deletions

View File

@ -53,6 +53,7 @@
"nprogress": "0.2.0", "nprogress": "0.2.0",
"quill": "1.3.7", "quill": "1.3.7",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"snabbdom": "^3.6.2",
"sortablejs": "1.10.2", "sortablejs": "1.10.2",
"vue": "2.6.12", "vue": "2.6.12",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",

View File

@ -0,0 +1,23 @@
import request from '@/utils/request'
// /system/partition/taskPartitionList 任务细分
export function taskPartitionList(taskTypeId) {
return request({
url: `/system/partition/taskPartitionList?taskTypeId=${taskTypeId}`,
method: 'get',
})
}
///system/taskType/selectTaskTypeList 任务类型
export function selectTaskTypeList() {
return request({
url: '/system/taskType/selectTaskTypeList',
method: 'get',
})
}
// /system/taskStatus/taskStatusDictList 任务状态
export function taskStatusDictList() {
return request({
url: '/system/taskStatus/taskStatusDictList',
method: 'get',
})
}

View File

@ -262,7 +262,7 @@ export default {
{ required: true, message: '请输入患者手机号', trigger: 'change' }, { required: true, message: '请输入患者手机号', trigger: 'change' },
{ {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机", message: "请输入正确的手机",
trigger: "blur" trigger: "blur"
} }
], ],

View File

@ -676,13 +676,15 @@ video {
// background: #409eff; // background: #409eff;
display: flex; display: flex;
.left { .left {
overflow: auto;
width: 77%; width: 77%;
height: 500px; height: 500px;
// background: #989992; // background: #989992;
} }
img { img {
height: 100%; // height: 100%;
width: 100%; // width: 100%;
} }
.right { .right {
width: 20%; width: 20%;

View File

@ -229,7 +229,7 @@
<!-- 添加或修改短信模板信息对话框 --> <!-- 添加或修改短信模板信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="短信模板名称" prop="textMessageName"> <el-form-item label="短信模板名称" prop="textMessageName">
<el-input <el-input
v-model="form.textMessageName" v-model="form.textMessageName"
@ -240,7 +240,7 @@
<el-input v-model="form.textMessageId" placeholder="请输入短信ID" /> <el-input v-model="form.textMessageId" placeholder="请输入短信ID" />
</el-form-item> </el-form-item>
<el-form-item label="短信排序" prop="textMessageSort"> <el-form-item label="短信排序" prop="textMessageSort">
<el-input-number v-model="form.textMessageSort" controls-position="right" :min="0" placeholder="请输入短信排序"   style="width:380px"/> <el-input-number v-model="form.textMessageSort" controls-position="right" :min="0" placeholder="请输入短信排序"   style="width:350px"/>
</el-form-item> </el-form-item>
@ -255,7 +255,7 @@
<el-select <el-select
v-model="form.suitTaskTypeIds" v-model="form.suitTaskTypeIds"
placeholder="请选择适用任务类型" placeholder="请选择适用任务类型"
style="width: 380px" style="width: 350px"
multiple multiple
> >
<el-option <el-option
@ -271,7 +271,7 @@
<el-select <el-select
v-model="form.textMessageChannel" v-model="form.textMessageChannel"
placeholder="请选择短信通道" placeholder="请选择短信通道"
style="width: 380px" style="width: 350px"
> >
<el-option <el-option
v-for="item in options" v-for="item in options"
@ -286,7 +286,7 @@
<el-select <el-select
v-model="form.textMessageStatus" v-model="form.textMessageStatus"
placeholder="请选择短信状态" placeholder="请选择短信状态"
style="width: 380px" style="width: 350px"
> >
<el-option <el-option
v-for="item in optionstext" v-for="item in optionstext"
@ -303,7 +303,7 @@
v-if="departmentName == '请选择科室'" v-if="departmentName == '请选择科室'"
@click="clickinnerVisible()" @click="clickinnerVisible()"
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
color: #c0c4cc; color: #c0c4cc;
@ -316,7 +316,7 @@
type="" type=""
v-else v-else
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
padding-left: -10px; padding-left: -10px;
@ -331,7 +331,7 @@
v-if="diseaseTypeName == '请选择病种'" v-if="diseaseTypeName == '请选择病种'"
@click="clickdisease()" @click="clickdisease()"
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
color: #c0c4cc; color: #c0c4cc;
@ -344,7 +344,7 @@
type="" type=""
v-else v-else
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
padding-left: -10px; padding-left: -10px;

View File

@ -195,10 +195,10 @@
<el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" /> <el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" />
</el-form-item> </el-form-item>
<el-form-item label="患者电话" prop="patientPhone"> <el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" /> <el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" maxlength="11"/>
</el-form-item> </el-form-item>
<el-form-item label="家属电话" prop="familyMemberPhone"> <el-form-item label="家属电话" prop="familyMemberPhone">
<el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" /> <el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" maxlength="11"/>
</el-form-item> </el-form-item>
<el-form-item label="出生日期" prop="birthDate"> <el-form-item label="出生日期" prop="birthDate">
<el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd"
@ -206,7 +206,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="cardNo"> <el-form-item label="身份证号" prop="cardNo">
<el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" /> <el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" maxlength="18"/>
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="sex"> <el-form-item label="性别" prop="sex">
<el-radio-group v-model="form.sex"> <el-radio-group v-model="form.sex">
@ -462,11 +462,33 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
cardNo:[
{ required: false, message: '', trigger: 'change' },
{
pattern: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/,
message: "身份证号格式有误!",
trigger: "blur"
}
],
patientName: [ patientName: [
{ required: true, message: '请输入患者姓名', trigger: 'change' } { required: true, message: '请输入患者姓名', trigger: 'change' }
], ],
patientPhone: [ patientPhone: [
{ required: true, message: '请输入患者手机号', trigger: 'change' } { required: true, message: '请输入患者手机号', trigger: 'change' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
],
familyMemberPhone:[
{ required: false, message: '', trigger: 'change' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
], ],
appointmentDate: [ appointmentDate: [
{ required: true, message: '请选择患者预约时间', trigger: 'change' } { required: true, message: '请选择患者预约时间', trigger: 'change' }

View File

@ -221,14 +221,13 @@
/> />
<!-- 添加或修改话术信息对话框 --> <!-- 添加或修改话术信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body v-if="open"> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body v-if="open">
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px" :inline="true">
<el-form-item label="通用话术名称" prop="commonScriptName"> <el-form-item label="通用话术名称" prop="commonScriptName">
<el-input <el-input
maxlength="100" maxlength="100"
v-model="form.commonScriptName" v-model="form.commonScriptName"
placeholder="请输入通用话术名称" placeholder="请输入通用话术名称"
type="textarea"
/> />
</el-form-item> </el-form-item>
<el-form-item label="话术名称" prop="scriptName"> <el-form-item label="话术名称" prop="scriptName">
@ -239,7 +238,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="话术排序" prop="scriptSort"> <el-form-item label="话术排序" prop="scriptSort">
<el-input-number v-model="form.scriptSort" controls-position="right" :min="0" placeholder="请输入话术排序"   style="width:380px"/> <el-input-number v-model="form.scriptSort" controls-position="right" :min="0" placeholder="请输入话术排序"   style="width:206px"/>
</el-form-item> </el-form-item>
<el-form-item label="话术ID" prop="scriptId"> <el-form-item label="话术ID" prop="scriptId">
@ -260,7 +259,7 @@
<el-select <el-select
v-model="form.scriptStatus" v-model="form.scriptStatus"
placeholder="请选择" placeholder="请选择"
style="width: 379px" style="width: 206px"
> >
<el-option <el-option
v-for="item in optionsadd" v-for="item in optionsadd"
@ -272,21 +271,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="话术简介" prop="scriptIntroduction">
<el-input
maxlength="200"
v-model="form.scriptIntroduction"
placeholder="请输入话术简介"
type="textarea"
/>
</el-form-item>
<el-form-item label="科室名称" prop="departmentId"> <el-form-item label="科室名称" prop="departmentId">
<el-button <el-button
type="" type=""
v-if="departmentName == '请选择科室'" v-if="departmentName == '请选择科室'"
@click="clickinnerVisible()" @click="clickinnerVisible()"
style=" style="
width: 379px; width: 206px;
text-align: left; text-align: left;
height: 36px; height: 36px;
color: #c0c4cc; color: #c0c4cc;
@ -299,7 +291,7 @@
type="" type=""
v-else v-else
style=" style="
width: 379px; width: 206px;
text-align: left; text-align: left;
height: 36px; height: 36px;
padding-left: -10px; padding-left: -10px;
@ -314,7 +306,7 @@
v-if="diseaseTypeName == '请选择病种'" v-if="diseaseTypeName == '请选择病种'"
@click="clickdisease()" @click="clickdisease()"
style=" style="
width: 379px; width: 206px;
text-align: left; text-align: left;
height: 36px; height: 36px;
color: #c0c4cc; color: #c0c4cc;
@ -327,7 +319,7 @@
type="" type=""
v-else v-else
style=" style="
width: 379px; width: 206px;
text-align: left; text-align: left;
height: 36px; height: 36px;
padding-left: -10px; padding-left: -10px;
@ -336,6 +328,15 @@
>{{ diseaseTypeName }}</el-button >{{ diseaseTypeName }}</el-button
> >
</el-form-item> </el-form-item>
<el-form-item label="话术简介" prop="scriptIntroduction">
<el-input
maxlength="200"
v-model="form.scriptIntroduction"
placeholder="请输入话术简介"
type="textarea"
/>
</el-form-item>
<el-form-item label="图片" prop="scriptFilePath"> <el-form-item label="图片" prop="scriptFilePath">
<stationAcatar <stationAcatar
@imgUrl="imgUrl" @imgUrl="imgUrl"
@ -1050,6 +1051,9 @@ export default {
::v-deep .el-input-number .el-input__inner{ ::v-deep .el-input-number .el-input__inner{
text-align: left; text-align: left;
} }
::v-deep .el-textarea__inner{
width: 206px;
}
.leftscript { .leftscript {
// width: 30%; // width: 30%;
height: 850px; height: 850px;

View File

@ -443,9 +443,7 @@
<el-select <el-select
v-model="aitem.serviceFrequencyText" v-model="aitem.serviceFrequencyText"
placeholder="请选择服务频次" placeholder="请选择服务频次"
> >
<el-option <el-option
v-for="item in optionsfrequency[index]" v-for="item in optionsfrequency[index]"
:key="item.id" :key="item.id"
@ -663,11 +661,9 @@
:inline="true" :inline="true"
> >
<el-form-item label="病种名称:" prop="packageVersion"> <el-form-item label="病种名称:" prop="packageVersion">
<span style=" <span style="display: inline-block; width: 80px">{{
display: inline-block; formdetail.diseaseTypeName
width: 80px; }}</span>
">{{ formdetail.diseaseTypeName }}</span>
</el-form-item> </el-form-item>
<el-form-item label="服务包名称:" prop="packageVersion"> <el-form-item label="服务包名称:" prop="packageVersion">
<span <span
@ -689,13 +685,11 @@
<el-form-item label="价格:" prop="packageVersion"> <el-form-item label="价格:" prop="packageVersion">
<span>{{ formdetail.packagePrice }}</span> <span>{{ formdetail.packagePrice }}</span>
</el-form-item> </el-form-item>
<br> <br />
<el-form-item label="服务期限:" prop="packageVersion"> <el-form-item label="服务期限:" prop="packageVersion">
<span style=" <span style="display: inline-block; width: 80px">{{
display: inline-block; formdetail.packageTermAndUnit
width: 80px; }}</span>
">{{ formdetail.packageTermAndUnit }}</span>
</el-form-item> </el-form-item>
<el-form-item label="硬件类型:" prop="packageVersion"> <el-form-item label="硬件类型:" prop="packageVersion">
<span>{{ <span>{{
@ -1415,6 +1409,9 @@ export default {
// return // return
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.id != null) {
this.form.departmentName = this.departmentName
this.form.diseaseTypeName = this.diseaseTypeName
if (this.form.voList) { if (this.form.voList) {
var obj = JSON.parse(JSON.stringify(this.form)) var obj = JSON.parse(JSON.stringify(this.form))
obj.voList.forEach(e => { obj.voList.forEach(e => {
@ -1427,15 +1424,13 @@ export default {
} else { } else {
e.serviceFrequencyText = e.serviceFrequencyText e.serviceFrequencyText = e.serviceFrequencyText
} }
})
if (this.form.id != null) {
this.form.departmentName = this.departmentName
this.form.diseaseTypeName = this.diseaseTypeName
updateServicepackage(obj).then(response => { updateServicepackage(obj).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
}
} else { } else {
if (this.diseaseTypeName == "请选择病种") { if (this.diseaseTypeName == "请选择病种") {
@ -1449,8 +1444,20 @@ export default {
} else { } else {
this.form.departmentName = this.departmentName this.form.departmentName = this.departmentName
} }
if (this.form.voList) {
var obj = JSON.parse(JSON.stringify(this.form))
obj.voList.forEach(e => {
if (e.serviceFrequencyText.includes('~')) {
const str = e.serviceFrequencyText;
const parts = str.split('~');
e.serviceFrequencyStart = parts[0];
e.serviceFrequencyEnd = parts[1];
e.serviceFrequencyText = null
} else {
e.serviceFrequencyText = e.serviceFrequencyText
}
})
addServicepackage(obj).then(response => { addServicepackage(obj).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
@ -1459,7 +1466,6 @@ export default {
}); });
} }
})
} }
} }
}); });

View File

@ -179,7 +179,7 @@
<!-- 添加或修改微信模板信息对话框 --> <!-- 添加或修改微信模板信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="微信模板名称" prop="wechatTemplateName"> <el-form-item label="微信模板名称" prop="wechatTemplateName">
<el-input <el-input
v-model="form.wechatTemplateName" v-model="form.wechatTemplateName"
@ -190,7 +190,7 @@
<el-input v-model="form.templateId" placeholder="请输入模板ID" /> <el-input v-model="form.templateId" placeholder="请输入模板ID" />
</el-form-item> </el-form-item>
<el-form-item label="微信排序" prop="templateSort"> <el-form-item label="微信排序" prop="templateSort">
<el-input-number v-model="form.templateSort" controls-position="right" :min="0" placeholder="请输入微信排序"   style="width:380px"/> <el-input-number v-model="form.templateSort" controls-position="right" :min="0" placeholder="请输入微信排序"   style="width:350px"/>
</el-form-item> </el-form-item>
<el-form-item label="模板内容" prop="templateContent"> <el-form-item label="模板内容" prop="templateContent">
@ -206,7 +206,7 @@
<el-select <el-select
v-model="form.templateSource" v-model="form.templateSource"
placeholder="请选择" placeholder="请选择"
style="width: 380px" style="width: 350px"
> >
<el-option <el-option
v-for="item in options" v-for="item in options"
@ -221,7 +221,7 @@
<el-select <el-select
v-model="form.suitTaskTypeIds" v-model="form.suitTaskTypeIds"
placeholder="请选择" placeholder="请选择"
style="width: 380px" style="width: 350px"
multiple multiple
> >
<el-option <el-option
@ -239,7 +239,7 @@
v-if="departmentName == '请选择科室'" v-if="departmentName == '请选择科室'"
@click="clickinnerVisible()" @click="clickinnerVisible()"
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
color: #c0c4cc; color: #c0c4cc;
@ -252,7 +252,7 @@
type="" type=""
v-else v-else
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
padding-left: -10px; padding-left: -10px;
@ -267,7 +267,7 @@
v-if="diseaseTypeName == '请选择病种'" v-if="diseaseTypeName == '请选择病种'"
@click="clickdisease()" @click="clickdisease()"
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
color: #c0c4cc; color: #c0c4cc;
@ -280,7 +280,7 @@
type="" type=""
v-else v-else
style=" style="
width: 379px; width: 350px;
text-align: left; text-align: left;
height: 36px; height: 36px;
padding-left: -10px; padding-left: -10px;

View File

@ -201,10 +201,10 @@
<el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" /> <el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" />
</el-form-item> </el-form-item>
<el-form-item label="患者电话" prop="patientPhone"> <el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" /> <el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" maxlength="11" />
</el-form-item> </el-form-item>
<el-form-item label="家属电话" prop="familyMemberPhone"> <el-form-item label="家属电话" prop="familyMemberPhone">
<el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" /> <el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" maxlength="11"/>
</el-form-item> </el-form-item>
<el-form-item label="出生日期" prop="birthDate"> <el-form-item label="出生日期" prop="birthDate">
<el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd"
@ -212,7 +212,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="cardNo"> <el-form-item label="身份证号" prop="cardNo">
<el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" /> <el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" maxlength="18"/>
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="sex"> <el-form-item label="性别" prop="sex">
<el-radio-group v-model="form.sex"> <el-radio-group v-model="form.sex">
@ -469,11 +469,33 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
cardNo:[
{ required: false, message: '', trigger: 'change' },
{
pattern: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/,
message: "身份证号格式有误!",
trigger: "blur"
}
],
familyMemberPhone:[
{ required: false, message: '', trigger: 'change' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
],
patientName: [ patientName: [
{ required: true, message: '请输入患者姓名', trigger: 'change' } { required: true, message: '请输入患者姓名', trigger: 'change' }
], ],
patientPhone: [ patientPhone: [
{ required: true, message: '请输入患者手机号', trigger: 'change' } { required: true, message: '请输入患者手机号', trigger: 'change' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
], ],
visitMethod: [ visitMethod: [
{ required: true, message: '请输入就诊方式', trigger: 'change' } { required: true, message: '请输入就诊方式', trigger: 'change' }

View File

@ -203,10 +203,10 @@
<el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" /> <el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" />
</el-form-item> </el-form-item>
<el-form-item label="患者电话" prop="patientPhone"> <el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" /> <el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" maxlength="11"/>
</el-form-item> </el-form-item>
<el-form-item label="家属电话" prop="familyMemberPhone"> <el-form-item label="家属电话" prop="familyMemberPhone">
<el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" /> <el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" maxlength="11"/>
</el-form-item> </el-form-item>
<el-form-item label="出生日期" prop="birthDate"> <el-form-item label="出生日期" prop="birthDate">
<el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd"
@ -214,7 +214,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="cardNo"> <el-form-item label="身份证号" prop="cardNo">
<el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" /> <el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" maxlength="18"/>
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="sex"> <el-form-item label="性别" prop="sex">
<el-radio-group v-model="form.sex"> <el-radio-group v-model="form.sex">
@ -494,11 +494,33 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
cardNo:[
{ required: false, message: '', trigger: 'change' },
{
pattern: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/,
message: "身份证号格式有误!",
trigger: "blur"
}
],
familyMemberPhone:[
{ required: false, message: '', trigger: 'change' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
],
patientName: [ patientName: [
{ required: true, message: '请输入患者姓名', trigger: 'change' } { required: true, message: '请输入患者姓名', trigger: 'change' }
], ],
patientPhone: [ patientPhone: [
{ required: true, message: '请输入患者手机号', trigger: 'change' } { required: true, message: '请输入患者手机号', trigger: 'change' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
], ],
visitMethod: [ visitMethod: [
{ required: true, message: '请输入就诊方式', trigger: 'change' } { required: true, message: '请输入就诊方式', trigger: 'change' }

View File

@ -11,10 +11,12 @@
</template> </template>
<script> <script>
import Vue from 'vue' import { DomEditor, IDomEditor, SlateElement } from '@wangeditor/editor'
import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import { Boot } from '@wangeditor/editor' import { Boot } from '@wangeditor/editor'
import { h, VNode } from 'snabbdom'
// import menuConf from "./ModalMenu"; // import menuConf from "./ModalMenu";
export default ({ export default ({
components: { Editor, Toolbar }, components: { Editor, Toolbar },
data() { data() {
@ -234,7 +236,14 @@ export default ({
this.editor.focus() this.editor.focus()
this.timer = setInterval(() => { this.timer = setInterval(() => {
if (this.editor.isFocused()) { if (this.editor.isFocused()) {
this.editor.insertText('Hello Vue!') const resume = { // JS
type: 'attachment',
fileName: '用药',
fileSpan: '药品名称',
link: 'https://xxx.com/files/resume.pdf',
children: [{ text: '123' }] // void children
}
this.editor.insertNode(resume)
clearInterval(this.timer) clearInterval(this.timer)
} }
}, 200); }, 200);
@ -251,6 +260,7 @@ export default ({
}, },
}, },
mounted() { mounted() {
}, },
beforeDestroy() { beforeDestroy() {
const editor = this.editor const editor = this.editor
@ -266,8 +276,71 @@ export default ({
}, },
}; };
Boot.registerMenu(menuConf) Boot.registerMenu(menuConf)
Boot.registerPlugin(withAttachment)
const renderElemConf = {
type: 'attachment', // type
renderElem: renderAttachment,
}
Boot.registerRenderElem(renderElemConf)
} }
}) })
function withAttachment(editor) { // JS
const { isInline, isVoid } = editor
const newEditor = editor
newEditor.isInline = elem => {
const type = DomEditor.getNodeType(elem)
if (type === 'attachment') return true // type: attachment inline
return isInline(elem)
}
newEditor.isVoid = elem => {
const type = DomEditor.getNodeType(elem)
if (type === 'attachment') return true // type: attachment void
return isVoid(elem)
}
return newEditor // newEditor
}
function renderAttachment(elem, children, editor) { // JS
console.log(h)
// myResume
const { fileName = '', link = '', fileSpan = '' } = elem
// icon vnode
const iconVnode = h(
// HTML tag
'img',
// HTML
{
props: { src: 'https://hekou-nurse-api.xinyilu.cn/profile/weChatPicture/dygmainPage.png' }, // HTML
style: { width: '1em', marginRight: '0.1em', transform: 'translateY(15%)' /* 其他... */ } // HTML style
}
// img
)
const spanVnode = h(
// HTML tag
'span',
// HTML
{
props: { contentEditable: false }, // HTML
style: { display: 'inline-block', marginLeft: '3px', color: '#22343C', background: '#E5F5F2', /* 其他... */ }, // style
on: { click() { console.log('clicked', link, elem) }, /* 其他... */ }
},
// img
[iconVnode, fileSpan]
)
// vnode
const attachVnode = h(
// HTML tag
'span',
// HTML
{
props: { contentEditable: false }, // HTML
style: { display: 'inline-block', marginLeft: '3px', color: '#fff', background: '#009A82', /* 其他... */ }, // style
on: { click() { console.log('clicked', link, elem), elem.fileName = '123' } /* 其他... */ }
},
//
[iconVnode, fileName, spanVnode]
)
return attachVnode
}
class MyButtonMenu { // JS class MyButtonMenu { // JS
constructor(vueInstance) { constructor(vueInstance) {

View File

@ -40,7 +40,7 @@
</div> </div>
</div> </div>
<el-card v-for="(uitem, uindex) in item.list" :key="uitem.id" <el-card v-for="(uitem, uindex) in item.list" :key="uitem.id"
@click.native='bottomclickevent(index, uindex)' @click.native='bottomclickevent(uitem, index, uindex)'
:class="listindex == index && itemindex == uindex ? 'cards' : ''"> :class="listindex == index && itemindex == uindex ? 'cards' : ''">
<h4>{{ uitem.title }}</h4> <h4>{{ uitem.title }}</h4>
<p>{{ uitem.text }}</p> <p>{{ uitem.text }}</p>
@ -52,20 +52,23 @@
<div class="topform"> <div class="topform">
<el-form ref="form" :inline="true" :model="form" label-width="60px" class="form"> <el-form ref="form" :inline="true" :model="form" label-width="60px" class="form">
<el-form-item label="任务类型" prop="name"> <el-form-item label="任务类型" prop="name">
<el-select v-model="value" style="width:100px"> <el-select v-model="value" style="width:100px" @change="changeTaskType">
<el-option label="出院后" value="item.value"> <el-option v-for="item in selectTaskTypeList" :key="item.id" :label="item.taskTypeName"
:value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务细分" prop="name"> <el-form-item label="任务细分" prop="name">
<el-select v-model="value" style="width:100px"> <el-select v-model="value" style="width:100px">
<el-option label="出院后" value="item.value"> <el-option v-for="item in taskPartitionList" :key="item.id" :label="item.taskTypeName"
:value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务状态" prop="name"> <el-form-item label="任务状态" prop="name">
<el-select v-model="value" style="width:100px"> <el-select v-model="value" style="width:100px">
<el-option label="出院后" value="item.value"> <el-option v-for="item in taskStatusDictList" :key="item.id"
:label="item.taskStatusName" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -80,7 +83,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<!-- <wangeditor style="height:300px;width:100%;" ref="editor" /> --> <wangeditor style="height:300px;width:100%;" ref="editor" />
</div> </div>
</div> </div>
</div> </div>
@ -88,6 +91,9 @@
<script> <script>
import wangeditor from '../components/wangEditor.vue' import wangeditor from '../components/wangEditor.vue'
import {
selectTaskTypeList, taskPartitionList, taskStatusDictList
} from '@/api/system/specialDiseaseNode'
export default { export default {
components: { wangeditor }, components: { wangeditor },
name: "specialDiseaseNode", name: "specialDiseaseNode",
@ -150,9 +156,16 @@ export default {
}], }],
value: '', value: '',
input: '', input: '',
//
selectTaskTypeList: [],
//
taskStatusDictList: [],
//
taskPartitionList: [],
}; };
}, },
created() { created() {
this.taskinfo();
}, },
watch: { watch: {
}, },
@ -164,13 +177,29 @@ export default {
this.listindex = index this.listindex = index
this.itemindex = 0 this.itemindex = 0
}, },
bottomclickevent(index, uindex) { bottomclickevent(uitem, index, uindex) {
this.uitem = uitem
this.listindex = index this.listindex = index
this.itemindex = uindex this.itemindex = uindex
}, },
handleStep() { handleStep() {
this.active = 2 this.active = 2
}, },
//
taskinfo() {
selectTaskTypeList().then(res => {
this.selectTaskTypeList = res.data
})
taskStatusDictList().then(res => {
this.taskStatusDictList = res.data
})
},
//
changeTaskType(id) {
taskPartitionList(id).then(res => {
this.taskPartitionList = res.data
})
},
} }
}; };
</script> </script>