| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- èè¿é¡µé¢è®°å½ --> |
| | | <div class="Followupdetailspage" id="app-container"> |
| | | <div class="Followuserinfo"> |
| | | <div> |
| | | <div class="userinfo-text"> |
| | | <!-- <span>æ£è
æå¡è¯¦æ
</span> --> |
| | | <div class="headline"> |
| | | <div>æ£è
æå¡è¯¦æ
</div> |
| | | <div style="margin-left: 20px"> |
| | | <el-button |
| | | v-if="!Whetherall" |
| | | type="primary" |
| | | @click="getTaskservelist()" |
| | | >æ¥çæ£è
å
¨é¨æå¡</el-button |
| | | > |
| | | <el-button v-else type="success" @click="getTaskservelist(id)" |
| | | >åªå±ç¤ºæ¬æ¬¡æå¡ä¿¡æ¯</el-button |
| | | > |
| | | </div> |
| | | <!-- <div style="margin-left: 20px; color: #59a0f0"> |
| | | <el-link |
| | | href="https://9.208.2.207:6060/search-homepage" |
| | | target="_blank" |
| | | :underline="true" |
| | | > |
| | | åå¾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> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="logsheetlist" |
| | | :row-class-name="tableRowClassName" |
| | | :max-height="350" |
| | | 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" |
| | | label="å§å" |
| | | width="100" |
| | | > |
| | | <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 |
| | | prop="taskName" |
| | | align="center" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | label="ä»»å¡åç§°" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sendstate" |
| | | align="center" |
| | | width="200" |
| | | label="ä»»å¡ç¶æ" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.sendstate == 1"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >表åå·²é¢å</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 2"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >å¾
é访</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 3"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >表åå·²åé</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 4"> |
| | | <el-tag type="info" :disable-transitions="false">䏿§è¡</el-tag> |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 5"> |
| | | <el-tag type="danger" :disable-transitions="false" |
| | | >åé失败</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 6"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >已宿</el-tag |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="finishtime" |
| | | align="center" |
| | | label="éè®¿å®ææ¶é´" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </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="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | <el-table-column |
| | | label="主治å»ç" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="ç»æç¶æ" |
| | | align="center" |
| | | key="excep" |
| | | prop="excep" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_yujing" |
| | | :value="scope.row.excep" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <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 |
| | | prop="templatename" |
| | | align="center" |
| | | label="æå¡æ¨¡æ¿" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remark" |
| | | align="center" |
| | | label="æå¡è®°å½" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="bankcardno" |
| | | align="center" |
| | | label="å¼å«ç¶æ" |
| | | width="210" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | fixed="right" |
| | | align="center" |
| | | width="200" |
| | | 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 |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="action-container"> |
| | | <!-- é访å
容 --> |
| | | <div class="call-action"> |
| | | <div class="call-container"> |
| | | <!-- <div class="call-header"> |
| | | <h2>ä¸é®å¼å«åè½</h2> |
| | | </div> --> |
| | | |
| | | <div class="headline"> |
| | | <div>é访å
容</div> |
| | | </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="getTopicClass(item)" |
| | | :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"> |
| | | <el-radio |
| | | v-for="( |
| | | items, indexs |
| | | ) in item.svyTaskTemplateTargetoptions" |
| | | :class="getOptionClass(items)" |
| | | :key="indexs" |
| | | :label="items.optioncontent" |
| | | @click.native.prevent=" |
| | | handleRadioToggle( |
| | | item, |
| | | index, |
| | | item.svyTaskTemplateTargetoptions, |
| | | 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.svyTaskTemplateTargetoptions" |
| | | :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> |
| | | <span v-if="item.valueType == 3">(åªè½è¾å
¥æ°å)</span> |
| | | </div> |
| | | <div class="dev-xx" v-if="item.valueType == 3"> |
| | | <el-input |
| | | type="text" |
| | | v-numeric-only |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.scriptResult" |
| | | > |
| | | </el-input> |
| | | </div> |
| | | <div class="dev-xx" v-else> |
| | | <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.ivrTaskScriptTargetoptionList, |
| | | item |
| | | ) |
| | | " |
| | | > |
| | | <el-radio |
| | | v-for="(items, index) in item.scriptResult" |
| | | :key="index" |
| | | :label="items" |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | >{{ 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.scriptContent |
| | | }}</span> |
| | | <span v-if="item.valueType == 3">(åªè½è¾å
¥æ°å)</span> |
| | | </div> |
| | | <div class="dev-xx" v-if="item.valueType == 3"> |
| | | <el-input |
| | | type="text" |
| | | v-numeric-only |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.scriptResult" |
| | | > |
| | | </el-input> |
| | | </div> |
| | | <div class="dev-xx" v-else> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥çæ¡" |
| | | v-model="item.scriptResult" |
| | | 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 class="tag-selector-container"> |
| | | <el-select |
| | | v-model="selectedTag" |
| | | placeholder="è¯·éæ©å¼å¸¸ç¶æ" |
| | | clearable |
| | | style="width: 150px; margin-right: 10px" |
| | | > |
| | | <el-option |
| | | v-for="item in tagOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <span style="display: flex; align-items: center"> |
| | | <span |
| | | class="color-indicator" |
| | | :style="{ backgroundColor: item.color }" |
| | | ></span> |
| | | <span>{{ item.label }}</span> |
| | | </span> |
| | | </el-option> |
| | | </el-select> |
| | | |
| | | <!-- å½åéæ©çé¢è²æç¤ºå¨ --> |
| | | <div |
| | | v-if="selectedTag" |
| | | class="color-indicator selected-indicator" |
| | | :style="{ backgroundColor: getSelectedTagColor() }" |
| | | ></div> |
| | | |
| | | <!-- æ 记说ææç¤º --> |
| | | <el-tooltip |
| | | v-if="selectedTag" |
| | | effect="light" |
| | | :content="getSelectedDescription()" |
| | | placement="top" |
| | | > |
| | | <i class="el-icon-info tag-info-icon"></i> |
| | | </el-tooltip> |
| | | </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="é访å
容" v-if="orgname == '丽水å¸ä¸å»é¢'"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é访记å½" v-else> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="é访æ
åµ" v-if="orgname == '丽水å¸ä¸å»é¢'"> |
| | | <el-radio-group v-model="form.taskSituation"> |
| | | <el-radio |
| | | v-for="city in cities" |
| | | :label="city.value" |
| | | :value="city.value" |
| | | :key="city.value" |
| | | >{{ city.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </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 |
| | | > |
| | | <el-button type="primary" round @click="sendAgainmsg" |
| | | >çä¿¡åé</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 label="æ£è
å§å" prop="name"> |
| | | <el-input |
| | | v-model="userform.name" |
| | | placeholder="请è¾å
¥å§å" |
| | | maxlength="30" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="æ§å«" prop="telcode"> |
| | | <el-select v-model="userform.sex" placeholder="è¯·éæ©"> |
| | | <el-option label="ç·" :value="1"> </el-option> |
| | | <el-option label="女" :value="2"> </el-option> |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å¹´é¾" prop="name"> |
| | | <el-input |
| | | v-model="userform.age" |
| | | placeholder="请è¾å
¥å§å" |
| | | maxlength="20" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="èç³»æ¹å¼" prop="telcode"> |
| | | <el-input |
| | | v-model="userform.telcode" |
| | | placeholder="请è¾å
¥èç³»æ¹å¼" |
| | | maxlength="20" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="亲å±èç³»æ¹å¼" prop="name"> |
| | | <el-input |
| | | v-model="userform.relativetelcode" |
| | | placeholder="请è¾å
¥å§å" |
| | | maxlength="20" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯æåç§°" prop="name"> |
| | | <el-input |
| | | v-model="form.leavediagname" |
| | | placeholder="请è¾å
¥è¯æ" |
| | | maxlength="50" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åºçå°" prop="birthplace"> |
| | | <el-input |
| | | v-model="userform.birthplace" |
| | | placeholder="å½ãçãå°å¸ãåºå¿ãè¡éç详ç»ä¿¡æ¯" |
| | | maxlength="50" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24" |
| | | ><el-form-item label="å±
ä½å°" prop="placeOfResidence"> |
| | | <el-input |
| | | v-model="userform.placeOfResidence" |
| | | placeholder="å½ãçãå°å¸ãåºå¿ãè¡éç详ç»ä¿¡æ¯" |
| | | maxlength="50" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- çä¿¡åéå¯¹è¯æ¡ --> |
| | | <el-dialog title="çä¿¡åé" :visible.sync="smsDialogVisible"> |
| | | <!-- 注æè¿é使ç¨äº smsDialogVisible 以åºåå·²æç dialogFormVisible --> |
| | | <el-form ref="smsForm" :model="form" label-width="80px"> |
| | | <el-form-item label="æ£è
åç§°"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.sendname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¹´é¾"> |
| | | <el-input style="width: 400px" disabled v-model="form.age"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="çµè¯"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="userform.telcode" |
| | | ></el-input> |
| | | <!-- 注æè¿éå¯è½ä½¿ç¨ userform.telcode --> |
| | | </el-form-item> |
| | | <el-form-item label="ç§å®¤"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.deptname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç
åº"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.leavehospitaldistrictname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="çä¿¡å
容"> |
| | | <el-input type="textarea" v-model="smsContent"></el-input> |
| | | <!-- 建议使ç¨ç¬ç«ç smsContent åé --> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="smsDialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="sendSms">确认åé</el-button> |
| | | <!-- æ³¨ææ¹æ³åæ¹ä¸º sendSms --> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="æ£è
忬¡é访" |
| | | v-dialogDrags |
| | | :visible.sync="dialogFormVisible" |
| | | > |
| | | <el-form ref="zcform" :rules="zcrules" :model="form" label-width="80px"> |
| | | <el-form-item label="ä»»å¡åç§°"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.taskName" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ£è
åç§°"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.sendname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¹´é¾"> |
| | | <el-input style="width: 400px" disabled v-model="form.age"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç§å®¤"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.deptname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç
åº"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.leavehospitaldistrictname" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åºé¢æ¶é´"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.endtime" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <div class="headline">䏿¬¡é访</div> |
| | | <el-divider></el-divider> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é访æ¹å¼"> |
| | | <el-select |
| | | v-model="form.visitType2" |
| | | filterable |
| | | allow-create |
| | | default-first-option |
| | | disabled |
| | | placeholder="è¯·éæ©é访æ¹å¼" |
| | | class="custom-disabled" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é访æ¶é´"> |
| | | <el-date-picker |
| | | type="date" |
| | | disabled |
| | | placeholder="éæ©æ¥æ" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | v-model="form.date2" |
| | | class="custom-disabled" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-form-item label="é访记å½"> |
| | | <el-input |
| | | class="custom-disabled" |
| | | type="textarea" |
| | | disabled |
| | | v-model="form.remark2" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <div class="headline">䏿¬¡é访</div> |
| | | <el-divider></el-divider> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é访æ¹å¼" prop="visitType"> |
| | | <el-select |
| | | v-model="form.visitType" |
| | | filterable |
| | | allow-create |
| | | default-first-option |
| | | @change="visitChange" |
| | | placeholder="è¯·éæ©é访æ¹å¼(ä¾åºé¢æ¶é´è®¡ç®)" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é访æ¶é´" prop="date1"> |
| | | <el-date-picker |
| | | type="date" |
| | | placeholder="éæ©æ¥æ" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | v-model="form.date1" |
| | | class="custom-disabled" |
| | | value-format="yyyy-MM-dd" |
| | | @change="checkFollowupDate" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="é访æ¹å¼" prop="resource"> |
| | | <el-radio-group v-model="form.resource"> |
| | | <el-radio label="1">æ¬ç
åºé访</el-radio> |
| | | <el-radio label="2">é访ä¸å¿é访</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="é访记å½"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="warning" @click="dialogFormVisible = false" |
| | | >å æ¶</el-button |
| | | > |
| | | <el-button type="primary" @click="setupsubtask">确认å建æå¡</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <div class="main-content" v-if="orgname == 'æ¯å®ç²æèªæ²»å¿äººæ°å»é¢'"> |
| | | <!-- <el-button @click="CaldialogVisible = true">æå¼å¼¹æ¡</el-button> --> |
| | | |
| | | <!-- å¼¹æ¡è°ç¨ --> |
| | | <el-dialog |
| | | title="å¼å«åè½æ¡" |
| | | :visible.sync="CaldialogVisible" |
| | | width="60%" |
| | | > |
| | | <CallCenterLs ref="CallCenterLs" :initial-phone="currentPhoneNumber" /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getsearchrResults, |
| | | getPersonVoices, |
| | | addserviceSubtask, |
| | | getTaskservelist, |
| | | getTaskFollowup, |
| | | Editsingletaskson, |
| | | serviceSubtaskDetailedit, |
| | | serviceSubtaskDetailadd, |
| | | updatePersonVoices, |
| | | addPersonVoices, |
| | | query360PatInfo, |
| | | sendMsg, |
| | | } from "@/api/AiCentre/index"; |
| | | import { |
| | | messagelistpatient, |
| | | alterpatient, |
| | | listcontactinformation, |
| | | } from "@/api/patient/homepage"; |
| | | import CallButton from "@/components/CallButton"; |
| | | import CallCenterLs from "@/components/CallCenterLs"; |
| | | export default { |
| | | components: { |
| | | CallButton, |
| | | CallCenterLs, |
| | | }, |
| | | directives: { |
| | | numericOnly: { |
| | | bind(el, binding, vnode) { |
| | | // å°è¯è·åå®é
çinputå
ç´ |
| | | const input = el.tagName === "INPUT" ? el : el.querySelector("input"); |
| | | if (!input) { |
| | | console.warn("v-numeric-only: æªæ¾å°inputå
ç´ "); |
| | | return; |
| | | } |
| | | |
| | | const handleInput = function (event) { |
| | | const oldValue = input.value; |
| | | const newValue = oldValue.replace(/[^\d]/g, ""); |
| | | if (newValue !== oldValue) { |
| | | input.value = newValue; |
| | | // 触åinputäºä»¶ï¼éç¥v-modelæ´æ° |
| | | input.dispatchEvent(new Event("input", { bubbles: true })); // 注æbubbles |
| | | } |
| | | }; |
| | | |
| | | const handlePaste = function (event) { |
| | | event.preventDefault(); |
| | | const clipboardData = event.clipboardData || window.clipboardData; |
| | | const pastedData = clipboardData.getData("text"); |
| | | const numericValue = pastedData.replace(/[^\d]/g, ""); |
| | | |
| | | // 模æå¨å
æ ä½ç½®æå
¥çº¯æ°åææ¬ |
| | | const start = input.selectionStart; |
| | | const end = input.selectionEnd; |
| | | input.value = |
| | | input.value.substring(0, start) + |
| | | numericValue + |
| | | input.value.substring(end); |
| | | // è°æ´å
æ ä½ç½® |
| | | const newCursorPos = start + numericValue.length; |
| | | input.setSelectionRange(newCursorPos, newCursorPos); |
| | | |
| | | // 触åinputäºä»¶ |
| | | input.dispatchEvent(new Event("input", { bubbles: true })); |
| | | }; |
| | | |
| | | input.addEventListener("input", handleInput); |
| | | input.addEventListener("paste", handlePaste); |
| | | |
| | | // åå¨å¼ç¨ä»¥ä¾¿è§£ç» |
| | | el._numericOnly = { |
| | | inputHandle: handleInput, |
| | | pasteHandle: handlePaste, |
| | | inputEl: input, |
| | | }; |
| | | }, |
| | | unbind(el) { |
| | | if (el._numericOnly) { |
| | | const { inputHandle, pasteHandle, inputEl } = el._numericOnly; |
| | | inputEl.removeEventListener("input", inputHandle); |
| | | inputEl.removeEventListener("paste", pasteHandle); |
| | | delete el._numericOnly; |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | | data() { |
| | | const validatePhone = (rule, value, callback) => { |
| | | if (!value) { |
| | | return callback(new Error("请è¾å
¥èç³»çµè¯")); |
| | | } |
| | | setTimeout(() => { |
| | | if (!/^1[3-9]\d{9}$/.test(value)) { |
| | | callback(new Error("请è¾å
¥æ£ç¡®ç11使æºå·ç ")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, 300); |
| | | }; |
| | | return { |
| | | userid: "", |
| | | currentPhoneNumber: "", |
| | | callType: "", // ç¨äºåºåæ¯åªä¸ªçµè¯ |
| | | // å·²ææ°æ®... |
| | | callStatus: "idle", // idle, calling, connected, ended, failed |
| | | isEndingCall: false, |
| | | CaldialogVisible: false, |
| | | currentCall: null, // å½åéè¯å¯¹è±¡ |
| | | // è·¯ç±çå¬ç¸å
³ |
| | | routeWatcher: null, |
| | | lastRoutePath: this.$route.path, |
| | | input: "ä»å¤©èº«ä½è¿ä¸é", |
| | | radio: "2", |
| | | taskname: "", |
| | | activeName: "wj", |
| | | voice: "", |
| | | templateid: "", |
| | | again: "", |
| | | orgname: "", |
| | | zcform: {}, |
| | | form: {}, |
| | | cities: [ |
| | | { |
| | | label: "æ£å¸¸è¯é³", |
| | | value: "1", |
| | | }, |
| | | { |
| | | label: "æ£è
ææ¥ææè®¿", |
| | | value: "2", |
| | | }, |
| | | { |
| | | label: "é¢è®¿æè
æ¥è¯", |
| | | value: "3", |
| | | }, |
| | | { |
| | | label: "微信é访", |
| | | value: "4", |
| | | }, |
| | | { |
| | | label: "é访çµè¯ä¸æ£ç¡®", |
| | | value: "5", |
| | | }, |
| | | { |
| | | label: "å
¶ä»æ
åµä¸å®é访", |
| | | value: "6", |
| | | }, |
| | | ], |
| | | tableDatatop: [], //é¢ç®è¡¨ |
| | | voiceDatatop: [], //é¢ç®è¡¨ |
| | | dynamicTags: [], |
| | | isMergeMode: false, |
| | | mergeDialogVisible: false, |
| | | selectedServices: [], // éä¸çæå¡å表 |
| | | selectedTag: "", |
| | | tagOptions: [ |
| | | { |
| | | value: "0", |
| | | label: "æ£å¸¸", |
| | | type: "normal", |
| | | color: "#7ff5e1", |
| | | description: "æ£è
æ
嵿£å¸¸ï¼æ éç¹å«å
³æ³¨", |
| | | }, |
| | | { |
| | | value: "1", |
| | | label: "å¼å¸¸", |
| | | type: "abnormal", |
| | | color: "#f75c5c", |
| | | description: "æ£è
åå¨å¼å¸¸æ
åµï¼éè¦éç¹å
³æ³¨", |
| | | }, |
| | | { |
| | | value: "2", |
| | | label: "è¦å", |
| | | type: "warning", |
| | | color: "#fbfb4a", |
| | | description: "æ£è
æ
åµéè¦è¦å注æï¼å¯è½åå¨é£é©", |
| | | }, |
| | | ], |
| | | zcrules: { |
| | | resource: [ |
| | | { required: true, message: "è¯·éæ©é访æ¹å¼", trigger: "change" }, |
| | | ], |
| | | date1: [ |
| | | { required: true, message: "è¯·éæ©é访æ¶é´", trigger: "blur" }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (!value) { |
| | | return callback(new Error("è¯·éæ©é访æ¶é´")); |
| | | } |
| | | const selectedDate = new Date(value); |
| | | const now = new Date(); |
| | | if (selectedDate < now) { |
| | | return callback(new Error("é访æ¶é´ä¸è½æ©äºå½åæ¥æ")); |
| | | } |
| | | callback(); |
| | | }, |
| | | trigger: "change", |
| | | }, |
| | | ], |
| | | }, |
| | | userrules: { |
| | | telcode: [{ validator: validatePhone, trigger: "blur" }], |
| | | relativetelcode: [{ validator: validatePhone, trigger: "blur" }], |
| | | }, |
| | | 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: localStorage.getItem("YongHuID"), |
| | | YongHuXM: localStorage.getItem("YongHuXM"), |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | idp: "lyra", |
| | | }, |
| | | }, |
| | | }, |
| | | pickerOptions: { |
| | | disabledDate(time) { |
| | | // ç¦ç¨ä»å¤©åä¹åçæ¥æ |
| | | return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; |
| | | }, |
| | | // shortcuts: [ |
| | | // { |
| | | // text: "ä¸å¤©å", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 7); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "15天å", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 15); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "ä¸ä¸ªæå", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 30); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "ä¸ä¸ªæå", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 90); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "å
个æå", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 180); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // { |
| | | // text: "ä¸å¹´å", |
| | | // onClick(picker) { |
| | | // const date = new Date(); |
| | | // date.setTime(date.getTime() + 3600 * 1000 * 24 * 365); |
| | | // picker.$emit("pick", date); |
| | | // }, |
| | | // }, |
| | | // ], |
| | | }, |
| | | options: [ |
| | | { |
| | | value: "ä¸å¤©å", |
| | | label: "ä¸å¤©å", |
| | | }, |
| | | { |
| | | value: "15天å", |
| | | label: "15天å", |
| | | }, |
| | | { |
| | | value: "ä¸ä¸ªæå", |
| | | label: "ä¸ä¸ªæå", |
| | | }, |
| | | { |
| | | value: "ä¸ä¸ªæå", |
| | | label: "ä¸ä¸ªæå", |
| | | }, |
| | | { |
| | | value: "å
个æå", |
| | | label: "å
个æå", |
| | | }, |
| | | { |
| | | value: "ä¸å¹´å", |
| | | label: "ä¸å¹´å", |
| | | }, |
| | | ], |
| | | userform: {}, |
| | | smsDialogVisible: false, // æ§å¶çä¿¡å¯¹è¯æ¡æ¾ç¤º |
| | | smsContent: "", // åå¨çä¿¡å
容 |
| | | Whetherall: true, //æ¯å¦å
¨é¨è®°å½å±ç¤º |
| | | dialogFormVisible: false, |
| | | Voicetype: 0, //æ¯å¦ä¸ºè¯é³æå¡ |
| | | visitCount: null, |
| | | logsheetlist: [], |
| | | topicobj: {}, |
| | | sendname: null, |
| | | serviceType: null, |
| | | id: null, |
| | | taskid: null, |
| | | patid: null, |
| | | }; |
| | | }, |
| | | |
| | | computed: { |
| | | callStatusText() { |
| | | const statusMap = { |
| | | idle: "åå¤å¼å«", |
| | | calling: `æ£å¨å¼å« ${this.currentPhoneNumber}...`, |
| | | connected: `å·²æ¥é ${this.currentPhoneNumber}`, |
| | | ended: "éè¯å·²ç»æ", |
| | | failed: "å¼å«å¤±è´¥", |
| | | }; |
| | | return statusMap[this.callStatus]; |
| | | }, |
| | | callStatusType() { |
| | | const typeMap = { |
| | | idle: "info", |
| | | calling: "warning", |
| | | connected: "success", |
| | | ended: "info", |
| | | failed: "error", |
| | | }; |
| | | return typeMap[this.callStatus]; |
| | | }, |
| | | }, |
| | | created() { |
| | | this.taskid = this.$route.query.taskid; |
| | | this.id = this.$route.query.id; |
| | | this.sendname = this.$route.query.sendname; |
| | | this.patid = this.$route.query.patid; |
| | | this.again = this.$route.query.again; |
| | | this.Voicetype = this.$route.query.Voicetype; |
| | | this.visitCount = this.$route.query.visitCount; |
| | | this.serviceType = this.$route.query.serviceType; |
| | | this.orgname = localStorage.getItem("orgname"); |
| | | |
| | | this.getTaskservelist(); |
| | | }, |
| | | |
| | | methods: { |
| | | // è·å䏻颿 ·å¼ç±» |
| | | getTopicClass(item) { |
| | | console.log(item.isabnormal,'111'); |
| | | |
| | | // æ ¹æ®ç¶æå¼è¿å对åºçæ ·å¼ç±» |
| | | if (item.isabnormal == 1) { |
| | | return "scriptTopic-isabnormal"; // å¼å¸¸ - çº¢è² |
| | | } else if (item.isabnormal == 2) { |
| | | return "scriptTopic-warning"; // è¦å - é»è² |
| | | } else { |
| | | return "scriptTopic-dev"; // æ£å¸¸ - é»è®¤æ ·å¼ |
| | | } |
| | | }, |
| | | |
| | | // è·åéé¡¹æ ·å¼ç±» |
| | | getOptionClass(items) { |
| | | if (items.isabnormal == 1) { |
| | | return "red-star"; // å¼å¸¸ - çº¢è²æå· |
| | | } else if (items.isabnormal == 2) { |
| | | return "yellow-star"; // è¦å - é»è²æå· |
| | | } |
| | | return ""; // æ£å¸¸ - æ ç¹æ®æ ·å¼ |
| | | }, |
| | | // è·åé®å·æ°æ® |
| | | getsearchrResults(id) { |
| | | getsearchrResults({ |
| | | taskid: this.taskid, |
| | | patid: this.patid, |
| | | subId: id ? id : this.id, |
| | | isFinish: false, |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | // é坹忬¡é访æå¡è¿è¡å é¤ç»æèµå¼ |
| | | if (this.again && res.data.upScriptResult) { |
| | | res.data.upScriptResult.forEach((itemA) => { |
| | | const itemB = res.data.scriptResult.find( |
| | | (item) => item.scriptContent === itemA.scriptContent |
| | | ); |
| | | if (itemB) { |
| | | itemB.scriptResult = itemA.scriptResult; |
| | | } |
| | | }); |
| | | } |
| | | this.tableDatatop = res.data.scriptResult; |
| | | |
| | | this.tableDatatop.forEach((item) => { |
| | | if (item.scriptType == 2) item.scriptResult = []; |
| | | if (item.scriptResultId && item.scriptType != 2) { |
| | | item.isoption = 3; |
| | | item.scriptResult = item.scriptResult; |
| | | } else if (item.scriptResultId && item.scriptType == 2) { |
| | | item.scriptResult = item.scriptResult.split("&"); |
| | | item.isoption = 3; |
| | | } |
| | | }); |
| | | this.taskname = res.data.taskName; |
| | | this.overdata(); |
| | | } |
| | | }); |
| | | }, |
| | | //æ£è
360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | // this.$modal.msgWarning("360åè½ææªå¼é"); |
| | | |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | |
| | | 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æ¥è¯¢æ ç»æ"); |
| | | } |
| | | }); |
| | | }, |
| | | // è·ååºç¡ä¿¡æ¯ |
| | | getuserinfo() { |
| | | const queryParams = { |
| | | pid: Number(this.patid), |
| | | allhosp: "0", //1ä½é¢2é¨è¯3使£4åºé¢ |
| | | }; |
| | | // æ£è
åºç¡ä¿¡æ¯ |
| | | messagelistpatient(queryParams).then((response) => { |
| | | if (response.rows[0]) { |
| | | this.userform = response.rows[0]; |
| | | // this.dynamicTags = response.rows[0].tagList.map(this.processElement); |
| | | } |
| | | }); |
| | | listcontactinformation({ patid: this.patid }).then((response) => { |
| | | this.tableData = response.rows; |
| | | if (this.tableData.length) { |
| | | this.userform.relativetelcode = this.tableData[0].contactway; |
| | | this.userform.relation = this.tableData[0].relation; |
| | | } |
| | | }); |
| | | }, |
| | | // 忬¡é访æ¶é´éå |
| | | visitChange(value) { |
| | | if (!this.form.endtime) { |
| | | this.$message.warning("请å
确认åºé¢æ¶é´"); |
| | | this.form.visitType = ""; |
| | | this.$refs.zcform.clearValidate(["visitType"]); |
| | | return; |
| | | } |
| | | |
| | | const dischargeDate = new Date(this.form.endtime); |
| | | const now = new Date(); |
| | | let followupDate = new Date(dischargeDate); |
| | | |
| | | // æ ¹æ®éæ©çé访æ¹å¼è®¡ç®éè®¿æ¥æ |
| | | if (value.includes("ä¸å¤©å")) { |
| | | followupDate.setDate(dischargeDate.getDate() + 7); |
| | | } else if (value.includes("15天å")) { |
| | | followupDate.setDate(dischargeDate.getDate() + 15); |
| | | } else if (value.includes("ä¸ä¸ªæå")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 1); |
| | | } else if (value.includes("ä¸ä¸ªæå")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 3); |
| | | } else if (value.includes("å
个æå")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 6); |
| | | } else if (value.includes("ä¸å¹´å")) { |
| | | followupDate.setFullYear(dischargeDate.getFullYear() + 1); |
| | | } |
| | | |
| | | if (followupDate < now) { |
| | | this.$message.warning( |
| | | `计ç®åºçé访æ¶é´ ${this.formatTime(followupDate)} å·²è¿æ` |
| | | ); |
| | | this.form.visitType = ""; |
| | | this.$refs.zcform.clearValidate(["visitType", "date1"]); |
| | | return; |
| | | } |
| | | |
| | | this.form.date1 = this.formatTime(followupDate); |
| | | |
| | | this.$refs.zcform.clearValidate(["date1"]); |
| | | }, |
| | | // æ£æ¥éè®¿æ¥ææ¯å¦ææ |
| | | checkFollowupDate(date) { |
| | | console.log(date); |
| | | |
| | | if (!date) { |
| | | this.form.date1 = ""; |
| | | this.$refs.zcform.clearValidate(["date1"]); |
| | | return; |
| | | } |
| | | |
| | | const selectedDate = new Date(date); |
| | | const now = new Date(); |
| | | |
| | | if (selectedDate < now) { |
| | | this.$message.warning("é访æ¶é´ä¸è½æ©äºå½åæ¥æ"); |
| | | this.form.date1 = ""; |
| | | this.$refs.zcform.validateField("date1"); // 触åéªè¯ |
| | | } |
| | | }, |
| | | // è·åè¯é³æ°æ® |
| | | getPersonVoices(id) { |
| | | let obj = { |
| | | taskid: this.taskid, |
| | | patid: this.patid, |
| | | subId: id ? id : this.id, |
| | | }; |
| | | |
| | | getPersonVoices(obj).then((res) => { |
| | | if (res.code == 200) { |
| | | this.voiceDatatop = res.data.serviceSubtaskDetails; |
| | | this.voice = res.data.voice; |
| | | this.activeName = "yy"; |
| | | this.taskname = res.data.taskName; |
| | | // é®å·å±ç¤ºæ°æ®å¤ç |
| | | this.tableDatatop = res.data.filteredDetails; |
| | | this.tableDatatop.forEach((item) => { |
| | | if (item.targetvalue) { |
| | | item.scriptResult = item.targetvalue.split("&"); |
| | | } else { |
| | | item.scriptResult = []; |
| | | } |
| | | }); |
| | | |
| | | if (!this.tableDatatop.length) { |
| | | this.puttaskid(this.templateid); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | // è·åé®å·å®æ´æ°æ®æ¯å¯¹ |
| | | puttaskid(id) { |
| | | getTaskFollowup(id).then((res) => { |
| | | if (res.code == 200) { |
| | | this.tableDatatop = res.data.ivrTaskTemplateScriptVOList; |
| | | this.tableDatatop.forEach((item) => { |
| | | item.id = null; |
| | | // ç±»å夿èµå¼ |
| | | if (item.ivrTaskScriptTargetoptionList) { |
| | | item.targetvalue = 1; |
| | | item.questiontext = item.scriptContent; |
| | | item.targetvalue = item.ivrTaskScriptTargetoptionList |
| | | .map((obj) => obj.targetvalue) |
| | | .join("&"); |
| | | } |
| | | if (item.targetvalue) { |
| | | item.scriptResult = item.targetvalue.split("&"); |
| | | } else { |
| | | item.scriptResult = []; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 廿¤äººåå卿°æ® |
| | | getdetail() { |
| | | let excep = ""; |
| | | const promises = []; |
| | | this.tableDatatop.forEach((item) => { |
| | | if (item.valueType == 3 && item.scriptResult) { |
| | | // éªè¯æ¯å¦ä¸ºæææ°å |
| | | if (!/^\d+$/.test(item.scriptResult)) { |
| | | this.$message.error(`é®é¢ "${item.scriptContent}" å¿
é¡»è¾å
¥æ°å`); |
| | | return; |
| | | } |
| | | } |
| | | var objs = item.svyTaskTemplateTargetoptions.find( |
| | | (items) => items.optioncontent == item.scriptResult |
| | | ); |
| | | |
| | | if (objs) { |
| | | if (excep != 1 && objs.isabnormal) { |
| | | excep = objs.isabnormal; |
| | | this.selectedTag = objs.isabnormal; |
| | | } |
| | | } |
| | | console.log(excep, "excep"); |
| | | |
| | | let obj = { |
| | | asrtext: null, |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | taskid: this.taskid, |
| | | scriptid: item.id, |
| | | excep: excep, |
| | | questiontext: item.scriptContent, |
| | | answerps: item.answerps || null, // æ·»å éå ä¿¡æ¯ |
| | | }; |
| | | if (item.scriptType == 2 && item.scriptResult[0]) { |
| | | obj.asrtext = item.scriptResult.join("&"); |
| | | } else if (item.scriptType != 2 && item.scriptResult) { |
| | | obj.asrtext = item.scriptResult; |
| | | } |
| | | |
| | | if (item.isoption == 3) { |
| | | promises.push(serviceSubtaskDetailedit(obj)); |
| | | } else { |
| | | promises.push(serviceSubtaskDetailadd(obj)); |
| | | } |
| | | }); |
| | | |
| | | // ä½¿ç¨ Promise.all çå¾
ææå¼æ¥æä½å®æ |
| | | Promise.all(promises) |
| | | .then((results) => { |
| | | // ææå¼æ¥æä½æå宿åçé»è¾ |
| | | results.forEach((res) => { |
| | | if (res.code !== 200) { |
| | | this.$modal.error("ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | }); |
| | | this.Editsingletasksonyic(6); |
| | | |
| | | this.$modal |
| | | .confirm( |
| | | 'ä»»å¡ä¿åæåæ¯å¦é对æ£è
ï¼"' + |
| | | this.userform.name + |
| | | '"忬¡é访ï¼', |
| | | "确认", |
| | | { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | showCancelButton: true, |
| | | dangerouslyUseHTMLString: true, |
| | | confirmButtonClass: "custom-confirm-button", // èªå®ä¹ç¡®è®¤æé®çç±»å |
| | | cancelButtonClass: "custom-cancel-button", // èªå®ä¹åæ¶æé®çç±»å |
| | | } |
| | | ) |
| | | .then(() => { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/record", |
| | | }); |
| | | } |
| | | } else if (this.form.serviceType == 2) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/again", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | .catch((error) => { |
| | | // 妿æä»»ä½ä¸ä¸ªå¼æ¥æä½å¤±è´¥ï¼ä¼è¿å
¥è¿é |
| | | console.error("åçé误ï¼", error); |
| | | }); |
| | | }, |
| | | // çµè¯============================ |
| | | // éªè¯çµè¯å·ç æ ¼å¼å¹¶è¿åéè¯¯ä¿¡æ¯ |
| | | validatePhoneNumber(phone) { |
| | | if (!phone) { |
| | | return { isValid: false, message: "请è¾å
¥çµè¯å·ç " }; |
| | | } |
| | | |
| | | // ææºå·æ£å |
| | | const mobileRegex = /^1[3-9]\d{9}$/; |
| | | |
| | | // 带åºå·çåºå®çµè¯ï¼å®æ´æ ¼å¼ï¼ |
| | | const landlineFullRegex = /^0\d{2,3}-?\d{7,8}$/; |
| | | |
| | | // ä¸å¸¦åºå·çåºå®çµè¯ï¼ä»
æ¬å°å·ç ï¼ |
| | | const landlineLocalRegex = /^\d{7,8}$/; |
| | | |
| | | if (mobileRegex.test(phone)) { |
| | | return { isValid: true, type: "mobile" }; |
| | | } else if (landlineFullRegex.test(phone)) { |
| | | return { isValid: true, type: "landline" }; |
| | | } else if (landlineLocalRegex.test(phone)) { |
| | | return { |
| | | isValid: false, |
| | | message: "æ¬å°å·ç 请添å åºå·ï¼å¦028-1234567ï¼", |
| | | }; |
| | | } else { |
| | | return { |
| | | isValid: false, |
| | | message: "请è¾å
¥æ£ç¡®ççµè¯å·ç ï¼ææºå·æå¸¦åºå·çåºå®çµè¯ï¼", |
| | | }; |
| | | } |
| | | }, |
| | | // 使ç¨ç¤ºä¾ |
| | | isValidPhone(phone) { |
| | | return this.validatePhoneNumber(phone).isValid; |
| | | }, |
| | | handleCall(phone, type) { |
| | | if (!this.isValidPhone(phone)) { |
| | | this.$message.error("请è¾å
¥æ£ç¡®çææºå·ç "); |
| | | return; |
| | | } |
| | | this.currentPhoneNumber = phone; |
| | | // å¼å«å¤æ |
| | | if (this.orgname == "æ¯å®ç²æèªæ²»å¿äººæ°å»é¢") { |
| | | this.CaldialogVisible = true; |
| | | return; |
| | | } |
| | | |
| | | this.callType = type; |
| | | this.callStatus = "calling"; |
| | | |
| | | this.$nextTick(() => { |
| | | this.$refs.callButton.startCall(); |
| | | |
| | | // çå¬éè¯ç¶æåå |
| | | this.$refs.callButton.$on("call-status-change", (status) => { |
| | | this.handleCallStatusChange(status); |
| | | }); |
| | | }); |
| | | }, |
| | | // å¤çéè¯ç¶æåå |
| | | handleCallStatusChange(status) { |
| | | console.log(status, "status"); |
| | | |
| | | this.callStatus = status.type; |
| | | |
| | | if (status.type === "connected") { |
| | | this.currentCall = { |
| | | phone: this.currentPhoneNumber, |
| | | type: this.callType, |
| | | startTime: new Date(), |
| | | }; |
| | | } else if (status.type === "ended" || status.type === "failed") { |
| | | this.currentCall = null; |
| | | } |
| | | |
| | | // å¯ä»¥æ ¹æ®ç¶ææ§è¡å
¶ä»æä½ |
| | | if (status.type === "failed") { |
| | | this.$message.error(`å¼å«å¤±è´¥: ${status.text}`); |
| | | } |
| | | }, |
| | | // ç»æå½åéè¯ |
| | | endCurrentCall() { |
| | | if (!this.currentCall) return; |
| | | |
| | | this.isEndingCall = true; |
| | | this.$refs.callButton.endCall(); |
| | | |
| | | // 3ç§åéç½®ç¶æ |
| | | setTimeout(() => { |
| | | this.isEndingCall = false; |
| | | }, 3000); |
| | | }, |
| | | yuyingetdetail() { |
| | | const dataToSubmit = JSON.parse(JSON.stringify(this.tableDatatop)); |
| | | console.log(dataToSubmit, "dataToSubmit"); |
| | | return; |
| | | dataToSubmit.forEach((item, index) => { |
| | | // 对æ·è´çæ°æ®è¿è¡æä½ï¼ä¸å½±ååå§ç scriptResult æ°ç» |
| | | item.scriptResult = item.scriptResult.join("&"); |
| | | item.templatequestionnum = index + 1; |
| | | item.subId = this.id; |
| | | item.taskid = this.taskid; |
| | | item.asrtext = item.matchedtext; |
| | | if (!item.id) { |
| | | item.isoperation = 1; |
| | | } |
| | | item.patid = this.patid; |
| | | item.templateid = item.templateID; |
| | | }); |
| | | |
| | | let obj = { |
| | | serviceSubtaskDetailList: dataToSubmit, // æäº¤å¤çåç坿¬ |
| | | param1: this.taskid, |
| | | param2: this.patid, |
| | | subId: this.id, |
| | | }; |
| | | |
| | | addPersonVoices(obj).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("æå¡ä¿åæå"); |
| | | this.$modal |
| | | .confirm( |
| | | 'ä»»å¡ä¿åæåæ¯å¦é对æ£è
ï¼"' + |
| | | this.userform.name + |
| | | '"忬¡é访ï¼', |
| | | "确认", |
| | | { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | showCancelButton: true, |
| | | dangerouslyUseHTMLString: true, |
| | | confirmButtonClass: "custom-confirm-button", // èªå®ä¹ç¡®è®¤æé®çç±»å |
| | | cancelButtonClass: "custom-cancel-button", // èªå®ä¹åæ¶æé®çç±»å |
| | | } |
| | | ) |
| | | .then(() => { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/record", |
| | | }); |
| | | } |
| | | } else if (form.serviceType == 2) { |
| | | if (this.visitCount != 1) { |
| | | this.$router.push({ |
| | | path: "/followvisit/again", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 忬¡éè®¿æ°æ®æ´æ¿ |
| | | formtidy() { |
| | | this.form.visitType2 = this.form.visitType; |
| | | this.form.date2 = this.form.longSendTime; |
| | | // this.form.date1 = this.setCurrentDate(); |
| | | this.form.remark2 = this.form.remark; |
| | | }, |
| | | setCurrentDate() { |
| | | // è·åå½åæ¥æå¹¶æ ¼å¼å为 yyyy-MM-dd |
| | | const today = new Date(); |
| | | const year = today.getFullYear(); |
| | | const month = String(today.getMonth() + 1).padStart(2, "0"); |
| | | const day = String(today.getDate()).padStart(2, "0"); |
| | | return `${year}-${month}-${day}`; |
| | | }, |
| | | // è·åæ£è
è®°å½ |
| | | getTaskservelist(id) { |
| | | if (id) { |
| | | this.Whetherall = false; |
| | | } else { |
| | | this.Whetherall = true; |
| | | } |
| | | |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: id, |
| | | pageSize: 100, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.form = res.rows[0].serviceSubtaskList.find( |
| | | (item) => item.id == this.id |
| | | ); |
| | | console.log(this.form, "serviceType"); |
| | | |
| | | this.logsheetlist = res.rows[0].serviceSubtaskList; |
| | | this.templateid = this.form.templateid; |
| | | this.selectedTag = this.form.excep; |
| | | const targetDate = new Date(this.form.longSendTime); // ç®æ æ¥æ |
| | | const now = new Date(); // å½åæ¶é´ |
| | | if (now < targetDate && this.form.sendstate == 2) { |
| | | this.$confirm("å½åæå¡æªå°åéæ¶é´è¯·è°¨æ
ä¿®æ¹", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => {}) |
| | | .catch(() => {}); |
| | | } |
| | | this.getuserinfo(); |
| | | } |
| | | if (this.Voicetype) { |
| | | this.getPersonVoices(); |
| | | } else { |
| | | this.getsearchrResults(); |
| | | } |
| | | }); |
| | | }, |
| | | // è°èµ·çä¿¡åéå¯¹è¯æ¡ |
| | | sendAgainmsg() { |
| | | this.smsDialogVisible = true; |
| | | // å¯ä»¥å¨è¿éåå§å smsContentï¼ä¾å¦ this.smsContent = ''; |
| | | }, |
| | | |
| | | // åéçä¿¡çæ¹æ³ |
| | | sendSms() { |
| | | // è¿éè°ç¨ä½ ççä¿¡åé API |
| | | // å设 API 为 sendMsgï¼åæ°å¯è½éè¦æ ¹æ®å®é
æ
åµè°æ´ |
| | | sendMsg({ |
| | | phone: this.userform.telcode, // ç¡®ä¿çµè¯å·ç åæ®µæ£ç¡® |
| | | content: this.smsContent, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("åéæå"); |
| | | this.smsDialogVisible = false; // å
³éå¯¹è¯æ¡ |
| | | this.smsContent = ""; // æ¸
空å
容 |
| | | } else { |
| | | this.$modal.msgError("åé失败"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error("åéç信失败:", error); |
| | | this.$modal.msgError("åé失败"); |
| | | }); |
| | | }, |
| | | Editsingletaskson(son) { |
| | | let objson = {}; |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | objson = res.rows[0].serviceSubtaskList[0]; |
| | | objson.suggest = son; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("æå¡è®°å½æå"); |
| | | this.getTaskservelist(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | Editsingletasksonyic(sendstate) { |
| | | let objson = {}; |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | objson = res.rows[0].serviceSubtaskList.find( |
| | | (item) => item.id == this.id |
| | | ); |
| | | objson.remark = this.form.remark; |
| | | objson.taskSituation = this.form.taskSituation; |
| | | objson.excep = this.selectedTag; |
| | | if (sendstate) objson.sendstate = sendstate; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("æå¡ä¿®æ¹æå"); |
| | | alterpatient(this.userform).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("åºç¡ä¿¡æ¯ä¿åæå"); |
| | | } else { |
| | | this.$modal.msgError("åºç¡ä¿¡æ¯ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | }); |
| | | this.getTaskservelist(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // å¼å¸¸å渲æ |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (row.id == this.id) { |
| | | return "warning-row"; |
| | | } |
| | | return ""; |
| | | }, |
| | | getSelectedTagType() { |
| | | if (!this.selectedTag) return ""; |
| | | const tag = this.tagOptions.find( |
| | | (item) => item.value === this.selectedTag |
| | | ); |
| | | return tag ? tag.type : ""; |
| | | }, |
| | | |
| | | getSelectedTagColor() { |
| | | if (!this.selectedTag) return ""; |
| | | const tag = this.tagOptions.find( |
| | | (item) => item.value === this.selectedTag |
| | | ); |
| | | return tag ? tag.color : ""; |
| | | }, |
| | | |
| | | getSelectedDescription() { |
| | | if (!this.selectedTag) return ""; |
| | | const tag = this.tagOptions.find( |
| | | (item) => item.value === this.selectedTag |
| | | ); |
| | | return tag ? tag.description : ""; |
| | | }, |
| | | |
| | | // è°èµ·å次åé |
| | | sendAgain() { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | // scrollTo(0, 0) |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }, |
| | | // æ¥ç详æ
|
| | | Seedetails(row) { |
| | | this.$modal |
| | | .confirm('æ¯å¦æ¥çä»»å¡ä¸º"' + row.taskName + '"çæå¡è¯¦æ
æ°æ®ï¼') |
| | | .then(() => { |
| | | let type = ""; |
| | | console.log(row, "rwo"); |
| | | if (row.type == 1) { |
| | | type = 1; |
| | | } |
| | | this.taskid = row.taskid; |
| | | this.id = row.id; |
| | | this.patid = row.patid; |
| | | this.serviceType = row.serviceType; |
| | | this.getTaskservelist(); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | aahandleOptionChange(a, b, c) { |
| | | const result = c.find((item) => item.optioncontent == a); |
| | | if (result.nextQuestion == 0) { |
| | | this.tableDatatop = this.tableDatatop.reduce((acc, item, i) => { |
| | | acc.push(i > b ? { ...item, astrict: 1 } : item); |
| | | return acc; |
| | | }, []); |
| | | } else { |
| | | this.tableDatatop = this.tableDatatop.reduce((acc, item, i) => { |
| | | acc.push(i > b ? { ...item, astrict: 0 } : item); |
| | | return acc; |
| | | }, []); |
| | | } |
| | | if (this.Voicetype) { |
| | | var obj = this.tableDatatop[b].ivrTaskScriptTargetoptionList.find( |
| | | (item) => item.optioncontent == a |
| | | ); |
| | | } else { |
| | | var obj = this.tableDatatop[b].svyTaskTemplateTargetoptions.find( |
| | | (item) => item.optioncontent == a |
| | | ); |
| | | } |
| | | if (obj.isabnormal) { |
| | | this.tableDatatop[b].isabnormal = true; |
| | | } else { |
| | | this.tableDatatop[b].isabnormal = false; |
| | | } |
| | | this.$forceUpdate(); |
| | | }, |
| | | handleRadioToggles(questionItem, optionValue) { |
| | | if (!questionItem.matchedtext) { |
| | | questionItem.matchedtext == ""; |
| | | } |
| | | // 妿ç¹å»çæ¯å½åå·²éä¸çé项ï¼ååæ¶éä¸ |
| | | if (questionItem.matchedtext == optionValue) { |
| | | this.$set(questionItem, "matchedtext", ""); |
| | | // åæ¶éç½®ä¸é项ç¸å
³çç¶æ |
| | | // questionItem.isabnormal = false; |
| | | questionItem.showAppendInput = false; |
| | | // 注æï¼åæ¶é䏿¶ï¼æä»¬é常ä¸å¸æè§¦åé¢ç®è·³è½¬é»è¾ï¼æä»¥ç´æ¥è¿å |
| | | // 妿éè¦ï¼å¯ä»¥å¨è¿éæ·»å åæ¶éä¸åçç¹å®é»è¾ï¼ä¾å¦éç½®é¢ç®åºå |
| | | } else { |
| | | // 妿ç¹å»çæ¯æªéä¸çé项ï¼åéè¿æ´æ¹ç»å®å¼æ¥è§¦ååå§ç handleOptionChange æ¹æ³ |
| | | // è¿éåªéè¦æ¹å v-model ç»å®çå¼ï¼changeäºä»¶ä¼èªå¨è§¦å |
| | | this.$set(questionItem, "matchedtext", optionValue); // åç»ç跳转ç夿é»è¾ä¼å¨ handleOptionChange 䏿£å¸¸æ§è¡ |
| | | } |
| | | }, |
| | | // æ°å¢ç忢éä¸/åæ¶é䏿¹æ³ |
| | | handleRadioToggle(questionItem, index, options, optionValue) { |
| | | // 妿ç¹å»çæ¯å½åå·²éä¸çé项ï¼ååæ¶éä¸ |
| | | if (questionItem.scriptResult === optionValue) { |
| | | questionItem.scriptResult = ""; // æ¸
空éä¸å¼ |
| | | // åæ¶éç½®ä¸é项ç¸å
³çç¶æ |
| | | // questionItem.isabnormal = false; |
| | | questionItem.showAppendInput = false; |
| | | // 注æï¼åæ¶é䏿¶ï¼æä»¬é常ä¸å¸æè§¦åé¢ç®è·³è½¬é»è¾ï¼æä»¥ç´æ¥è¿å |
| | | // 妿éè¦ï¼å¯ä»¥å¨è¿éæ·»å åæ¶éä¸åçç¹å®é»è¾ï¼ä¾å¦éç½®é¢ç®åºå |
| | | } else { |
| | | // 妿ç¹å»çæ¯æªéä¸çé项ï¼åéè¿æ´æ¹ç»å®å¼æ¥è§¦ååå§ç handleOptionChange æ¹æ³ |
| | | // è¿éåªéè¦æ¹å v-model ç»å®çå¼ï¼changeäºä»¶ä¼èªå¨è§¦å |
| | | questionItem.scriptResult = optionValue; |
| | | this.handleOptionChange(optionValue, index, options, questionItem); |
| | | // åç»ç跳转ç夿é»è¾ä¼å¨ handleOptionChange 䏿£å¸¸æ§è¡ |
| | | } |
| | | }, |
| | | |
| | | // å¨methodsé¨åï¼ä¿®æ¹handleOptionChangeæ¹æ³: |
| | | handleOptionChange(selectedOption, questionIndex, options, a) { |
| | | console.log(selectedOption, questionIndex, options, a, "888"); |
| | | |
| | | 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, |
| | | })); |
| | | }2 |
| | | |
| | | this.$forceUpdate(); |
| | | }, |
| | | overdata() { |
| | | this.tableDatatop.forEach((item, index) => { |
| | | var obj = item.svyTaskTemplateTargetoptions.find( |
| | | (items) => items.optioncontent == item.scriptResult |
| | | ); |
| | | if (obj) { |
| | | if (obj.isabnormal) { |
| | | this.tableDatatop[index].isabnormal = obj.isabnormal; |
| | | } |
| | | this.$forceUpdate(); |
| | | } |
| | | }); |
| | | }, |
| | | // åå»ºåæ¬¡é访æå¡ |
| | | setupsubtask() { |
| | | this.$refs["zcform"].validate((valid) => { |
| | | if (valid) { |
| | | if (this.form.date1 && new Date(this.form.date1) < new Date()) { |
| | | this.$message.error("é访æ¶é´ä¸è½å°äºå½åæ¶é´"); |
| | | return false; |
| | | } |
| | | this.form.remark = |
| | | this.form.remark + "ã" + this.getCurrentTime() + "ã"; |
| | | let form = structuredClone(this.form); |
| | | form.longSendTime = this.formatTime(form.date1); |
| | | form.finishtime = ""; |
| | | if (form.resource) { |
| | | if (form.resource == 2) { |
| | | form.visitDeptCode = localStorage.getItem("deptCode"); |
| | | form.visitDeptName = "é访ä¸å¿"; |
| | | } else { |
| | | form.visitDeptCode = form.deptcode; |
| | | form.visitDeptName = form.deptname; |
| | | } |
| | | } else { |
| | | this.$modal.msgError("æªéæ©é访æ¹å¼"); |
| | | return; |
| | | } |
| | | // form.id = null; |
| | | form.sendstate = 2; |
| | | console.log(form.serviceType, "form.serviceType"); |
| | | |
| | | addserviceSubtask(form).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("å建æå"); |
| | | if (form.serviceType == 13) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | | } else if (form.serviceType == 2) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/again", |
| | | }); |
| | | } |
| | | } else { |
| | | this.$modal.msgError("å建失败"); |
| | | } |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.dialogFormVisible = false; |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | 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}`; |
| | | }, |
| | | 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(); |
| | | }, |
| | | }, |
| | | // deactivated() { |
| | | // console.log(11); |
| | | // }, |
| | | beforeRouteLeave(to, from, next) { |
| | | this.$refs.callButton.cleanupResources(); |
| | | if (this.$refs.CallCenterLs) { |
| | | console.log(1); |
| | | |
| | | this.$refs.CallCenterLs.handleSeatLogout(); |
| | | } |
| | | next(); // ç¡®ä¿è°ç¨ nex |
| | | }, |
| | | // beforeRouteUpdate() { |
| | | // console.log(33); |
| | | // }, |
| | | }; |
| | | </script> |
| | | |
| | | <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%; /* ç¡®ä¿é«åº¦ç»§æ¿ */ |
| | | } |
| | | } |
| | | .numeric-input { |
| | | position: relative; |
| | | } |
| | | |
| | | .numeric-input::after { |
| | | content: "åªè½è¾å
¥æ°å"; |
| | | position: absolute; |
| | | right: 8px; |
| | | top: 50%; |
| | | transform: translateY(-50%); |
| | | font-size: 12px; |
| | | color: #999; |
| | | background: #f5f5f5; |
| | | padding: 2px 6px; |
| | | border-radius: 4px; |
| | | } |
| | | .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: 10px 10px 0 10px; |
| | | align-items: center; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | 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); |
| | | |
| | | .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 { |
| | | align-items: center; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | 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); |
| | | 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; |
| | | padding: 10px; |
| | | color: #fff; |
| | | background: rgb(110, 196, 247); |
| | | border-radius: 10px; |
| | | } |
| | | } |
| | | |
| | | .offside { |
| | | display: flex; |
| | | flex-direction: row-reverse; |
| | | |
| | | .offside-value { |
| | | padding: 10px; |
| | | background: rgb(217, 173, 253); |
| | | border-radius: 10px; |
| | | color: #fff; |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | } |
| | | .topic-dev[inert] { |
| | | opacity: 0.5; |
| | | pointer-events: none; |
| | | } |
| | | .CONTENT { |
| | | padding: 10px; |
| | | height: 100%; |
| | | min-height: 738px; /* 设置æå°é«åº¦ */ |
| | | |
| | | .title { |
| | | font-size: 22px; |
| | | font-weight: bold; |
| | | margin-bottom: 20px; |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | .preview-left { |
| | | margin: 20px; |
| | | padding: 30px; |
| | | 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); |
| | | max-height: 618px; /* 设置æå¤§é«åº¦ */ |
| | | 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; |
| | | border-left: 5px solid #41a1be; |
| | | padding-left: 5px; |
| | | margin-bottom: 10px; |
| | | display: flex; |
| | | |
| | | .Add-details { |
| | | font-size: 18px; |
| | | color: #02a7f0; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | /* å¼å¸¸ç¶ææ ·å¼ - çº¢è² (ä¿æä¸å) */ |
| | | .scriptTopic-isabnormal { |
| | | color: red; |
| | | } |
| | | |
| | | /* æ°å¢ï¼è¦åç¶ææ ·å¼ - é»è² */ |
| | | .scriptTopic-warning { |
| | | color: #d4be00; /* æ¨æå®çé»è² */ |
| | | |
| | | } |
| | | |
| | | /* å¼å¸¸éé¡¹æ ·å¼ - çº¢è²æå· (ä¿æä¸å) */ |
| | | .red-star { |
| | | ::v-deep.el-radio__label { |
| | | position: relative; |
| | | padding-right: 10px; |
| | | } |
| | | |
| | | ::v-deep.el-radio__label::after { |
| | | content: "*"; |
| | | color: red; |
| | | position: absolute; |
| | | right: -5px; |
| | | top: 0; |
| | | } |
| | | } |
| | | |
| | | /* æ°å¢ï¼è¦åéé¡¹æ ·å¼ - é»è²æå· */ |
| | | .yellow-star { |
| | | ::v-deep.el-radio__label { |
| | | position: relative; |
| | | padding-right: 10px; |
| | | } |
| | | |
| | | ::v-deep.el-radio__label::after { |
| | | content: "*"; |
| | | color: #ffe202; /* é»è²æå· */ |
| | | position: absolute; |
| | | right: -5px; |
| | | top: 0; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | |
| | | /* å
±ç¨æ ·å¼ä¿æä¸å */ |
| | | ::v-deep.el-input-group__textarea { |
| | | white-space: pre-wrap; |
| | | word-break: break-all; |
| | | } |
| | | |
| | | ::v-deep.el-checkbox__label { |
| | | position: relative; |
| | | padding-right: 10px; |
| | | } |
| | | |
| | | ::v-deep.el-checkbox__label::after { |
| | | content: "*"; |
| | | color: red; |
| | | position: absolute; |
| | | right: -5px; |
| | | top: 0; |
| | | } |
| | | .tag-selector-container { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 30px; |
| | | } |
| | | |
| | | .color-indicator { |
| | | width: 16px; |
| | | height: 16px; |
| | | border-radius: 3px; |
| | | margin-right: 8px; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .selected-indicator { |
| | | margin-left: 10px; |
| | | width: 20px; |
| | | height: 20px; |
| | | } |
| | | |
| | | .tag-info-icon { |
| | | margin-left: 10px; |
| | | color: #909399; |
| | | cursor: pointer; |
| | | font-size: 16px; |
| | | } |
| | | |
| | | /* ç¡®ä¿éæ©å¨é项ä¸ä¹æ¾ç¤ºé¢è²å */ |
| | | .el-select-dropdown__item { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .tag-normal { |
| | | background-color: #7ff5e1; |
| | | } |
| | | .tag-abnormal { |
| | | background-color: #f75c5c; |
| | | } |
| | | .tag-warning { |
| | | background-color: #fbfb4a; |
| | | } |
| | | |
| | | .tag-info { |
| | | margin-left: 10px; |
| | | color: #909399; |
| | | cursor: pointer; |
| | | } |
| | | ::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; |
| | | } |
| | | |
| | | .el-textarea.is-disabled .el-textarea__inner { |
| | | background-color: #fff; |
| | | border-color: #dcdfe6; |
| | | color: #080808 !important; |
| | | cursor: not-allowed; |
| | | } |
| | | /* åæçæ ·å¼ä¿æä¸åï¼æ·»å 以ä¸ååºå¼ä»£ç */ |
| | | |
| | | .Followupdetailspage { |
| | | margin: 10px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 20px; |
| | | } |
| | | |
| | | .action-container { |
| | | display: flex; |
| | | flex-direction: row; /* é»è®¤æ¨ªåæå */ |
| | | gap: 20px; |
| | | margin: 0 10px 20px 10px; |
| | | |
| | | /* å½ç¼©æ¾æ¯ä¾å¤§äº100%æå±å¹å®½åº¦è¾å°æ¶æ¹ä¸ºä¸ä¸æå */ |
| | | @media screen and (min-resolution: 1.5dppx) { |
| | | flex-direction: column; |
| | | |
| | | .call-action, |
| | | .manual-action { |
| | | width: 100% !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .call-action { |
| | | width: 65%; |
| | | min-width: 0; |
| | | } |
| | | |
| | | .manual-action { |
| | | flex: 1; |
| | | min-width: 0; |
| | | } |
| | | |
| | | /* è°æ´å
é¨å
ç´ çååºå¼å¸å± */ |
| | | .Followuserinfos { |
| | | .el-form { |
| | | /* 表åååºå¼è°æ´ */ |
| | | .el-row { |
| | | margin: 0 -10px; |
| | | } |
| | | |
| | | .el-col { |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | @media screen and (max-width: 768px) { |
| | | .el-col { |
| | | width: 100%; |
| | | margin-bottom: 15px; |
| | | |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* è°æ´è¡¨æ ¼çååºå¼è¡¨ç° */ |
| | | .el-table { |
| | | ::v-deep .el-table__body-wrapper { |
| | | overflow-x: auto; |
| | | } |
| | | |
| | | /* å¨å°å±å¹ä¸è°æ´è¡¨æ ¼å宽 */ |
| | | @media screen and (max-width: 992px) { |
| | | .el-table-column { |
| | | min-width: 120px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* è°æ´æ ç¾éæ©å¨çååºå¼å¸å± */ |
| | | .tag-selector-container { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | gap: 10px; |
| | | |
| | | @media screen and (max-width: 576px) { |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | margin-right: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* è°æ´æé®ç»çååºå¼å¸å± */ |
| | | .el-form-item.label-processing-opinion { |
| | | .el-button-group { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | gap: 10px; |
| | | |
| | | .el-button { |
| | | flex: 1; |
| | | min-width: 120px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* è°æ´é项å¡çååºå¼è¡¨ç° */ |
| | | .el-tabs { |
| | | ::v-deep .el-tabs__nav-wrap { |
| | | overflow-x: auto; |
| | | white-space: nowrap; |
| | | |
| | | &::after { |
| | | display: none; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* è°æ´é¢è§åºåçååºå¼è¡¨ç° */ |
| | | .preview-left { |
| | | @media screen and (max-width: 768px) { |
| | | margin: 10px; |
| | | padding: 15px; |
| | | |
| | | .topic-dev, |
| | | .scriptTopic-dev { |
| | | margin-bottom: 15px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* è°æ´å¯¹è¯æ¡çååºå¼è¡¨ç° */ |
| | | .el-dialog { |
| | | @media screen and (max-width: 992px) { |
| | | width: 90% !important; |
| | | margin-top: 5vh !important; |
| | | |
| | | .el-dialog__body { |
| | | padding: 15px; |
| | | } |
| | | } |
| | | |
| | | @media screen and (max-width: 576px) { |
| | | width: 95% !important; |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 15px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* ç¡®ä¿å
容å¨ç¼©æ¾æ¶ä¿æå¯è¯»æ§ */ |
| | | .headline { |
| | | font-size: clamp(18px, 2vw, 24px); /* 使ç¨clamp彿°ç¡®ä¿åä½å¤§å°å¨åçèå´å
*/ |
| | | } |
| | | |
| | | /* 为移å¨è®¾å¤ä¼åæ»å¨ä½éª */ |
| | | @media screen and (max-width: 768px) { |
| | | .Followuserinfo, |
| | | .Followuserinfos { |
| | | padding: 15px; |
| | | margin: 5px; |
| | | } |
| | | |
| | | .CONTENT { |
| | | min-height: auto; |
| | | padding: 5px; |
| | | } |
| | | } |
| | | |
| | | /* ç¼©æ¾æ£æµæ ·å¼ */ |
| | | @media screen and (min-resolution: 1.5dppx), |
| | | screen and (-webkit-min-device-pixel-ratio: 1.5) { |
| | | .action-container { |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .call-action, |
| | | .manual-action { |
| | | width: 100%; |
| | | } |
| | | |
| | | /* è°æ´å
é¨å
ç´ é´è· */ |
| | | .call-container, |
| | | .Followuserinfos { |
| | | margin-bottom: 20px; |
| | | } |
| | | } |
| | | </style> |