瀏覽代碼

Merge branch 'master' into 'master'

慢特病登记

See merge request lighter/vue-intergration-platform!68
huangshuhua 1 年之前
父節點
當前提交
cd24271a07

+ 58 - 0
src/api/chronic-disease/chronic-disease.js

@@ -0,0 +1,58 @@
+import request from '../../utils/request'
+
+/**
+ * 查询慢特病信息需求字典
+ * @returns 
+ */
+export function getCrmDictionary() {
+    return request({
+        url: '/chronicDisease/getCrmDictionary',
+        method: 'get',
+        params: {},
+    })
+}
+
+/**
+ * 根据code查询城市字典
+ * @returns 
+ */
+export function getCrmCityByCode(code) {
+    return request({
+        url: '/chronicDisease/getCrmCityByCode',
+        method: 'get',
+        params: { code },
+    })
+}
+
+/**
+ * 根据code查询区域字典
+ * @returns 
+ */
+export function getCrmAreaByCode(code) {
+    return request({
+        url: '/chronicDisease/getCrmAreaByCode',
+        method: 'get',
+        params: { code },
+    })
+}
+
+// 保存慢特病基本信息
+export function saveCrmPatientMi(data) {
+    return request({
+        url: '/chronicDisease/saveCrmPatientMi',
+        method: 'post',
+        data,
+    })
+}
+
+/**
+ * 根据code查询慢特病登记信息
+ * @returns 
+ */
+export function selectCrmPatientMiByCode(keyCode) {
+    return request({
+        url: '/chronicDisease/selectCrmPatientMiByCode',
+        method: 'get',
+        params: { keyCode },
+    })
+}

+ 5 - 0
src/router/modules/dashboard.js

@@ -772,6 +772,11 @@ const route = [
                 component: createNameComponent(() => import('@/views/clinic/triage/DisplaySettings.vue')),
                 meta: {title: '显示管理'},
             },
