| | |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sendstate" |
| | | label="随访状态" |
| | | align="center" |
| | | width="200" |
| | | label="任务状态" |
| | | key="sendstateView" |
| | | prop="sendstateView" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.sendstate == 1"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >表单已领取</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 2"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >待随访</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 3"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >表单已发送</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 4"> |
| | | <el-tag type="info" :disable-transitions="false">不执行</el-tag> |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 5"> |
| | | <el-tag type="danger" :disable-transitions="false" |
| | | >发送失败</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 6"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >已完成</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 7"> |
| | | <el-tag type="danger" :disable-transitions="false">超时</el-tag> |
| | | </div> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.remark" |
| | | placement="top-start" |
| | | > |
| | | <div v-if="scope.row.sendstateView == 1"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >待随访</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstateView == 2"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >随访中</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstateView == 3"> |
| | | <el-tag type="warning" :disable-transitions="false" |
| | | >未完成</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstateView == 4"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >已完成</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstateView == 5"> |
| | | <el-tag type="danger" :disable-transitions="false" |
| | | >无需随访</el-tag |
| | | > |
| | | </div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="orgname == '南华大学附属第一医院'" |
| | | label="入院日期" |
| | | width="200" |
| | | align="center" |
| | | key="starttime" |
| | | prop="starttime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.starttime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="出院日期" |
| | | width="200" |
| | |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | |
| | | <el-table-column |
| | | label="责任护士" |
| | | width="120" |
| | |
| | | <!-- 随访内容 --> |
| | | <div class="call-action"> |
| | | <div class="call-container"> |
| | | <template-selector |
| | | v-if="orgname=='南华大学附属第一医院'&&!Voicetype" |
| | | v-model="form.templateid" |
| | | :templateName="form.templatename" |
| | | :service-type="form.serviceType" |
| | | :is-editable="form.sendState !== 2" |
| | | @select="handleTemplateSelect" |
| | | @clear="handleTemplateClear" |
| | | /> |
| | | <div |
| | | style="display: flex" |
| | | v-if="orgname == '南华大学附属第一医院' && !Voicetype" |
| | | > |
| | | <template-selector |
| | | v-model="form.templateid" |
| | | :templateName="form.templatename" |
| | | :service-type="form.serviceType" |
| | | :is-editable="form.sendState !== 2" |
| | | @select="handleTemplateSelect" |
| | | @clear="handleTemplateClear" |
| | | /> |
| | | <div |
| | | v-if="defaultKey" |
| | | style=" |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 100%; |
| | | padding: 33px 0 0 50px; |
| | | " |
| | | > |
| | | <el-button type="success" round @click="handleConfirmReplace"> |
| | | 默认填充 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="headline"> |
| | | <div>随访内容</div> |
| | | </div> |
| | |
| | | v-if="item.scriptType == 1 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[单选]<span>{{ |
| | | item.scriptContent |
| | | }}</span> |
| | | {{ index + 1 }}. [单选] |
| | | |
| | | <span> {{ item.scriptContent }}</span> |
| | | <span style="margin-left: 20px" |
| | | ><dict-tag |
| | | :options="dict.type.dimensionality_type" |
| | | :value="item.dimension" |
| | | /></span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group v-model="item.scriptResult"> |
| | |
| | | v-if="item.scriptType == 2 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[多选]<span>{{ |
| | | {{ index + 1 }}. [多选]<span>{{ |
| | | item.scriptContent |
| | | }}</span> |
| | | <span style="margin-left: 20px" |
| | | ><dict-tag |
| | | :options="dict.type.dimensionality_type" |
| | | :value="item.dimension" |
| | | /></span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-checkbox-group |
| | |
| | | v-if="item.scriptType == 4 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[问答]<span>{{ |
| | | {{ index + 1 }}. [问答]<span>{{ |
| | | item.scriptContent |
| | | }}</span> |
| | | <span style="margin-left: 20px" |
| | | ><dict-tag |
| | | :options="dict.type.dimensionality_type" |
| | | :value="item.dimension" |
| | | /></span> |
| | | <span v-if="item.valueType == 3">(只能输入数字)</span> |
| | | </div> |
| | | <div class="dev-xx" v-if="item.valueType == 3"> |
| | |
| | | > |
| | | <div v-if="item.targetvalue"> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[单选]<span>{{ |
| | | item.questiontext |
| | | }}</span> |
| | | {{ index + 1 }}. [单选] |
| | | <span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group |
| | |
| | | |
| | | <div class="scriptTopic-dev" :key="index" v-else> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[问答]<span>{{ |
| | | {{ index + 1 }}. [问答]<span>{{ |
| | | item.questiontext |
| | | }}</span> |
| | | <span v-if="item.valueType == 3">(只能输入数字)</span> |
| | |
| | | </el-form-item> |
| | | |
| | | <!-- 随访情况 --> |
| | | <el-form-item label="随访情况" v-if="orgname == '丽水市中医院'"> |
| | | <el-form-item |
| | | label="随访情况" |
| | | v-if=" |
| | | orgname == '丽水市中医院' || |
| | | orgname == '景宁畲族自治县人民医院' |
| | | " |
| | | > |
| | | <el-radio-group v-model="form.taskSituation"> |
| | | <el-radio |
| | | v-for="city in cities" |
| | |
| | | updateTemplate, |
| | | query360PatInfonh, |
| | | sendMsg, |
| | | getconfigKey, |
| | | } from "@/api/AiCentre/index"; |
| | | import { |
| | | messagelistpatient, |
| | |
| | | }, |
| | | dicts: [ |
| | | "sys_normal_disable", |
| | | "dimensionality_type", |
| | | "quickfollow_up", |
| | | "sys_user_sex", |
| | | "sys_yujing", |
| | |
| | | return { |
| | | visitAgain: 1, |
| | | userid: "", |
| | | defaultKey: false, //是否可默认填报 |
| | | currentPhoneNumber: "", |
| | | callType: "", // 用于区分是哪个电话 |
| | | isSipRegistering: true, // SIP注册状态 |
| | |
| | | // 禁用今天及之前的日期 |
| | | return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; |
| | | }, |
| | | // shortcuts: [ |
| | | // { |
| | | // text: "七天后", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 7); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "15天后", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 15); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "一个月后", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 30); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "三个月后", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 90); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "六个月后", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 180); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "一年后", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 365); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // ], |
| | | }, |
| | | options: [ |
| | | { |
| | |
| | | ]; |
| | | } |
| | | this.getTaskservelist(); |
| | | this.getconfigKey(); |
| | | }, |
| | | mounted() { |
| | | // 监听子组件的sipStatus属性变化 |
| | |
| | | return "scriptTopic-dev"; // 正常 - 默认样式 |
| | | } |
| | | }, |
| | | getconfigKey() { |
| | | getconfigKey("default.value.icon").then((res) => { |
| | | |
| | | if (res.msg) { |
| | | if ( |
| | | this.getAssignArr(res.msg).includes(this.$store.state.user.name) || |
| | | this.$store.state.user.name == "admin" |
| | | ) { |
| | | this.defaultKey = true; |
| | | } else { |
| | | this.defaultKey = false; |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | getAssignArr(rule) { |
| | | let arr = []; |
| | | let assiginArr = rule.split(","); |
| | | for (let i = 0; i < assiginArr.length; i++) { |
| | | arr[i] = assiginArr[i]; |
| | | } |
| | | arr.sort(this.compare); |
| | | return arr; |
| | | }, |
| | | // 获取选项样式类 |
| | | getOptionClass(items) { |
| | | if (items.isabnormal == 1) { |
| | |
| | | handleTemplateClear() { |
| | | console.log("清除了模板选择"); |
| | | }, |
| | | handleConfirmReplace() { |
| | | // 遍历所有题目(tableDatatop) |
| | | this.tableDatatop.forEach((item) => { |
| | | // 只处理未填报的题目(scriptResult 为空或空数组) |
| | | if ( |
| | | !item.scriptResult || |
| | | (Array.isArray(item.scriptResult) && item.scriptResult.length === 0) |
| | | ) { |
| | | // 查找选项中 defaultValue 为 2 的选项 |
| | | const defaultOption = item.svyTaskTemplateTargetoptions?.find( |
| | | (opt) => opt.defaultValue == 2 |
| | | ); |
| | | console.log(item); |
| | | |
| | | if (defaultOption) { |
| | | // 根据题目类型赋值 |
| | | if (item.scriptType === "1") { |
| | | // 单选题:直接赋值为 optioncontent 字符串 |
| | | item.scriptResult = defaultOption.optioncontent; |
| | | } else if (item.scriptType === "2") { |
| | | // 多选题:赋值为包含 optioncontent 的数组 |
| | | item.scriptResult = [defaultOption.optioncontent]; |
| | | } else if (item.scriptType === "4") { |
| | | // 填空题:一般没有选项,但如果有则赋值 |
| | | item.scriptResult = defaultOption.optioncontent; |
| | | } |
| | | |
| | | // 触发视图更新(因为 Vue 可能无法检测到深层嵌套对象的变化) |
| | | this.$forceUpdate(); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | // 使用示例 |
| | | isValidPhone(phone) { |
| | | return this.validatePhoneNumber(phone).isValid; |
| | |
| | | if (res.code == 200) { |
| | | objson = res.rows[0].serviceSubtaskList[0]; |
| | | objson.suggest = son; |
| | | objson.remark = this.form.remark; |
| | | objson.taskSituation = this.form.taskSituation; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("服务记录成功"); |
| | |
| | | |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | display: flex; |
| | | } |
| | | } |
| | | } |