Merge branch 'SLTD-smartor' into HeNan-Smartor
| | |
| | | data: data |
| | | }); |
| | | } |
| | | // æ°å¢æå¡ |
| | | // 忬¡é访æå¡ |
| | | export function addserviceSubtask(data) { |
| | | return request({ |
| | | url: "/smartor/serviceSubtask/addSubTaskAgain", |
| | |
| | | data: data |
| | | }); |
| | | } |
| | | // 忬¡é访æå¡ |
| | | export function addSubtask(data) { |
| | | return request({ |
| | | url: "/smartor/serviceSubtask/addSubTask", |
| | | method: "post", |
| | | data: data |
| | | }); |
| | | } |
| | | |
| | |
| | | data: data |
| | | }); |
| | | } |
| | | // ç¼åé®å· |
| | | export function WLgetDept(orgid) { |
| | | return request({ |
| | | url: "/getDept/" + orgid, |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | |
| | |
| | | "/xj", |
| | | "/sf", |
| | | "/satisfaction", |
| | | "/loginSSO", |
| | | ]; |
| | | router.beforeEach((to, from, next) => { |
| | | NProgress.start(); |
| | |
| | | component: () => import('@/views/login'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/loginSSO', |
| | | component: () => import('@/views/loginSSO'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/sf', |
| | | component: () => import('@/views/outsideChainnew'), |
| | |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | // { |
| | | // value: 5, |
| | | // label: "满æåº¦è°æ¥", |
| | | // raw: { |
| | | // cssClass: "", |
| | | // listClass: "", |
| | | // }, |
| | | // }, |
| | | { |
| | | value: 6, |
| | | label: "ä½é¢æ»¡æåº¦", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | { |
| | | value: 14, |
| | | label: "é¨è¯æ»¡æåº¦", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | { |
| | | value: 15, |
| | | label: "æè¯å»ºè®®", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | { |
| | | value: 7, |
| | | label: "æ£è
æ¥å", |
| | |
| | | // listClass: "", |
| | | // }, |
| | | // }, |
| | | { |
| | | value: 11, |
| | | label: "å½±åé访", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | { |
| | | value: 12, |
| | | label: "å¿çµé访", |
| | | raw: { |
| | | cssClass: "", |
| | | listClass: "", |
| | | }, |
| | | }, |
| | | // { |
| | | // value: 11, |
| | | // label: "å½±åé访", |
| | | // raw: { |
| | | // cssClass: "", |
| | | // listClass: "", |
| | | // }, |
| | | // }, |
| | | // { |
| | | // value: 12, |
| | | // label: "å¿çµé访", |
| | | // raw: { |
| | | // cssClass: "", |
| | | // listClass: "", |
| | | // }, |
| | | // }, |
| | | // { |
| | | // value: "13", |
| | | // label: "ä¸ç
é访", |
| | |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | |
| | | this.topqueryParams.managementDoctor = store.getters.hisUserId; |
| | | |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div class="leftvlue" style="margin-bottom: 20px"> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index"> |
| | | <el-card |
| | | shadow="hover" |
| | | :body-style="item.router ? ' cursor: pointer' : 'cursor: default'" |
| | | > |
| | | <div style="padding: 8px" @click="$router.push(item.router)"> |
| | | <span>{{ item.name }}</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ item.value ? item.value : 0 }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="2.5"> |
| | | <div class="ysfleftvlue"> |
| | | <el-card shadow="hover"> |
| | | <div style="padding: 8px"> |
| | | <span>表åå·²åé</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ yfsvalue }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="2.5"> |
| | | <div class="errleftvlue"> |
| | | <el-card shadow="hover"> |
| | | <div style="padding: 8px"> |
| | | <span>å¼å¸¸</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ ycvalue }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-form |
| | | :model="topqueryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="ä»»å¡åç§°"> |
| | | <el-input |
| | | v-model="topqueryParams.taskName" |
| | | placeholder="è¯·éæ©ä»»å¡åç§°" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="åºé¢æ¶é´"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="æ£è
å§å" prop="sendname"> |
| | | <el-input |
| | | v-model="topqueryParams.sendname" |
| | | placeholder="请è¾å
¥æ£è
å§å" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¯æåç§°" prop="leavediagname"> |
| | | <el-input |
| | | v-model="topqueryParams.leavediagname" |
| | | placeholder="请è¾å
¥è¯æåç§°" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é访人å" prop="updateBy"> |
| | | <el-input |
| | | v-model="topqueryParams.updateBy" |
| | | placeholder="请è¾å
¥é访人å" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="主治å»ç" prop="drname"> |
| | | <el-input |
| | | v-model="topqueryParams.drname" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»ç®¡å»ç" prop="managementDoctor"> |
| | | <el-input |
| | | v-model="topqueryParams.managementDoctor" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ£è
èå´" prop="status"> |
| | | <el-cascader |
| | | v-model="topqueryParams.scopetype" |
| | | placeholder="é»è®¤å
¨é¨" |
| | | :options="sourcetype" |
| | | :props="{ expandTrigger: 'hover' }" |
| | | @change="handleChange" |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="ä»»å¡ç¶æ" prop="status"> |
| | | <el-select v-model="topqueryParams.sendstate" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in topicoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æåºæ¹å¼" prop="status"> |
| | | <el-select v-model="topqueryParams.sort" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in topicoptionssort" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="medium" |
| | | @click="handleQuery(1)" |
| | | >æç´¢</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" |
| | | >éç½®</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-divider></el-divider> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-upload2" |
| | | size="medium" |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | @click="handleAdd" |
| | | >æ°å¢</el-button |
| | | > |
| | | </el-col> |
| | | |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-warning-outline" |
| | | size="medium" |
| | | @click="toleadExport(1)" |
| | | >æ§è¡å¤±è´¥</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-warning" |
| | | size="medium" |
| | | @click="toleadExport(2)" |
| | | >ç»æå¼å¸¸</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="success" |
| | | plain |
| | | size="medium" |
| | | @click="buidegetTasklist()" |
| | | >å¾
åæå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | size="medium" |
| | | @click="affiliation()" |
| | | >æ¬äººæå±æå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button type="success" size="medium" @click="onthatday()" |
| | | >彿¥æå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | <el-table |
| | | v-loading="loading" |
| | | ref="userform" |
| | | :data="userList" |
| | | :row-class-name="tableRowClassName" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | fixed |
| | | width="150" |
| | | show-overflow-tooltip |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | /> |
| | | <!-- <el-table-column label="åºå·" fixed align="center" key="id" prop="id" /> --> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | key="sendname" |
| | | prop="sendname" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | gettoken360(scope.row.sfzh, scope.row.drcode, scope.row.drname) |
| | | " |
| | | ><span class="button-textsc">{{ |
| | | scope.row.sendname |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä»»å¡ç¶æ" |
| | | align="center" |
| | | key="sendstate" |
| | | prop="sendstate" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.remark" |
| | | placement="top-start" |
| | | > |
| | | <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> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ä»»å¡å¼å¸¸è¯´æ" |
| | | width="120" |
| | | align="center" |
| | | key="remark" |
| | | prop="remark" --> |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="å¤çæè§" |
| | | align="center" |
| | | key="suggest" |
| | | prop="suggest" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_suggest" |
| | | :value="scope.row.suggest" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="éè®¿å®ææ¶é´" |
| | | sortable |
| | | align="center" |
| | | prop="finishtime" |
| | | width="160" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.finishtime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åºé¢æ¥æ" |
| | | width="200" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="主治å»ç" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | <el-table-column |
| | | label="é访人å" |
| | | align="center" |
| | | key="updateBy" |
| | | prop="updateBy" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="ç»ç®¡å»ç" |
| | | align="center" |
| | | key="managementDoctor" |
| | | prop="managementDoctor" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="åºé¢å¤©æ°" |
| | | width="120" |
| | | align="center" |
| | | key="endDay" |
| | | prop="endDay" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.endDay ? scope.row.endDay + "天" : "" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="身份è¯å·ç " |
| | | width="200" |
| | | align="center" |
| | | key="sfzh" |
| | | prop="sfzh" |
| | | /> |
| | | <el-table-column |
| | | label="èç³»çµè¯" |
| | | width="200" |
| | | align="center" |
| | | key="phone" |
| | | prop="phone" |
| | | /> |
| | | <el-table-column |
| | | label="责任æ¤å£«" |
| | | width="120" |
| | | align="center" |
| | | key="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | |
| | | <!-- <el-table-column |
| | | label="ç
åå·" |
| | | align="center" |
| | | sortable |
| | | key="medicalRecordNo" |
| | | prop="medicalRecordNo" |
| | | width="120" |
| | | /> --> |
| | | |
| | | <!-- <el-table-column label="å¹´é¾" align="center" key="age" prop="age" /> --> |
| | | <!-- <el-table-column label="æ§å«"width="100" align="center" key="sex" prop="sex" /> --> |
| | | <!-- <el-table-column label="åºå·" align="center" key="badNo" prop="badNo" /> --> |
| | | <el-table-column |
| | | label="ç§å®¤" |
| | | align="center" |
| | | key="deptname" |
| | | prop="deptname" |
| | | width="120" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç
åº" |
| | | align="center" |
| | | key="leavehospitaldistrictname" |
| | | prop="leavehospitaldistrictname" |
| | | width="120" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="è¯æåç§°" |
| | | align="center" |
| | | key="leavediagname" |
| | | prop="leavediagname" |
| | | width="120" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="æè¯å»ºè®®æ¨¡æ¿åç§°" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | width="200" |
| | | /> |
| | | <el-table-column |
| | | label="任塿§è¡æ¹å¼" |
| | | align="center" |
| | | key="preachform" |
| | | prop="preachform" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.preachform">{{ item }}ã </span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ä»»å¡åéæµç¨" |
| | | align="center" |
| | | key="serviceSubtaskRecordList" |
| | | prop="serviceSubtaskRecordList" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.serviceSubtaskRecordList" |
| | | >{{ item.remark }}ã |
| | | </span> |
| | | </template> |
| | | </el-table-column> --> |
| | | <el-table-column |
| | | label="ä»»å¡ç»æè¯´æ" |
| | | width="220" |
| | | align="center" |
| | | key="remark" |
| | | prop="remark" |
| | | > |
| | | <template slot-scope="scope" v-if="scope.row.remark"> |
| | | <el-tooltip |
| | | :content="scope.row.remark" |
| | | placement="top" |
| | | effect="dark" |
| | | > |
| | | <el-tag |
| | | type="warning" |
| | | v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4" |
| | | >{{ scope.row.remark }}</el-tag |
| | | > |
| | | <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | align="center" |
| | | fixed="right" |
| | | width="300" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <!-- <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="忬¡é访" |
| | | placement="top" |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | v-if="scope.row.isVisitAgain!=2" |
| | | @click="followupvisit(scope.row)" |
| | | ><span class="button-bb" |
| | | ><i class="el-icon-s-promotion"></i>忬¡é访</span |
| | | ></el-button |
| | | > |
| | | </el-tooltip> |
| | | <el-tooltip |
| | | v-if="scope.row.sendstate == 1 || scope.row.sendstate == 2" |
| | | class="item" |
| | | effect="dark" |
| | | content="æåæå¡" |
| | | placement="top" |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="handlestop(scope.row)" |
| | | v-hasPermi="['system:user:edit']" |
| | | ><span class="button-sc" |
| | | ><i class="el-icon-remove-outline"></i>æåæå¡</span |
| | | ></el-button |
| | | > |
| | | </el-tooltip> --> |
| | | <el-button size="medium" type="text" @click="Seedetails(scope.row)" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>æ¥ç详æ
</span |
| | | ></el-button |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="handleUpdate(scope.row)" |
| | | ><span class="button-textxga" |
| | | ><i class="el-icon-edit"></i>æ£è
è¿æ»¤</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="topqueryParams.pageNum" |
| | | :limit.sync="topqueryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-row> |
| | | <!-- 满æåº¦å¼¹æ¡ --> |
| | | <el-dialog |
| | | title="é访满æåº¦è¯å" |
| | | :visible.sync="scoreDialogVisible" |
| | | width="80%" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-table :data="selectedRows" border style="width: 100%"> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | prop="sendname" |
| | | /> |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | width="180" |
| | | align="center" |
| | | prop="taskName" |
| | | /> |
| | | <!-- æ°å¢è¯åå --> |
| | | <el-table-column |
| | | label="ç宿§(20)" |
| | | align="center" |
| | | key="authenticity" |
| | | prop="authenticity" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.authenticity" |
| | | :min="0" |
| | | :max="20" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä¸å¨å
宿(20)" |
| | | align="center" |
| | | key="weekFinish" |
| | | prop="weekFinish" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.weekFinish" |
| | | :min="0" |
| | | :max="20" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="è§èæ§(10)" |
| | | align="center" |
| | | key="standard" |
| | | prop="standard" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.standard" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åæ¶æ§(10)" |
| | | align="center" |
| | | key="timeliness" |
| | | prop="timeliness" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.timeliness" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="宣ææ
åµ(10)" |
| | | align="center" |
| | | key="library" |
| | | prop="library" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.library" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç¯å¢æ»¡æåº¦(10)" |
| | | align="center" |
| | | key="environment" |
| | | prop="environment" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.environment" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å»ç满æåº¦(10)" |
| | | align="center" |
| | | key="doctorSatisfaction" |
| | | prop="doctorSatisfaction" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.doctorSatisfaction" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ¤å£«æ»¡æåº¦(10)" |
| | | align="center" |
| | | key="nurseSatisfaction" |
| | | prop="nurseSatisfaction" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.nurseSatisfaction" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ»å" |
| | | align="center" |
| | | key="total" |
| | | prop="total" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ calculateTotal(scope.row) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="scoreDialogVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="saveScores">ä¿å</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- æ·»å æä¿®æ¹å½±åéè®¿å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | :title="amendtag ? 'ä¿®æ¹æ£è
ä¿¡æ¯' : 'æ°å¢æ£è
'" |
| | | :visible.sync="Labelchange" |
| | | width="900px" |
| | | > |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="100px"> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å§å" width="100" prop="name"> |
| | | <el-input |
| | | v-model="form.name" |
| | | placeholder="请è¾å
¥å§å" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ§å«" width="100" prop="sex"> |
| | | <el-select v-model="form.sex" placeholder="è¯·éæ©æ§å«"> |
| | | <el-option |
| | | v-for="dict in sextype" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å¹´é¾" prop="age"> |
| | | <el-input |
| | | v-model="form.age" |
| | | placeholder="请è¾å
¥å¹´é¾" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="8"> |
| | | <el-form-item label="è¿æ»¤å»ç" width="100" prop="filterDrname"> |
| | | <el-input |
| | | v-model="form.filterDrname" |
| | | placeholder="请è¾å
¥å»çå§å" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¿æ»¤åå "> |
| | | <el-input |
| | | v-model="form.notrequiredreason" |
| | | type="textarea" |
| | | placeholder="请è¾å
¥è¿æ»¤åå " |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | <el-button @click="cancel">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | title="åéæ¶é´è®¾ç½®" |
| | | :visible.sync="modificationVisible" |
| | | width="45%" |
| | | > |
| | | <div style="margin-bottom: 20px; color: red"> |
| | | ç»ä¸ä¿®æ¹å½å¤©æªåéç任塿¶é´ |
| | | </div> |
| | | |
| | | <el-form |
| | | :model="ruleForm" |
| | | :rules="rules" |
| | | ref="ruleForm" |
| | | label-width="120px" |
| | | class="demo-ruleForm" |
| | | > |
| | | <el-form-item label="å鿥æ"> |
| | | <el-date-picker |
| | | v-model="ruleForm.value1" |
| | | type="date" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ¶é´æ®µ" prop="type"> |
| | | <el-checkbox-group v-model="ruleForm.type"> |
| | | <el-checkbox label="ä¸å" name="type"></el-checkbox> |
| | | <el-checkbox label="ä¸å" name="type"></el-checkbox> |
| | | <el-checkbox label="æä¸" name="type"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value2" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value3" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æä¸æ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value4" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="modificationVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="modificationVisible = false" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 忬¡é访 --> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | delUser, |
| | | addUser, |
| | | updateUser, |
| | | resetUserPwd, |
| | | changeUserStatus, |
| | | } from "@/api/system/user"; |
| | | import { |
| | | getTaskservelist, |
| | | buidegetTasklist, |
| | | addserviceSubtask, |
| | | query360PatInfo, |
| | | addsatisfaction, |
| | | } from "@/api/AiCentre/index"; |
| | | import { alterpatient, particularpatient } from "@/api/patient/homepage"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import store from "@/store"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | |
| | | export default { |
| | | name: "Discharge", |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | | components: { Treeselect }, |
| | | data() { |
| | | return { |
| | | // é®ç½©å± |
| | | loading: true, |
| | | // é䏿°ç» |
| | | ids: [], |
| | | // éå个ç¦ç¨ |
| | | single: true, |
| | | // éå¤ä¸ªç¦ç¨ |
| | | multiple: true, |
| | | // æ¾ç¤ºæç´¢æ¡ä»¶ |
| | | showSearch: true, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // ç¨æ·è¡¨æ ¼æ°æ® |
| | | userList: null, |
| | | // å¼¹åºå±æ é¢ |
| | | title: "æ°å¢å½±åé访", |
| | | // æ¯å¦æ¾ç¤ºä¿®æ¹ãæ·»å å¼¹åºå± |
| | | addalteropen: false, |
| | | // ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ |
| | | modificationVisible: false, |
| | | // é¨é¨åç§° |
| | | deptName: undefined, |
| | | // é»è®¤å¯ç |
| | | initPassword: undefined, |
| | | // æ¥æèå´ |
| | | dateRange: [], |
| | | dateRangefs: [], |
| | | // å²ä½é项 |
| | | postOptions: [], |
| | | ruleForm: { |
| | | type: [], |
| | | }, |
| | | zcform: {}, |
| | | dynamicTags: ["é项ä¸", "é项äº", "é项ä¸"], //é项 |
| | | inputVisible: false, |
| | | Labelchange: false, |
| | | ycvalue: "", |
| | | yfsvalue: "", |
| | | inputValue: "", |
| | | preachform: "", |
| | | previewVisible: false, //å½±åé访é¢è§å¼¹æ¡ |
| | | radio: "", |
| | | radios: [], |
| | | previewtype: 2, //é¢è§å½±åé访类å |
| | | total: 0, // æ»æ¡æ° |
| | | // 满æåº¦è°æ¥æ°æ® |
| | | scoreDialogVisible: false, |
| | | selectedRows: [], |
| | | |
| | | value: [], |
| | | list: [], |
| | | |
| | | sourcetype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç§å®¤", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "ç
åº", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "å
¨é¨", |
| | | }, |
| | | ], |
| | | loading: false, |
| | | cardlist: [ |
| | | { |
| | | name: "æå¡æ»é", |
| | | value: 0, |
| | | }, |
| | | // { |
| | | // name: "æ£è
è¿æ»¤", |
| | | // value: 0, |
| | | // }, |
| | | { |
| | | name: "åºé访", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "åé失败", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "å¾
é访", |
| | | value: 0, |
| | | }, |
| | | // { |
| | | // name: "å·²åé", |
| | | // value: 0, |
| | | // }, |
| | | |
| | | // { |
| | | // name: "表åå·²åé", |
| | | // value: 0, |
| | | // }, |
| | | ], |
| | | zcrules: { |
| | | date1: [ |
| | | { required: true, message: "è¯·éæ©é访æ¹å¼", trigger: "change" }, |
| | | ], |
| | | resource: [ |
| | | { required: true, message: "è¯·éæ©é访æ¶é´", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | // 表ååæ° |
| | | form: { |
| | | phonenumber: "", |
| | | totagid: "", |
| | | types: "", |
| | | nickName: "", |
| | | qystatus: "", |
| | | btstatus: "", |
| | | }, |
| | | topicoptionssort: [ |
| | | { |
| | | value: 0, |
| | | label: "åºé¢æ¶é´(æ£åº)", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "åºé¢æ¶é´(ååº)", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "åéæ¶é´(æ£åº)", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "åéæ¶é´(ååº)", |
| | | }, |
| | | ], |
| | | // æ¥è¯¢åæ° |
| | | topqueryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | sendstate: 6, |
| | | sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) |
| | | serviceType: 15, |
| | | searchscope: 3, |
| | | visitCount: 1, |
| | | scopetype: [], |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }, |
| | | propss: { multiple: true }, |
| | | options: [], |
| | | |
| | | topicoptions: [ |
| | | { |
| | | value: null, |
| | | label: "å
¨é¨", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "表åå·²é¢å", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "å¾
é访", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "表åå·²åé", |
| | | }, |
| | | { |
| | | value: 4, |
| | | label: "䏿§è¡", |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: "åé失败", |
| | | }, |
| | | { |
| | | value: 6, |
| | | label: "已宿", |
| | | }, |
| | | ], |
| | | sextype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç·", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "女", |
| | | }, |
| | | ], |
| | | topicoptionsyj: [ |
| | | { |
| | | value: 1, |
| | | label: "å¼å¸¸", |
| | | }, |
| | | { |
| | | value: 0, |
| | | label: "æ£å¸¸", |
| | | }, |
| | | ], |
| | | url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo", |
| | | postData: { |
| | | XiaoXiTou: { |
| | | FaSongFCSJC: "ZJHES", |
| | | FaSongJGID: localStorage.getItem("orgid"), |
| | | FaSongJGMC: localStorage.getItem("orgname"), |
| | | FaSongSJ: "2025-01-09Â 17:29:36", |
| | | FaSongXTJC: "SUIFANGXT", |
| | | FaSongXTMC: "é访系ç»", |
| | | XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", |
| | | XiaoXiLX: "SC_LC_360STCX", |
| | | XiaoXiMC: "360 è§å¾æ¥è¯¢", |
| | | ZuHuID: localStorage.getItem("ZuHuID"), |
| | | ZuHuMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YeWuXX: { |
| | | BingRenXX: { |
| | | ZhengJianHM: "", |
| | | ZhengJianLXDM: "01", |
| | | ZhengJianLXMC: "å±
æ°èº«ä»½è¯", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YongHuXX: { |
| | | XiTongID: "SUIFANGXT", |
| | | XiTongMC: "é访系ç»", |
| | | YongHuID: "1400466972205912064", |
| | | YongHuXM: "JNRMYY", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | idp: "lyra", |
| | | }, |
| | | }, |
| | | }, |
| | | amendtag: false, |
| | | errtype: "", |
| | | leavehospitaldistrictcode: "", |
| | | serviceState: [], |
| | | checkboxlist: [], |
| | | // è¡¨åæ ¡éª |
| | | rules: {}, |
| | | }; |
| | | }, |
| | | watch: {}, |
| | | created() { |
| | | this.serviceState = store.getters.serviceState; |
| | | this.checkboxlist = store.getters.checkboxlist; |
| | | this.errtype = this.$route.query.errtype; |
| | | this.leavehospitaldistrictcode = |
| | | this.$route.query.leavehospitaldistrictcode; |
| | | this.sourcetype[0].children = store.getters.belongDepts.map((dept) => { |
| | | return { |
| | | label: dept.deptName, |
| | | value: dept.deptCode, |
| | | }; |
| | | }); |
| | | this.sourcetype[1].children = store.getters.belongWards.map((dept) => { |
| | | return { |
| | | label: dept.districtName, |
| | | value: dept.districtCode, |
| | | }; |
| | | }); |
| | | if (this.errtype) { |
| | | this.toleadExport(2); |
| | | } else { |
| | | this.getList(1); |
| | | } |
| | | this.getConfigKey("sys.user.initPassword").then((response) => { |
| | | this.initPassword = response.msg; |
| | | }); |
| | | }, |
| | | activated() { |
| | | this.getList(1); |
| | | }, |
| | | methods: { |
| | | /** æ¥è¯¢é访æå¡å表 */ |
| | | getList(refresh) { |
| | | // é»è®¤å
¨é¨ |
| | | |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | // æ¥åå¼å¸¸è·³è½¬ |
| | | if (this.errtype) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push( |
| | | this.leavehospitaldistrictcode |
| | | ); |
| | | console.log(this.topqueryParams.leavehospitaldistrictcodes, "11"); |
| | | } |
| | | this.loading = true; |
| | | if ( |
| | | this.topqueryParams.leavehospitaldistrictcodes[0] && |
| | | this.topqueryParams.leaveldeptcodes[0] |
| | | ) { |
| | | this.topqueryParams.deptOrDistrict = 2; |
| | | } else { |
| | | this.topqueryParams.deptOrDistrict = 1; |
| | | } |
| | | getTaskservelist(this.topqueryParams).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | | this.cardlist[0].value = |
| | | Number(response.rows[0].wzx) + Number(response.rows[0].ysf); |
| | | // this.cardlist[1].value = response.rows[0].wzx; |
| | | this.cardlist[1].value = response.rows[0].ysf; |
| | | this.ycvalue = response.rows[0].yc; |
| | | this.cardlist[2].value = response.rows[0].fssb; |
| | | this.cardlist[3].value = response.rows[0].dsf; |
| | | // this.cardlist[4].value = response.rows[0].yfs2; |
| | | this.yfsvalue = response.rows[0].yfs; |
| | | } |
| | | this.loading = false; |
| | | this.userList.forEach((item) => { |
| | | let idArray = null; |
| | | if (item.endtime) { |
| | | item.endDay = this.daysBetween(item.endtime); |
| | | } |
| | | |
| | | if (item.preachform) { |
| | | if (item.endtime) { |
| | | item.preachformson = item.preachform; |
| | | idArray = item.preachform.split(","); |
| | | } |
| | | |
| | | item.preachform = idArray.map((value) => { |
| | | // æ¥æ¾id对åºç对象 |
| | | const item = this.checkboxlist.find( |
| | | (item) => item.value == value |
| | | ); |
| | | // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull |
| | | return item ? item.label : null; |
| | | }); |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | this.topqueryParams.managementDoctor = store.getters.name; |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
| | | this.topqueryParams.startSendDateTime = this.getCurrentDate(); |
| | | this.topqueryParams.endSendDateTime = this.getCurrentDate(); |
| | | this.getList(1); |
| | | }, |
| | | getCurrentDate() { |
| | | const now = new Date(); |
| | | return now.toISOString().slice(0, 10); // æªåå10个å符ï¼å³ YYYY-MM-DD |
| | | }, |
| | | buidegetTasklist(type) { |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | // æ¥åå¼å¸¸è·³è½¬ |
| | | if (this.errtype) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push( |
| | | this.leavehospitaldistrictcode |
| | | ); |
| | | } |
| | | let obj = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | leavehospitaldistrictcodes: |
| | | this.topqueryParams.leavehospitaldistrictcodes, |
| | | sendstates: [2, 3], |
| | | leaveldeptcodes: this.topqueryParams.leaveldeptcodes, |
| | | }; |
| | | buidegetTasklist(obj).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | | this.cardlist[0].value = |
| | | Number(response.rows[0].wzx) + Number(response.rows[0].ysf); |
| | | this.cardlist[1].value = response.rows[0].wzx; |
| | | this.cardlist[2].value = response.rows[0].ysf; |
| | | this.ycvalue = response.rows[0].yc; |
| | | this.cardlist[3].value = response.rows[0].fssb; |
| | | this.cardlist[4].value = response.rows[0].dsf; |
| | | // this.cardlist[5].value = response.rows[0].yfs2; |
| | | this.yfsvalue = response.rows[0].yfs; |
| | | } |
| | | this.loading = false; |
| | | this.userList.forEach((item) => { |
| | | let idArray = null; |
| | | if (item.endtime) { |
| | | item.endDay = this.daysBetween(item.endtime); |
| | | } |
| | | |
| | | if (item.preachform) { |
| | | if (item.endtime) { |
| | | item.preachformson = item.preachform; |
| | | idArray = item.preachform.split(","); |
| | | } |
| | | |
| | | item.preachform = idArray.map((value) => { |
| | | // æ¥æ¾id对åºç对象 |
| | | const item = this.checkboxlist.find( |
| | | (item) => item.value == value |
| | | ); |
| | | // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull |
| | | return item ? item.label : null; |
| | | }); |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | // æ¥çé¨è¯é访详æ
|
| | | Referencequestion(row) { |
| | | this.previewVisible = true; |
| | | }, |
| | | // æ·»å å¼¹æ¡æç´¢ |
| | | remoteMethod(query) { |
| | | if (query !== "") { |
| | | this.loading = true; |
| | | setTimeout(() => { |
| | | this.loading = false; |
| | | this.options = this.list.filter((item) => { |
| | | return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1; |
| | | }); |
| | | }, 200); |
| | | } else { |
| | | this.options = []; |
| | | } |
| | | }, |
| | | // å½±åéè®¿ç¶æä¿®æ¹ |
| | | handleStatusChange(row) { |
| | | let text = row.status === "0" ? "å¯ç¨" : "åç¨"; |
| | | this.$modal |
| | | .confirm('确认è¦"' + text + '""' + row.userName + '"ç¨æ·åï¼') |
| | | .then(function () { |
| | | return changeUserStatus(row.userId, row.status); |
| | | }) |
| | | .then(() => { |
| | | this.$modal.msgSuccess(text + "æå"); |
| | | }) |
| | | .catch(function () { |
| | | row.status = row.status === "0" ? "1" : "0"; |
| | | }); |
| | | }, |
| | | |
| | | // 表åéç½® |
| | | reset() { |
| | | this.form = { |
| | | userId: undefined, |
| | | deptId: undefined, |
| | | userName: undefined, |
| | | nickName: undefined, |
| | | password: undefined, |
| | | phonenumber: undefined, |
| | | email: undefined, |
| | | sex: undefined, |
| | | status: "0", |
| | | remark: undefined, |
| | | postIds: [], |
| | | roleIds: [], |
| | | }; |
| | | this.resetForm("form"); |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | | handleQuery(refresh) { |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | this.topqueryParams.pageNum = 1; |
| | | this.topqueryParams.startOutHospTime = this.dateRange[0]; |
| | | this.topqueryParams.endOutHospTime = this.dateRange[1]; |
| | | this.topqueryParams.startSendDateTime = this.dateRangefs[0]; |
| | | this.topqueryParams.endSendDateTime = this.dateRangefs[1]; |
| | | this.getList(refresh); |
| | | }, |
| | | // æ£è
èå´å¤ç |
| | | handleChange(value) { |
| | | let type = value[0]; |
| | | let code = value.slice(-1)[0]; |
| | | this.topqueryParams.leavehospitaldistrictcodes = []; |
| | | this.topqueryParams.leaveldeptcodes = []; |
| | | if (type == 1) { |
| | | this.topqueryParams.leaveldeptcodes.push(code); |
| | | this.topqueryParams.leavehospitaldistrictcodes = []; |
| | | this.topqueryParams.searchscope = 1; |
| | | } else if (type == 2) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push(code); |
| | | this.topqueryParams.leaveldeptcodes = []; |
| | | this.topqueryParams.searchscope = 2; |
| | | } else { |
| | | this.topqueryParams.searchscope = 3; |
| | | } |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.dateRangefs = []; |
| | | this.topqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | sendstate: 6, |
| | | sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) |
| | | serviceType: 15, |
| | | searchscope: 3, |
| | | visitCount: 1, |
| | | scopetype: [], |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }; |
| | | this.handleQuery(1); |
| | | }, |
| | | handleSelectionChange(rows) { |
| | | this.selectedRows = rows.map((row) => { |
| | | // åå§åè¯ååæ®µ |
| | | return { |
| | | ...row, |
| | | authenticity: row.authenticity || 0, |
| | | weekFinish: row.weekFinish || 0, |
| | | standard: row.standard || 0, |
| | | timeliness: row.timeliness || 0, |
| | | library: row.library || 0, |
| | | environment: row.environment || 0, |
| | | doctorSatisfaction: row.doctorSatisfaction || 0, |
| | | nurseSatisfaction: row.nurseSatisfaction || 0, |
| | | }; |
| | | }); |
| | | |
| | | if (this.selectedRows.length > 0) { |
| | | this.multiple = false; |
| | | } else { |
| | | this.multiple = true; |
| | | } |
| | | }, |
| | | |
| | | // è®¡ç®æ»å |
| | | calculateTotal(row) { |
| | | return ( |
| | | (row.authenticity || 0) + |
| | | (row.weekFinish || 0) + |
| | | (row.standard || 0) + |
| | | (row.timeliness || 0) + |
| | | (row.library || 0) + |
| | | (row.environment || 0) + |
| | | (row.doctorSatisfaction || 0) + |
| | | (row.nurseSatisfaction || 0) |
| | | ); |
| | | }, |
| | | |
| | | // ä¿åè¯å |
| | | saveScores() { |
| | | this.selectedRows.forEach((item) => { |
| | | item.createBy = null; |
| | | item.patName = item.sendname; |
| | | item.hospitaldistrictname = item.leavehospitaldistrictname; |
| | | }); |
| | | addsatisfaction(this.selectedRows).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message.success("è¯åä¿åæå"); |
| | | this.scoreDialogVisible = false; |
| | | this.selectedRows=[]; |
| | | this.$refs.userform.clearSelection() |
| | | } else { |
| | | this.$modal.msgWarning("è¯åä¿å失败"); |
| | | this.scoreDialogVisible = false; |
| | | this.selectedRows=[]; |
| | | this.$refs.userform.clearSelection() |
| | | } |
| | | }); |
| | | // è¿éå¯ä»¥æ·»å ä¿åé»è¾ï¼å¦è°ç¨APIä¿åè¯å |
| | | }, |
| | | //å é¤é项 |
| | | handleClose(tag) { |
| | | this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); |
| | | }, |
| | | //è§¦åæ°å¢è¾å
¥ |
| | | showInput() { |
| | | this.inputVisible = true; |
| | | this.$nextTick((_) => { |
| | | this.$refs.saveTagInput.$refs.input.focus(); |
| | | }); |
| | | }, |
| | | //è·å失å»ç¦ç¹è§¦å |
| | | handleInputConfirm() { |
| | | let inputValue = this.inputValue; |
| | | if (inputValue) { |
| | | this.dynamicTags.push(inputValue); |
| | | } |
| | | this.inputVisible = false; |
| | | this.inputValue = ""; |
| | | }, |
| | | /** æ°å¢æé®æä½ */ |
| | | handleAdd() { |
| | | this.$router.push({ |
| | | path: "/followvisit/QuestionnaireTask", |
| | | query: { |
| | | type: 2, |
| | | serviceType: 15, |
| | | }, |
| | | }); |
| | | }, |
| | | //æ£è
360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | this.$modal.msgWarning('360åè½ææªå¼é'); |
| | | return; // 黿¢åç»ä»£ç æ§è¡ |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | if (this.postData.XiaoXiTou.ZuHuMC == "丽水å¸ä¸å»é¢") { |
| | | this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728"; |
| | | this.postData.YeWuXX.YongHuXX.YongHuXM = "LSZYY"; |
| | | } |
| | | query360PatInfo(this.postData).then((res) => { |
| | | if (res.data.url) { |
| | | window.open(res.data.url, "_blank"); |
| | | // this.linkUrl = res.data.url; |
| | | } else { |
| | | this.$modal.msgWarning("360æ¥è¯¢æ ç»æ"); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | /** éç½®å¯ç æé®æä½ */ |
| | | handleResetPwd(row) { |
| | | this.$prompt('请è¾å
¥"' + row.userName + '"çæ°å¯ç ', "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | closeOnClickModal: false, |
| | | inputPattern: /^.{5,20}$/, |
| | | inputErrorMessage: "ç¨æ·å¯ç é¿åº¦å¿
é¡»ä»äº 5 å 20 ä¹é´", |
| | | }) |
| | | .then(({ value }) => { |
| | | resetUserPwd(row.userId, value).then((response) => { |
| | | this.$modal.msgSuccess("ä¿®æ¹æåï¼æ°å¯ç æ¯ï¼" + value); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // åæ¶æé® |
| | | cancel() { |
| | | this.Labelchange = false; |
| | | this.reset(); |
| | | }, |
| | | /** æäº¤æé® */ |
| | | submitForm: function () { |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | this.form.isoperation = 2; |
| | | this.form.notrequiredFlag = 1; |
| | | alterpatient(this.form) |
| | | .then((response) => { |
| | | console.log(response); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("æ£è
è¿æ»¤æå"); |
| | | }); |
| | | |
| | | this.reset(); |
| | | this.Labelchange = false; |
| | | } |
| | | }); |
| | | }, |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | const userIds = row.userId || this.ids; |
| | | this.$modal |
| | | .confirm('æ¯å¦ç¡®è®¤å é¤ç¨æ·ç¼å·ä¸º"' + userIds + '"çæ°æ®é¡¹ï¼') |
| | | .then(function () { |
| | | return delUser(userIds); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("å 餿å"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // å
¨é¨åæ¢ |
| | | AllStop() { |
| | | this.$modal |
| | | .confirm("æ¯å¦åæ¢å
¨é¨ä»»å¡ï¼") |
| | | .then(function () { |
| | | return console.log("忢æå"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgWarning("忢æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // å
¨é¨å¼å§ |
| | | AllStarted() { |
| | | this.$modal |
| | | .confirm("æ¯å¦å¼å¯å
¨é¨ä»»å¡ï¼") |
| | | .then(function () { |
| | | return console.log("å¼å¯æå"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("å¼å¯æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // ä»»å¡éç½® |
| | | TaskReset() { |
| | | this.$modal |
| | | .confirm("æ¯å¦éç½®éä¸çä»»å¡é¡¹ï¼") |
| | | .then(function () { |
| | | return console.log("é䏿å"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("éç½®æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // 设置åéæ¶é´ |
| | | Sendtimesetting() { |
| | | this.modificationVisible = true; |
| | | }, |
| | | // 跳转详æ
页 |
| | | Seedetails(row) { |
| | | let type = ""; |
| | | console.log(row, "rwo"); |
| | | if (row.preachformson) { |
| | | if (row.preachformson.includes("3")) { |
| | | type = 1; |
| | | } |
| | | } |
| | | this.$router.push({ |
| | | path: "/followvisit/record/detailpage/", |
| | | query: { |
| | | taskid: row.taskid, |
| | | patid: row.patid, |
| | | id: row.id, |
| | | Voicetype: type, |
| | | visitCount: this.topqueryParams.visitCount, |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | | onSubmit() {}, |
| | | // æåæå¡ |
| | | handlestop(row) { |
| | | let objson = row; |
| | | this.$modal |
| | | .confirm( |
| | | 'æ¯å¦ç¡®è®¤æåä»»å¡å称为"' + |
| | | row.taskName + |
| | | 'æ£è
å称为"' + |
| | | row.sendname + |
| | | '"çæ°æ®é¡¹ï¼' |
| | | ) |
| | | .then(() => { |
| | | getTaskservelist({ |
| | | patid: row.patid, |
| | | taskid: row.taskid, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | objson.sendstate = 4; |
| | | objson.remark = "æå¡æå"; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("è®°å½æå"); |
| | | this.getList(1); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // æ£è
è¿æ»¤è§¦å |
| | | handleUpdate(row) { |
| | | particularpatient(row.patid).then((response) => { |
| | | this.form = response.data; |
| | | this.form.filterDrname = store.getters.nickName; |
| | | }); |
| | | this.amendtag = true; |
| | | this.Labelchange = true; |
| | | }, |
| | | // ä¾¿æ·æé® |
| | | toleadExport(too) { |
| | | if (too == 1) { |
| | | this.topqueryParams.sendstate = 4; |
| | | this.topqueryParams.excep = null; |
| | | } else if (too == 2) { |
| | | this.topqueryParams.excep = 1; |
| | | } |
| | | this.handleQuery(); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | | handleExport() { |
| | | this.topqueryParams.pageNum = null; |
| | | this.topqueryParams.pageSize = null; |
| | | this.download( |
| | | "smartor/serviceSubtask/patItemExport", |
| | | { |
| | | ...this.topqueryParams, |
| | | }, |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | | }, |
| | | // å¼å¸¸å渲æ |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (row.excep == 1) { |
| | | return "warning-row"; |
| | | } |
| | | return ""; |
| | | }, |
| | | |
| | | getCurrentTime() { |
| | | const now = new Date(); |
| | | const year = now.getFullYear(); |
| | | const month = String(now.getMonth() + 1).padStart(2, "0"); |
| | | const day = String(now.getDate()).padStart(2, "0"); |
| | | const hours = String(now.getHours()).padStart(2, "0"); |
| | | const minutes = String(now.getMinutes()).padStart(2, "0"); |
| | | const seconds = String(now.getSeconds()).padStart(2, "0"); |
| | | |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-button--primary.is-plain { |
| | | color: #ffffff; |
| | | background: #409eff; |
| | | border-color: #4fabe9; |
| | | } |
| | | |
| | | .document { |
| | | // width: 100px; |
| | | height: 50px; |
| | | } |
| | | ::v-deep.el-table .warning-row { |
| | | background: #eec4c4; |
| | | } |
| | | |
| | | .documentf { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | .download { |
| | | text-align: center; |
| | | |
| | | .el-upload__tip { |
| | | font-size: 23px; |
| | | } |
| | | |
| | | .el-upload__text { |
| | | font-size: 23px; |
| | | } |
| | | } |
| | | |
| | | .uploading { |
| | | margin-top: 20px; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #ffffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .el-tag + .el-tag { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .button-new-tag { |
| | | margin-left: 10px; |
| | | height: 32px; |
| | | line-height: 30px; |
| | | padding-top: 0; |
| | | padding-bottom: 0; |
| | | } |
| | | |
| | | .input-new-tag { |
| | | width: 90px; |
| | | margin-left: 10px; |
| | | vertical-align: bottom; |
| | | } |
| | | |
| | | .drexamine { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 30px; |
| | | background: #daeaf5; |
| | | |
| | | img { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | } |
| | | |
| | | .qrcode-dialo { |
| | | // text-align: center; |
| | | // display: flex; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #edf1f7; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .topic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | ::v-deep.leftvlue .el-card__body { |
| | | background: #d0e9fd; |
| | | } |
| | | ::v-deep.leftvlue .el-card__body:hover { |
| | | background: #8dc8f8; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | ::v-deep.errleftvlue .el-card__body { |
| | | background: #fdd0d7; |
| | | } |
| | | ::v-deep.errleftvlue .el-card__body:hover { |
| | | background: #f88d96; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | |
| | | ::v-deep.ysfleftvlue .el-card__body { |
| | | background: #d0fdd8; |
| | | } |
| | | ::v-deep.ysfleftvlue .el-card__body:hover { |
| | | background: #8df8a4; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | .button-bb { |
| | | font-weight: 500; |
| | | background-color: #2ba05c; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-xq { |
| | | font-weight: 500; |
| | | background-color: #409eff; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-sc { |
| | | font-weight: 500; |
| | | background-color: #b3a21f; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-zx { |
| | | background: #4fabe9; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | ::v-deep.el-radio-group { |
| | | span { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | .purple-button { |
| | | background-color: #7e22ce; |
| | | border-color: #7e22ce; |
| | | color: #fff; |
| | | } |
| | | |
| | | .purple-button:hover, |
| | | .purple-button:focus { |
| | | background-color: #9333ea; |
| | | border-color: #9333ea; |
| | | } |
| | | |
| | | .purple-button:active { |
| | | background-color: #6b21a8; |
| | | border-color: #6b21a8; |
| | | } |
| | | |
| | | .purple-button.is-disabled { |
| | | background-color: #d8b4fe; |
| | | border-color: #d8b4fe; |
| | | opacity: 1; /* ä¿æç¦ç¨ç¶æéæåº¦ */ |
| | | } |
| | | // é项å使¾å¤§ |
| | | // ::v-deep.el-checkbox-group { |
| | | // span { |
| | | // font-size: 24px; |
| | | // } |
| | | // } |
| | | </style> |
| | |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | this.topqueryParams.managementDoctor = store.getters.name; |
| | | |
| | | this.topqueryParams.managementDoctor = store.getters.hisUserId; |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
| | |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | |
| | | this.topqueryParams.managementDoctor = store.getters.hisUserId; |
| | | |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div class="leftvlue" style="margin-bottom: 20px"> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index"> |
| | | <el-card |
| | | shadow="hover" |
| | | :body-style="item.router ? ' cursor: pointer' : 'cursor: default'" |
| | | > |
| | | <div style="padding: 8px" @click="$router.push(item.router)"> |
| | | <span>{{ item.name }}</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ item.value ? item.value : 0 }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="2.5"> |
| | | <div class="ysfleftvlue"> |
| | | <el-card shadow="hover"> |
| | | <div style="padding: 8px"> |
| | | <span>表åå·²åé</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ yfsvalue }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="2.5"> |
| | | <div class="errleftvlue"> |
| | | <el-card shadow="hover"> |
| | | <div style="padding: 8px"> |
| | | <span>å¼å¸¸</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ ycvalue }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-form |
| | | :model="topqueryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="ä»»å¡åç§°"> |
| | | <el-input |
| | | v-model="topqueryParams.taskName" |
| | | placeholder="è¯·éæ©ä»»å¡åç§°" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="åºé¢æ¶é´"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ£è
å§å" prop="sendname"> |
| | | <el-input |
| | | v-model="topqueryParams.sendname" |
| | | placeholder="请è¾å
¥æ£è
å§å" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¯æåç§°" prop="leavediagname"> |
| | | <el-input |
| | | v-model="topqueryParams.leavediagname" |
| | | placeholder="请è¾å
¥è¯æåç§°" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é访人å" prop="updateBy"> |
| | | <el-input |
| | | v-model="topqueryParams.updateBy" |
| | | placeholder="请è¾å
¥é访人å" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="主治å»ç" prop="drname"> |
| | | <el-input |
| | | v-model="topqueryParams.drname" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»ç®¡å»ç" prop="managementDoctor"> |
| | | <el-input |
| | | v-model="topqueryParams.managementDoctor" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ£è
èå´" prop="status"> |
| | | <el-cascader |
| | | v-model="topqueryParams.scopetype" |
| | | placeholder="é»è®¤å
¨é¨" |
| | | :options="sourcetype" |
| | | :props="{ expandTrigger: 'hover' }" |
| | | @change="handleChange" |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="ä»»å¡ç¶æ" prop="status"> |
| | | <el-select v-model="topqueryParams.sendstate" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in topicoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æåºæ¹å¼" prop="status"> |
| | | <el-select v-model="topqueryParams.sort" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in topicoptionssort" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="medium" |
| | | @click="handleQuery(1)" |
| | | >æç´¢</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" |
| | | >éç½®</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-divider></el-divider> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-upload2" |
| | | size="medium" |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | @click="handleAdd" |
| | | >æ°å¢</el-button |
| | | > |
| | | </el-col> |
| | | |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-warning-outline" |
| | | size="medium" |
| | | @click="toleadExport(1)" |
| | | >æ§è¡å¤±è´¥</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-warning" |
| | | size="medium" |
| | | @click="toleadExport(2)" |
| | | >ç»æå¼å¸¸</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="success" |
| | | plain |
| | | size="medium" |
| | | @click="buidegetTasklist()" |
| | | >å¾
åæå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | size="medium" |
| | | @click="affiliation()" |
| | | >æ¬äººæå±æå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button type="success" size="medium" @click="onthatday()" |
| | | >彿¥æå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | <el-table |
| | | v-loading="loading" |
| | | ref="userform" |
| | | :data="userList" |
| | | :row-class-name="tableRowClassName" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | fixed |
| | | width="150" |
| | | show-overflow-tooltip |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | /> |
| | | <!-- <el-table-column label="åºå·" fixed align="center" key="id" prop="id" /> --> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | key="sendname" |
| | | prop="sendname" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | gettoken360(scope.row.sfzh, scope.row.drcode, scope.row.drname) |
| | | " |
| | | ><span class="button-textsc">{{ |
| | | scope.row.sendname |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä»»å¡ç¶æ" |
| | | align="center" |
| | | key="sendstate" |
| | | prop="sendstate" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.remark" |
| | | placement="top-start" |
| | | > |
| | | <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> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ä»»å¡å¼å¸¸è¯´æ" |
| | | width="120" |
| | | align="center" |
| | | key="remark" |
| | | prop="remark" --> |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="å¤çæè§" |
| | | align="center" |
| | | key="suggest" |
| | | prop="suggest" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_suggest" |
| | | :value="scope.row.suggest" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="éè®¿å®ææ¶é´" |
| | | sortable |
| | | align="center" |
| | | prop="finishtime" |
| | | width="160" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.finishtime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åºé¢æ¥æ" |
| | | width="200" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="主治å»ç" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | <el-table-column |
| | | label="é访人å" |
| | | align="center" |
| | | key="updateBy" |
| | | prop="updateBy" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="ç»ç®¡å»ç" |
| | | align="center" |
| | | key="managementDoctor" |
| | | prop="managementDoctor" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="åºé¢å¤©æ°" |
| | | width="120" |
| | | align="center" |
| | | key="endDay" |
| | | prop="endDay" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.endDay ? scope.row.endDay + "天" : "" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="身份è¯å·ç " |
| | | width="200" |
| | | align="center" |
| | | key="sfzh" |
| | | prop="sfzh" |
| | | /> |
| | | <el-table-column |
| | | label="èç³»çµè¯" |
| | | width="200" |
| | | align="center" |
| | | key="phone" |
| | | prop="phone" |
| | | /> |
| | | <el-table-column |
| | | label="责任æ¤å£«" |
| | | width="120" |
| | | align="center" |
| | | key="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | |
| | | <!-- <el-table-column |
| | | label="ç
åå·" |
| | | align="center" |
| | | sortable |
| | | key="medicalRecordNo" |
| | | prop="medicalRecordNo" |
| | | width="120" |
| | | /> --> |
| | | |
| | | <!-- <el-table-column label="å¹´é¾" align="center" key="age" prop="age" /> --> |
| | | <!-- <el-table-column label="æ§å«"width="100" align="center" key="sex" prop="sex" /> --> |
| | | <!-- <el-table-column label="åºå·" align="center" key="badNo" prop="badNo" /> --> |
| | | <el-table-column |
| | | label="ç§å®¤" |
| | | align="center" |
| | | key="deptname" |
| | | prop="deptname" |
| | | width="120" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç
åº" |
| | | align="center" |
| | | key="leavehospitaldistrictname" |
| | | prop="leavehospitaldistrictname" |
| | | width="120" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="è¯æåç§°" |
| | | align="center" |
| | | key="leavediagname" |
| | | prop="leavediagname" |
| | | width="120" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="é¨è¯æ»¡æåº¦æ¨¡æ¿åç§°" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | width="200" |
| | | /> |
| | | <el-table-column |
| | | label="任塿§è¡æ¹å¼" |
| | | align="center" |
| | | key="preachform" |
| | | prop="preachform" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.preachform">{{ item }}ã </span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ä»»å¡åéæµç¨" |
| | | align="center" |
| | | key="serviceSubtaskRecordList" |
| | | prop="serviceSubtaskRecordList" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.serviceSubtaskRecordList" |
| | | >{{ item.remark }}ã |
| | | </span> |
| | | </template> |
| | | </el-table-column> --> |
| | | <el-table-column |
| | | label="ä»»å¡ç»æè¯´æ" |
| | | width="220" |
| | | align="center" |
| | | key="remark" |
| | | prop="remark" |
| | | > |
| | | <template slot-scope="scope" v-if="scope.row.remark"> |
| | | <el-tooltip |
| | | :content="scope.row.remark" |
| | | placement="top" |
| | | effect="dark" |
| | | > |
| | | <el-tag |
| | | type="warning" |
| | | v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4" |
| | | >{{ scope.row.remark }}</el-tag |
| | | > |
| | | <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | align="center" |
| | | fixed="right" |
| | | width="300" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button size="medium" type="text" @click="Seedetails(scope.row)" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>æ¥ç详æ
</span |
| | | ></el-button |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="handleUpdate(scope.row)" |
| | | ><span class="button-textxga" |
| | | ><i class="el-icon-edit"></i>æ£è
è¿æ»¤</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="topqueryParams.pageNum" |
| | | :limit.sync="topqueryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-row> |
| | | <!-- 满æåº¦å¼¹æ¡ --> |
| | | <el-dialog |
| | | title="é访满æåº¦è¯å" |
| | | :visible.sync="scoreDialogVisible" |
| | | width="80%" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-table :data="selectedRows" border style="width: 100%"> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | prop="sendname" |
| | | /> |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | width="180" |
| | | align="center" |
| | | prop="taskName" |
| | | /> |
| | | <!-- æ°å¢è¯åå --> |
| | | <el-table-column |
| | | label="ç宿§(20)" |
| | | align="center" |
| | | key="authenticity" |
| | | prop="authenticity" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.authenticity" |
| | | :min="0" |
| | | :max="20" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä¸å¨å
宿(20)" |
| | | align="center" |
| | | key="weekFinish" |
| | | prop="weekFinish" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.weekFinish" |
| | | :min="0" |
| | | :max="20" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="è§èæ§(10)" |
| | | align="center" |
| | | key="standard" |
| | | prop="standard" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.standard" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åæ¶æ§(10)" |
| | | align="center" |
| | | key="timeliness" |
| | | prop="timeliness" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.timeliness" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="宣ææ
åµ(10)" |
| | | align="center" |
| | | key="library" |
| | | prop="library" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.library" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç¯å¢æ»¡æåº¦(10)" |
| | | align="center" |
| | | key="environment" |
| | | prop="environment" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.environment" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å»ç满æåº¦(10)" |
| | | align="center" |
| | | key="doctorSatisfaction" |
| | | prop="doctorSatisfaction" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.doctorSatisfaction" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ¤å£«æ»¡æåº¦(10)" |
| | | align="center" |
| | | key="nurseSatisfaction" |
| | | prop="nurseSatisfaction" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.nurseSatisfaction" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ»å" |
| | | align="center" |
| | | key="total" |
| | | prop="total" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ calculateTotal(scope.row) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="scoreDialogVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="saveScores">ä¿å</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- æ·»å æä¿®æ¹å½±åéè®¿å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | :title="amendtag ? 'ä¿®æ¹æ£è
ä¿¡æ¯' : 'æ°å¢æ£è
'" |
| | | :visible.sync="Labelchange" |
| | | width="900px" |
| | | > |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="100px"> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å§å" width="100" prop="name"> |
| | | <el-input |
| | | v-model="form.name" |
| | | placeholder="请è¾å
¥å§å" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ§å«" width="100" prop="sex"> |
| | | <el-select v-model="form.sex" placeholder="è¯·éæ©æ§å«"> |
| | | <el-option |
| | | v-for="dict in sextype" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å¹´é¾" prop="age"> |
| | | <el-input |
| | | v-model="form.age" |
| | | placeholder="请è¾å
¥å¹´é¾" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="è¿æ»¤å»ç" width="100" prop="filterDrname"> |
| | | <el-input |
| | | v-model="form.filterDrname" |
| | | placeholder="请è¾å
¥å»çå§å" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¿æ»¤åå "> |
| | | <el-input |
| | | v-model="form.notrequiredreason" |
| | | type="textarea" |
| | | placeholder="请è¾å
¥è¿æ»¤åå " |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | <el-button @click="cancel">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | title="åéæ¶é´è®¾ç½®" |
| | | :visible.sync="modificationVisible" |
| | | width="45%" |
| | | > |
| | | <div style="margin-bottom: 20px; color: red"> |
| | | ç»ä¸ä¿®æ¹å½å¤©æªåéç任塿¶é´ |
| | | </div> |
| | | |
| | | <el-form |
| | | :model="ruleForm" |
| | | :rules="rules" |
| | | ref="ruleForm" |
| | | label-width="120px" |
| | | class="demo-ruleForm" |
| | | > |
| | | <el-form-item label="å鿥æ"> |
| | | <el-date-picker |
| | | v-model="ruleForm.value1" |
| | | type="date" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ¶é´æ®µ" prop="type"> |
| | | <el-checkbox-group v-model="ruleForm.type"> |
| | | <el-checkbox label="ä¸å" name="type"></el-checkbox> |
| | | <el-checkbox label="ä¸å" name="type"></el-checkbox> |
| | | <el-checkbox label="æä¸" name="type"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value2" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value3" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æä¸æ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value4" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="modificationVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="modificationVisible = false" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 忬¡é访 --> |
| | | <el-dialog title="æ£è
忬¡é访" :visible.sync="dialogFormVisible"> |
| | | <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px"> |
| | | <el-form-item label="ä»»å¡åç§°"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="zcform.taskName" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ£è
åç§°"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="zcform.sendname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¹´é¾"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="zcform.age" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç§å®¤"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="zcform.deptname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç
åº"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="zcform.leavehospitaldistrictname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="é访æ¹å¼" prop="resource"> |
| | | <el-radio-group v-model="zcform.resource"> |
| | | <el-radio label="1">æ¬ç
åºé访</el-radio> |
| | | <el-radio label="2">é访ä¸å¿é访</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="å³å»åé"> |
| | | <el-switch v-model="zcform.delivery"></el-switch> |
| | | </el-form-item> --> |
| | | <el-form-item label="åºé¢æ¶é´"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="zcform.endtime" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="éè®¿å®ææ¶é´" prop="date1"> |
| | | <el-date-picker |
| | | type="date" |
| | | placeholder="éæ©æ¥æ" |
| | | v-model="zcform.date1" |
| | | style="width: 100%" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="é访记å½"> |
| | | <el-input type="textarea" v-model="zcform.remark"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogFormVisible = false">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | delUser, |
| | | addUser, |
| | | updateUser, |
| | | resetUserPwd, |
| | | changeUserStatus, |
| | | } from "@/api/system/user"; |
| | | import { |
| | | getTaskservelist, |
| | | buidegetTasklist, |
| | | addserviceSubtask, |
| | | query360PatInfo, |
| | | addsatisfaction, |
| | | } from "@/api/AiCentre/index"; |
| | | import { alterpatient, particularpatient } from "@/api/patient/homepage"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import store from "@/store"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | |
| | | export default { |
| | | name: "Discharge", |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | | components: { Treeselect }, |
| | | data() { |
| | | return { |
| | | // é®ç½©å± |
| | | loading: true, |
| | | // é䏿°ç» |
| | | ids: [], |
| | | // éå个ç¦ç¨ |
| | | single: true, |
| | | // éå¤ä¸ªç¦ç¨ |
| | | multiple: true, |
| | | // æ¾ç¤ºæç´¢æ¡ä»¶ |
| | | showSearch: true, |
| | | dialogFormVisible: false, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // ç¨æ·è¡¨æ ¼æ°æ® |
| | | userList: null, |
| | | // å¼¹åºå±æ é¢ |
| | | title: "æ°å¢å½±åé访", |
| | | // æ¯å¦æ¾ç¤ºä¿®æ¹ãæ·»å å¼¹åºå± |
| | | addalteropen: false, |
| | | // ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ |
| | | modificationVisible: false, |
| | | // é¨é¨åç§° |
| | | deptName: undefined, |
| | | // é»è®¤å¯ç |
| | | initPassword: undefined, |
| | | // æ¥æèå´ |
| | | dateRange: [], |
| | | dateRangefs: [], |
| | | // å²ä½é项 |
| | | postOptions: [], |
| | | ruleForm: { |
| | | type: [], |
| | | }, |
| | | zcform: {}, |
| | | dynamicTags: ["é项ä¸", "é项äº", "é项ä¸"], //é项 |
| | | inputVisible: false, |
| | | Labelchange: false, |
| | | ycvalue: "", |
| | | yfsvalue: "", |
| | | inputValue: "", |
| | | preachform: "", |
| | | previewVisible: false, //å½±åé访é¢è§å¼¹æ¡ |
| | | radio: "", |
| | | radios: [], |
| | | previewtype: 2, //é¢è§å½±åé访类å |
| | | total: 0, // æ»æ¡æ° |
| | | // 满æåº¦è°æ¥æ°æ® |
| | | scoreDialogVisible: false, |
| | | selectedRows: [], |
| | | |
| | | value: [], |
| | | list: [], |
| | | |
| | | sourcetype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç§å®¤", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "ç
åº", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "å
¨é¨", |
| | | }, |
| | | ], |
| | | loading: false, |
| | | cardlist: [ |
| | | { |
| | | name: "æå¡æ»é", |
| | | value: 0, |
| | | }, |
| | | // { |
| | | // name: "æ£è
è¿æ»¤", |
| | | // value: 0, |
| | | // }, |
| | | { |
| | | name: "åºé访", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "åé失败", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "å¾
é访", |
| | | value: 0, |
| | | }, |
| | | // { |
| | | // name: "å·²åé", |
| | | // value: 0, |
| | | // }, |
| | | |
| | | // { |
| | | // name: "表åå·²åé", |
| | | // value: 0, |
| | | // }, |
| | | ], |
| | | zcrules: { |
| | | date1: [ |
| | | { required: true, message: "è¯·éæ©é访æ¹å¼", trigger: "change" }, |
| | | ], |
| | | resource: [ |
| | | { required: true, message: "è¯·éæ©é访æ¶é´", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | // 表ååæ° |
| | | form: { |
| | | phonenumber: "", |
| | | totagid: "", |
| | | types: "", |
| | | nickName: "", |
| | | qystatus: "", |
| | | btstatus: "", |
| | | }, |
| | | topicoptionssort: [ |
| | | { |
| | | value: 0, |
| | | label: "åºé¢æ¶é´(æ£åº)", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "åºé¢æ¶é´(ååº)", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "åéæ¶é´(æ£åº)", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "åéæ¶é´(ååº)", |
| | | }, |
| | | ], |
| | | // æ¥è¯¢åæ° |
| | | topqueryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | sendstate: 6, |
| | | sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) |
| | | serviceType: 14, |
| | | searchscope: 3, |
| | | visitCount: 1, |
| | | scopetype: [], |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }, |
| | | propss: { multiple: true }, |
| | | options: [], |
| | | |
| | | topicoptions: [ |
| | | { |
| | | value: null, |
| | | label: "å
¨é¨", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "表åå·²é¢å", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "å¾
é访", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "表åå·²åé", |
| | | }, |
| | | { |
| | | value: 4, |
| | | label: "䏿§è¡", |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: "åé失败", |
| | | }, |
| | | { |
| | | value: 6, |
| | | label: "已宿", |
| | | }, |
| | | ], |
| | | sextype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç·", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "女", |
| | | }, |
| | | ], |
| | | topicoptionsyj: [ |
| | | { |
| | | value: 1, |
| | | label: "å¼å¸¸", |
| | | }, |
| | | { |
| | | value: 0, |
| | | label: "æ£å¸¸", |
| | | }, |
| | | ], |
| | | url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo", |
| | | postData: { |
| | | XiaoXiTou: { |
| | | FaSongFCSJC: "ZJHES", |
| | | FaSongJGID: localStorage.getItem("orgid"), |
| | | FaSongJGMC: localStorage.getItem("orgname"), |
| | | FaSongSJ: "2025-01-09Â 17:29:36", |
| | | FaSongXTJC: "SUIFANGXT", |
| | | FaSongXTMC: "é访系ç»", |
| | | XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", |
| | | XiaoXiLX: "SC_LC_360STCX", |
| | | XiaoXiMC: "360 è§å¾æ¥è¯¢", |
| | | ZuHuID: localStorage.getItem("ZuHuID"), |
| | | ZuHuMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YeWuXX: { |
| | | BingRenXX: { |
| | | ZhengJianHM: "", |
| | | ZhengJianLXDM: "01", |
| | | ZhengJianLXMC: "å±
æ°èº«ä»½è¯", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YongHuXX: { |
| | | XiTongID: "SUIFANGXT", |
| | | XiTongMC: "é访系ç»", |
| | | YongHuID: "1400466972205912064", |
| | | YongHuXM: "JNRMYY", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | idp: "lyra", |
| | | }, |
| | | }, |
| | | }, |
| | | amendtag: false, |
| | | errtype: "", |
| | | leavehospitaldistrictcode: "", |
| | | serviceState: [], |
| | | checkboxlist: [], |
| | | // è¡¨åæ ¡éª |
| | | rules: {}, |
| | | }; |
| | | }, |
| | | watch: {}, |
| | | created() { |
| | | this.serviceState = store.getters.serviceState; |
| | | this.checkboxlist = store.getters.checkboxlist; |
| | | this.errtype = this.$route.query.errtype; |
| | | this.leavehospitaldistrictcode = |
| | | this.$route.query.leavehospitaldistrictcode; |
| | | this.sourcetype[0].children = store.getters.belongDepts.map((dept) => { |
| | | return { |
| | | label: dept.deptName, |
| | | value: dept.deptCode, |
| | | }; |
| | | }); |
| | | this.sourcetype[1].children = store.getters.belongWards.map((dept) => { |
| | | return { |
| | | label: dept.districtName, |
| | | value: dept.districtCode, |
| | | }; |
| | | }); |
| | | if (this.errtype) { |
| | | this.toleadExport(2); |
| | | } else { |
| | | this.getList(1); |
| | | } |
| | | this.getConfigKey("sys.user.initPassword").then((response) => { |
| | | this.initPassword = response.msg; |
| | | }); |
| | | }, |
| | | activated() { |
| | | this.getList(1); |
| | | }, |
| | | methods: { |
| | | /** æ¥è¯¢é访æå¡å表 */ |
| | | getList(refresh) { |
| | | // é»è®¤å
¨é¨ |
| | | |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | // æ¥åå¼å¸¸è·³è½¬ |
| | | if (this.errtype) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push( |
| | | this.leavehospitaldistrictcode |
| | | ); |
| | | console.log(this.topqueryParams.leavehospitaldistrictcodes, "11"); |
| | | } |
| | | this.loading = true; |
| | | if ( |
| | | this.topqueryParams.leavehospitaldistrictcodes[0] && |
| | | this.topqueryParams.leaveldeptcodes[0] |
| | | ) { |
| | | this.topqueryParams.deptOrDistrict = 2; |
| | | } else { |
| | | this.topqueryParams.deptOrDistrict = 1; |
| | | } |
| | | getTaskservelist(this.topqueryParams).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | | this.cardlist[0].value = |
| | | Number(response.rows[0].wzx) + Number(response.rows[0].ysf); |
| | | // this.cardlist[1].value = response.rows[0].wzx; |
| | | this.cardlist[1].value = response.rows[0].ysf; |
| | | this.ycvalue = response.rows[0].yc; |
| | | this.cardlist[2].value = response.rows[0].fssb; |
| | | this.cardlist[3].value = response.rows[0].dsf; |
| | | // this.cardlist[4].value = response.rows[0].yfs2; |
| | | this.yfsvalue = response.rows[0].yfs; |
| | | } |
| | | this.loading = false; |
| | | this.userList.forEach((item) => { |
| | | let idArray = null; |
| | | if (item.endtime) { |
| | | item.endDay = this.daysBetween(item.endtime); |
| | | } |
| | | |
| | | if (item.preachform) { |
| | | if (item.endtime) { |
| | | item.preachformson = item.preachform; |
| | | idArray = item.preachform.split(","); |
| | | } |
| | | |
| | | item.preachform = idArray.map((value) => { |
| | | // æ¥æ¾id对åºç对象 |
| | | const item = this.checkboxlist.find( |
| | | (item) => item.value == value |
| | | ); |
| | | // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull |
| | | return item ? item.label : null; |
| | | }); |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | this.topqueryParams.managementDoctor = store.getters.name; |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
| | | this.topqueryParams.startSendDateTime = this.getCurrentDate(); |
| | | this.topqueryParams.endSendDateTime = this.getCurrentDate(); |
| | | this.getList(1); |
| | | }, |
| | | getCurrentDate() { |
| | | const now = new Date(); |
| | | return now.toISOString().slice(0, 10); // æªåå10个å符ï¼å³ YYYY-MM-DD |
| | | }, |
| | | buidegetTasklist(type) { |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | // æ¥åå¼å¸¸è·³è½¬ |
| | | if (this.errtype) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push( |
| | | this.leavehospitaldistrictcode |
| | | ); |
| | | } |
| | | let obj = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | leavehospitaldistrictcodes: |
| | | this.topqueryParams.leavehospitaldistrictcodes, |
| | | sendstates: [2, 3], |
| | | leaveldeptcodes: this.topqueryParams.leaveldeptcodes, |
| | | }; |
| | | buidegetTasklist(obj).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | | this.cardlist[0].value = |
| | | Number(response.rows[0].wzx) + Number(response.rows[0].ysf); |
| | | this.cardlist[1].value = response.rows[0].wzx; |
| | | this.cardlist[2].value = response.rows[0].ysf; |
| | | this.ycvalue = response.rows[0].yc; |
| | | this.cardlist[3].value = response.rows[0].fssb; |
| | | this.cardlist[4].value = response.rows[0].dsf; |
| | | // this.cardlist[5].value = response.rows[0].yfs2; |
| | | this.yfsvalue = response.rows[0].yfs; |
| | | } |
| | | this.loading = false; |
| | | this.userList.forEach((item) => { |
| | | let idArray = null; |
| | | if (item.endtime) { |
| | | item.endDay = this.daysBetween(item.endtime); |
| | | } |
| | | |
| | | if (item.preachform) { |
| | | if (item.endtime) { |
| | | item.preachformson = item.preachform; |
| | | idArray = item.preachform.split(","); |
| | | } |
| | | |
| | | item.preachform = idArray.map((value) => { |
| | | // æ¥æ¾id对åºç对象 |
| | | const item = this.checkboxlist.find( |
| | | (item) => item.value == value |
| | | ); |
| | | // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull |
| | | return item ? item.label : null; |
| | | }); |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | // æ¥çé¨è¯é访详æ
|
| | | Referencequestion(row) { |
| | | this.previewVisible = true; |
| | | }, |
| | | // æ·»å å¼¹æ¡æç´¢ |
| | | remoteMethod(query) { |
| | | if (query !== "") { |
| | | this.loading = true; |
| | | setTimeout(() => { |
| | | this.loading = false; |
| | | this.options = this.list.filter((item) => { |
| | | return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1; |
| | | }); |
| | | }, 200); |
| | | } else { |
| | | this.options = []; |
| | | } |
| | | }, |
| | | // å½±åéè®¿ç¶æä¿®æ¹ |
| | | handleStatusChange(row) { |
| | | let text = row.status === "0" ? "å¯ç¨" : "åç¨"; |
| | | this.$modal |
| | | .confirm('确认è¦"' + text + '""' + row.userName + '"ç¨æ·åï¼') |
| | | .then(function () { |
| | | return changeUserStatus(row.userId, row.status); |
| | | }) |
| | | .then(() => { |
| | | this.$modal.msgSuccess(text + "æå"); |
| | | }) |
| | | .catch(function () { |
| | | row.status = row.status === "0" ? "1" : "0"; |
| | | }); |
| | | }, |
| | | |
| | | // 表åéç½® |
| | | reset() { |
| | | this.form = { |
| | | userId: undefined, |
| | | deptId: undefined, |
| | | userName: undefined, |
| | | nickName: undefined, |
| | | password: undefined, |
| | | phonenumber: undefined, |
| | | email: undefined, |
| | | sex: undefined, |
| | | status: "0", |
| | | remark: undefined, |
| | | postIds: [], |
| | | roleIds: [], |
| | | }; |
| | | this.resetForm("form"); |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | | handleQuery(refresh) { |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | this.topqueryParams.pageNum = 1; |
| | | this.topqueryParams.startOutHospTime = this.dateRange[0]; |
| | | this.topqueryParams.endOutHospTime = this.dateRange[1]; |
| | | this.topqueryParams.startSendDateTime = this.dateRangefs[0]; |
| | | this.topqueryParams.endSendDateTime = this.dateRangefs[1]; |
| | | this.getList(refresh); |
| | | }, |
| | | // æ£è
èå´å¤ç |
| | | handleChange(value) { |
| | | let type = value[0]; |
| | | let code = value.slice(-1)[0]; |
| | | this.topqueryParams.leavehospitaldistrictcodes = []; |
| | | this.topqueryParams.leaveldeptcodes = []; |
| | | if (type == 1) { |
| | | this.topqueryParams.leaveldeptcodes.push(code); |
| | | this.topqueryParams.leavehospitaldistrictcodes = []; |
| | | this.topqueryParams.searchscope = 1; |
| | | } else if (type == 2) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push(code); |
| | | this.topqueryParams.leaveldeptcodes = []; |
| | | this.topqueryParams.searchscope = 2; |
| | | } else { |
| | | this.topqueryParams.searchscope = 3; |
| | | } |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.dateRangefs = []; |
| | | this.topqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | sendstate: 6, |
| | | sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) |
| | | serviceType: 14, |
| | | searchscope: 3, |
| | | visitCount: 1, |
| | | scopetype: [], |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }; |
| | | this.handleQuery(1); |
| | | }, |
| | | handleSelectionChange(rows) { |
| | | this.selectedRows = rows.map((row) => { |
| | | // åå§åè¯ååæ®µ |
| | | return { |
| | | ...row, |
| | | authenticity: row.authenticity || 0, |
| | | weekFinish: row.weekFinish || 0, |
| | | standard: row.standard || 0, |
| | | timeliness: row.timeliness || 0, |
| | | library: row.library || 0, |
| | | environment: row.environment || 0, |
| | | doctorSatisfaction: row.doctorSatisfaction || 0, |
| | | nurseSatisfaction: row.nurseSatisfaction || 0, |
| | | }; |
| | | }); |
| | | |
| | | if (this.selectedRows.length > 0) { |
| | | this.multiple = false; |
| | | } else { |
| | | this.multiple = true; |
| | | } |
| | | }, |
| | | |
| | | // è®¡ç®æ»å |
| | | calculateTotal(row) { |
| | | return ( |
| | | (row.authenticity || 0) + |
| | | (row.weekFinish || 0) + |
| | | (row.standard || 0) + |
| | | (row.timeliness || 0) + |
| | | (row.library || 0) + |
| | | (row.environment || 0) + |
| | | (row.doctorSatisfaction || 0) + |
| | | (row.nurseSatisfaction || 0) |
| | | ); |
| | | }, |
| | | |
| | | // ä¿åè¯å |
| | | saveScores() { |
| | | this.selectedRows.forEach((item) => { |
| | | item.createBy = null; |
| | | item.patName = item.sendname; |
| | | item.hospitaldistrictname = item.leavehospitaldistrictname; |
| | | }); |
| | | addsatisfaction(this.selectedRows).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message.success("è¯åä¿åæå"); |
| | | this.scoreDialogVisible = false; |
| | | this.selectedRows = []; |
| | | this.$refs.userform.clearSelection(); |
| | | } else { |
| | | this.$modal.msgWarning("è¯åä¿å失败"); |
| | | this.scoreDialogVisible = false; |
| | | this.selectedRows = []; |
| | | this.$refs.userform.clearSelection(); |
| | | } |
| | | }); |
| | | // è¿éå¯ä»¥æ·»å ä¿åé»è¾ï¼å¦è°ç¨APIä¿åè¯å |
| | | }, |
| | | //å é¤é项 |
| | | handleClose(tag) { |
| | | this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); |
| | | }, |
| | | //è§¦åæ°å¢è¾å
¥ |
| | | showInput() { |
| | | this.inputVisible = true; |
| | | this.$nextTick((_) => { |
| | | this.$refs.saveTagInput.$refs.input.focus(); |
| | | }); |
| | | }, |
| | | //è·å失å»ç¦ç¹è§¦å |
| | | handleInputConfirm() { |
| | | let inputValue = this.inputValue; |
| | | if (inputValue) { |
| | | this.dynamicTags.push(inputValue); |
| | | } |
| | | this.inputVisible = false; |
| | | this.inputValue = ""; |
| | | }, |
| | | /** æ°å¢æé®æä½ */ |
| | | handleAdd() { |
| | | this.$router.push({ |
| | | path: "/followvisit/QuestionnaireTask", |
| | | query: { |
| | | type: 2, |
| | | serviceType: 14, |
| | | }, |
| | | }); |
| | | }, |
| | | //æ£è
360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | this.$modal.msgWarning("360åè½ææªå¼é"); |
| | | return; // 黿¢åç»ä»£ç æ§è¡ |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | if (this.postData.XiaoXiTou.ZuHuMC == "丽水å¸ä¸å»é¢") { |
| | | this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728"; |
| | | this.postData.YeWuXX.YongHuXX.YongHuXM = "LSZYY"; |
| | | } |
| | | query360PatInfo(this.postData).then((res) => { |
| | | if (res.data.url) { |
| | | window.open(res.data.url, "_blank"); |
| | | // this.linkUrl = res.data.url; |
| | | } else { |
| | | this.$modal.msgWarning("360æ¥è¯¢æ ç»æ"); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | /** éç½®å¯ç æé®æä½ */ |
| | | handleResetPwd(row) { |
| | | this.$prompt('请è¾å
¥"' + row.userName + '"çæ°å¯ç ', "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | closeOnClickModal: false, |
| | | inputPattern: /^.{5,20}$/, |
| | | inputErrorMessage: "ç¨æ·å¯ç é¿åº¦å¿
é¡»ä»äº 5 å 20 ä¹é´", |
| | | }) |
| | | .then(({ value }) => { |
| | | resetUserPwd(row.userId, value).then((response) => { |
| | | this.$modal.msgSuccess("ä¿®æ¹æåï¼æ°å¯ç æ¯ï¼" + value); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // åæ¶æé® |
| | | cancel() { |
| | | this.Labelchange = false; |
| | | this.reset(); |
| | | }, |
| | | /** æäº¤æé® */ |
| | | submitForm: function () { |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | this.form.isoperation = 2; |
| | | this.form.notrequiredFlag = 1; |
| | | alterpatient(this.form) |
| | | .then((response) => { |
| | | console.log(response); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("æ£è
è¿æ»¤æå"); |
| | | }); |
| | | |
| | | this.reset(); |
| | | this.Labelchange = false; |
| | | } |
| | | }); |
| | | }, |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | const userIds = row.userId || this.ids; |
| | | this.$modal |
| | | .confirm('æ¯å¦ç¡®è®¤å é¤ç¨æ·ç¼å·ä¸º"' + userIds + '"çæ°æ®é¡¹ï¼') |
| | | .then(function () { |
| | | return delUser(userIds); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("å 餿å"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // å
¨é¨åæ¢ |
| | | AllStop() { |
| | | this.$modal |
| | | .confirm("æ¯å¦åæ¢å
¨é¨ä»»å¡ï¼") |
| | | .then(function () { |
| | | return console.log("忢æå"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgWarning("忢æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // å
¨é¨å¼å§ |
| | | AllStarted() { |
| | | this.$modal |
| | | .confirm("æ¯å¦å¼å¯å
¨é¨ä»»å¡ï¼") |
| | | .then(function () { |
| | | return console.log("å¼å¯æå"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("å¼å¯æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // ä»»å¡éç½® |
| | | TaskReset() { |
| | | this.$modal |
| | | .confirm("æ¯å¦éç½®éä¸çä»»å¡é¡¹ï¼") |
| | | .then(function () { |
| | | return console.log("é䏿å"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("éç½®æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // 设置åéæ¶é´ |
| | | Sendtimesetting() { |
| | | this.modificationVisible = true; |
| | | }, |
| | | // 跳转详æ
页 |
| | | Seedetails(row) { |
| | | let type = ""; |
| | | console.log(row, "rwo"); |
| | | if (row.preachformson) { |
| | | if (row.preachformson.includes("3")) { |
| | | type = 1; |
| | | } |
| | | } |
| | | this.$router.push({ |
| | | path: "/followvisit/record/detailpage/", |
| | | query: { |
| | | taskid: row.taskid, |
| | | patid: row.patid, |
| | | id: row.id, |
| | | Voicetype: type, |
| | | visitCount: this.topqueryParams.visitCount, |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | | onSubmit() {}, |
| | | |
| | | // æ£è
è¿æ»¤è§¦å |
| | | handleUpdate(row) { |
| | | particularpatient(row.patid).then((response) => { |
| | | this.form = response.data; |
| | | this.form.filterDrname = store.getters.nickName; |
| | | }); |
| | | this.amendtag = true; |
| | | this.Labelchange = true; |
| | | }, |
| | | // ä¾¿æ·æé® |
| | | toleadExport(too) { |
| | | if (too == 1) { |
| | | this.topqueryParams.sendstate = 4; |
| | | this.topqueryParams.excep = null; |
| | | } else if (too == 2) { |
| | | this.topqueryParams.excep = 1; |
| | | } |
| | | this.handleQuery(); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | | handleExport() { |
| | | this.topqueryParams.pageNum = null; |
| | | this.topqueryParams.pageSize = null; |
| | | this.download( |
| | | "smartor/serviceSubtask/patItemExport", |
| | | { |
| | | ...this.topqueryParams, |
| | | }, |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | | }, |
| | | // å¼å¸¸å渲æ |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (row.excep == 1) { |
| | | return "warning-row"; |
| | | } |
| | | return ""; |
| | | }, |
| | | |
| | | getCurrentTime() { |
| | | const now = new Date(); |
| | | const year = now.getFullYear(); |
| | | const month = String(now.getMonth() + 1).padStart(2, "0"); |
| | | const day = String(now.getDate()).padStart(2, "0"); |
| | | const hours = String(now.getHours()).padStart(2, "0"); |
| | | const minutes = String(now.getMinutes()).padStart(2, "0"); |
| | | const seconds = String(now.getSeconds()).padStart(2, "0"); |
| | | |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-button--primary.is-plain { |
| | | color: #ffffff; |
| | | background: #409eff; |
| | | border-color: #4fabe9; |
| | | } |
| | | |
| | | .document { |
| | | // width: 100px; |
| | | height: 50px; |
| | | } |
| | | ::v-deep.el-table .warning-row { |
| | | background: #eec4c4; |
| | | } |
| | | |
| | | .documentf { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | .download { |
| | | text-align: center; |
| | | |
| | | .el-upload__tip { |
| | | font-size: 23px; |
| | | } |
| | | |
| | | .el-upload__text { |
| | | font-size: 23px; |
| | | } |
| | | } |
| | | |
| | | .uploading { |
| | | margin-top: 20px; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #ffffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .el-tag + .el-tag { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .button-new-tag { |
| | | margin-left: 10px; |
| | | height: 32px; |
| | | line-height: 30px; |
| | | padding-top: 0; |
| | | padding-bottom: 0; |
| | | } |
| | | |
| | | .input-new-tag { |
| | | width: 90px; |
| | | margin-left: 10px; |
| | | vertical-align: bottom; |
| | | } |
| | | |
| | | .drexamine { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 30px; |
| | | background: #daeaf5; |
| | | |
| | | img { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | } |
| | | |
| | | .qrcode-dialo { |
| | | // text-align: center; |
| | | // display: flex; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #edf1f7; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .topic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | ::v-deep.leftvlue .el-card__body { |
| | | background: #d0e9fd; |
| | | } |
| | | ::v-deep.leftvlue .el-card__body:hover { |
| | | background: #8dc8f8; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | ::v-deep.errleftvlue .el-card__body { |
| | | background: #fdd0d7; |
| | | } |
| | | ::v-deep.errleftvlue .el-card__body:hover { |
| | | background: #f88d96; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | |
| | | ::v-deep.ysfleftvlue .el-card__body { |
| | | background: #d0fdd8; |
| | | } |
| | | ::v-deep.ysfleftvlue .el-card__body:hover { |
| | | background: #8df8a4; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | .button-bb { |
| | | font-weight: 500; |
| | | background-color: #2ba05c; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-xq { |
| | | font-weight: 500; |
| | | background-color: #409eff; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-sc { |
| | | font-weight: 500; |
| | | background-color: #b3a21f; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-zx { |
| | | background: #4fabe9; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | ::v-deep.el-radio-group { |
| | | span { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | .purple-button { |
| | | background-color: #7e22ce; |
| | | border-color: #7e22ce; |
| | | color: #fff; |
| | | } |
| | | |
| | | .purple-button:hover, |
| | | .purple-button:focus { |
| | | background-color: #9333ea; |
| | | border-color: #9333ea; |
| | | } |
| | | |
| | | .purple-button:active { |
| | | background-color: #6b21a8; |
| | | border-color: #6b21a8; |
| | | } |
| | | |
| | | .purple-button.is-disabled { |
| | | background-color: #d8b4fe; |
| | | border-color: #d8b4fe; |
| | | opacity: 1; /* ä¿æç¦ç¨ç¶æéæåº¦ */ |
| | | } |
| | | // é项å使¾å¤§ |
| | | // ::v-deep.el-checkbox-group { |
| | | // span { |
| | | // font-size: 24px; |
| | | // } |
| | | // } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="merge-questionnaire-container"> |
| | | <div class="merge-header"> |
| | | <h3>åå¹¶ç¼è¾é®å· (å
± {{ services.length }} 个æªå®ææå¡)</h3> |
| | | <el-tag |
| | | v-for="service in services" |
| | | :key="service.id" |
| | | type="info" |
| | | style="margin-right: 10px" |
| | | > |
| | | {{ service.taskName }} ({{ service.sendname }}) |
| | | </el-tag> |
| | | </div> |
| | | |
| | | <div class="merge-content"> |
| | | <div class="question-list"> |
| | | <div |
| | | v-for="(question, index) in mergedQuestions" |
| | | :key="question.uniqueKey" |
| | | class="question-item" |
| | | > |
| | | <!-- é¢ç®å±ç¤º - ä¸ç¶ç»ä»¶ä¿æä¸è´ --> |
| | | <div |
| | | :class=" |
| | | question.isabnormal ? 'scriptTopic-isabnormal' : 'scriptTopic-dev' |
| | | " |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[{{ |
| | | getQuestionType(question.scriptType) |
| | | }}]<span> {{ question.scriptContent }}</span> |
| | | </div> |
| | | |
| | | <!-- åé --> |
| | | <div class="dev-xx" v-if="question.scriptType == 1"> |
| | | <el-radio-group |
| | | v-model="question.mergedResult" |
| | | @change=" |
| | | handleOptionChange( |
| | | $event, |
| | | index, |
| | | question.svyLibTemplateTargetoptions, |
| | | question |
| | | ) |
| | | " |
| | | >11 |
| | | <el-radio |
| | | v-for="( |
| | | option, optIndex |
| | | ) in question.svyLibTemplateTargetoptions" |
| | | :key="optIndex" |
| | | :label="option.optioncontent" |
| | | :class="option.isabnormal ? 'red-star' : ''" |
| | | > |
| | | {{ option.optioncontent }} |
| | | </el-radio> |
| | | </el-radio-group> |
| | | </div> |
| | | |
| | | <!-- å¤é --> |
| | | <div class="dev-xx" v-if="question.scriptType == 2"> |
| | | <el-checkbox-group |
| | | v-model="question.mergedResult" |
| | | @change="updateScore($event, index, question.options, question)" |
| | | > |
| | | <el-checkbox |
| | | v-for="(option, optIndex) in question.options" |
| | | :key="optIndex" |
| | | :label="option.optioncontent" |
| | | :class="option.isabnormal ? 'red-star' : ''" |
| | | > |
| | | {{ option.optioncontent }} |
| | | </el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | |
| | | <!-- 填空 --> |
| | | <div class="dev-xx" v-if="question.scriptType == 4"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="question.mergedResult" |
| | | clearable |
| | | /> |
| | | </div> |
| | | |
| | | <!-- éå è¾å
¥æ¡ --> |
| | | <div v-if="question.showAppendInput" class="append-input-container"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
·ä½ä¿¡æ¯" |
| | | v-model="question.answerps" |
| | | clearable |
| | | /> |
| | | </div> |
| | | |
| | | <!-- æç¤ºä¿¡æ¯ --> |
| | | <div v-show="question.prompt"> |
| | | <el-alert :title="question.prompt" type="warning" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="merge-footer"> |
| | | <el-button @click="handleCancel">åæ¶</el-button> |
| | | <el-button type="primary" @click="handleSave" :loading="isSaving" |
| | | >ä¿åå°ææé®å·</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getsearchrResults, |
| | | serviceSubtaskDetailedit, |
| | | serviceSubtaskDetailadd, |
| | | Editsingletaskson, |
| | | getTaskservelist, |
| | | alterpatient, |
| | | } from "@/api/AiCentre/index"; |
| | | |
| | | export default { |
| | | props: { |
| | | selectedServices: { |
| | | type: Array, |
| | | required: true, |
| | | }, |
| | | patid: { |
| | | type: [String, Number], |
| | | required: true, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | services: [], |
| | | mergedQuestions: [], // åå¹¶åçé®é¢æ°æ® |
| | | isSaving: false, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.loadServicesData(); |
| | | }, |
| | | methods: { |
| | | getQuestionType(type) { |
| | | const types = { 1: "åé", 2: "å¤é", 4: "é®ç" }; |
| | | return types[type] || "æªç¥"; |
| | | }, |
| | | |
| | | async loadServicesData() { |
| | | this.services = this.selectedServices; |
| | | |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: "æ£å¨å è½½æªå®æé®å·æ°æ®...", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | |
| | | try { |
| | | // åªå è½½æªå®æçæå¡é®å·æ°æ® |
| | | const requests = this.services.map((service) => |
| | | getsearchrResults({ |
| | | taskid: service.taskid, |
| | | patid: this.patid, |
| | | subId: service.id, |
| | | isFinish: false, // ç¡®ä¿åªè·åæªå®æçé®å· |
| | | }) |
| | | ); |
| | | |
| | | const responses = await Promise.all(requests); |
| | | |
| | | // åå¹¶ææé®é¢ï¼å»é |
| | | const allQuestions = []; |
| | | const questionMap = {}; |
| | | |
| | | responses.forEach((response, index) => { |
| | | if (response.code == 200 && response.data.scriptResult) { |
| | | response.data.scriptResult.forEach((q) => { |
| | | const key = `${q.scriptContent}_${q.scriptType}`; |
| | | if (!questionMap[key]) { |
| | | questionMap[key] = { |
| | | ...q, |
| | | uniqueKey: key, |
| | | mergedResult: q.scriptType == 2 ? [] : null, |
| | | originalServices: [], // è®°å½åå§æå¡ID |
| | | }; |
| | | allQuestions.push(questionMap[key]); |
| | | } |
| | | questionMap[key].originalServices.push(this.services[index].id); |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | // åå§ååå¹¶ç»æ |
| | | this.mergedQuestions = allQuestions.map((q) => ({ |
| | | ...q, |
| | | mergedResult: q.scriptType == 2 ? [] : q.scriptResult || null, |
| | | })); |
| | | console.log(this.mergedQuestions); |
| | | } catch (error) { |
| | | this.$message.error("å è½½é®å·æ°æ®å¤±è´¥: " + error.message); |
| | | } finally { |
| | | loading.close(); |
| | | } |
| | | }, |
| | | |
| | | // å¤çé项åå (ä¸ç¶ç»ä»¶ä¿æä¸è´) |
| | | handleOptionChange(selectedOption, questionIndex, options, question) { |
| | | const selectedOptionObj = options.find( |
| | | (item) => item.optioncontent == selectedOption |
| | | ); |
| | | |
| | | // 设置å¼å¸¸ç¶æ |
| | | question.isabnormal = !!selectedOptionObj?.isabnormal; |
| | | |
| | | // å¤çéå è¾å
¥æ¡æ¾ç¤º |
| | | question.showAppendInput = selectedOptionObj?.appendflag == 1; |
| | | if (!question.showAppendInput) { |
| | | question.answerps = ""; |
| | | } |
| | | |
| | | this.$forceUpdate(); |
| | | }, |
| | | |
| | | // æ´æ°å¤éåæ° (ä¸ç¶ç»ä»¶ä¿æä¸è´) |
| | | updateScore(selectedValues, questionIndex, options, question) { |
| | | const abnormalOptions = options.filter((opt) => opt.isabnormal); |
| | | question.isabnormal = abnormalOptions.some((opt) => |
| | | selectedValues.includes(opt.optioncontent) |
| | | ); |
| | | this.$forceUpdate(); |
| | | }, |
| | | |
| | | handleCancel() { |
| | | this.$emit("cancel"); |
| | | }, |
| | | |
| | | async handleSave() { |
| | | this.isSaving = true; |
| | | |
| | | try { |
| | | const saveResults = []; |
| | | const updateServicePromises = []; |
| | | |
| | | // 1. ä¿åææé®å·é®é¢ |
| | | for (const service of this.services) { |
| | | const serviceId = service.id; |
| | | const questionsToSave = this.mergedQuestions |
| | | .filter((q) => q.originalServices.includes(serviceId)) |
| | | .map((question) => ({ |
| | | scriptid: question.id, |
| | | scriptResultId: question.scriptResultId, |
| | | scriptType: question.scriptType, |
| | | questiontext: question.scriptContent, |
| | | asrtext: |
| | | question.scriptType == 2 |
| | | ? question.mergedResult.join("&") |
| | | : question.mergedResult, |
| | | answerps: question.answerps || null, |
| | | isabnormal: question.isabnormal || false, |
| | | })); |
| | | |
| | | // ä¿åé®é¢æ°æ® |
| | | for (const question of questionsToSave) { |
| | | const saveData = { |
| | | taskid: service.taskid, |
| | | patid: this.patid, |
| | | subId: serviceId, |
| | | ...question, |
| | | }; |
| | | |
| | | if (saveData.isabnormal) { |
| | | saveData.excep = 1; |
| | | } |
| | | |
| | | try { |
| | | const response = question.scriptResultId |
| | | ? await serviceSubtaskDetailedit(saveData) |
| | | : await serviceSubtaskDetailadd(saveData); |
| | | |
| | | saveResults.push({ |
| | | serviceId, |
| | | success: response.code === 200, |
| | | message: |
| | | response.message || |
| | | (response.code === 200 ? "ä¿åæå" : "ä¿å失败"), |
| | | }); |
| | | } catch (error) { |
| | | saveResults.push({ |
| | | serviceId, |
| | | success: false, |
| | | message: error.message || "ä¿å失败", |
| | | }); |
| | | } |
| | | } |
| | | |
| | | // 2. æ´æ°æå¡ç¶æä¸ºå·²å®æ (sendstate = 6) |
| | | updateServicePromises.push(this.updateServiceStatus(serviceId)); |
| | | } |
| | | |
| | | // çå¾
æææå¡ç¶ææ´æ°å®æ |
| | | const updateResults = await Promise.all(updateServicePromises); |
| | | updateResults.forEach((result) => { |
| | | if (!result.success) { |
| | | saveResults.push({ |
| | | serviceId: result.serviceId, |
| | | success: false, |
| | | message: result.message || "æå¡ç¶ææ´æ°å¤±è´¥", |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | // ç»è®¡ç»æ |
| | | const successCount = saveResults.filter((r) => r.success).length; |
| | | const totalCount = saveResults.length; |
| | | |
| | | // éç¥ç¶ç»ä»¶ |
| | | this.$emit("save", { |
| | | successCount, |
| | | totalCount, |
| | | results: saveResults, |
| | | }); |
| | | |
| | | if (successCount === totalCount) { |
| | | this.$message.success("ææé®å·åæå¡ç¶ææ´æ°æå"); |
| | | } else { |
| | | this.$message.warning( |
| | | `æåä¿å ${successCount} 项ï¼å¤±è´¥ ${totalCount - successCount} 项` |
| | | ); |
| | | } |
| | | } catch (error) { |
| | | this.$message.error("ä¿åè¿ç¨ä¸åçé误: " + error.message); |
| | | } finally { |
| | | this.isSaving = false; |
| | | } |
| | | }, |
| | | // æ°å¢æ¹æ³ï¼æ´æ°æå¡ç¶æ |
| | | async updateServiceStatus(serviceId) { |
| | | try { |
| | | // è·åæå¡å½åæ°æ® |
| | | const res = await getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: serviceId, |
| | | }); |
| | | |
| | | if (res.code === 200) { |
| | | const serviceData = res.rows[0].serviceSubtaskList.find( |
| | | (item) => item.id === serviceId |
| | | ); |
| | | |
| | | if (serviceData) { |
| | | // æ´æ°æå¡ç¶æä¸ºå·²å®æ (sendstate = 6) |
| | | const updateRes = await Editsingletaskson({ |
| | | ...serviceData, |
| | | sendstate: 6, // è®¾ç½®ä¸ºå·²å®æç¶æ |
| | | remark: "éè¿åå¹¶ç¼è¾å®æ", // å¯éï¼æ·»å 夿³¨ |
| | | }); |
| | | |
| | | return { |
| | | serviceId, |
| | | success: updateRes.code === 200, |
| | | message: updateRes.message || "æå¡ç¶ææ´æ°æå", |
| | | }; |
| | | } |
| | | } |
| | | return { |
| | | serviceId, |
| | | success: false, |
| | | message: "è·åæå¡æ°æ®å¤±è´¥", |
| | | }; |
| | | } catch (error) { |
| | | return { |
| | | serviceId, |
| | | success: false, |
| | | message: error.message || "æ´æ°æå¡ç¶æå¤±è´¥", |
| | | }; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .merge-questionnaire-container { |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: 100%; |
| | | padding: 20px; |
| | | } |
| | | |
| | | .merge-header { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .merge-content { |
| | | flex: 1; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .question-list { |
| | | padding: 10px; |
| | | } |
| | | |
| | | /* ä¸ç¶ç»ä»¶ä¸è´çé¢ç®æ ·å¼ */ |
| | | .scriptTopic-dev { |
| | | margin-bottom: 20px; |
| | | padding: 15px; |
| | | border: 1px solid #ebeef5; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .scriptTopic-isabnormal { |
| | | margin-bottom: 20px; |
| | | padding: 15px; |
| | | border: 1px solid #f56c6c; |
| | | border-radius: 4px; |
| | | background-color: #fff6f6; |
| | | } |
| | | |
| | | .dev-text { |
| | | font-size: 16px; |
| | | margin-bottom: 15px; |
| | | color: #333; |
| | | } |
| | | |
| | | .dev-xx { |
| | | margin-left: 20px; |
| | | } |
| | | |
| | | .append-input-container { |
| | | margin-top: 15px; |
| | | } |
| | | |
| | | .red-star { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .merge-footer { |
| | | margin-top: 20px; |
| | | text-align: right; |
| | | padding-top: 15px; |
| | | border-top: 1px solid #ebeef5; |
| | | } |
| | | </style> |
| | |
| | | åå¾CDSSæ¥è¯¢ |
| | | </el-link> |
| | | </div> |
| | | <div class="merge-controls" v-if="Whetherall"> |
| | | <el-button |
| | | type="primary" |
| | | @click="toggleMergeMode" |
| | | :disabled="selectedServices.length < 2" |
| | | > |
| | | {{ isMergeMode ? "åæ¶åå¹¶" : "åå¹¶ç¼è¾é®å·" }} |
| | | </el-button> |
| | | <el-button |
| | | v-if="isMergeMode" |
| | | type="success" |
| | | @click="openMergeDialog" |
| | | :disabled="selectedServices.length < 2" |
| | | > |
| | | å¼å§åå¹¶ (å·²é {{ selectedServices.length }} 个æå¡) |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <!-- <el-button type="success">é访åçä¿¡</el-button> --> |
| | | </div> |
| | |
| | | :data="logsheetlist" |
| | | :row-class-name="tableRowClassName" |
| | | style="width: 100%" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column |
| | | type="selection" |
| | | width="55" |
| | | :selectable="checkSelectable" |
| | | v-if="Whetherall" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="sendname" |
| | | align="center" |
| | |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div class="Followuserinfos"> |
| | | <div> |
| | | <el-form |
| | | ref="userform" |
| | | :model="form" |
| | | :rules="userrules" |
| | | label-width="120px" |
| | | > |
| | | <!-- æ·»å åå¹¶ç¼è¾å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | title="åå¹¶ç¼è¾é®å·" |
| | | :visible.sync="mergeDialogVisible" |
| | | width="80%" |
| | | top="5vh" |
| | | v-dialogDrag |
| | | > |
| | | <MergeAndModify |
| | | v-if="mergeDialogVisible" |
| | | :selected-services="selectedServices" |
| | | :patid="patid" |
| | | @save="handleMergeSave" |
| | | @cancel="mergeDialogVisible = false" |
| | | /> |
| | | </el-dialog> |
| | | <div class="action-container"> |
| | | <div class="call-action"> |
| | | <div class="call-container"> |
| | | <!-- <div class="call-header"> |
| | | <h2>ä¸é®å¼å«åè½</h2> |
| | | </div> --> |
| | | |
| | | <div class="headline"> |
| | | <div>人工å¤ç</div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8" |
| | | ><el-form-item label="èç³»çµè¯"> |
| | | <el-input |
| | | placeholder="èç³»çµè¯ç¼ºå¤±" |
| | | v-model="userform.telcode" |
| | | > |
| | | <el-button |
| | | slot="append" |
| | | icon="el-icon-phone" |
| | | @click="handleCall(userform.telcode, 'tel')" |
| | | :disabled="!isValidPhone(userform.telcode)" |
| | | ></el-button |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="8" |
| | | ><el-form-item label="è系人çµè¯"> |
| | | <el-input |
| | | placeholder="è系人çµè¯ç¼ºå¤±" |
| | | v-model="userform.relativetelcode" |
| | | > |
| | | <el-button |
| | | slot="append" |
| | | icon="el-icon-phone" |
| | | @click="handleCall(userform.relativetelcode, 'relative')" |
| | | :disabled="!isValidPhone(userform.relativetelcode)" |
| | | ></el-button |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="8" |
| | | ><el-form-item label="è系人å
³ç³»"> |
| | | <el-input |
| | | placeholder="è系人å
³ç³»ç¼ºå¤±" |
| | | v-model="userform.relation" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | |
| | | <div style="margin-left: 30px"> |
| | | <el-button type="primary" plain @click="Editsingletasksonyic('')" |
| | | >ä¿åæå¡</el-button |
| | | > |
| | | </div> |
| | | <div>é访å
容</div> |
| | | </div> |
| | | <el-row :gutter="20" v-if="callStatus !== 'idle'"> |
| | | <el-col :span="24"> |
| | | <el-alert |
| | | :title="callStatusText" |
| | | :type="callStatusType" |
| | | :closable="false" |
| | | show-icon |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <div> |
| | | <el-tabs v-model="activeName" type="border-card"> |
| | | <el-tab-pane name="wj"> |
| | | <span class="mulsz" slot="label" |
| | | ><i class="el-icon-notebook-1"></i> é®å·éè®¿ç»æ</span |
| | | > |
| | | <div class="CONTENT"> |
| | | <div class="title">{{ taskname ? taskname : "é®å·" }}</div> |
| | | |
| | | <!-- æææé®ï¼ä»
å¨éè¯ä¸æ¾ç¤ºï¼ --> |
| | | <el-row :gutter="20" v-if="callStatus === 'connected'"> |
| | | <el-col :span="24" style="text-align: center; margin-top: 10px"> |
| | | <el-button |
| | | type="danger" |
| | | icon="el-icon-phone" |
| | | @click="endCurrentCall" |
| | | :loading="isEndingCall" |
| | | > |
| | | ææçµè¯ |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="é访记å½"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | <div class="preview-left" v-if="!Voicetype"> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | | :key="item.id" |
| | | > |
| | | <!-- åé --> |
| | | <div |
| | | :class=" |
| | | item.isabnormal |
| | | ? 'scriptTopic-isabnormal' |
| | | : 'scriptTopic-dev' |
| | | " |
| | | :key="index" |
| | | v-if="item.scriptType == 1 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[åé]<span>{{ |
| | | item.scriptContent |
| | | }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group |
| | | v-model="item.scriptResult" |
| | | @change=" |
| | | handleOptionChange( |
| | | $event, |
| | | index, |
| | | item.svyLibTemplateTargetoptions, |
| | | item |
| | | ) |
| | | " |
| | | > |
| | | <el-radio |
| | | v-for="( |
| | | items, indexs |
| | | ) in item.svyLibTemplateTargetoptions" |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | :key="indexs" |
| | | :label="items.optioncontent" |
| | | >{{ items.optioncontent }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </div> |
| | | <div |
| | | v-if="item.showAppendInput||item.answerps" |
| | | class="append-input-container" |
| | | > |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
·ä½ä¿¡æ¯" |
| | | v-model="item.answerps" |
| | | clearable |
| | | ></el-input> |
| | | </div> |
| | | <div v-show="item.prompt"> |
| | | <el-alert :title="item.prompt" type="warning"> |
| | | </el-alert> |
| | | </div> |
| | | </div> |
| | | <!-- å¤é --> |
| | | <div |
| | | :class=" |
| | | item.isabnormal |
| | | ? 'scriptTopic-isabnormal' |
| | | : 'scriptTopic-dev' |
| | | " |
| | | :key="index" |
| | | v-if="item.scriptType == 2 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[å¤é]<span>{{ |
| | | item.scriptContent |
| | | }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-checkbox-group |
| | | v-model="item.scriptResult" |
| | | @change="updateScore($event, index, item)" |
| | | > |
| | | <el-checkbox |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | @change="$forceUpdate()" |
| | | v-for="( |
| | | items, indexs |
| | | ) in item.svyLibTemplateTargetoptions" |
| | | :key="indexs" |
| | | :label="items.optioncontent" |
| | | > |
| | | {{ items.optioncontent }} |
| | | </el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | <div v-show="item.prompt && item.scriptResult[0]"> |
| | | <el-alert :title="item.prompt" type="warning"> |
| | | </el-alert> |
| | | </div> |
| | | </div> |
| | | <!-- 填空 --> |
| | | <div |
| | | class="scriptTopic-dev" |
| | | :key="index" |
| | | v-if="item.scriptType == 4 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[é®ç]<span>{{ |
| | | item.scriptContent |
| | | }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.scriptResult" |
| | | clearable |
| | | > |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <el-form-item label="å¤çæè§"> |
| | | <div> |
| | | <el-button plain type="warning" @click="Editsingletaskson('1')" |
| | | >æä¸å¤ç</el-button |
| | | > |
| | | <el-button plain type="success" @click="Editsingletaskson('2')" |
| | | >ç
æ
稳å®</el-button |
| | | > |
| | | <el-button plain type="primary" @click="Editsingletaskson('3')" |
| | | >éç¥å°±è¯</el-button |
| | | > |
| | | <!-- <el-button type="danger" @click="Editsingletaskson('4')" |
| | | >失访</el-button |
| | | > --> |
| | | <el-button plain type="info" @click="Editsingletaskson('5')" |
| | | >ä¸å¿é访</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | round |
| | | v-if="this.form.isVisitAgain != 2" |
| | | @click="sendAgain()" |
| | | >忬¡é访</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-collapse> |
| | | <el-collapse-item title="æ¥çå½åæ£è
ä¿¡æ¯" name="1"> |
| | | <div class="preview-left" v-else> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | | :key="item.id" |
| | | > |
| | | <div v-if="item.targetvalue"> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[åé]<span>{{ |
| | | item.questiontext |
| | | }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group |
| | | v-model="item.matchedtext" |
| | | @change=" |
| | | handleOptionChange( |
| | | $event, |
| | | index, |
| | | item.ivrTaskScriptTargetoptionList, |
| | | item |
| | | ) |
| | | " |
| | | > |
| | | <el-radio |
| | | v-for="(items, index) in item.scriptResult" |
| | | :key="items" |
| | | :label="items" |
| | | >{{ items }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-show="item.prompt"> |
| | | <el-alert :title="item.prompt" type="warning"> |
| | | </el-alert> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="scriptTopic-dev" :key="index" v-else> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[é®ç]<span>{{ |
| | | item.questiontext |
| | | }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.matchedtext" |
| | | clearable |
| | | > |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-button |
| | | v-if="Voicetype" |
| | | type="primary" |
| | | @click="yuyingetdetail" |
| | | >ä¿åæå¡è¯¦æ
</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | >ä¿åæå¡è¯¦æ
</el-button |
| | | > |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane name="yy"> |
| | | <span class="mulsz" slot="label" |
| | | ><i class="el-icon-headset"></i> è¯é³é访详æ
</span |
| | | > |
| | | <div class="borderdiv"> |
| | | <div class="title">{{ taskname ? taskname : "é®å·" }}</div> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | text-align: center; |
| | | align-items: center; |
| | | color: #59a0f0; |
| | | " |
| | | > |
| | | 宿´è¯é³ï¼ |
| | | <mini-audio |
| | | :audio-source=" |
| | | voice ? voice : '@assets/order/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | | <div class="preview-left"> |
| | | <div v-for="item in voiceDatatop"> |
| | | <div class="leftside"> |
| | | <i class="el-icon-phone-outline"></i |
| | | ><span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="offside"> |
| | | <i class="el-icon-user"></i> |
| | | <div class="offside-value"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 1 }" |
| | | v-model="item.asrtext" |
| | | ></el-input> |
| | | |
| | | <div> |
| | | <mini-audio |
| | | :audio-source=" |
| | | item.questionvoice |
| | | ? item.questionvoice |
| | | : '@assets/order/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-button |
| | | v-if="Voicetype" |
| | | type="primary" |
| | | @click="yuyingetdetail" |
| | | >ä¿åé访详æ
</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | >ä¿åé访详æ
</el-button |
| | | > |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="manual-action"> |
| | | <div class="Followuserinfos"> |
| | | <div> |
| | | <el-form |
| | | ref="userform" |
| | | :model="form" |
| | | :rules="userrules" |
| | | label-width="120px" |
| | | > |
| | | <div class="headline"> |
| | | <div>人工å¤ç</div> |
| | | <div style="margin: 0 30px"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="Editsingletasksonyic('')" |
| | | >ä¿ååºç¡ä¿¡æ¯</el-button |
| | | > |
| | | </div> |
| | | <div> |
| | | <el-button |
| | | type="primary" |
| | | round |
| | | v-if="this.form.isVisitAgain != 2" |
| | | @click="sendAgain()" |
| | | >忬¡é访</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | <el-row> |
| | | <el-col :span="14" |
| | | ><el-form-item label="èç³»çµè¯"> |
| | | <el-input |
| | | placeholder="èç³»çµè¯ç¼ºå¤±" |
| | | v-model="userform.telcode" |
| | | > |
| | | <el-button |
| | | slot="append" |
| | | icon="el-icon-phone" |
| | | @click="handleCall(userform.telcode, 'tel')" |
| | | :disabled="!isValidPhone(userform.telcode)" |
| | | ></el-button |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="14" |
| | | ><el-form-item label="è系人çµè¯"> |
| | | <el-input |
| | | placeholder="è系人çµè¯ç¼ºå¤±" |
| | | v-model="userform.relativetelcode" |
| | | > |
| | | <el-button |
| | | slot="append" |
| | | icon="el-icon-phone" |
| | | @click=" |
| | | handleCall(userform.relativetelcode, 'relative') |
| | | " |
| | | :disabled="!isValidPhone(userform.relativetelcode)" |
| | | ></el-button |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="10" |
| | | ><el-form-item label="è系人å
³ç³»"> |
| | | <el-input |
| | | placeholder="è系人å
³ç³»ç¼ºå¤±" |
| | | v-model="userform.relation" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <div class="call-controls"> |
| | | <CallButton |
| | | ref="callButton" |
| | | :phoneNumber="currentPhoneNumber" |
| | | style="display: none" |
| | | /> |
| | | |
| | | <div v-if="callStatus === 'connected'" class="hangup-btn"> |
| | | <el-button |
| | | type="danger" |
| | | icon="el-icon-phone" |
| | | @click="endCurrentCall" |
| | | :loading="isEndingCall" |
| | | > |
| | | ææçµè¯ |
| | | </el-button> |
| | | </div> |
| | | <div class="call-status" v-if="callStatus !== 'idle'"> |
| | | <el-alert |
| | | :title="callStatusText" |
| | | :type="callStatusType" |
| | | :closable="false" |
| | | show-icon |
| | | /> |
| | | </div> |
| | | </div> |
| | | <el-form-item label="é访记å½"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="å¤çæè§"> |
| | | <div> |
| | | <el-button |
| | | plain |
| | | type="warning" |
| | | @click="Editsingletaskson('1')" |
| | | >æä¸å¤ç</el-button |
| | | > |
| | | <el-button |
| | | plain |
| | | type="success" |
| | | @click="Editsingletaskson('2')" |
| | | >ç
æ
稳å®</el-button |
| | | > |
| | | <el-button |
| | | plain |
| | | type="primary" |
| | | @click="Editsingletaskson('3')" |
| | | >éç¥å°±è¯</el-button |
| | | > |
| | | <el-button plain type="info" @click="Editsingletaskson('5')" |
| | | >ä¸å¿é访</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <div class="detailed"> |
| | | <h3>æ£è
æ¡£æ¡ä¿¡æ¯</h3> |
| | | <el-form ref="userform" :model="userform" label-width="100px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | |
| | | /> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <!-- <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ ç¾" prop="desc"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="tag.tagname" |
| | | type="success" |
| | | v-for="tag in dynamicTags" |
| | | :disable-transitions="false" |
| | | > |
| | | {{ tag.tagname }} |
| | | </el-tag> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | </el-form> |
| | | </div> |
| | | </el-collapse-item> |
| | | </el-collapse> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <h2>ä¸é®å¼å«åè½</h2> |
| | | <CallButton |
| | | ref="callButton" |
| | | :phoneNumber="currentPhoneNumber" |
| | | style="display: none" |
| | | /> |
| | | </div> |
| | | <div> |
| | | <el-tabs v-model="activeName" type="border-card"> |
| | | <el-tab-pane name="wj"> |
| | | <span class="mulsz" slot="label" |
| | | ><i class="el-icon-notebook-1"></i> é®å·éè®¿ç»æ</span |
| | | > |
| | | <div class="CONTENT"> |
| | | <div class="title">{{ taskname ? taskname : "é®å·" }}</div> |
| | | |
| | | <div class="preview-left" v-if="!Voicetype"> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | | :key="item.id" |
| | | > |
| | | <!-- åé --> |
| | | <div |
| | | :class=" |
| | | item.isabnormal |
| | | ? 'scriptTopic-isabnormal' |
| | | : 'scriptTopic-dev' |
| | | " |
| | | :key="index" |
| | | v-if="item.scriptType == 1 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[åé]<span>{{ item.scriptContent }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group |
| | | v-model="item.scriptResult" |
| | | @change=" |
| | | handleOptionChange( |
| | | $event, |
| | | index, |
| | | item.svyLibTemplateTargetoptions |
| | | ) |
| | | " |
| | | > |
| | | <el-radio |
| | | v-for="( |
| | | items, indexs |
| | | ) in item.svyLibTemplateTargetoptions" |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | :key="indexs" |
| | | :label="items.optioncontent" |
| | | >{{ items.optioncontent }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-show="item.prompt"> |
| | | <el-alert :title="item.prompt" type="warning"> </el-alert> |
| | | </div> |
| | | </div> |
| | | <!-- å¤é --> |
| | | <div |
| | | :class=" |
| | | item.isabnormal |
| | | ? 'scriptTopic-isabnormal' |
| | | : 'scriptTopic-dev' |
| | | " |
| | | :key="index" |
| | | v-if="item.scriptType == 2 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[å¤é]<span>{{ item.scriptContent }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-checkbox-group |
| | | v-model="item.scriptResult" |
| | | @change="updateScore($event, index, item)" |
| | | > |
| | | <el-checkbox |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | @change="$forceUpdate()" |
| | | v-for="( |
| | | items, indexs |
| | | ) in item.svyLibTemplateTargetoptions" |
| | | :key="indexs" |
| | | :label="items.optioncontent" |
| | | > |
| | | {{ items.optioncontent }} |
| | | </el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | <div v-show="item.prompt && item.scriptResult[0]"> |
| | | <el-alert :title="item.prompt" type="warning"> </el-alert> |
| | | </div> |
| | | </div> |
| | | <!-- 填空 --> |
| | | <div |
| | | class="scriptTopic-dev" |
| | | :key="index" |
| | | v-if="item.scriptType == 4 && !item.astrict" |
| | | > |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[é®ç]<span>{{ item.scriptContent }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.scriptResult" |
| | | clearable |
| | | > |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="preview-left" v-else> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | | :key="item.id" |
| | | > |
| | | <div v-if="item.targetvalue"> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[åé]<span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group |
| | | v-model="item.matchedtext" |
| | | @change="handleOptionChange($event, index, item)" |
| | | > |
| | | <el-radio |
| | | v-for="(items, index) in item.scriptResult" |
| | | :key="items" |
| | | :label="items" |
| | | >{{ items }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-show="item.prompt"> |
| | | <el-alert :title="item.prompt" type="warning"> </el-alert> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="scriptTopic-dev" :key="index" v-else> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}ã[é®ç]<span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.matchedtext" |
| | | clearable |
| | | > |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-button v-if="Voicetype" type="primary" @click="yuyingetdetail" |
| | | >ä¿åæå¡è¯¦æ
</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | >ä¿åæå¡è¯¦æ
</el-button |
| | | > |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane name="yy"> |
| | | <span class="mulsz" slot="label" |
| | | ><i class="el-icon-headset"></i> è¯é³é访详æ
</span |
| | | > |
| | | <div class="borderdiv"> |
| | | <div class="title">{{ taskname ? taskname : "é®å·" }}</div> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | text-align: center; |
| | | align-items: center; |
| | | color: #59a0f0; |
| | | " |
| | | > |
| | | 宿´è¯é³ï¼ |
| | | <mini-audio |
| | | :audio-source=" |
| | | voice ? voice : '@assets/order/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | | <div class="preview-left"> |
| | | <div v-for="item in voiceDatatop"> |
| | | <div class="leftside"> |
| | | <i class="el-icon-phone-outline"></i |
| | | ><span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="offside"> |
| | | <i class="el-icon-user"></i> |
| | | <div class="offside-value"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 1 }" |
| | | v-model="item.asrtext" |
| | | ></el-input> |
| | | |
| | | <div> |
| | | <mini-audio |
| | | :audio-source=" |
| | | item.questionvoice |
| | | ? item.questionvoice |
| | | : '@assets/order/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-button v-if="Voicetype" type="primary" @click="yuyingetdetail" |
| | | >ä¿åé访详æ
</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | >ä¿åé访详æ
</el-button |
| | | > |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <el-dialog |
| | | title="æ£è
忬¡é访" |
| | | v-dialogDrags |
| | |
| | | listcontactinformation, |
| | | } from "@/api/patient/homepage"; |
| | | import CallButton from "@/components/CallButton"; |
| | | import MergeAndModify from "./MergeAndModify.vue"; |
| | | export default { |
| | | components: { |
| | | CallButton, |
| | | MergeAndModify, |
| | | }, |
| | | |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | |
| | | tableDatatop: [], //é¢ç®è¡¨ |
| | | voiceDatatop: [], //é¢ç®è¡¨ |
| | | dynamicTags: [], |
| | | isMergeMode: false, |
| | | mergeDialogVisible: false, |
| | | selectedServices: [], // éä¸çæå¡å表 |
| | | zcrules: { |
| | | resource: [ |
| | | { required: true, message: "è¯·éæ©é访æ¹å¼", trigger: "change" }, |
| | |
| | | getuserinfo() { |
| | | const queryParams = { |
| | | pid: Number(this.patid), |
| | | allhosp: "0", |
| | | pageNum: 1, |
| | | allhosp: "0",//1ä½é¢2é¨è¯3使£4åºé¢ |
| | | }; |
| | | // æ£è
åºç¡ä¿¡æ¯ |
| | | messagelistpatient(queryParams).then((response) => { |
| | |
| | | scriptid: item.id, |
| | | excep: excep, |
| | | questiontext: item.scriptContent, |
| | | answerps: item.answerps || null, // æ·»å éå ä¿¡æ¯ |
| | | }; |
| | | if (item.scriptType == 2 && item.scriptResult[0]) { |
| | | obj.asrtext = item.scriptResult.join("&"); |
| | |
| | | }) |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount!=1) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | |
| | | }); |
| | | } |
| | | } else if (this.form.serviceType == 2) { |
| | | if (this.visitCount!=1) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/again", |
| | | }); |
| | |
| | | console.error("åçé误ï¼", error); |
| | | }); |
| | | }, |
| | | // çµè¯============================ |
| | | // éªè¯çµè¯å·ç æ ¼å¼å¹¶è¿åéè¯¯ä¿¡æ¯ |
| | | validatePhoneNumber(phone) { |
| | | if (!phone) { |
| | |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | // 使ç¨ç¤ºä¾ |
| | | isValidPhone(phone) { |
| | | return this.validatePhoneNumber(phone).isValid; |
| | |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | // å¤çéè¯ç¶æåå |
| | | handleCallStatusChange(status) { |
| | | console.log(status, "status"); |
| | |
| | | this.$message.error(`å¼å«å¤±è´¥: ${status.text}`); |
| | | } |
| | | }, |
| | | |
| | | // ç»æå½åéè¯ |
| | | endCurrentCall() { |
| | | if (!this.currentCall) return; |
| | |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | handleOptionChange(a, b, c) { |
| | | aahandleOptionChange(a, b, c) { |
| | | const result = c.find((item) => item.optioncontent == a); |
| | | if (result.nextQuestion == 0) { |
| | | this.tableDatatop = this.tableDatatop.reduce((acc, item, i) => { |
| | |
| | | } else { |
| | | this.tableDatatop[b].isabnormal = false; |
| | | } |
| | | this.$forceUpdate(); |
| | | }, |
| | | // å¨methodsé¨åï¼ä¿®æ¹handleOptionChangeæ¹æ³: |
| | | handleOptionChange(selectedOption, questionIndex, options, a) { |
| | | if (document.activeElement) { |
| | | document.activeElement.blur(); |
| | | } |
| | | |
| | | // æ¾å°è¢«éä¸çé项对象 |
| | | const selectedOptionObj = options.find( |
| | | (item) => item.optioncontent == selectedOption |
| | | ); |
| | | |
| | | // å¤çå¼å¸¸ç¶æé«äº® |
| | | this.tableDatatop[questionIndex].isabnormal = |
| | | !!selectedOptionObj.isabnormal; |
| | | // å¤çéå è¾å
¥æ¡æ¾ç¤º |
| | | |
| | | this.tableDatatop[questionIndex].showAppendInput = |
| | | selectedOptionObj.appendflag == 1; |
| | | console.log(this.tableDatatop); |
| | | |
| | | // if (!this.tableDatatop[questionIndex].showAppendInput) { |
| | | // this.tableDatatop[questionIndex].answerps = ""; // æ¸
é¤éå ä¿¡æ¯ |
| | | // } |
| | | // ä¿åå½åé¢ç®ä¹åå·²ç»éèçé¢ç®ç¶æ |
| | | const previouslyHiddenBeforeCurrent = this.tableDatatop |
| | | .slice(0, questionIndex) |
| | | .map((item, index) => (item.astrict ? index : -1)) |
| | | .filter((index) => index !== -1); |
| | | |
| | | // ä¿åä¹åå nextQuestion=0èéèçé¢ç®èå´ |
| | | const previouslyHiddenByEnd = this.tableDatatop |
| | | .map((item, index) => (item.hiddenByEnd ? index : -1)) |
| | | .filter((index) => index !== -1); |
| | | |
| | | // 妿branchFlag为1ï¼å¤çé¢ç®è·³è½¬ |
| | | if (a.branchFlag == 1) { |
| | | if (selectedOptionObj.nextQuestion == 0) { |
| | | // ç»æé®ç - éèå颿æé¢ç®å¹¶æ è®° |
| | | this.tableDatatop = this.tableDatatop.map((item, index) => ({ |
| | | ...item, |
| | | astrict: index > questionIndex, |
| | | hiddenByEnd: index > questionIndex, // æ è®°è¿äºé¢ç®æ¯è¢«ç»æé®çéèç |
| | | })); |
| | | } else { |
| | | // æ£å¸¸è·³è½¬é»è¾ |
| | | const nextQuestionIndex = selectedOptionObj.nextQuestion - 1; |
| | | |
| | | this.tableDatatop = this.tableDatatop.map((item, index) => { |
| | | // ä¿çå½åé¢ç®ä¹åçéèç¶æ |
| | | if (index < questionIndex) { |
| | | return { |
| | | ...item, |
| | | astrict: previouslyHiddenBeforeCurrent.includes(index), |
| | | hiddenByEnd: false, // æ¸
é¤ç»ææ è®° |
| | | }; |
| | | } |
| | | |
| | | // å½åé¢ç®æ»æ¯å¯è§ |
| | | if (index === questionIndex) { |
| | | return { ...item, astrict: 0, hiddenByEnd: false }; |
| | | } |
| | | |
| | | // æ¾ç¤ºç®æ ä¸ä¸é¢ |
| | | if (index === nextQuestionIndex) { |
| | | return { ...item, astrict: 0, hiddenByEnd: false }; |
| | | } |
| | | |
| | | // 妿æ¯ä¹åè¢«ç»æé®çéèçé¢ç®ï¼ç°å¨åºè¯¥æ¢å¤æ¾ç¤º |
| | | if (item.hiddenByEnd) { |
| | | return { ...item, astrict: 0, hiddenByEnd: false }; |
| | | } |
| | | |
| | | // éèå½åé¢åç®æ é¢ä¹é´çé¢ç® |
| | | if (index > questionIndex && index < nextQuestionIndex) { |
| | | return { ...item, astrict: 1, hiddenByEnd: false }; |
| | | } |
| | | |
| | | // å
¶ä»æ
åµä¿æåç¶ |
| | | return item; |
| | | }); |
| | | } |
| | | } else { |
| | | // å¦ææ²¡æè·³è½¬ï¼åªéç¡®ä¿ä¸ä¸é¢å¯è§ |
| | | this.tableDatatop = this.tableDatatop.map((item, index) => ({ |
| | | ...item, |
| | | astrict: index === questionIndex + 1 ? 0 : item.astrict, |
| | | hiddenByEnd: index === questionIndex + 1 ? false : item.hiddenByEnd, |
| | | })); |
| | | } |
| | | |
| | | this.$forceUpdate(); |
| | | }, |
| | | overdata() { |
| | |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }, |
| | | updateScore(a, b, c) {}, |
| | | // åå¹¶ä¿®æ¹ç¸å
³============================= |
| | | toggleMergeMode() { |
| | | this.isMergeMode = !this.isMergeMode; |
| | | if (!this.isMergeMode) { |
| | | this.selectedServices = []; |
| | | } |
| | | }, |
| | | |
| | | handleSelectionChange(selection) { |
| | | this.selectedServices = selection |
| | | .filter( |
| | | (item) => !item.preachformson || !item.preachformson.includes("3") |
| | | ) |
| | | .map((item) => ({ |
| | | id: item.id, |
| | | taskid: item.taskid, |
| | | taskName: item.taskName, |
| | | sendname: item.sendname, |
| | | })); |
| | | }, |
| | | checkSelectable(row, index) { |
| | | // å½ sendstate 为 6 æ¶ä¸å¯é |
| | | return row.sendstate !== 6; |
| | | }, |
| | | openMergeDialog() { |
| | | if (this.selectedServices.length < 2) { |
| | | this.$message.warning("请è³å°éæ©2个é®å·æå¡è¿è¡åå¹¶"); |
| | | return; |
| | | } |
| | | this.mergeDialogVisible = true; |
| | | }, |
| | | |
| | | handleMergeSave(mergedData) { |
| | | // å¤çåå¹¶ä¿åé»è¾ |
| | | this.mergeDialogVisible = false; |
| | | this.isMergeMode = false; |
| | | this.selectedServices = []; |
| | | |
| | | // æ¾ç¤ºä¿åç»æ |
| | | if (mergedData.successCount == mergedData.totalCount) { |
| | | this.$message.success(`æåä¿å ${mergedData.successCount} 个é®å·`); |
| | | } else if (mergedData.successCount > 0) { |
| | | this.$message.warning( |
| | | `æåä¿å ${mergedData.successCount} 个é®å·ï¼å¤±è´¥ ${ |
| | | mergedData.totalCount - mergedData.successCount |
| | | } 个` |
| | | ); |
| | | } else { |
| | | this.$message.error("ææé®å·ä¿å失败"); |
| | | } |
| | | |
| | | // å·æ°æ°æ® |
| | | this.getTaskservelist(); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | <style lang="scss" scoped> |
| | | .Followupdetailspage { |
| | | margin: 10px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 20px; |
| | | } |
| | | |
| | | .action-container { |
| | | display: flex; |
| | | gap: 20px; |
| | | margin: 0 10px 20px 10px; |
| | | |
| | | .manual-action { |
| | | flex: 1; |
| | | min-width: 0; |
| | | height: 100%; /* ç¡®ä¿é«åº¦ç»§æ¿ */ |
| | | } |
| | | |
| | | .call-action { |
| | | width: 60%; |
| | | min-width: 0; |
| | | height: 100%; /* ç¡®ä¿é«åº¦ç»§æ¿ */ |
| | | } |
| | | } |
| | | |
| | | .call-container { |
| | | padding: 20px; |
| | | background: #fff; |
| | | border: 1px solid #dcdfe6; |
| | | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | border-radius: 4px; |
| | | height: 100%; |
| | | |
| | | .call-header { |
| | | margin-bottom: 20px; |
| | | |
| | | h2 { |
| | | font-size: 20px; |
| | | color: #333; |
| | | margin: 0; |
| | | padding-bottom: 10px; |
| | | border-bottom: 1px solid #eee; |
| | | } |
| | | } |
| | | |
| | | .call-status { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .hangup-btn { |
| | | text-align: center; |
| | | margin-top: 20px; |
| | | } |
| | | } |
| | | .merge-controls { |
| | | background: #f5f7fa; |
| | | border-radius: 4px; |
| | | margin-left: 20px; |
| | | } |
| | | .Followuserinfo { |
| | | margin: 20px 10px; |
| | | margin: 10px 10px 0 10px; |
| | | align-items: center; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .userinfo-text { |
| | | font-size: 20px; |
| | | margin-right: 20px; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .userinfo-value { |
| | | color: rgb(15, 139, 211); |
| | | |
| | | span { |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | ::v-deep.el-table .warning-row { |
| | | background: #c4e2ee; |
| | | } |
| | | |
| | | .Followuserinfos { |
| | | margin: 20px 10px; |
| | | align-items: center; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | height: 100%; /* ç¡®ä¿é«åº¦ç»§æ¿ */ |
| | | min-height: 880px; /* æå°é«åº¦ä¸é访å
容ä¸è´ */ |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .userinfo-text { |
| | | font-size: 20px; |
| | | margin-right: 20px; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .userinfo-value { |
| | | color: rgb(15, 139, 211); |
| | | |
| | | span { |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | |
| | | .el-form { |
| | | flex: 1; |
| | | overflow-y: auto; /* å
容è¶
è¿é«åº¦æ¶æ¾ç¤ºæ»å¨æ¡ */ |
| | | max-height: calc(880px - 60px); /* åå»padding */ |
| | | padding-right: 10px; /* 鲿¢æ»å¨æ¡é®æ¡å
容 */ |
| | | } |
| | | } |
| | | .append-input-container { |
| | | margin-top: 15px; |
| | | padding: 10px; |
| | | background-color: #f5f7fa; |
| | | border-radius: 4px; |
| | | border: 1px solid #dcdfe6; |
| | | } |
| | | .borderdiv { |
| | | min-height: 60vh; |
| | | font-size: 20px; |
| | | padding: 30px; |
| | | |
| | | .title { |
| | | font-size: 22px; |
| | | font-weight: bold; |
| | | margin-bottom: 20px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .leftside { |
| | | margin: 30px 0; |
| | | |
| | | span { |
| | | width: 400px; |
| | | margin-left: 20px; |
| | |
| | | border-radius: 10px; |
| | | } |
| | | } |
| | | |
| | | .offside { |
| | | display: flex; |
| | | flex-direction: row-reverse; |
| | | |
| | | .offside-value { |
| | | padding: 10px; |
| | | background: rgb(217, 173, 253); |
| | |
| | | } |
| | | } |
| | | } |
| | | .topic-dev[inert] { |
| | | opacity: 0.5; |
| | | pointer-events: none; |
| | | } |
| | | .CONTENT { |
| | | padding: 10px; |
| | | height: 100%; |
| | | min-height: 660px; /* 设置æå°é«åº¦ */ |
| | | |
| | | .title { |
| | | font-size: 22px; |
| | | font-weight: bold; |
| | |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | .preview-left { |
| | | margin: 20px; |
| | | // margin: 20px; |
| | | padding: 30px; |
| | | // background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | max-height: 580px; /* 设置æå¤§é«åº¦ */ |
| | | overflow-y: auto; /* å
容è¶
è¿é«åº¦æ¶æ¾ç¤ºæ»å¨æ¡ */ |
| | | |
| | | .topic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .scriptTopic-isabnormal { |
| | | color: red; |
| | | } |
| | | |
| | | .detailed { |
| | | width: 88%; |
| | | border-radius: 8px; |
| | | padding: 30px; |
| | | margin-bottom: 30px; |
| | | background-color: #ddf0f8; |
| | | |
| | | .bg-purple { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .spanvalue { |
| | | display: inline-block; |
| | | min-width: 200px; |
| | | border-bottom: 1px solid rgb(172, 172, 172); |
| | | } |
| | | } |
| | | |
| | | .headline { |
| | | font-size: 24px; |
| | | height: 40px; |
| | |
| | | padding-left: 5px; |
| | | margin-bottom: 10px; |
| | | display: flex; |
| | | // justify-content: space-between; |
| | | |
| | | .Add-details { |
| | | font-size: 18px; |
| | | color: #02a7f0; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .red-star { |
| | | ::v-deep.el-radio__label { |
| | | position: relative; |
| | | padding-right: 10px; /* æ ¹æ®éè¦è°æ´ */ |
| | | padding-right: 10px; |
| | | } |
| | | |
| | | ::v-deep.el-radio__label::after { |
| | | content: "*"; |
| | | color: red; |
| | | position: absolute; |
| | | right: -5px; /* æ ¹æ®éè¦è°æ´ */ |
| | | right: -5px; |
| | | top: 0; |
| | | } |
| | | |
| | | ::v-deep.el-input-group__textarea { |
| | | white-space: pre-wrap; /* ä¿æç©ºç½ç¬¦åºåå¹¶æ£å¸¸æ¢è¡ */ |
| | | word-break: break-all; /* å¨é¿åè¯æURLå°åå
é¨è¿è¡æ¢è¡ */ |
| | | white-space: pre-wrap; |
| | | word-break: break-all; |
| | | } |
| | | |
| | | ::v-deep.el-checkbox__label { |
| | | position: relative; |
| | | padding-right: 10px; /* æ ¹æ®éè¦è°æ´ */ |
| | | padding-right: 10px; |
| | | } |
| | | |
| | | ::v-deep.el-checkbox__label::after { |
| | | content: "*"; |
| | | color: red; |
| | | position: absolute; |
| | | right: -5px; /* æ ¹æ®éè¦è°æ´ */ |
| | | right: -5px; |
| | | top: 0; |
| | | } |
| | | } |
| | | |
| | | ::v-deep.offside-value .el-radio__label { |
| | | color: #fff; |
| | | } |
| | | |
| | | ::v-deep.el-link.el-link--default { |
| | | color: #02a7f0 !important; |
| | | } |
| | | |
| | | .el-message-box__btns button:nth-child(2) { |
| | | margin-left: 10px; |
| | | background-color: #f57676; |
| | | border-color: #f57676; |
| | | } |
| | | |
| | | .el-icon-phone { |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .el-button[disabled] .el-icon-phone { |
| | | color: #c0c4cc; |
| | | } |
| | | |
| | | .el-button:not([disabled]) .el-icon-phone { |
| | | color: #409eff; |
| | | } |
| | | |
| | | .el-button:not([disabled]):hover .el-icon-phone { |
| | | color: #66b1ff; |
| | | transform: scale(1.1); |
| | | } |
| | | |
| | | .mulsz { |
| | | font-size: 25px; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .el-input.is-disabled .el-input__inner { |
| | | background-color: #fff; /* èæ¯é¢è² */ |
| | | border-color: #dcdfe6; /* è¾¹æ¡é¢è² */ |
| | | color: #080808 !important; /* æåé¢è² */ |
| | | cursor: not-allowed; /* é¼ æ æ ·å¼ */ |
| | | background-color: #fff; |
| | | border-color: #dcdfe6; |
| | | color: #080808 !important; |
| | | cursor: not-allowed; |
| | | } |
| | | |
| | | .el-textarea.is-disabled .el-textarea__inner { |
| | | background-color: #fff; /* èæ¯é¢è² */ |
| | | border-color: #dcdfe6; /* è¾¹æ¡é¢è² */ |
| | | color: #080808 !important; /* æåé¢è² */ |
| | | cursor: not-allowed; /* é¼ æ æ ·å¼ */ |
| | | background-color: #fff; |
| | | border-color: #dcdfe6; |
| | | color: #080808 !important; |
| | | cursor: not-allowed; |
| | | } |
| | | </style> |
| | |
| | | const queryParams = { |
| | | pid: Number(this.patid), |
| | | allhosp: "0", |
| | | pageNum: 1, |
| | | }; |
| | | // æ£è
åºç¡ä¿¡æ¯ |
| | | messagelistpatient(queryParams).then((response) => { |
| | |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | |
| | | this.topqueryParams.managementDoctor = store.getters.hisUserId; |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div class="leftvlue" style="margin-bottom: 20px"> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index"> |
| | | <el-card |
| | | shadow="hover" |
| | | :body-style="item.router ? ' cursor: pointer' : 'cursor: default'" |
| | | > |
| | | <div style="padding: 8px" @click="$router.push(item.router)"> |
| | | <span>{{ item.name }}</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ item.value ? item.value : 0 }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="2.5"> |
| | | <div class="ysfleftvlue"> |
| | | <el-card shadow="hover"> |
| | | <div style="padding: 8px"> |
| | | <span>表åå·²åé</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ yfsvalue }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="2.5"> |
| | | <div class="errleftvlue"> |
| | | <el-card shadow="hover"> |
| | | <div style="padding: 8px"> |
| | | <span>å¼å¸¸</span> |
| | | <div |
| | | style=" |
| | | text-align: center; |
| | | font-size: 18px; |
| | | margin-top: 10px; |
| | | font-weight: 600; |
| | | " |
| | | > |
| | | {{ ycvalue }} |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-form |
| | | :model="topqueryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="ä»»å¡åç§°"> |
| | | <el-input |
| | | v-model="topqueryParams.taskName" |
| | | placeholder="è¯·éæ©ä»»å¡åç§°" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="åºé¢æ¶é´"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="æ£è
å§å" prop="sendname"> |
| | | <el-input |
| | | v-model="topqueryParams.sendname" |
| | | placeholder="请è¾å
¥æ£è
å§å" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¯æåç§°" prop="leavediagname"> |
| | | <el-input |
| | | v-model="topqueryParams.leavediagname" |
| | | placeholder="请è¾å
¥è¯æåç§°" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é访人å" prop="updateBy"> |
| | | <el-input |
| | | v-model="topqueryParams.updateBy" |
| | | placeholder="请è¾å
¥é访人å" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="主治å»ç" prop="drname"> |
| | | <el-input |
| | | v-model="topqueryParams.drname" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»ç®¡å»ç" prop="managementDoctor"> |
| | | <el-input |
| | | v-model="topqueryParams.managementDoctor" |
| | | placeholder="请è¾å
¥ä¸»æ²»å»ç" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ£è
èå´" prop="status"> |
| | | <el-cascader |
| | | v-model="topqueryParams.scopetype" |
| | | placeholder="é»è®¤å
¨é¨" |
| | | :options="sourcetype" |
| | | :props="{ expandTrigger: 'hover' }" |
| | | @change="handleChange" |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="ä»»å¡ç¶æ" prop="status"> |
| | | <el-select v-model="topqueryParams.sendstate" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in topicoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æåºæ¹å¼" prop="status"> |
| | | <el-select v-model="topqueryParams.sort" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in topicoptionssort" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="medium" |
| | | @click="handleQuery(1)" |
| | | >æç´¢</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" |
| | | >éç½®</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-divider></el-divider> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-upload2" |
| | | size="medium" |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | @click="handleAdd" |
| | | >æ°å¢</el-button |
| | | > |
| | | </el-col> |
| | | |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-warning-outline" |
| | | size="medium" |
| | | @click="toleadExport(1)" |
| | | >æ§è¡å¤±è´¥</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-warning" |
| | | size="medium" |
| | | @click="toleadExport(2)" |
| | | >ç»æå¼å¸¸</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="success" |
| | | plain |
| | | size="medium" |
| | | @click="buidegetTasklist()" |
| | | >å¾
åæå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | size="medium" |
| | | @click="affiliation()" |
| | | >æ¬äººæå±æå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button type="success" size="medium" @click="onthatday()" |
| | | >彿¥æå¡</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | <el-table |
| | | v-loading="loading" |
| | | ref="userform" |
| | | :data="userList" |
| | | :row-class-name="tableRowClassName" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | fixed |
| | | width="150" |
| | | show-overflow-tooltip |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | /> |
| | | <!-- <el-table-column label="åºå·" fixed align="center" key="id" prop="id" /> --> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | key="sendname" |
| | | prop="sendname" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | gettoken360(scope.row.sfzh, scope.row.drcode, scope.row.drname) |
| | | " |
| | | ><span class="button-textsc">{{ |
| | | scope.row.sendname |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä»»å¡ç¶æ" |
| | | align="center" |
| | | key="sendstate" |
| | | prop="sendstate" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.remark" |
| | | placement="top-start" |
| | | > |
| | | <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> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ä»»å¡å¼å¸¸è¯´æ" |
| | | width="120" |
| | | align="center" |
| | | key="remark" |
| | | prop="remark" --> |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="å¤çæè§" |
| | | align="center" |
| | | key="suggest" |
| | | prop="suggest" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_suggest" |
| | | :value="scope.row.suggest" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="éè®¿å®ææ¶é´" |
| | | sortable |
| | | align="center" |
| | | prop="finishtime" |
| | | width="160" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.finishtime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åºé¢æ¥æ" |
| | | width="200" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="主治å»ç" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | <el-table-column |
| | | label="é访人å" |
| | | align="center" |
| | | key="updateBy" |
| | | prop="updateBy" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="ç»ç®¡å»ç" |
| | | align="center" |
| | | key="managementDoctor" |
| | | prop="managementDoctor" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="åºé¢å¤©æ°" |
| | | width="120" |
| | | align="center" |
| | | key="endDay" |
| | | prop="endDay" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.endDay ? scope.row.endDay + "天" : "" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="身份è¯å·ç " |
| | | width="200" |
| | | align="center" |
| | | key="sfzh" |
| | | prop="sfzh" |
| | | /> |
| | | <el-table-column |
| | | label="èç³»çµè¯" |
| | | width="200" |
| | | align="center" |
| | | key="phone" |
| | | prop="phone" |
| | | /> |
| | | <el-table-column |
| | | label="责任æ¤å£«" |
| | | width="120" |
| | | align="center" |
| | | key="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | |
| | | <!-- <el-table-column |
| | | label="ç
åå·" |
| | | align="center" |
| | | sortable |
| | | key="medicalRecordNo" |
| | | prop="medicalRecordNo" |
| | | width="120" |
| | | /> --> |
| | | |
| | | <!-- <el-table-column label="å¹´é¾" align="center" key="age" prop="age" /> --> |
| | | <!-- <el-table-column label="æ§å«"width="100" align="center" key="sex" prop="sex" /> --> |
| | | <!-- <el-table-column label="åºå·" align="center" key="badNo" prop="badNo" /> --> |
| | | <el-table-column |
| | | label="ç§å®¤" |
| | | align="center" |
| | | key="deptname" |
| | | prop="deptname" |
| | | width="120" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç
åº" |
| | | align="center" |
| | | key="leavehospitaldistrictname" |
| | | prop="leavehospitaldistrictname" |
| | | width="120" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="è¯æåç§°" |
| | | align="center" |
| | | key="leavediagname" |
| | | prop="leavediagname" |
| | | width="120" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="ä½é¢æ»¡æåº¦æ¨¡æ¿åç§°" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | width="200" |
| | | /> |
| | | <el-table-column |
| | | label="任塿§è¡æ¹å¼" |
| | | align="center" |
| | | key="preachform" |
| | | prop="preachform" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.preachform">{{ item }}ã </span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ä»»å¡åéæµç¨" |
| | | align="center" |
| | | key="serviceSubtaskRecordList" |
| | | prop="serviceSubtaskRecordList" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.serviceSubtaskRecordList" |
| | | >{{ item.remark }}ã |
| | | </span> |
| | | </template> |
| | | </el-table-column> --> |
| | | <el-table-column |
| | | label="ä»»å¡ç»æè¯´æ" |
| | | width="220" |
| | | align="center" |
| | | key="remark" |
| | | prop="remark" |
| | | > |
| | | <template slot-scope="scope" v-if="scope.row.remark"> |
| | | <el-tooltip |
| | | :content="scope.row.remark" |
| | | placement="top" |
| | | effect="dark" |
| | | > |
| | | <el-tag |
| | | type="warning" |
| | | v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4" |
| | | >{{ scope.row.remark }}</el-tag |
| | | > |
| | | <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | align="center" |
| | | fixed="right" |
| | | width="300" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <!-- <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="忬¡é访" |
| | | placement="top" |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | v-if="scope.row.isVisitAgain!=2" |
| | | @click="followupvisit(scope.row)" |
| | | ><span class="button-bb" |
| | | ><i class="el-icon-s-promotion"></i>忬¡é访</span |
| | | ></el-button |
| | | > |
| | | </el-tooltip> |
| | | <el-tooltip |
| | | v-if="scope.row.sendstate == 1 || scope.row.sendstate == 2" |
| | | class="item" |
| | | effect="dark" |
| | | content="æåæå¡" |
| | | placement="top" |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="handlestop(scope.row)" |
| | | v-hasPermi="['system:user:edit']" |
| | | ><span class="button-sc" |
| | | ><i class="el-icon-remove-outline"></i>æåæå¡</span |
| | | ></el-button |
| | | > |
| | | </el-tooltip> --> |
| | | <el-button size="medium" type="text" @click="Seedetails(scope.row)" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>æ¥ç详æ
</span |
| | | ></el-button |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="handleUpdate(scope.row)" |
| | | ><span class="button-textxga" |
| | | ><i class="el-icon-edit"></i>æ£è
è¿æ»¤</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="topqueryParams.pageNum" |
| | | :limit.sync="topqueryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-row> |
| | | <!-- 满æåº¦å¼¹æ¡ --> |
| | | <el-dialog |
| | | title="é访满æåº¦è¯å" |
| | | :visible.sync="scoreDialogVisible" |
| | | width="80%" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-table :data="selectedRows" border style="width: 100%"> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | prop="sendname" |
| | | /> |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | width="180" |
| | | align="center" |
| | | prop="taskName" |
| | | /> |
| | | <!-- æ°å¢è¯åå --> |
| | | <el-table-column |
| | | label="ç宿§(20)" |
| | | align="center" |
| | | key="authenticity" |
| | | prop="authenticity" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.authenticity" |
| | | :min="0" |
| | | :max="20" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä¸å¨å
宿(20)" |
| | | align="center" |
| | | key="weekFinish" |
| | | prop="weekFinish" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.weekFinish" |
| | | :min="0" |
| | | :max="20" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="è§èæ§(10)" |
| | | align="center" |
| | | key="standard" |
| | | prop="standard" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.standard" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åæ¶æ§(10)" |
| | | align="center" |
| | | key="timeliness" |
| | | prop="timeliness" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.timeliness" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="宣ææ
åµ(10)" |
| | | align="center" |
| | | key="library" |
| | | prop="library" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.library" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç¯å¢æ»¡æåº¦(10)" |
| | | align="center" |
| | | key="environment" |
| | | prop="environment" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.environment" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å»ç满æåº¦(10)" |
| | | align="center" |
| | | key="doctorSatisfaction" |
| | | prop="doctorSatisfaction" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.doctorSatisfaction" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ¤å£«æ»¡æåº¦(10)" |
| | | align="center" |
| | | key="nurseSatisfaction" |
| | | prop="nurseSatisfaction" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.nurseSatisfaction" |
| | | :min="0" |
| | | :max="10" |
| | | :step="1" |
| | | size="small" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ»å" |
| | | align="center" |
| | | key="total" |
| | | prop="total" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ calculateTotal(scope.row) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="scoreDialogVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="saveScores">ä¿å</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- æ·»å æä¿®æ¹å½±åéè®¿å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | :title="amendtag ? 'ä¿®æ¹æ£è
ä¿¡æ¯' : 'æ°å¢æ£è
'" |
| | | :visible.sync="Labelchange" |
| | | width="900px" |
| | | > |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="100px"> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å§å" width="100" prop="name"> |
| | | <el-input |
| | | v-model="form.name" |
| | | placeholder="请è¾å
¥å§å" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ§å«" width="100" prop="sex"> |
| | | <el-select v-model="form.sex" placeholder="è¯·éæ©æ§å«"> |
| | | <el-option |
| | | v-for="dict in sextype" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å¹´é¾" prop="age"> |
| | | <el-input |
| | | v-model="form.age" |
| | | placeholder="请è¾å
¥å¹´é¾" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="8"> |
| | | <el-form-item label="è¿æ»¤å»ç" width="100" prop="filterDrname"> |
| | | <el-input |
| | | v-model="form.filterDrname" |
| | | placeholder="请è¾å
¥å»çå§å" |
| | | maxlength="30" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¿æ»¤åå "> |
| | | <el-input |
| | | v-model="form.notrequiredreason" |
| | | type="textarea" |
| | | placeholder="请è¾å
¥è¿æ»¤åå " |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | <el-button @click="cancel">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | title="åéæ¶é´è®¾ç½®" |
| | | :visible.sync="modificationVisible" |
| | | width="45%" |
| | | > |
| | | <div style="margin-bottom: 20px; color: red"> |
| | | ç»ä¸ä¿®æ¹å½å¤©æªåéç任塿¶é´ |
| | | </div> |
| | | |
| | | <el-form |
| | | :model="ruleForm" |
| | | :rules="rules" |
| | | ref="ruleForm" |
| | | label-width="120px" |
| | | class="demo-ruleForm" |
| | | > |
| | | <el-form-item label="å鿥æ"> |
| | | <el-date-picker |
| | | v-model="ruleForm.value1" |
| | | type="date" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ¶é´æ®µ" prop="type"> |
| | | <el-checkbox-group v-model="ruleForm.type"> |
| | | <el-checkbox label="ä¸å" name="type"></el-checkbox> |
| | | <el-checkbox label="ä¸å" name="type"></el-checkbox> |
| | | <el-checkbox label="æä¸" name="type"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value2" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value3" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æä¸æ¶é´åºé´" required> |
| | | <el-time-picker |
| | | is-range |
| | | v-model="ruleForm.value4" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | > |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="modificationVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="modificationVisible = false" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 忬¡é访 --> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | delUser, |
| | | addUser, |
| | | updateUser, |
| | | resetUserPwd, |
| | | changeUserStatus, |
| | | } from "@/api/system/user"; |
| | | import { |
| | | getTaskservelist, |
| | | buidegetTasklist, |
| | | addserviceSubtask, |
| | | query360PatInfo, |
| | | addsatisfaction, |
| | | } from "@/api/AiCentre/index"; |
| | | import { alterpatient, particularpatient } from "@/api/patient/homepage"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import store from "@/store"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | |
| | | export default { |
| | | name: "Discharge", |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | | components: { Treeselect }, |
| | | data() { |
| | | return { |
| | | // é®ç½©å± |
| | | loading: true, |
| | | // é䏿°ç» |
| | | ids: [], |
| | | // éå个ç¦ç¨ |
| | | single: true, |
| | | // éå¤ä¸ªç¦ç¨ |
| | | multiple: true, |
| | | // æ¾ç¤ºæç´¢æ¡ä»¶ |
| | | showSearch: true, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // ç¨æ·è¡¨æ ¼æ°æ® |
| | | userList: null, |
| | | // å¼¹åºå±æ é¢ |
| | | title: "æ°å¢å½±åé访", |
| | | // æ¯å¦æ¾ç¤ºä¿®æ¹ãæ·»å å¼¹åºå± |
| | | addalteropen: false, |
| | | // ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ |
| | | modificationVisible: false, |
| | | // é¨é¨åç§° |
| | | deptName: undefined, |
| | | // é»è®¤å¯ç |
| | | initPassword: undefined, |
| | | // æ¥æèå´ |
| | | dateRange: [], |
| | | dateRangefs: [], |
| | | // å²ä½é项 |
| | | postOptions: [], |
| | | ruleForm: { |
| | | type: [], |
| | | }, |
| | | zcform: {}, |
| | | dynamicTags: ["é项ä¸", "é项äº", "é项ä¸"], //é项 |
| | | inputVisible: false, |
| | | Labelchange: false, |
| | | ycvalue: "", |
| | | yfsvalue: "", |
| | | inputValue: "", |
| | | preachform: "", |
| | | previewVisible: false, //å½±åé访é¢è§å¼¹æ¡ |
| | | radio: "", |
| | | radios: [], |
| | | previewtype: 2, //é¢è§å½±åé访类å |
| | | total: 0, // æ»æ¡æ° |
| | | // 满æåº¦è°æ¥æ°æ® |
| | | scoreDialogVisible: false, |
| | | selectedRows: [], |
| | | |
| | | value: [], |
| | | list: [], |
| | | |
| | | sourcetype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç§å®¤", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "ç
åº", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "å
¨é¨", |
| | | }, |
| | | ], |
| | | loading: false, |
| | | cardlist: [ |
| | | { |
| | | name: "æå¡æ»é", |
| | | value: 0, |
| | | }, |
| | | // { |
| | | // name: "æ£è
è¿æ»¤", |
| | | // value: 0, |
| | | // }, |
| | | { |
| | | name: "åºé访", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "åé失败", |
| | | value: 0, |
| | | }, |
| | | { |
| | | name: "å¾
é访", |
| | | value: 0, |
| | | }, |
| | | // { |
| | | // name: "å·²åé", |
| | | // value: 0, |
| | | // }, |
| | | |
| | | // { |
| | | // name: "表åå·²åé", |
| | | // value: 0, |
| | | // }, |
| | | ], |
| | | zcrules: { |
| | | date1: [ |
| | | { required: true, message: "è¯·éæ©é访æ¹å¼", trigger: "change" }, |
| | | ], |
| | | resource: [ |
| | | { required: true, message: "è¯·éæ©é访æ¶é´", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | // 表ååæ° |
| | | form: { |
| | | phonenumber: "", |
| | | totagid: "", |
| | | types: "", |
| | | nickName: "", |
| | | qystatus: "", |
| | | btstatus: "", |
| | | }, |
| | | topicoptionssort: [ |
| | | { |
| | | value: 0, |
| | | label: "åºé¢æ¶é´(æ£åº)", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "åºé¢æ¶é´(ååº)", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "åéæ¶é´(æ£åº)", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "åéæ¶é´(ååº)", |
| | | }, |
| | | ], |
| | | // æ¥è¯¢åæ° |
| | | topqueryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | sendstate: 6, |
| | | sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) |
| | | serviceType: 6, |
| | | searchscope: 3, |
| | | visitCount: 1, |
| | | scopetype: [], |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }, |
| | | propss: { multiple: true }, |
| | | options: [], |
| | | |
| | | topicoptions: [ |
| | | { |
| | | value: null, |
| | | label: "å
¨é¨", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "表åå·²é¢å", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "å¾
é访", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "表åå·²åé", |
| | | }, |
| | | { |
| | | value: 4, |
| | | label: "䏿§è¡", |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: "åé失败", |
| | | }, |
| | | { |
| | | value: 6, |
| | | label: "已宿", |
| | | }, |
| | | ], |
| | | sextype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç·", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "女", |
| | | }, |
| | | ], |
| | | topicoptionsyj: [ |
| | | { |
| | | value: 1, |
| | | label: "å¼å¸¸", |
| | | }, |
| | | { |
| | | value: 0, |
| | | label: "æ£å¸¸", |
| | | }, |
| | | ], |
| | | url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo", |
| | | postData: { |
| | | XiaoXiTou: { |
| | | FaSongFCSJC: "ZJHES", |
| | | FaSongJGID: localStorage.getItem("orgid"), |
| | | FaSongJGMC: localStorage.getItem("orgname"), |
| | | FaSongSJ: "2025-01-09Â 17:29:36", |
| | | FaSongXTJC: "SUIFANGXT", |
| | | FaSongXTMC: "é访系ç»", |
| | | XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", |
| | | XiaoXiLX: "SC_LC_360STCX", |
| | | XiaoXiMC: "360 è§å¾æ¥è¯¢", |
| | | ZuHuID: localStorage.getItem("ZuHuID"), |
| | | ZuHuMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YeWuXX: { |
| | | BingRenXX: { |
| | | ZhengJianHM: "", |
| | | ZhengJianLXDM: "01", |
| | | ZhengJianLXMC: "å±
æ°èº«ä»½è¯", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YongHuXX: { |
| | | XiTongID: "SUIFANGXT", |
| | | XiTongMC: "é访系ç»", |
| | | YongHuID: "1400466972205912064", |
| | | YongHuXM: "JNRMYY", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | idp: "lyra", |
| | | }, |
| | | }, |
| | | }, |
| | | amendtag: false, |
| | | errtype: "", |
| | | leavehospitaldistrictcode: "", |
| | | serviceState: [], |
| | | checkboxlist: [], |
| | | // è¡¨åæ ¡éª |
| | | rules: {}, |
| | | }; |
| | | }, |
| | | watch: {}, |
| | | created() { |
| | | this.serviceState = store.getters.serviceState; |
| | | this.checkboxlist = store.getters.checkboxlist; |
| | | this.errtype = this.$route.query.errtype; |
| | | this.leavehospitaldistrictcode = |
| | | this.$route.query.leavehospitaldistrictcode; |
| | | this.sourcetype[0].children = store.getters.belongDepts.map((dept) => { |
| | | return { |
| | | label: dept.deptName, |
| | | value: dept.deptCode, |
| | | }; |
| | | }); |
| | | this.sourcetype[1].children = store.getters.belongWards.map((dept) => { |
| | | return { |
| | | label: dept.districtName, |
| | | value: dept.districtCode, |
| | | }; |
| | | }); |
| | | if (this.errtype) { |
| | | this.toleadExport(2); |
| | | } else { |
| | | this.getList(1); |
| | | } |
| | | this.getConfigKey("sys.user.initPassword").then((response) => { |
| | | this.initPassword = response.msg; |
| | | }); |
| | | }, |
| | | activated() { |
| | | this.getList(1); |
| | | }, |
| | | methods: { |
| | | /** æ¥è¯¢é访æå¡å表 */ |
| | | getList(refresh) { |
| | | // é»è®¤å
¨é¨ |
| | | |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | // æ¥åå¼å¸¸è·³è½¬ |
| | | if (this.errtype) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push( |
| | | this.leavehospitaldistrictcode |
| | | ); |
| | | console.log(this.topqueryParams.leavehospitaldistrictcodes, "11"); |
| | | } |
| | | this.loading = true; |
| | | if ( |
| | | this.topqueryParams.leavehospitaldistrictcodes[0] && |
| | | this.topqueryParams.leaveldeptcodes[0] |
| | | ) { |
| | | this.topqueryParams.deptOrDistrict = 2; |
| | | } else { |
| | | this.topqueryParams.deptOrDistrict = 1; |
| | | } |
| | | getTaskservelist(this.topqueryParams).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | | this.cardlist[0].value = |
| | | Number(response.rows[0].wzx) + Number(response.rows[0].ysf); |
| | | // this.cardlist[1].value = response.rows[0].wzx; |
| | | this.cardlist[1].value = response.rows[0].ysf; |
| | | this.ycvalue = response.rows[0].yc; |
| | | this.cardlist[2].value = response.rows[0].fssb; |
| | | this.cardlist[3].value = response.rows[0].dsf; |
| | | // this.cardlist[4].value = response.rows[0].yfs2; |
| | | this.yfsvalue = response.rows[0].yfs; |
| | | } |
| | | this.loading = false; |
| | | this.userList.forEach((item) => { |
| | | let idArray = null; |
| | | if (item.endtime) { |
| | | item.endDay = this.daysBetween(item.endtime); |
| | | } |
| | | |
| | | if (item.preachform) { |
| | | if (item.endtime) { |
| | | item.preachformson = item.preachform; |
| | | idArray = item.preachform.split(","); |
| | | } |
| | | |
| | | item.preachform = idArray.map((value) => { |
| | | // æ¥æ¾id对åºç对象 |
| | | const item = this.checkboxlist.find( |
| | | (item) => item.value == value |
| | | ); |
| | | // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull |
| | | return item ? item.label : null; |
| | | }); |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | affiliation() { |
| | | this.topqueryParams.drcode = store.getters.hisUserId; |
| | | this.topqueryParams.nurseId = store.getters.hisUserId; |
| | | this.topqueryParams.managementDoctor = store.getters.name; |
| | | this.getList(1); |
| | | }, |
| | | onthatday() { |
| | | this.topqueryParams.startSendDateTime = this.getCurrentDate(); |
| | | this.topqueryParams.endSendDateTime = this.getCurrentDate(); |
| | | this.getList(1); |
| | | }, |
| | | getCurrentDate() { |
| | | const now = new Date(); |
| | | return now.toISOString().slice(0, 10); // æªåå10个å符ï¼å³ YYYY-MM-DD |
| | | }, |
| | | buidegetTasklist(type) { |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | // æ¥åå¼å¸¸è·³è½¬ |
| | | if (this.errtype) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push( |
| | | this.leavehospitaldistrictcode |
| | | ); |
| | | } |
| | | let obj = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | leavehospitaldistrictcodes: |
| | | this.topqueryParams.leavehospitaldistrictcodes, |
| | | sendstates: [2, 3], |
| | | leaveldeptcodes: this.topqueryParams.leaveldeptcodes, |
| | | }; |
| | | buidegetTasklist(obj).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | | this.cardlist[0].value = |
| | | Number(response.rows[0].wzx) + Number(response.rows[0].ysf); |
| | | this.cardlist[1].value = response.rows[0].wzx; |
| | | this.cardlist[2].value = response.rows[0].ysf; |
| | | this.ycvalue = response.rows[0].yc; |
| | | this.cardlist[3].value = response.rows[0].fssb; |
| | | this.cardlist[4].value = response.rows[0].dsf; |
| | | // this.cardlist[5].value = response.rows[0].yfs2; |
| | | this.yfsvalue = response.rows[0].yfs; |
| | | } |
| | | this.loading = false; |
| | | this.userList.forEach((item) => { |
| | | let idArray = null; |
| | | if (item.endtime) { |
| | | item.endDay = this.daysBetween(item.endtime); |
| | | } |
| | | |
| | | if (item.preachform) { |
| | | if (item.endtime) { |
| | | item.preachformson = item.preachform; |
| | | idArray = item.preachform.split(","); |
| | | } |
| | | |
| | | item.preachform = idArray.map((value) => { |
| | | // æ¥æ¾id对åºç对象 |
| | | const item = this.checkboxlist.find( |
| | | (item) => item.value == value |
| | | ); |
| | | // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull |
| | | return item ? item.label : null; |
| | | }); |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | // æ¥çé¨è¯é访详æ
|
| | | Referencequestion(row) { |
| | | this.previewVisible = true; |
| | | }, |
| | | // æ·»å å¼¹æ¡æç´¢ |
| | | remoteMethod(query) { |
| | | if (query !== "") { |
| | | this.loading = true; |
| | | setTimeout(() => { |
| | | this.loading = false; |
| | | this.options = this.list.filter((item) => { |
| | | return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1; |
| | | }); |
| | | }, 200); |
| | | } else { |
| | | this.options = []; |
| | | } |
| | | }, |
| | | // å½±åéè®¿ç¶æä¿®æ¹ |
| | | handleStatusChange(row) { |
| | | let text = row.status === "0" ? "å¯ç¨" : "åç¨"; |
| | | this.$modal |
| | | .confirm('确认è¦"' + text + '""' + row.userName + '"ç¨æ·åï¼') |
| | | .then(function () { |
| | | return changeUserStatus(row.userId, row.status); |
| | | }) |
| | | .then(() => { |
| | | this.$modal.msgSuccess(text + "æå"); |
| | | }) |
| | | .catch(function () { |
| | | row.status = row.status === "0" ? "1" : "0"; |
| | | }); |
| | | }, |
| | | |
| | | // 表åéç½® |
| | | reset() { |
| | | this.form = { |
| | | userId: undefined, |
| | | deptId: undefined, |
| | | userName: undefined, |
| | | nickName: undefined, |
| | | password: undefined, |
| | | phonenumber: undefined, |
| | | email: undefined, |
| | | sex: undefined, |
| | | status: "0", |
| | | remark: undefined, |
| | | postIds: [], |
| | | roleIds: [], |
| | | }; |
| | | this.resetForm("form"); |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | | handleQuery(refresh) { |
| | | if (this.topqueryParams.searchscope == 3) { |
| | | this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.topqueryParams.leavehospitaldistrictcodes = |
| | | store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | this.topqueryParams.pageNum = 1; |
| | | this.topqueryParams.startOutHospTime = this.dateRange[0]; |
| | | this.topqueryParams.endOutHospTime = this.dateRange[1]; |
| | | this.topqueryParams.startSendDateTime = this.dateRangefs[0]; |
| | | this.topqueryParams.endSendDateTime = this.dateRangefs[1]; |
| | | this.getList(refresh); |
| | | }, |
| | | // æ£è
èå´å¤ç |
| | | handleChange(value) { |
| | | let type = value[0]; |
| | | let code = value.slice(-1)[0]; |
| | | this.topqueryParams.leavehospitaldistrictcodes = []; |
| | | this.topqueryParams.leaveldeptcodes = []; |
| | | if (type == 1) { |
| | | this.topqueryParams.leaveldeptcodes.push(code); |
| | | this.topqueryParams.leavehospitaldistrictcodes = []; |
| | | this.topqueryParams.searchscope = 1; |
| | | } else if (type == 2) { |
| | | this.topqueryParams.leavehospitaldistrictcodes.push(code); |
| | | this.topqueryParams.leaveldeptcodes = []; |
| | | this.topqueryParams.searchscope = 2; |
| | | } else { |
| | | this.topqueryParams.searchscope = 3; |
| | | } |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.dateRangefs = []; |
| | | this.topqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | sendstate: 6, |
| | | sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) |
| | | serviceType: 6, |
| | | searchscope: 3, |
| | | visitCount: 1, |
| | | scopetype: [], |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }; |
| | | this.handleQuery(1); |
| | | }, |
| | | handleSelectionChange(rows) { |
| | | this.selectedRows = rows.map((row) => { |
| | | // åå§åè¯ååæ®µ |
| | | return { |
| | | ...row, |
| | | authenticity: row.authenticity || 0, |
| | | weekFinish: row.weekFinish || 0, |
| | | standard: row.standard || 0, |
| | | timeliness: row.timeliness || 0, |
| | | library: row.library || 0, |
| | | environment: row.environment || 0, |
| | | doctorSatisfaction: row.doctorSatisfaction || 0, |
| | | nurseSatisfaction: row.nurseSatisfaction || 0, |
| | | }; |
| | | }); |
| | | |
| | | if (this.selectedRows.length > 0) { |
| | | this.multiple = false; |
| | | } else { |
| | | this.multiple = true; |
| | | } |
| | | }, |
| | | |
| | | // è®¡ç®æ»å |
| | | calculateTotal(row) { |
| | | return ( |
| | | (row.authenticity || 0) + |
| | | (row.weekFinish || 0) + |
| | | (row.standard || 0) + |
| | | (row.timeliness || 0) + |
| | | (row.library || 0) + |
| | | (row.environment || 0) + |
| | | (row.doctorSatisfaction || 0) + |
| | | (row.nurseSatisfaction || 0) |
| | | ); |
| | | }, |
| | | |
| | | // ä¿åè¯å |
| | | saveScores() { |
| | | this.selectedRows.forEach((item) => { |
| | | item.createBy = null; |
| | | item.patName = item.sendname; |
| | | item.hospitaldistrictname = item.leavehospitaldistrictname; |
| | | }); |
| | | addsatisfaction(this.selectedRows).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message.success("è¯åä¿åæå"); |
| | | this.scoreDialogVisible = false; |
| | | this.selectedRows=[]; |
| | | this.$refs.userform.clearSelection() |
| | | } else { |
| | | this.$modal.msgWarning("è¯åä¿å失败"); |
| | | this.scoreDialogVisible = false; |
| | | this.selectedRows=[]; |
| | | this.$refs.userform.clearSelection() |
| | | } |
| | | }); |
| | | // è¿éå¯ä»¥æ·»å ä¿åé»è¾ï¼å¦è°ç¨APIä¿åè¯å |
| | | }, |
| | | //å é¤é项 |
| | | handleClose(tag) { |
| | | this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); |
| | | }, |
| | | //è§¦åæ°å¢è¾å
¥ |
| | | showInput() { |
| | | this.inputVisible = true; |
| | | this.$nextTick((_) => { |
| | | this.$refs.saveTagInput.$refs.input.focus(); |
| | | }); |
| | | }, |
| | | //è·å失å»ç¦ç¹è§¦å |
| | | handleInputConfirm() { |
| | | let inputValue = this.inputValue; |
| | | if (inputValue) { |
| | | this.dynamicTags.push(inputValue); |
| | | } |
| | | this.inputVisible = false; |
| | | this.inputValue = ""; |
| | | }, |
| | | /** æ°å¢æé®æä½ */ |
| | | handleAdd() { |
| | | this.$router.push({ |
| | | path: "/followvisit/QuestionnaireTask", |
| | | query: { |
| | | type: 2, |
| | | serviceType: 6, |
| | | }, |
| | | }); |
| | | }, |
| | | //æ£è
360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | this.$modal.msgWarning('360åè½ææªå¼é'); |
| | | return; // 黿¢åç»ä»£ç æ§è¡ |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | if (this.postData.XiaoXiTou.ZuHuMC == "丽水å¸ä¸å»é¢") { |
| | | this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728"; |
| | | this.postData.YeWuXX.YongHuXX.YongHuXM = "LSZYY"; |
| | | } |
| | | query360PatInfo(this.postData).then((res) => { |
| | | if (res.data.url) { |
| | | window.open(res.data.url, "_blank"); |
| | | // this.linkUrl = res.data.url; |
| | | } else { |
| | | this.$modal.msgWarning("360æ¥è¯¢æ ç»æ"); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | /** éç½®å¯ç æé®æä½ */ |
| | | handleResetPwd(row) { |
| | | this.$prompt('请è¾å
¥"' + row.userName + '"çæ°å¯ç ', "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | closeOnClickModal: false, |
| | | inputPattern: /^.{5,20}$/, |
| | | inputErrorMessage: "ç¨æ·å¯ç é¿åº¦å¿
é¡»ä»äº 5 å 20 ä¹é´", |
| | | }) |
| | | .then(({ value }) => { |
| | | resetUserPwd(row.userId, value).then((response) => { |
| | | this.$modal.msgSuccess("ä¿®æ¹æåï¼æ°å¯ç æ¯ï¼" + value); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // åæ¶æé® |
| | | cancel() { |
| | | this.Labelchange = false; |
| | | this.reset(); |
| | | }, |
| | | /** æäº¤æé® */ |
| | | submitForm: function () { |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | this.form.isoperation = 2; |
| | | this.form.notrequiredFlag = 1; |
| | | alterpatient(this.form) |
| | | .then((response) => { |
| | | console.log(response); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("æ£è
è¿æ»¤æå"); |
| | | }); |
| | | |
| | | this.reset(); |
| | | this.Labelchange = false; |
| | | } |
| | | }); |
| | | }, |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | const userIds = row.userId || this.ids; |
| | | this.$modal |
| | | .confirm('æ¯å¦ç¡®è®¤å é¤ç¨æ·ç¼å·ä¸º"' + userIds + '"çæ°æ®é¡¹ï¼') |
| | | .then(function () { |
| | | return delUser(userIds); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("å 餿å"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // å
¨é¨åæ¢ |
| | | AllStop() { |
| | | this.$modal |
| | | .confirm("æ¯å¦åæ¢å
¨é¨ä»»å¡ï¼") |
| | | .then(function () { |
| | | return console.log("忢æå"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgWarning("忢æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // å
¨é¨å¼å§ |
| | | AllStarted() { |
| | | this.$modal |
| | | .confirm("æ¯å¦å¼å¯å
¨é¨ä»»å¡ï¼") |
| | | .then(function () { |
| | | return console.log("å¼å¯æå"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("å¼å¯æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // ä»»å¡éç½® |
| | | TaskReset() { |
| | | this.$modal |
| | | .confirm("æ¯å¦éç½®éä¸çä»»å¡é¡¹ï¼") |
| | | .then(function () { |
| | | return console.log("é䏿å"); |
| | | }) |
| | | .then(() => { |
| | | this.getList(1); |
| | | this.$modal.msgSuccess("éç½®æå"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // 设置åéæ¶é´ |
| | | Sendtimesetting() { |
| | | this.modificationVisible = true; |
| | | }, |
| | | // 跳转详æ
页 |
| | | Seedetails(row) { |
| | | let type = ""; |
| | | console.log(row, "rwo"); |
| | | if (row.preachformson) { |
| | | if (row.preachformson.includes("3")) { |
| | | type = 1; |
| | | } |
| | | } |
| | | this.$router.push({ |
| | | path: "/followvisit/record/detailpage/", |
| | | query: { |
| | | taskid: row.taskid, |
| | | patid: row.patid, |
| | | id: row.id, |
| | | Voicetype: type, |
| | | visitCount: this.topqueryParams.visitCount, |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | | onSubmit() {}, |
| | | // æåæå¡ |
| | | handlestop(row) { |
| | | let objson = row; |
| | | this.$modal |
| | | .confirm( |
| | | 'æ¯å¦ç¡®è®¤æåä»»å¡å称为"' + |
| | | row.taskName + |
| | | 'æ£è
å称为"' + |
| | | row.sendname + |
| | | '"çæ°æ®é¡¹ï¼' |
| | | ) |
| | | .then(() => { |
| | | getTaskservelist({ |
| | | patid: row.patid, |
| | | taskid: row.taskid, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | objson.sendstate = 4; |
| | | objson.remark = "æå¡æå"; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("è®°å½æå"); |
| | | this.getList(1); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // æ£è
è¿æ»¤è§¦å |
| | | handleUpdate(row) { |
| | | particularpatient(row.patid).then((response) => { |
| | | this.form = response.data; |
| | | this.form.filterDrname = store.getters.nickName; |
| | | }); |
| | | this.amendtag = true; |
| | | this.Labelchange = true; |
| | | }, |
| | | // ä¾¿æ·æé® |
| | | toleadExport(too) { |
| | | if (too == 1) { |
| | | this.topqueryParams.sendstate = 4; |
| | | this.topqueryParams.excep = null; |
| | | } else if (too == 2) { |
| | | this.topqueryParams.excep = 1; |
| | | } |
| | | this.handleQuery(); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | | handleExport() { |
| | | this.topqueryParams.pageNum = null; |
| | | this.topqueryParams.pageSize = null; |
| | | this.download( |
| | | "smartor/serviceSubtask/patItemExport", |
| | | { |
| | | ...this.topqueryParams, |
| | | }, |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | | }, |
| | | // å¼å¸¸å渲æ |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (row.excep == 1) { |
| | | return "warning-row"; |
| | | } |
| | | return ""; |
| | | }, |
| | | |
| | | getCurrentTime() { |
| | | const now = new Date(); |
| | | const year = now.getFullYear(); |
| | | const month = String(now.getMonth() + 1).padStart(2, "0"); |
| | | const day = String(now.getDate()).padStart(2, "0"); |
| | | const hours = String(now.getHours()).padStart(2, "0"); |
| | | const minutes = String(now.getMinutes()).padStart(2, "0"); |
| | | const seconds = String(now.getSeconds()).padStart(2, "0"); |
| | | |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-button--primary.is-plain { |
| | | color: #ffffff; |
| | | background: #409eff; |
| | | border-color: #4fabe9; |
| | | } |
| | | |
| | | .document { |
| | | // width: 100px; |
| | | height: 50px; |
| | | } |
| | | ::v-deep.el-table .warning-row { |
| | | background: #eec4c4; |
| | | } |
| | | |
| | | .documentf { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | .download { |
| | | text-align: center; |
| | | |
| | | .el-upload__tip { |
| | | font-size: 23px; |
| | | } |
| | | |
| | | .el-upload__text { |
| | | font-size: 23px; |
| | | } |
| | | } |
| | | |
| | | .uploading { |
| | | margin-top: 20px; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #ffffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | } |
| | | |
| | | .el-tag + .el-tag { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .button-new-tag { |
| | | margin-left: 10px; |
| | | height: 32px; |
| | | line-height: 30px; |
| | | padding-top: 0; |
| | | padding-bottom: 0; |
| | | } |
| | | |
| | | .input-new-tag { |
| | | width: 90px; |
| | | margin-left: 10px; |
| | | vertical-align: bottom; |
| | | } |
| | | |
| | | .drexamine { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 30px; |
| | | background: #daeaf5; |
| | | |
| | | img { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | } |
| | | |
| | | .qrcode-dialo { |
| | | // text-align: center; |
| | | // display: flex; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #edf1f7; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .topic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | |
| | | .dev-text { |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | } |
| | | ::v-deep.leftvlue .el-card__body { |
| | | background: #d0e9fd; |
| | | } |
| | | ::v-deep.leftvlue .el-card__body:hover { |
| | | background: #8dc8f8; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | ::v-deep.errleftvlue .el-card__body { |
| | | background: #fdd0d7; |
| | | } |
| | | ::v-deep.errleftvlue .el-card__body:hover { |
| | | background: #f88d96; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | |
| | | ::v-deep.ysfleftvlue .el-card__body { |
| | | background: #d0fdd8; |
| | | } |
| | | ::v-deep.ysfleftvlue .el-card__body:hover { |
| | | background: #8df8a4; |
| | | cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ |
| | | } |
| | | .button-bb { |
| | | font-weight: 500; |
| | | background-color: #2ba05c; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-xq { |
| | | font-weight: 500; |
| | | background-color: #409eff; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-sc { |
| | | font-weight: 500; |
| | | background-color: #b3a21f; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | .button-zx { |
| | | background: #4fabe9; |
| | | padding: 5px; |
| | | border-radius: 1px; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | ::v-deep.el-radio-group { |
| | | span { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | .purple-button { |
| | | background-color: #7e22ce; |
| | | border-color: #7e22ce; |
| | | color: #fff; |
| | | } |
| | | |
| | | .purple-button:hover, |
| | | .purple-button:focus { |
| | | background-color: #9333ea; |
| | | border-color: #9333ea; |
| | | } |
| | | |
| | | .purple-button:active { |
| | | background-color: #6b21a8; |
| | | border-color: #6b21a8; |
| | | } |
| | | |
| | | .purple-button.is-disabled { |
| | | background-color: #d8b4fe; |
| | | border-color: #d8b4fe; |
| | | opacity: 1; /* ä¿æç¦ç¨ç¶æéæåº¦ */ |
| | | } |
| | | // é项å使¾å¤§ |
| | | // ::v-deep.el-checkbox-group { |
| | | // span { |
| | | // font-size: 24px; |
| | | // } |
| | | // } |
| | | </style> |
| | |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in flatArray" |
| | | :key="item.deptCode" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.deptCode" |
| | | > |
| | |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in flatArray" |
| | | :key="item.deptCode" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.deptCode" |
| | | > |
| | |
| | | </el-form-item></el-col |
| | | > |
| | | <el-col :span="12" |
| | | ><el-form-item label="æ¯å¦å¯ç¨"> |
| | | <el-radio-group v-model="topicobj.isenable"> |
| | | ><el-form-item label="æ¯å¦éè"> |
| | | <el-radio-group v-model="topicobj.ishide"> |
| | | <el-radio |
| | | v-for="(item, index) in usable" |
| | | v-for="(item, index) in hides" |
| | | :label="item.value" |
| | | >{{ item.label }}</el-radio |
| | | > |
| | |
| | | v-if="topicobj.scriptType == 1" |
| | | > |
| | | <el-radio-group v-model="topicobj.branchFlag"> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio label="1">æ¯</el-radio> |
| | | <el-radio label="0">å¦</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="éä¸æç¤º" v-if="topicobj.scriptType != 1"> |
| | |
| | | <el-radio-group v-model="item.isabnormal"> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦é䏿¶ééå ä¿¡æ¯"> |
| | | <el-radio-group v-model="item.appendflag"> |
| | | <el-radio label="1">æ¯</el-radio> |
| | | <el-radio label="0">å¦</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-row> |
| | |
| | | > |
| | | <el-button type="primary" @click="laststep()">ä¸ä¸æ¥</el-button> |
| | | <el-button type="info" @click="closeFm('ruleForm')">å
³é</el-button> |
| | | <el-button @click="toExamine('ruleForm')" |
| | | >ä¿åé®é¢æ°æ®</el-button |
| | | > |
| | | <el-button @click="toExamine('ruleForm')">ä¿åé®é¢æ°æ®</el-button> |
| | | </div> |
| | | <!-- é®å·é¢è§ --> |
| | | <div v-if="Editprogress == 3"> |
| | |
| | | style="width: 100px; height: 100px" |
| | | :src="item.picturePath" |
| | | :preview-src-list=" |
| | | item.picturePath ? [item.picturePath] : [] |
| | | " |
| | | item.picturePath ? [item.picturePath] : [] |
| | | " |
| | | > |
| | | </el-image> |
| | | </div> |
| | |
| | | svyTemplateLibScripts: [], |
| | | tempDetpRelevances: [], |
| | | svyLibTemplateTagList: [], |
| | | suitway: [], |
| | | scoreType: "4", |
| | | isenable: "0", |
| | | longTemp: "0", |
| | |
| | | usable: [ |
| | | { value: "0", label: "å¯ç¨" }, |
| | | { value: "1", label: "åç¨" }, |
| | | ], |
| | | hides: [ |
| | | { value: 0, label: "æ£å¸¸" }, |
| | | { value: 1, label: "éè" }, |
| | | ], |
| | | longtype: [ |
| | | { value: "0", label: "æ®éä»»å¡" }, |
| | |
| | | this.confirmillness(); |
| | | this.putbelongDepts(); |
| | | this.$modal.closeLoading(); |
| | | // this.$router.go(-1); |
| | | window.location.reload(); |
| | | this.$router.go(-1); |
| | | // window.location.reload(); |
| | | }); |
| | | } else { |
| | | this.ruleForm.isoperation = 1; |
| | |
| | | // é¢ç®æ ¡éª |
| | | toExamine() { |
| | | // éåé¢ç®éå |
| | | for (let i = 0; i < this.ruleForm.svyTemplateLibScripts.length; i++) { |
| | | const question = this.ruleForm.svyTemplateLibScripts[i]; |
| | | for (let i = 0; i < this.ruleForm.svyTemplateLibScripts.length; i++) { |
| | | const question = this.ruleForm.svyTemplateLibScripts[i]; |
| | | |
| | | // 妿 scriptType 为 4ï¼åè·³è¿å½åé¢ç® |
| | | if (question.scriptType === 4) { |
| | |
| | | |
| | | // 妿ææé¢ç®é½æ ¡éªéè¿ï¼è¿å true |
| | | console.log("ææé¢ç®æ ¡éªéè¿ï¼é项åç§°æ éå¤"); |
| | | this.Departmenttreatment(); |
| | | this.Departmenttreatment(); |
| | | }, |
| | | |
| | | // ç§å®¤/é¢åºå¤ç |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="sso-redirect"> |
| | | <div class="loading-container"> |
| | | <el-alert |
| | | v-if="errorMessage" |
| | | :title="errorMessage" |
| | | type="error" |
| | | :closable="false" |
| | | show-icon |
| | | ></el-alert> |
| | | <div v-else class="loading-content"> |
| | | <i class="el-icon-loading"></i> |
| | | <p>åç¹ç»å½ä¸ï¼è¯·ç¨å...</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { setToken } from "@/utils/auth"; |
| | | |
| | | export default { |
| | | name: "SSORedirect", |
| | | data() { |
| | | return { |
| | | errorMessage: "", |
| | | loading: true, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.handleSSORedirect(); |
| | | }, |
| | | methods: { |
| | | // å¹é
orgid |
| | | mateOrgid(orgid) { |
| | | if (orgid == "30001002") { |
| | | localStorage.setItem("orgname", "æµæ±çç«åå¾·å»é¢ç¿ èé¢åº"); |
| | | localStorage.setItem("ZuHuID", "1400361376454545408"); |
| | | localStorage.setItem("deptCode", "1017"); |
| | | } else if (orgid == "30001003") { |
| | | localStorage.setItem("orgname", "æµæ±çç«åå¾·å»é¢ä¹æ±é¢åº"); |
| | | localStorage.setItem("ZuHuID", "1400360867068907520"); |
| | | localStorage.setItem("deptCode", "01040201"); |
| | | } else if (orgid == "30001004") { |
| | | localStorage.setItem("orgname", "æµæ±çç«åå¾·å»é¢é²æé¢åº"); |
| | | localStorage.setItem("ZuHuID", "1429338802177000002"); |
| | | localStorage.setItem("deptCode", ""); |
| | | } else if (orgid == "30001005") { |
| | | localStorage.setItem("orgname", "æµæ±çç«åå¾·å»é¢å¤©ç®å±±è·¯é¢åº"); |
| | | localStorage.setItem("ZuHuID", "1429338802177000003"); |
| | | localStorage.setItem("deptCode", ""); |
| | | } else if (orgid == "30001006") { |
| | | localStorage.setItem("orgname", "æµæ±çç«åå¾·å»é¢éå±±æ¹é¢åº"); |
| | | localStorage.setItem("ZuHuID", "1429338802177000004"); |
| | | localStorage.setItem("deptCode", ""); |
| | | } else if (orgid == "30001007") { |
| | | localStorage.setItem("orgname", "æµè¯é¢åº"); |
| | | localStorage.setItem("ZuHuID", "1429338802177000005"); |
| | | localStorage.setItem("deptCode", ""); |
| | | } |
| | | }, |
| | | async handleSSORedirect() { |
| | | try { |
| | | console.log(11); |
| | | // ä»URLåæ°ä¸è·åtokenåæºæä¿¡æ¯ |
| | | let { token, orgid, orgname, ZuHuID, deptCode } = this.$route.query; |
| | | // token = |
| | | // "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijc5MWVkODNlLWE2MWYtNDI2MS05ZDZlLTNhOTVjYTU2YjZhMiJ9.q6jrRj8fwtb3FOqqwaxIFDr824hf85DW8heCj4qWYgRE55Pn0vkmcujFsYMrz9qqo047Gl7lv3rnok8pk7SKYQ"; // éªè¯å¿
è¦åæ° |
| | | // orgid = "30001002"; |
| | | if (!token) { |
| | | throw new Error("缺å°è®¤è¯ä»¤ç(token)"); |
| | | } |
| | | console.log(token); |
| | | console.log(orgid); |
| | | console.log(orgname); |
| | | // console.log(redirect,'redirect'); |
| | | |
| | | this.mateOrgid(orgid); |
| | | setToken(token); |
| | | this.$store.commit("SET_TOKEN", token); |
| | | |
| | | // å卿ºæä¿¡æ¯å°localStorage |
| | | if (orgid) { |
| | | localStorage.setItem("orgid", orgid); |
| | | this.$store.dispatch("UpdateOrgId", orgid); |
| | | } |
| | | if (orgname) localStorage.setItem("orgname", orgname); |
| | | if (ZuHuID) localStorage.setItem("ZuHuID", ZuHuID); |
| | | if (deptCode) localStorage.setItem("deptCode", deptCode); |
| | | |
| | | // è·åç¨æ·ä¿¡æ¯ |
| | | await this.$store.dispatch("GetInfo"); |
| | | |
| | | // ç¡®å®éå®åè·¯å¾ |
| | | let redirectPath = "/index"; |
| | | // if (redirect) { |
| | | // console.log(redirect,'888'); |
| | | |
| | | // redirectPath = decodeURIComponent(redirect); |
| | | // } else { |
| | | // æ ¹æ®ç¨æ·è§è²å³å®é»è®¤è·³è½¬é¡µé¢ |
| | | const roles = this.$store.state.user.roles; |
| | | const username = this.$store.state.user.name; |
| | | |
| | | if (roles.includes("admin") || username === "admin") { |
| | | redirectPath = "/index"; |
| | | } else { |
| | | redirectPath = "/followvisit/discharge"; |
| | | } |
| | | // } |
| | | |
| | | // 跳转å°ç®æ é¡µé¢ |
| | | this.$router.replace({ path: redirectPath }); |
| | | } catch (error) { |
| | | console.error("SSOç»å½å¤±è´¥:", error); |
| | | this.errorMessage = `åç¹ç»å½å¤±è´¥: ${error.message || "æªç¥é误"}`; |
| | | this.loading = false; |
| | | |
| | | // 5ç§åè·³è½¬å°æ®éç»å½é¡µ |
| | | setTimeout(() => { |
| | | this.$router.replace("/login"); |
| | | }, 5000); |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .sso-redirect { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | height: 100vh; |
| | | background-color: #f5f7fa; |
| | | } |
| | | |
| | | .loading-container { |
| | | text-align: center; |
| | | padding: 20px; |
| | | background: white; |
| | | border-radius: 4px; |
| | | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .loading-content { |
| | | padding: 20px; |
| | | } |
| | | |
| | | .el-icon-loading { |
| | | font-size: 40px; |
| | | color: #409eff; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | p { |
| | | margin: 0; |
| | | color: #606266; |
| | | } |
| | | </style> |
| | |
| | | class="topic-dev" |
| | | v-for="(item, index) in questionList" |
| | | :key="item.aaa" |
| | | v-if="!item.ishide" |
| | | > |
| | | <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 1"> |
| | | <div class="dev-text"> |
| | |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="å°±è¯æ¥æ"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | <!-- <el-date-picker |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | <!-- <el-date-picker |
| | | v-model="dateRange" |
| | | type="datetimerange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | |
| | | :default-time="['12:00:00']" |
| | | > |
| | | </el-date-picker> --> |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-row> |
| | | <!-- <el-form-item label=" å°±è¯æ¥æ " prop="admitdate"> |
| | | <el-date-picker |
| | |
| | | @click="handleDelete" |
| | | v-hasPermi="['system:user:remove']" |
| | | >å é¤</el-button |
| | | > |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | :disabled="multiple" |
| | | @click="handleBatchAddTask" |
| | | > |
| | | æ¹éæ·»å ä»»å¡</el-button |
| | | > |
| | | </el-col> |
| | | <el-col :span="19"> |
| | |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="gettoken360(scope.row.idcardno,scope.row.drcode,scope.row.drname)" |
| | | @click=" |
| | | gettoken360( |
| | | scope.row.idcardno, |
| | | scope.row.drcode, |
| | | scope.row.drname |
| | | ) |
| | | " |
| | | ><span class="button-textsc">{{ |
| | | scope.row.patname |
| | | }}</span></el-button |
| | |
| | | prop="drname" |
| | | width="120" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="æ¯å¦åå¨ä»»å¡" |
| | | align="center" |
| | | key="serverState" |
| | | prop="serverState" |
| | | width="100" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span |
| | | :style="{ |
| | | color: scope.row.serverState == 1 ? 'green' : 'gray', |
| | | }" |
| | | > |
| | | {{ scope.row.serverState == 1 ? "æ¯" : "æ " }} |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | fixed="right" |
| | |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog |
| | | title="æ¹éæ·»å ä»»å¡" |
| | | :visible.sync="batchTaskVisible" |
| | | width="90%" |
| | | append-to-body |
| | | > |
| | | <el-row :gutter="20"> |
| | | <!-- 左侧ï¼é䏿£è
å表 --> |
| | | <el-col :span="12"> |
| | | <div class="batch-patient-section"> |
| | | <h4>é䏿£è
ï¼{{ selectedPatients.length }}人ï¼</h4> |
| | | <el-table |
| | | :data="selectedPatients" |
| | | border |
| | | style="width: 100%" |
| | | size="small" |
| | | > |
| | | <el-table-column prop="patname" label="å§å" width="100" /> |
| | | <el-table-column prop="sex" label="æ§å«" width="80"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.sex === 1 ? "ç·" : "女" }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å°±è¯æ¶é´" |
| | | align="center" |
| | | key="admitdate" |
| | | prop="admitdate" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.admitdate) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="outhospno" label="ç
æ¡å·" /> |
| | | <el-table-column prop="deptname" label="ç§å®¤" /> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | |
| | | <!-- å³ä¾§ï¼ä»»å¡å表 --> |
| | | <el-col :span="12"> |
| | | <div class="batch-task-section"> |
| | | <h4>ä»»å¡å表ï¼è¯·éæ©1个任å¡ï¼</h4> |
| | | <el-table |
| | | :data="taskList" |
| | | border |
| | | style="width: 100%" |
| | | size="small" |
| | | @current-change="handleTaskSelectionChange" |
| | | highlight-current-row |
| | | > |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | fixed |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="æå¡é¡¹ç®" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="å建人" |
| | | align="center" |
| | | key="createBy" |
| | | prop="createBy" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="å建æ¶é´" |
| | | sortable |
| | | align="center" |
| | | prop="createTime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <template #empty> |
| | | <div class="empty-message"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ£è
ç§å®¤æ å¹é
æå¡</span> |
| | | </div> |
| | | </template> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- åºé¨æé® --> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="batchTaskVisible = false">å æ¶</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :loading="batchLoading" |
| | | @click="submitBatchTask" |
| | | >å建任å¡</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | <!-- ç¨æ·å¯¼å
¥å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | :title="upload.title" |
| | |
| | | </div> |
| | | </el-upload> |
| | | </div> |
| | | |
| | | <!-- 导å
¥æ£æ¥ --> |
| | | <div class="uploading" v-else-if="dractive == 2"> |
| | | <el-table :data="uploadingData" style="width: 100%"> |
| | |
| | | import { getToken } from "@/utils/auth"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | import { query360PatInfo } from "@/api/AiCentre/index"; |
| | | import { query360PatInfo, getTasklist, addSubtask } from "@/api/AiCentre/index"; |
| | | |
| | | import store from "@/store"; |
| | | |
| | |
| | | Labelchange: false, //ä¿®æ¹æ°å¢å¼¹çª |
| | | propss: { multiple: true }, |
| | | optionstag: [], //æ ç¾å表 |
| | | batchTaskVisible: false, // å¼¹çªå¯è§æ§ |
| | | selectedPatients: [], // éä¸çæ£è
å表 |
| | | taskList: [], // ä»»å¡å表 |
| | | selectedTask: null, // éä¸çä»»å¡å表 |
| | | batchLoading: false, // æ¹éæäº¤å è½½ç¶æ |
| | | deptcode: "", |
| | | Patientrange: [ |
| | | { |
| | | name: "å
¨é¨", |
| | |
| | | if (this.dateRange) { |
| | | this.queryParams.beginTime = this.dateRange[0]; |
| | | this.queryParams.endTime = this.dateRange[1]; |
| | | }else{ |
| | | this.queryParams.beginTime = ''; |
| | | this.queryParams.endTime = ''; |
| | | } else { |
| | | this.queryParams.beginTime = ""; |
| | | this.queryParams.endTime = ""; |
| | | } |
| | | listPatouthosp(this.queryParams).then((response) => { |
| | | this.userList = response.rows; |
| | |
| | | this.$modal.msgWarning('360åè½ææªå¼é'); |
| | | return; // 黿¢åç»ä»£ç æ§è¡ |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | if (this.postData.XiaoXiTou.ZuHuMC=='丽水å¸ä¸å»é¢') { |
| | | this.postData.YeWuXX.YongHuXX.YongHuID = '1400398571877961728'; |
| | | this.postData.YeWuXX.YongHuXX.YongHuXM = 'LSZYY'; |
| | | if (this.postData.XiaoXiTou.ZuHuMC == "丽水å¸ä¸å»é¢") { |
| | | this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728"; |
| | | this.postData.YeWuXX.YongHuXX.YongHuXM = "LSZYY"; |
| | | } |
| | | |
| | | query360PatInfo(this.postData).then((res) => { |
| | |
| | | leaveldeptcodes: [], |
| | | leavehospitaldistrictcodes: [], |
| | | }; |
| | | this.handleQuery(); |
| | | this.handleQuery(); |
| | | }, |
| | | // å¤éæ¡é䏿°æ® |
| | | handleSelectionChange(selection) { |
| | |
| | | this.upload.open = false; |
| | | this.dractive = 1; |
| | | }, |
| | | /** æ¹éæ·»å 任塿é®ç¹å» */ |
| | | handleBatchAddTask() { |
| | | // æ ¡éªæ¯å¦é䏿£è
|
| | | if (this.ids.length === 0) { |
| | | this.$modal.msgWarning("请è³å°éä¸1忣è
"); |
| | | return; |
| | | } |
| | | // æ£æ¥éä¸çæ£è
䏿¯å¦æå·²æä»»å¡ç |
| | | const hasTaskPatients = this.userList.filter( |
| | | (item) => this.ids.includes(item.patid) && item.serverState == 1 |
| | | ); |
| | | |
| | | if (hasTaskPatients.length > 0) { |
| | | const patientNames = hasTaskPatients.map((p) => p.patname).join("ã"); |
| | | this.$modal.msgError( |
| | | `éä¸çæ£è
${patientNames} å·²æä»»å¡ï¼æ æ³é夿·»å ` |
| | | ); |
| | | return; |
| | | } |
| | | // è·åé䏿£è
çç§å®¤ä¿¡æ¯ï¼ç¨äºæ ¡éªåä¸ç§å®¤ï¼ |
| | | const patientDepts = new Set(); |
| | | let deptcode = ""; |
| | | this.ids.forEach((patId) => { |
| | | const patient = this.userList.find((item) => item.patid === patId); |
| | | if (patient) { |
| | | patientDepts.add(patient.deptname); |
| | | deptcode = patient.deptcode; |
| | | } |
| | | }); |
| | | |
| | | // æ ¡éªæ¯å¦åä¸ç§å®¤ |
| | | if (patientDepts.size > 1) { |
| | | this.$modal.msgError("éä¸çæ£è
ä¸å±äºåä¸ç§å®¤ï¼æ æ³æ¹éæ·»å ä»»å¡"); |
| | | return; |
| | | } |
| | | |
| | | // è·åé䏿£è
å表 |
| | | this.selectedPatients = this.userList.filter((item) => |
| | | this.ids.includes(item.patid) |
| | | ); |
| | | |
| | | // æ¾ç¤ºå¼¹çª |
| | | this.batchTaskVisible = true; |
| | | |
| | | // è·åä»»å¡å表 |
| | | this.loadTaskList(deptcode); |
| | | }, |
| | | |
| | | /** å 载任å¡å表 */ |
| | | loadTaskList(deptcode) { |
| | | this.batchLoading = true; |
| | | let topqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | serviceType: 3, |
| | | type: 2, |
| | | deptcode: deptcode, |
| | | }; |
| | | getTasklist(topqueryParams).then((response) => { |
| | | this.taskList = response.rows; |
| | | this.batchLoading = false; |
| | | }); |
| | | }, |
| | | |
| | | /** å¤çä»»å¡éæ©åå */ |
| | | handleTaskSelectionChange(currentRow) { |
| | | this.selectedTask = currentRow; |
| | | }, |
| | | |
| | | // éåæ¹éæäº¤æ¹æ³ |
| | | async submitBatchTask() { |
| | | // æ ¡éªæ¯å¦éä¸ä»»å¡ |
| | | if (!this.selectedTask) { |
| | | this.$modal.msgWarning("è¯·éæ©1个任å¡"); |
| | | return; |
| | | } |
| | | |
| | | this.batchLoading = true; |
| | | const successPatients = []; |
| | | const failedPatients = []; |
| | | |
| | | try { |
| | | // éåéä¸çæ£è
ï¼é个è°ç¨æ¥å£ |
| | | for (const patient of this.selectedPatients) { |
| | | const params = { |
| | | taskId: this.selectedTask.taskId, |
| | | taskName: this.selectedTask.taskName, |
| | | serviceType: this.selectedTask.serviceType, |
| | | ...patient, |
| | | age: "", |
| | | }; |
| | | |
| | | try { |
| | | await addSubtask(params); |
| | | successPatients.push(patient.patname); |
| | | } catch (error) { |
| | | failedPatients.push(patient.patname); |
| | | } |
| | | } |
| | | |
| | | // æ¾ç¤ºå¤çç»æ |
| | | let message = `æå为 ${successPatients.length} 忣è
æ·»å ä»»å¡`; |
| | | if (failedPatients.length > 0) { |
| | | message += `ï¼${failedPatients.length} 忣è
æ·»å 失败`; |
| | | } |
| | | this.$modal.msgSuccess(message); |
| | | |
| | | this.batchTaskVisible = false; |
| | | this.getList(); // å·æ°æ£è
å表 |
| | | } catch (error) { |
| | | this.$modal.msgError("æ¹éæ·»å ä»»å¡è¿ç¨ä¸åºé"); |
| | | } finally { |
| | | this.batchLoading = false; |
| | | } |
| | | }, |
| | | |
| | | /** æ¹éæ·»å æ£è
任塿¥å£ */ |
| | | batchAddPatientTask(params) {}, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | .button-textsc { |
| | | color: #28cfe6; |
| | | } |
| | | .batch-patient-section, |
| | | .batch-task-section { |
| | | padding: 15px; |
| | | border: 1px solid #ebeef5; |
| | | border-radius: 4px; |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .el-table--enable-row-hover .el-table__body tr:hover > td { |
| | | background-color: #f5f7fa; |
| | | } |
| | | .el-table__body tr.current-row > td { |
| | | background-color: #e6f7ff; |
| | | } |
| | | |
| | | /* ç¦ç¨ç¶æä¸æé®æ ·å¼ */ |
| | | .el-button.is-disabled { |
| | | cursor: not-allowed; |
| | | } |
| | | .batch-patient-section h4, |
| | | .batch-task-section h4 { |
| | | margin-top: 0; |
| | | margin-bottom: 15px; |
| | | color: #303133; |
| | | font-size: 16px; |
| | | } |
| | | |
| | | /* è¡¨æ ¼æ ·å¼ä¼å */ |
| | | .el-table { |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | /* å¼¹çªåºé¨æé®é´è· */ |
| | | .dialog-footer { |
| | | text-align: right; |
| | | padding: 10px 20px 20px; |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | { label: "微信å°ç¨åº", value: 6 }, |
| | | ]; |
| | | } else if (this.form.serviceType == 6) { |
| | | } else if (this.form.serviceType == 6||this.form.serviceType == 14||this.form.serviceType == 15) { |
| | | this.checkboxlist = [ |
| | | { |
| | | value: "3", |
| | |
| | | this.deptcodesWards[0] || |
| | | this.leavehospitaldistrictcodes[0] || |
| | | this.diagglist[0] || |
| | | this.operationcodes[0] |
| | | this.operationcodes[0] || |
| | | this.form.longTask == 2 |
| | | ) { |
| | | } else { |
| | | this.$modal.msgError("è¯·éæ©ä»»å¡å
³èæ¡ä»¶"); |
| | |
| | | <template> |
| | | <div class="questionnaire" :class="'survey-type-' + surveyType"> |
| | | <!-- å è½½ç¶æ --> |
| | | <div v-if="loading" class="loading-state"> |
| | | <div class="loading-spinner"> |
| | | <i class="el-icon-loading"></i> |
| | | <p>é®å·å è½½ä¸...</p> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- æ æ°æ®ç¶æ --> |
| | | <div v-else-if="isEmptyData" class="empty-state"> |
| | | <div class="empty-content"> |
| | | <i class="el-icon-document" style="font-size: 64px; color: #909399"></i> |
| | | <h3>ææ é®å·æ°æ®</h3> |
| | | <p>å½å没æå¯ç¨çé®å·ï¼è¯·è系管çåæç¨åéè¯</p> |
| | | <el-button |
| | | type="primary" |
| | | @click="loadSurveyData" |
| | | icon="el-icon-refresh" |
| | | > |
| | | éæ°å è½½ |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- éè¯¯ç¶æ --> |
| | | <div v-else-if="hasError" class="error-state"> |
| | | <div class="error-content"> |
| | | <i class="el-icon-warning" style="font-size: 64px; color: #f56c6c"></i> |
| | | <h3>æ°æ®å 载失败</h3> |
| | | <p>{{ errorMessage }}</p> |
| | | <el-button |
| | | type="primary" |
| | | @click="loadSurveyData" |
| | | icon="el-icon-refresh" |
| | | > |
| | | éæ°å°è¯ |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <div class="CONTENT" v-if="!accomplish"> |
| | | <div class="preview-left"> |
| | | <div class="toptitle"> |
| | |
| | | <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5"> |
| | | {{ surveyDescription }} |
| | | </div> |
| | | </div> |
| | | <div v-if="showDeptSelect" class="dept-select-container"> |
| | | <el-form> |
| | | <el-form> |
| | | <el-form-item label="éæ©ç§å®¤"> |
| | | <el-select |
| | | v-model="selectedDept" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ç§å®¤æè¾å
¥å
³é®è¯æç´¢" |
| | | @change="handleDeptChange" |
| | | popper-class="dept-select-dropdown" |
| | | > |
| | | <el-option |
| | | v-for="dept in filteredDeptList" |
| | | :key="dept.code" |
| | | :label="`${dept.name} (${dept.code})`" |
| | | :value="dept.name" |
| | | > |
| | | <span>{{ dept.name }}</span> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-form> |
| | | </div> |
| | | <el-divider></el-divider> |
| | | |
| | |
| | | <el-input |
| | | type="textarea" |
| | | :rows="3" |
| | | placeholder="请è¾å
¥æ¨çæè§æå»ºè®®" |
| | | placeholder="请è¾å
¥" |
| | | v-model="item.scriptResult" |
| | | clearable |
| | | > |
| | |
| | | <div class="CONTENT" v-else> |
| | | <div class="preview-lefts"> |
| | | <div class="completion-message"> |
| | | <div class="thank-you">{{ this.accomplish||'æè°¢æ¨çé
å!' }}</div> |
| | | <div class="thank-you">{{ this.accomplish || "æè°¢æ¨çé
å!" }}</div> |
| | | <div class="feedback-message">{{ completionMessage }}</div> |
| | | </div> |
| | | </div> |
| | |
| | | import { |
| | | getScriptByCondition, |
| | | saveMYDQuestionAnswer, |
| | | WLgetDept, |
| | | } from "@/api/AiCentre/index"; |
| | | |
| | | export default { |
| | |
| | | surveyTitle: "", |
| | | surveyDescription: "", |
| | | questionList: [], |
| | | deptList: [], |
| | | completionMessage: "", |
| | | accomplish: false, |
| | | showDeptSelect: false, |
| | | selectedDept: null, |
| | | deptSearchText: "", // ä¿çç¨äºæ¬å°è¿æ»¤ |
| | | deptList: [], |
| | | filteredDeptList: [], |
| | | |
| | | // å å¯åçåæ° |
| | | encryptedParams: { |
| | |
| | | param2: "", |
| | | param3: "", |
| | | param4: "", |
| | | param5: "", |
| | | param6: "30001002", |
| | | }, |
| | | |
| | | isEmptyData: false, // æ°å¢ï¼æ æ°æ®ç¶æ |
| | | hasError: false, // æ°å¢ï¼éè¯¯ç¶æ |
| | | loading: false, // æ°å¢ï¼å è½½ç¶æ |
| | | errorMessage: "", // æ°å¢ï¼éè¯¯ä¿¡æ¯ |
| | | // æµè¯æ°æ® |
| | | testData: { |
| | | 1: { |
| | |
| | | // ä»è·¯ç±åæ°è·åå å¯åçåæ° |
| | | this.encryptedParams.param1 = |
| | | this.$route.query.param1 || |
| | | "DBohZ1ARKfFmCdKrBKQ6JW3ddPTtDpgSaRZaKtxBMTJ4FngT06Vy-VskiwDYJJRwfvkHrPIZlkafgZybobGtKQ=="; |
| | | "WOAq2QZd43E-qg-96SvuIFsn-sdRVxQNH4M82XhpXp_Ux4PFrPaqSFXcKaeA6oxEgNhPisA86LvU9kTAEz4xvQ=="; |
| | | this.encryptedParams.param2 = |
| | | this.$route.query.param2 || |
| | | "WQXniB7BIlizOwOQ4KZqITNrqWpLU3SD5vXdHLeYaviA-1T5Dtk70IJWAHbtcDUuYz-2ObYuMj4YKHfWhlCLzw=="; |
| | | this.encryptedParams.param3 = this.$route.query.param3 || null; |
| | | this.encryptedParams.param4 = this.$route.query.param4 || "1"; // é»è®¤ä¸ºé¨è¯ |
| | | "XWeBh42RLYlNsMcomgw9UXhUPySkRP5EneWSueSq8F84qwYznU9heXuSx4tUMUtDvRnuJ86moJivy-kWQX12Rg=="; |
| | | this.encryptedParams.param5 = this.$route.query.param3 || "2"; // 1=ä½é¢, 2=é¨è¯, 3=æè¯å»ºè®® |
| | | this.encryptedParams.param6 = this.$route.query.param4 || "30001002"; |
| | | |
| | | this.surveyType = parseInt(this.encryptedParams.param4) || 1; |
| | | this.surveyType = parseInt(this.encryptedParams.param5) || 2; |
| | | |
| | | // å è½½é®å·æ°æ® |
| | | this.loadSurveyData(); |
| | | // è·åç§å®¤å表 |
| | | this.WLgetDept(); |
| | | }, |
| | | WLgetDept() { |
| | | // è°ç¨æ¥å£è·åç§å®¤æ°æ® |
| | | WLgetDept(this.encryptedParams.param6).then((res) => { |
| | | this.deptList = Object.entries(res.data).map(([code, name]) => ({ |
| | | code, |
| | | name, |
| | | })); |
| | | this.filteredDeptList = [...this.deptList]; |
| | | |
| | | // å è½½è°æ¥æ°æ® |
| | | if (this.surveyType === 3) { |
| | | this.showDeptSelect = true; |
| | | } |
| | | }); |
| | | }, |
| | | filterDeptList() { |
| | | if (!this.deptSearchText) { |
| | | this.filteredDeptList = [...this.deptList]; |
| | | return; |
| | | } |
| | | |
| | | const searchText = this.deptSearchText.toLowerCase(); |
| | | this.filteredDeptList = this.deptList.filter( |
| | | (dept) => |
| | | dept.name.toLowerCase().includes(searchText) || |
| | | dept.code.toLowerCase().includes(searchText) |
| | | ); |
| | | }, |
| | | // å è½½è°æ¥æ°æ® |
| | | loadSurveyData() { |
| | | this.loading = true; |
| | | this.isEmptyData = false; |
| | | this.hasError = false; |
| | | this.errorMessage = ""; |
| | | // è°ç¨æ¥å£è·åé®å·æ°æ® |
| | | getScriptByCondition(this.encryptedParams) |
| | | // æ ¹æ®é®å·ç±»å设置ä¸åçåæ° |
| | | let encryptedParams = { |
| | | param1: this.encryptedParams.param1, |
| | | }; |
| | | |
| | | // æ ¹æ®surveyType设置ä¸åçåæ° |
| | | switch (this.surveyType) { |
| | | case 1: // ä½é¢ |
| | | encryptedParams.param2 = this.encryptedParams.param2; |
| | | break; |
| | | case 2: // é¨è¯ |
| | | encryptedParams.param3 = this.encryptedParams.param2; |
| | | break; |
| | | case 3: // æè¯å»ºè®® |
| | | encryptedParams.param4 = this.encryptedParams.param2; |
| | | break; |
| | | default: |
| | | encryptedParams.param3 = this.encryptedParams.param2; |
| | | } |
| | | getScriptByCondition(encryptedParams) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | if (res.data.result) { |
| | | this.accomplish = res.data.result; |
| | | return |
| | | return; |
| | | } |
| | | if ( |
| | | !res.data.svyLibTemplateScriptVOS || |
| | | res.data.svyLibTemplateScriptVOS.length === 0 |
| | | ) { |
| | | this.isEmptyData = true; |
| | | this.$message.warning("ææ é®å·æ°æ®"); |
| | | return; |
| | | } |
| | | // å¤çæ¥å£è¿åçæ°æ® |
| | | this.questionList = res.data.svyLibTemplateScriptVOS.map((item) => { |
| | |
| | | |
| | | // æ ¹æ®surveyType设置æ é¢åæè¿° |
| | | switch (this.surveyType) { |
| | | case 1: // é¨è¯ |
| | | case 2: // é¨è¯ |
| | | this.surveyTitle = "é¨è¯æ»¡æåº¦è°æ¥"; |
| | | this.surveyDescription = |
| | | "亲ç±çæ£è
ï¼æè°¢æ¨éæ©æä»¬çå»çæå¡ã为äºä¸ææåæå¡è´¨éï¼è¯·æ¨è±å åéæ¶é´å¡«åæ¤é®å·ã"; |
| | | this.completionMessage = |
| | | "æè°¢æ¨å®è´µçæè§ï¼æä»¬å°ä¸ææ¹è¿é¨è¯æå¡è´¨éï¼ä¸ºæ¨æä¾æ´å¥½çå»çæå¡ä½éªã"; |
| | | break; |
| | | case 2: // ä½é¢ |
| | | case 1: // ä½é¢ |
| | | this.surveyTitle = "ä½é¢æ»¡æåº¦è°æ¥"; |
| | | this.surveyDescription = |
| | | "亲ç±çæ£è
åå®¶å±ï¼æè°¢æ¨éæ©å¨æé¢ä½é¢æ²»çãä¸ºäºæåä½é¢æå¡è´¨éï¼è¯·æ¨å¡«åæ¤é®å·ã"; |
| | |
| | | } |
| | | } else { |
| | | // æ¥å£æ æ°æ®æå¤±è´¥ï¼ä½¿ç¨æµè¯æ°æ® |
| | | this.useTestData(this.surveyType); |
| | | // this.useTestData(this.surveyType); |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | console.error("æ°æ®è·å失败:", error); |
| | | this.hasError = true; |
| | | this.errorMessage = |
| | | error.message || "é®å·æ°æ®å 载失败ï¼è¯·æ£æ¥ç½ç»è¿æ¥åéè¯"; |
| | | this.$message.error("æ°æ®å 载失败"); |
| | | // æ¥å£è°ç¨å¤±è´¥ï¼ä½¿ç¨æµè¯æ°æ® |
| | | this.useTestData(this.surveyType); |
| | | // this.useTestData(this.surveyType); |
| | | }) |
| | | .finally(() => { |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | |
| | | handleDeptChange(value) { |
| | | this.selectedDept = value; |
| | | // å¯ä»¥å¨è¿éæ·»å å
¶ä»å¤çé»è¾ |
| | | }, |
| | | // ä½¿ç¨æµè¯æ°æ® |
| | | useTestData(surveyType) { |
| | | const type = [1, 2, 3].includes(surveyType) ? surveyType : 1; |
| | |
| | | const res = await saveMYDQuestionAnswer(submitData); |
| | | |
| | | if (res.code === 200) { |
| | | this.accomplish = false; |
| | | this.accomplish = "é®å·å·²æäº¤"; |
| | | this.$message.success("æäº¤æåï¼æè°¢æ¨çåé¦ã"); |
| | | } else { |
| | | this.$message.error(res.msg || "æäº¤å¤±è´¥ï¼è¯·ç¨ååè¯"); |
| | |
| | | }, |
| | | |
| | | // åå¤æäº¤æ°æ® |
| | | // åå¤æäº¤æ°æ® |
| | | prepareSubmitData() { |
| | | // å建ç§å®¤éæ©é®é¢å¯¹è±¡ |
| | | const deptQuestion = { |
| | | scriptId: "dept_selection", // èªå®ä¹ID |
| | | scriptType: 4, // 4表示é®çç±»å |
| | | scriptContent: "éæ©çç§å®¤", |
| | | scriptResult: this.selectedDept || "", // åå¨éæ©çç§å®¤åç§° |
| | | required: false, // éå¿
å¡« |
| | | sort: 999, |
| | | nextScriptno: "1", |
| | | }; |
| | | |
| | | return { |
| | | taskId: this.encryptedParams.param1, |
| | | serialnum: this.encryptedParams.param2 || this.encryptedParams.param3, |
| | | mzzy: this.surveyType, // 1=é¨è¯, 2=ä½é¢, 3=æè¯å»ºè®® |
| | | svyLibTemplateScriptVOS: this.questionList.map((item) => { |
| | | return { |
| | | scriptId: item.scriptId, |
| | | scriptType: item.scriptType, |
| | | scriptResult: |
| | | item.scriptType === 2 |
| | | ? (item.scriptResult || []).join("&") |
| | | : item.scriptResult || "", |
| | | nextScriptno: item.nextScriptno, |
| | | score: item.score, |
| | | prompt: item.prompt, |
| | | ...item, |
| | | }; |
| | | }), |
| | | mzzy: this.surveyType, |
| | | svyLibTemplateScriptVOS: [ |
| | | deptQuestion, // å°ç§å®¤éæ©ä½ä¸ºç¬¬ä¸ä¸ªé®é¢ |
| | | ...this.questionList.map((item) => { |
| | | return { |
| | | scriptId: item.scriptId, |
| | | scriptType: item.scriptType, |
| | | scriptResult: |
| | | item.scriptType === 2 |
| | | ? (item.scriptResult || []).join("&") |
| | | : item.scriptResult || "", |
| | | nextScriptno: item.nextScriptno, |
| | | score: item.score, |
| | | prompt: item.prompt, |
| | | ...item, |
| | | }; |
| | | }), |
| | | ], |
| | | excep: this.checkAbnormalOptions() ? 1 : 0, |
| | | }; |
| | | }, |
| | |
| | | --theme-gradient: linear-gradient(135deg, #e53e3e, #f6ad55); |
| | | } |
| | | } |
| | | .dept-select-container { |
| | | margin: 20px 0; |
| | | padding: 20px; |
| | | background-color: #f8fafc; |
| | | border-radius: 8px; |
| | | border: 1px solid #e2e8f0; |
| | | } |
| | | |
| | | /* è°æ´ä¸æéé¡¹æ ·å¼ */ |
| | | .el-select-dropdown__item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | /* ä¸ææ¡æ ·å¼è°æ´ */ |
| | | ::v-deep .dept-select-dropdown { |
| | | max-height: 400px; /* é嶿大é«åº¦ */ |
| | | overflow-y: auto; /* æ·»å æ»å¨æ¡ */ |
| | | |
| | | .el-select-dropdown__item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 0 20px; |
| | | height: auto; |
| | | line-height: 36px; |
| | | |
| | | span { |
| | | display: inline-block; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | /* åç§°é¨å */ |
| | | span:first-child { |
| | | width: 60%; |
| | | text-align: left; |
| | | } |
| | | |
| | | /* ç¼ç é¨å */ |
| | | span:last-child { |
| | | width: 40%; |
| | | text-align: right; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* ç§»å¨ç«¯éé
*/ |
| | | @media (max-width: 768px) { |
| | | ::v-deep .dept-select-dropdown { |
| | | max-width: 100vw; /* éå¶æå¤§å®½åº¦ä¸ºè§å£å®½åº¦ */ |
| | | width: auto !important; |
| | | left: 10px !important; |
| | | right: 10px !important; |
| | | |
| | | .el-select-dropdown__item { |
| | | span:first-child { |
| | | width: 50%; |
| | | } |
| | | span:last-child { |
| | | width: 50%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .CONTENT { |
| | | max-width: 900px; |
| | | margin: 0 auto; |
| | |
| | | } |
| | | } |
| | | } |
| | | .loading-state { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | min-height: 60vh; |
| | | padding: 40px; |
| | | |
| | | .loading-spinner { |
| | | text-align: center; |
| | | |
| | | .el-icon-loading { |
| | | font-size: 48px; |
| | | color: var(--primary-color); |
| | | margin-bottom: 16px; |
| | | animation: rotating 2s linear infinite; |
| | | } |
| | | |
| | | p { |
| | | color: #666; |
| | | font-size: 16px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .empty-state, |
| | | .error-state { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | min-height: 60vh; |
| | | padding: 40px; |
| | | |
| | | .empty-content, |
| | | .error-content { |
| | | text-align: center; |
| | | max-width: 400px; |
| | | |
| | | h3 { |
| | | color: #666; |
| | | font-size: 20px; |
| | | margin: 16px 0 12px; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | p { |
| | | color: #999; |
| | | font-size: 14px; |
| | | margin-bottom: 24px; |
| | | line-height: 1.6; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .error-state { |
| | | .error-content { |
| | | h3 { |
| | | color: #f56c6c; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @keyframes rotating { |
| | | from { |
| | | transform: rotate(0deg); |
| | | } |
| | | to { |
| | | transform: rotate(360deg); |
| | | } |
| | | } |
| | | |
| | | /* ååºå¼è°æ´ */ |
| | | @media (max-width: 768px) { |
| | | .loading-state, |
| | | .empty-state, |
| | | .error-state { |
| | | padding: 20px; |
| | | min-height: 50vh; |
| | | |
| | | .el-icon-loading, |
| | | .el-icon-document, |
| | | .el-icon-warning { |
| | | font-size: 40px !important; |
| | | } |
| | | |
| | | h3 { |
| | | font-size: 18px !important; |
| | | } |
| | | |
| | | p { |
| | | font-size: 13px !important; |
| | | } |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-checkbox-group { |
| | | display: flex; |
| | |
| | | [process.env.VUE_APP_BASE_API]: { |
| | | // target: `https://www.health-y.cn/lssf`, |
| | | // target: `http://10.202.20.185:8095`, |
| | | // target: `http://9.208.2.190:8095`, |
| | | // target: `http://192.168.100.195:8095`, |
| | | target:`http://localhost:8095`, |
| | | // target:`http://35z1t16164.qicp.vip`, |
| | | // target: `http://192.168.100.193:8095`, |
| | | // target: `http://192.168.101.166:8093`, |
| | | // target: `http://192.168.191.181:8095`, |