+            {
+                path: 'chronicDisease/chronicDiseaseRegister',
+                component: createNameComponent(() => import('@/views/clinic/chronicDisease/ChronicDiseaseRegister.vue')),
+                meta: {title: '慢特病信息登记'},
+            },
         ],
     },
     {

+ 860 - 0
src/views/clinic/chronicDisease/ChronicDiseaseRegister.vue

@@ -0,0 +1,860 @@
+<template>
+    <PageLayer>
+        <template #header class="hd-cl">
+            <el-input v-model="keyCode" placeholder="请输入证件号/门诊号/住院号/体检号" style="width: 320px;">
+                <template #prepend>关键字</template>
+            </el-input>
+            <el-button type="primary" icon="Search" @click="queryCmr()" style="margin-left: 10px">查询
+            </el-button>
+            <el-button type="primary" icon="Plus" @click="addForm(ruleFormRef)" style="margin-left: 10px">新增
+            </el-button>
+            <el-button type="primary" icon="Edit" @click="editForm(ruleFormRef)" style="margin-left: 10px">编辑
+            </el-button>
+            <el-button type="primary" icon="Select" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存
+            </el-button>
+            <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)" style="margin-left: 10px">重置
+            </el-button>
+        </template>
+        <template #main>
+            <span style="text-align: center;">
+                <h2>长沙泰和医院慢病患者信息首次登记表</h2>
+            </span>
+            <div class="demo-collapse">
+                <el-form ref="ruleFormRef" :model="ruleForm" :rules="rulesAll" label-width="160px" class="demo-ruleForm"
+                    :size="formSize" status-icon :disabled="isEditForm">
+                    <el-input type="hidden" v-model="ruleForm.pId" />
+                    <el-collapse v-model="activeName">
+                        <el-collapse-item title="基本资料" name="1" disabled>
+                            <el-row>
+                                <el-col :span="8">
+                                    <el-form-item label="用户名称" prop="pName">
+                                        <el-input v-model="ruleForm.pName" minlength="1" maxlength="20" show-word-limit
+                                            placeholder="请填写用户名称" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="8">
+                                    <el-form-item label="性别" prop="sex">
+                                        <el-select v-model="ruleForm.sex" placeholder="请选择性别" clearable style="width: 100%">
+                                            <el-option v-for="item in dics.getSexCode" :key="item.code" :label="item.name"
+                                                :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="8">
+                                    <el-form-item label="年龄" prop="age">
+                                        <el-input v-model="ruleForm.age" minlength="1" maxlength="6" show-word-limit
+                                            placeholder="请填写年龄" />
+                                    </el-form-item>
+                                </el-col>
+                                <!-- <el-col :span="6">
+                                    <el-form-item label="出生日期" prop="birthDate">
+                                        <el-date-picker v-model="ruleForm.birthDate" type="date" label="出生日期"
+                                            placeholder="请选择出生日期" style="width: 100%" />
+                                    </el-form-item>
+                                </el-col> -->
+                            </el-row>
+                            <!-- <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="门诊号" prop="hisMzNo">
+                                        <el-input v-model="ruleForm.hisMzNo" maxlength="20" show-word-limit
+                                            placeholder="请填写门诊号" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="住院号" prop="hisZyNo">
+                                        <el-input v-model="ruleForm.hisZyNo" maxlength="20" show-word-limit
+                                            placeholder="请填写住院号" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="病案号" prop="hisBaNo">
+                                        <el-input v-model="ruleForm.hisBaNo" maxlength="12" show-word-limit
+                                            placeholder="请填写病案号" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="体检号" prop="hisTjNo">
+                                        <el-input v-model="ruleForm.hisTjNo" maxlength="20" show-word-limit
+                                            placeholder="请填写体检号" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row> -->
+                            <el-row>
+                                <el-col :span="8">
+                                    <el-form-item label="证件号" prop="socialNo">
+                                        <el-input v-model="ruleForm.socialNo" minlength="1" maxlength="20" show-word-limit
+                                            placeholder="请填写证件号" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="8">
+                                    <el-form-item label="证件类型" prop="certificateType">
+                                        <el-select v-model="ruleForm.certificateType" placeholder="请选择证件类型" clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in dics.getPsnCertType" :key="item.code"
+                                                :label="item.name" :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <!-- <el-col :span="6">
+                                    <el-form-item label="卡号" prop="cardNo">
+                                        <el-input v-model="ruleForm.cardNo" maxlength="20" show-word-limit
+                                            placeholder="请填写卡号" />
+                                    </el-form-item>
+                                </el-col> -->
+                                <el-col :span="8">
+                                    <el-form-item label="病人来源" prop="pType">
+                                        <el-select v-model="ruleForm.pType" placeholder="请选择病人来源" style="width: 100%">
+                                            <el-option label="" value="" hidden />
+                                            <el-option label="门诊" value="1" />
+                                            <el-option label="住院" value="2" />
+                                            <el-option label="健康体检" value="3" />
+                                            <el-option label="慢病中心" value="4" />
+                                            <el-option label="医联体" value="5" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="本人电话" prop="relTel">
+                                        <el-input v-model="ruleForm.relTel" maxlength="20" show-word-limit
+                                            placeholder="请填写本人电话" />
+                                    </el-form-item>
+                                </el-col>
+                                <!-- <el-col :span="6">
+                                    <el-form-item label="联系电话2" prop="relTel2">
+                                        <el-input v-model="ruleForm.relTel2" maxlength="20" show-word-limit
+                                            placeholder="请填写联系电话2" />
+                                    </el-form-item>
+                                </el-col> -->
+                                <el-col :span="6">
+                                    <el-form-item label="联系人或家属电话" prop="relNameTel">
+                                        <el-input v-model="ruleForm.relNameTel" maxlength="20" show-word-limit
+                                            placeholder="请填写联系人或家属电话" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="联系人姓名" prop="relName">
+                                        <el-input v-model="ruleForm.relName" maxlength="30" show-word-limit
+                                            placeholder="请填写联系人姓名" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="联系人关系" prop="relCode">
+                                        <el-select v-model="ruleForm.relCode" placeholder="请选择联系人关系" style="width: 100%">
+                                            <el-option v-for="item in dics.getRelations" :key="item.code" :label="item.name"
+                                                :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <!-- <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="联系人关系" prop="relCode">
+                                        <el-select v-model="ruleForm.relCode" placeholder="请选择联系人关系" style="width: 100%">
+                                            <el-option label="" value="0" hidden />
+                                            <el-option label="本人" value="1" />
+                                            <el-option label="父子" value="2" />
+                                            <el-option label="母子" value="3" />
+                                            <el-option label="其他" value="4" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="12">
+                                    <el-form-item label="联系人地址" prop="relStreet">
+                                        <el-input v-model="ruleForm.relStreet" maxlength="30" show-word-limit
+                                            placeholder="请填写联系人地址" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="联系人邮编" prop="relZip">
+                                        <el-input v-model="ruleForm.relZip" maxlength="6" show-word-limit
+                                            placeholder="请填写联系人邮编" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row> -->
+                            <el-row>
+                                <el-col :span="18">
+                                    <el-form-item label="慢病类型" prop="chronicDiseaseTypeArr">
+                                        <el-select v-model="ruleForm.chronicDiseaseTypeArr" multiple
+                                            :multiple-limit="chronicDiseaseNo" collapse-tags collapse-tags-tooltip
+                                            :max-collapse-tags="5" placeholder="请选择慢病类型" clearable style="width: 100%">
+                                            <el-option v-for="item in dics.getCrmClass" :key="item.code" :label="item.name"
+                                                :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="确诊时间" prop="lastDate">
+                                        <el-date-picker v-model="ruleForm.lastDate" type="date" label="确诊时间"
+                                            value-format="YYYY-MM-DD" placeholder="请选择确诊时间" style="width: 100%" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="24">
+                                    <el-form-item label="患者重点随访监测事项" prop="pComment">
+                                        <el-input v-model="ruleForm.pComment" maxlength="50" show-word-limit
+                                            placeholder="请填写患者重点随访监测事项" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item>
+                        <!-- <el-collapse-item title="患者信息" name="3">
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="婚姻状况" prop="marryCode">
+                                        <el-select v-model="ruleForm.marryCode" placeholder="请选择婚姻状况" style="width: 100%">
+                                            <el-option label="" value="" hidden />
+                                            <el-option label="未婚" value="1" />
+                                            <el-option label="已婚" value="2" />
+                                            <el-option label="离异" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="国籍" prop="countryCode">
+                                        <el-select v-model="ruleForm.countryCode" placeholder="请选择国籍" style="width: 100%">
+                                            <el-option label="" value="" hidden />
+                                            <el-option label="湖南" value="1" />
+                                            <el-option label="长沙" value="2" />
+                                            <el-option label="开福区" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="民族" prop="nationCode">
+                                        <el-select v-model="ruleForm.nationCode" placeholder="请选择民族" style="width: 100%">
+                                            <el-option label="" value="" hidden />
+                                            <el-option label="汉族" value="1" />
+                                            <el-option label="少数民族" value="2" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="职业" prop="occupationCode">
+                                        <el-select v-model="ruleForm.occupationCode" placeholder="请选择职业"
+                                            style="width: 100%">
+                                            <el-option label="" value="" hidden />
+                                            <el-option label="工人" value="1" />
+                                            <el-option label="农民" value="2" />
+                                            <el-option label="其他" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="行业" prop="vocationCode">
+                                        <el-select v-model="ruleForm.vocationCode" placeholder="请选择行业" style="width: 100%">
+                                            <el-option label="农业" value="1" />
+                                            <el-option label="林业" value="2" />
+                                            <el-option label="畜牧业" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="所属企业" prop="entId">
+                                        <el-input v-model="ruleForm.entId" maxlength="12" show-word-limit
+                                            placeholder="请填写所属企业" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="区县编码" prop="districtCode">
+                                        <el-input v-model="ruleForm.districtCode" maxlength="6" show-word-limit
+                                            placeholder="请填写区县编码" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="邮编" prop="eMail">
+                                        <el-input v-model="ruleForm.eMail" maxlength="20" show-word-limit
+                                            placeholder="请填写区县邮编" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="家庭电话" prop="homeTel">
+                                        <el-input v-model="ruleForm.homeTel" maxlength="20" show-word-limit
+                                            placeholder="请填写家庭电话" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="12">
+                                    <el-form-item label="家庭住址" prop="homeStreet">
+                                        <el-input v-model="ruleForm.homeStreet" maxlength="30" show-word-limit
+                                            placeholder="请填写家庭住址" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="家庭邮编" prop="homeZip">
+                                        <el-input v-model="ruleForm.homeZip" maxlength="6" show-word-limit
+                                            placeholder="请填写家庭邮编" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="单位电话" prop="empTel">
+                                        <el-input v-model="ruleForm.empTel" maxlength="20" show-word-limit
+                                            placeholder="请填写单位电话" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="单位名称" prop="empName">
+                                        <el-input v-model="ruleForm.empName" maxlength="30" show-word-limit
+                                            placeholder="请填写单位名称" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="单位住址" prop="empStreet">
+                                        <el-input v-model="ruleForm.empStreet" maxlength="30" show-word-limit
+                                            placeholder="请填写单位住址" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="单位邮编" prop="empZip">
+                                        <el-input v-model="ruleForm.empZip" maxlength="6" show-word-limit
+                                            placeholder="请填写单位邮编" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item> -->
+                        <el-collapse-item title="其他信息" name="2" disabled>
+                            <!-- <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="最近一次医疗方式" prop="lastType">
+                                        <el-select v-model="ruleForm.lastType" placeholder="请选择医疗方式" style="width: 100%">
+                                            <el-option label="门诊" value="1" />
+                                            <el-option label="住院" value="2" />
+                                            <el-option label="体检" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="最近一次医疗时间" prop="lastDate">
+                                        <el-date-picker v-model="ruleForm.lastDate" type="datetime" label="医疗时间"
+                                            placeholder="请选择医疗时间" style="width: 100%" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="等级描述" prop="importComment">
+                                        <el-input v-model="ruleForm.importComment" maxlength="30" show-word-limit
+                                            placeholder="请填写病人等级描述" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row> -->
+                            <!-- <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="潜在问题" prop="quLevel">
+                                        <el-select v-model="ruleForm.quLevel" placeholder="请选择潜在问题" style="width: 100%">
+                                            <el-option label="初级问题" value="1" />
+                                            <el-option label="高级问题" value="2" />
+                                            <el-option label="特级问题" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="潜在问题说明" prop="quComment">
+                                        <el-input v-model="ruleForm.quComment" maxlength="30" show-word-limit
+                                            placeholder="请填写潜在问题说明" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row> -->
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="病人等级" prop="importLevel">
+                                        <el-select v-model="ruleForm.importLevel" placeholder="请选择病人等级" style="width: 100%">
+                                            <el-option label="未住院患者" value="1" />
+                                            <el-option label="住院一次患者" value="2" />
+                                            <el-option label="住院两次及以上" value="3" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="省" prop="provinceCode">
+                                        <el-select v-model="ruleForm.provinceCode" placeholder="请选择省" style="width: 100%"
+                                            filterable @change="provinceCharge">
+                                            <el-option v-for="item in dics.getProvince" :key="item.code" :label="item.name"
+                                                :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="市" prop="cityCode">
+                                        <el-select v-model="ruleForm.cityCode" placeholder="请选择市" style="width: 100%"
+                                            filterable @change="cityCharge">
+                                            <el-option v-for="item in dics.getCity" :key="item.code" :label="item.name"
+                                                :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="区" prop="areaCode">
+                                        <el-select v-model="ruleForm.areaCode" placeholder="请选择区" style="width: 100%"
+                                            filterable>
+                                            <el-option v-for="item in dics.getArea" :key="item.code" :label="item.name"
+                                                :value="item.code" />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="24">
+                                    <el-form-item label="详细地址" prop="detailAdress">
+                                        <el-input v-model="ruleForm.detailAdress" maxlength="50" show-word-limit
+                                            placeholder="请填写详细地址" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item>
+                        <el-collapse-item title="体征信息" name="3" disabled>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="身高" prop="height">
+                                        <el-input v-model="ruleForm.height" maxlength="12" show-word-limit
+                                            placeholder="请填写身高">
+                                            <template #append>cm</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="体重" prop="weight">
+                                        <el-input v-model="ruleForm.weight" maxlength="12" show-word-limit
+                                            placeholder="请填写体重">
+                                            <template #append>kg</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="体温" prop="temperature">
+                                        <el-input v-model="ruleForm.temperature" maxlength="12" show-word-limit
+                                            placeholder="请填写体温">
+                                            <template #append>°C</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="心率" prop="heartRate">
+                                        <el-input v-model="ruleForm.heartRate" maxlength="12" show-word-limit
+                                            placeholder="请填写心率">
+                                            <template #append>次</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="舒张血压" prop="bloodPressureLow">
+                                        <el-input v-model.number="ruleForm.bloodPressureLow" maxlength="12" show-word-limit
+                                            placeholder="请填写舒张血压">
+                                            <template #append>mmHg</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="收缩血压" prop="bloodPressureHigh">
+                                        <el-input v-model.number="ruleForm.bloodPressureHigh" maxlength="12" show-word-limit
+                                            placeholder="请填写收缩血压">
+                                            <template #append>mmHg</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="血糖" prop="bloodSugar">
+                                        <el-input v-model="ruleForm.bloodSugar" maxlength="12" show-word-limit
+                                            placeholder="请填写血糖">
+                                            <template #append>mmol/L</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="血氧" prop="bloodOxygen">
+                                        <el-input v-model="ruleForm.bloodOxygen" maxlength="12" show-word-limit
+                                            placeholder="请填写血氧">
+                                            <template #append>%</template>
+                                        </el-input>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item>
+                        <el-collapse-item title="创建信息" name="4" disabled>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="主管医生" prop="referPhysician">
+                                        <el-select-v2 v-model="ruleForm.referPhysician" clearable remote style="width: 100%"
+                                            filterable :options="empList" :remote-method="empMethod" placeholder="请选择主管医生">
+                                            <template #default="{ item }">
+                                                <span style="margin-right: 8px">{{ item.label }}</span>
+                                                <span style="color: var(--el-text-color-secondary); font-size: 13px">
+                                                    {{ item.value }}
+                                                </span>
+                                            </template>
+                                        </el-select-v2>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="建档医生" prop="creatId">
+                                        <el-input :value="userName" readonly placeholder="系统登录人为创建人" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="建卡时间" prop="createDate">
+                                        <el-input :value="ruleForm.createDate" readonly placeholder="默认当前时间为建卡时间" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="下次随访时间" prop="visitDate">
+                                        <el-date-picker v-model="ruleForm.visitDate" type="date" label="随访时间"
+                                            value-format="YYYY-MM-DD" placeholder="请选择下次随访时间" style="width: 100%" />
+                                    </el-form-item>
+                                </el-col>
+                                <!-- <el-col :span="6">
+                                    <el-form-item label="最近一次随访次数" prop="visitTimes">
+                                        <el-input v-model="ruleForm.visitTimes" maxlength="10" show-word-limit
+                                            placeholder="请填写最近一次随访次数" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="最近一次随访时间" prop="visitDate">
+                                        <el-date-picker v-model="ruleForm.visitDate" type="datetime" label="随访时间"
+                                            placeholder="请选择最近一次随访时间" style="width: 100%" />
+                                    </el-form-item>
+                                </el-col> -->
+                            </el-row>
+                        </el-collapse-item>
+                    </el-collapse>
+                </el-form>
+            </div>
+        </template>
+    </PageLayer>
+</template>
+  
+<script  lang="ts" setup name="ChronicDiseaseRegister">
+import { reactive, ref, onMounted, nextTick } from 'vue'
+import store from '@/store'
+import PageLayer from '../../../layout/PageLayer.vue'
+import type { FormInstance, FormRules } from 'element-plus'
+import { ElMessage } from 'element-plus'
+import { getDatetime } from '../../../utils/date'
+import { getCrmDictionary, getCrmCityByCode, getCrmAreaByCode, saveCrmPatientMi, selectCrmPatientMiByCode } from "@/api/chronic-disease/chronic-disease"
+import { employeeList } from "@/api/zhu-yuan-yi-sheng/pat-info-query"
+
+const activeName = ref(['1', '2', '3', '4', '5', '6', '7'])
+const userCode = store.state.user.info.code
+const userName = store.state.user.info.name
+let dics: any = ref({})
+const empList = ref([])
+
+onMounted(async () => {
+    await nextTick(async () => {
+        dics.value = await getCrmDictionary()
+        empMethod('')
+    })
+
+})
+
+const empMethod = async (val: string) => {
+    await employeeList(val).then((res: any) => {
+        empList.value = res
+    })
+}
+
+interface RuleForm {
+    pId: string
+    pName: string
+    sex: string
+    birthDate: string
+    hisMzNo: string
+    hisZyNo: string
+    hisBaNo: string
+    hisTjNo: string
+    socialNo: string
+    cardNo: string
+    pType: string
+    entId: string
+    marryCode: string
+    countryCode: string
+    nationCode: string
+    occupationCode: string
+    vocationCode: string
+    districtCode: string
+    eMail: string
+    homeTel: string
+    homeStreet: string
+    homeZip: string
+    empTel: string
+    empName: string
+    empStreet: string
+    empZip: string
+    relTel: string
+    relTel2: string
+    relNameTel: string
+    relName: string
+    relCode: string
+    relStreet: string
+    relZip: string
+    lastType: string
+    lastDate: string
+    pComment: string
+    importLevel: string
+    importComment: string
+    quLevel: string
+    quComment: string
+    certificateType: string
+    chronicDiseaseType: string
+    chronicDiseaseTypeArr: string[]
+    createDate: string
+    creatId: string
+    provinceCode: string
+    cityCode: string
+    detailAdress: string
+    referPhysician: string
+    referPhysicianName: string
+    visitTimes: number
+    visitDate: string
+    age: string
+    areaCode: string
+    height: string
+    weight: string
+    temperature: string
+    bloodPressureLow: string
+    bloodPressureHigh: string
+    heartRate: string
+    bloodSugar: string
+    bloodOxygen: string
+}
+
+const keyCode = ref('')
+const formSize = ref('default')
+const isEditForm = ref(false)
+const chronicDiseaseNo = ref(20)
+let now = getDatetime()
+const ruleFormRef = ref<FormInstance>()
+const ruleForm = ref<RuleForm>({
+    pId: '',
+    pName: '',
+    sex: '',
+    birthDate: '',
+    hisMzNo: '',
+    hisZyNo: '',
+    hisBaNo: '',
+    hisTjNo: '',
+    socialNo: '',
+    cardNo: '',
+    pType: '',
+    entId: '',
+    marryCode: '',
+    countryCode: '',
+    nationCode: '',
+    occupationCode: '',
+    vocationCode: '',
+    districtCode: '',
+    eMail: '',
+    homeTel: '',
+    homeStreet: '',
+    homeZip: '',
+    empTel: '',
+    empName: '',
+    empStreet: '',
+    empZip: '',
+    relTel: '',
+    relTel2: '',
+    relNameTel: '',
+    relName: '',
+    relCode: '',
+    relStreet: '',
+    relZip: '',
+    lastType: '',
+    lastDate: '',
+    pComment: '',
+    importLevel: '',
+    importComment: '',
+    quLevel: '',
+    quComment: '',
+    certificateType: '',
+    chronicDiseaseType: '',
+    chronicDiseaseTypeArr: [],
+    createDate: now,
+    creatId: userCode,
+    provinceCode: '430000',
+    cityCode: '430100',
+    detailAdress: '',
+    referPhysician: '',
+    referPhysicianName: '',
+    visitTimes: 1,
+    visitDate: '',
+    age: '',
+    areaCode: '',
+    height: '',
+    weight: '',
+    temperature: '',
+    bloodPressureLow: '',
+    bloodPressureHigh: '',
+    heartRate: '',
+    bloodSugar: '',
+    bloodOxygen: '',
+})
+
+const validateInt = (rule: any, value: any, callback: any) => {
+    if (value !== '') {
+        if (Number.isInteger(value)) {
+            callback(new Error('请填写数字'))
+        }
+        if (!ruleFormRef.value) return
+    }
+    callback()
+}
+
+const validateFloat = (rule: any, value: any, callback: any) => {
+    if (value !== '') {
+        if (Number.isNaN(Number.parseFloat(value))) {
+            callback(new Error('请填写数字(可以包含小数点)'))
+        }
+        if (!ruleFormRef.value) return
+    }
+    callback()
+}
+
+const rulesAll = reactive<FormRules<RuleForm>>({
+    pName: [
+        { required: true, message: '请填写用户名称', trigger: 'blur' },
+        { min: 1, max: 20, message: '不超过20个字', trigger: 'blur' },
+    ],
+    sex: [
+        { required: true, message: '请选择性别', trigger: 'change' },
+    ],
+    age: [
+        { required: true, message: '请填写年龄', trigger: 'blur' },
+    ],
+    socialNo: [
+        { required: true, message: '请填写证件号', trigger: 'blur' },
+    ],
+    certificateType: [
+        { required: true, message: '请选择证件类型', trigger: 'change' },
+    ],
+    pType: [
+        { required: true, message: '请选择病人来源', trigger: 'change' },
+    ],
+    relTel: [
+        { required: true, message: '请填写本人电话', trigger: 'blur' },
+    ],
+    chronicDiseaseTypeArr: [
+        { required: true, message: '请选择慢病类型', trigger: 'change' },
+    ],
+    lastDate: [
+        { required: true, message: '请选择确诊时间', trigger: 'change' },
+    ],
+    importLevel: [
+        { required: true, message: '请选择病人等级', trigger: 'change' },
+    ],
+    provinceCode: [
+        { required: true, message: '请选择省', trigger: 'change' },
+    ],
+    cityCode: [
+        { required: true, message: '请选择市', trigger: 'change' },
+    ],
+    areaCode: [
+        { required: true, message: '请选择区', trigger: 'change' },
+    ],
+    referPhysician: [
+        { required: true, message: '请选择主管医生', trigger: 'change' },
+    ],
+    creatId: [
+        { required: true, message: '请选择建档医生', trigger: 'change' },
+    ],
+    createDate: [
+        { required: true, message: '请选择建卡时间', trigger: 'change' },
+    ],
+    visitDate: [
+        { required: true, message: '请选择下次随访时间', trigger: 'change' },
+    ],
+    height: [{ validator: validateFloat, trigger: 'blur' }],
+    weight: [{ validator: validateFloat, trigger: 'blur' }],
+    temperature: [{ validator: validateFloat, trigger: 'blur' }],
+    heartRate: [{ validator: validateInt, trigger: 'blur' }],
+    bloodPressureLow: [{ validator: validateInt, trigger: 'blur' }],
+    bloodPressureHigh: [{ validator: validateInt, trigger: 'blur' }],
+    bloodSugar: [{ validator: validateFloat, trigger: 'blur' }],
+})
+
+const queryCmr = async () => {
+    let code = keyCode.value
+    if (!code) {
+        ElMessage({
+            type: "info",
+            message: '查询关键字不能为空',
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+    ruleForm.value = await selectCrmPatientMiByCode(code)
+    isEditForm.value = true
+}
+
+const addForm = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+    formEl.resetFields()
+    keyCode.value = ''
+}
+
+const editForm = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+
+    if (isEditForm.value === true) {
+        isEditForm.value = false
+    }
+}
+
+const submitForm = async (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+    await formEl.validate((valid, fields) => {
+        if (valid) {
+            ruleForm.value.chronicDiseaseType = ruleForm.value.chronicDiseaseTypeArr.toString()
+            saveCrmPatientMi(ruleForm.value).then((res: any) => {
+                if (res.cg) {
+                    ElMessage({
+                        type: "success",
+                        message: res.cg,
+                        duration: 2500,
+                        showClose: true,
+                    });
+
+                    if (isEditForm.value === false) {
+                        isEditForm.value = true
+                    }
+                }
+            });
+
+        } else {
+            console.log('error submit!', fields)
+            ElMessage({
+                type: "success",
+                message: '未完成必填项或者填写项不符合',
+                duration: 2500,
+                showClose: true,
+            });
+        }
+    })
+}
+
+const resetForm = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+    formEl.resetFields()
+    if (isEditForm.value === true) {
+        isEditForm.value = false
+    }
+    keyCode.value = ''
+}
+
+const provinceCharge = async () => {
+    let province = ruleForm.value.provinceCode
+    dics.value.getCity = await getCrmCityByCode(province)
+}
+
+const cityCharge = async () => {
+    let city = ruleForm.value.cityCode
+    dics.value.getArea = await getCrmAreaByCode(city)
+}
+
+</script>

+ 1 - 1
src/views/target-management/target-dict/TargetDictConfig.vue

@@ -441,7 +441,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
     if (valid) {
       ruleForm.value.dept = deptInfoRef.value.states.selectedLabel
       ruleForm.value.op = opInfoRef.value.states.selectedLabel
-      saveTargetDict(ruleForm).then((res: any) => {
+      saveTargetDict(ruleForm.value).then((res: any) => {
         if (res) {
           nextTick(() => {
             qeryTargetDictTree()

+ 1 - 1
src/views/target-management/target-dict/TargetReportConfig.vue

@@ -399,7 +399,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
                 return
             }
 
-            saveReportBaseInfo(reportForm).then((res: any) => {
+            saveReportBaseInfo(reportForm.value).then((res: any) => {
                 ElMessage({
                     type: "success",
                     message: res.cg,