From ba4eee2e5ced6aef3e85a7c7b8317817b7ad3cae Mon Sep 17 00:00:00 2001 From: sinake <sinake1@qq.com> Date: 星期四, 14 八月 2025 10:05:53 +0800 Subject: [PATCH] Merge branch 'lishui-Smartor' of http://116.62.18.175:6699/r/~yxh/smartor-web --- src/api/AiCentre/index.js | 1 src/views/index.vue | 252 + dist.zip | 0 src/components/Assistant/index.vue | 2 src/views/followvisit/zbAgain/index.vue | 12 src/views/patient/patient/outpatient.vue | 52 src/views/shortmessage/healthinformation/index.vue | 1 src/views/patient/patient/index.vue | 13 src/views/patient/subsequent/index.vue | 2 src/views/followvisit/satisfaction/index.vue | 667 ++-- src/api/AiCentre/satisfaction.js | 42 src/views/patient/propaganda/QuestionnaireTask.vue | 66 src/views/followvisit/record/detailpage/index.vue | 255 + src/views/patient/patient/behospitalized.vue | 2 src/components/CallButton/index.vue | 294 ++ src/store/getters.js | 1 src/views/followvisit/discharge/outpatientService.vue | 1808 +++++++++++++ src/views/knowledge/education/compilequer/index.vue | 2 src/views/patient/propaganda/Missioncreation.vue | 202 + src/views/repositoryai/templateku/configurat/measurement.vue | 1 src/views/followvisit/technology/index.vue | 12 src/api/system/user.js | 10 src/store/modules/user.js | 17 src/views/followvisit/SpecificDisease/index.vue | 10 src/views/followvisit/again/index.vue | 25 src/views/patient/propaganda/particty copy.vue | 2 src/utils/sipService-bd.js | 200 + src/utils/sipService.js | 216 + src/views/patient/questionnaire/index.vue | 10 src/views/followvisit/record/index.vue | 12 /dev/null | 1315 ---------- src/views/followvisit/record/physical/index.vue | 1433 +++++++++++ src/views/login.vue | 11 src/views/repositoryai/general/particulars/index.vue | 4 src/views/patient/patient/hospital.vue | 18 src/views/patient/shadow/index.vue | 10 package.json | 1 src/views/patient/medtechnician/Compositeeditdetails.vue | 2 src/api/AiCentre/EChartsdata.js | 8 src/views/shortmessage/healthinformation/compilequer/index.vue | 713 ---- src/views/patient/follow/index.vue | 61 41 files changed, 5,137 insertions(+), 2,628 deletions(-) diff --git a/dist-wl.zip b/dist-wl.zip deleted file mode 100644 index 87d732e..0000000 --- a/dist-wl.zip +++ /dev/null Binary files differ diff --git a/dist.zip b/dist.zip new file mode 100644 index 0000000..4bef5b1 --- /dev/null +++ b/dist.zip Binary files differ diff --git a/package.json b/package.json index 2994555..291269c 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "js-beautify": "1.13.0", "js-cookie": "3.0.1", "jsencrypt": "^3.3.2", + "jssip": "^3.10.1", "lemon-imui": "^1.7.7", "moment": "^2.30.1", "nprogress": "0.2.0", diff --git a/src/api/AiCentre/EChartsdata.js b/src/api/AiCentre/EChartsdata.js index 94c3984..2b4d479 100644 --- a/src/api/AiCentre/EChartsdata.js +++ b/src/api/AiCentre/EChartsdata.js @@ -25,6 +25,14 @@ data: data, }); } +// 棣栭〉涓儴鏁版嵁 +export function getServiceStatistics(data) { + return request({ + url: "/smartor/serviceSubtask/getServiceStatistics", + method: "post", + data: data, + }); +} // 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛� export function getechartsMedInhospList(data) { return request({ diff --git a/src/api/AiCentre/index.js b/src/api/AiCentre/index.js index 7db4067..7455089 100644 --- a/src/api/AiCentre/index.js +++ b/src/api/AiCentre/index.js @@ -9,3 +9,4 @@ export * from './external' export * from './patientexternal' export * from './EChartsdata' +export * from './satisfaction' diff --git a/src/api/AiCentre/satisfaction.js b/src/api/AiCentre/satisfaction.js new file mode 100644 index 0000000..e9901b0 --- /dev/null +++ b/src/api/AiCentre/satisfaction.js @@ -0,0 +1,42 @@ +import request from "@/utils/request"; +import { parseStrEmpty } from "@/utils/ruoyi"; //澶勭悊瀛楃涓� + +// 鏌ヨ婊℃剰搴﹀垪琛� +export function listsatisfaction(query) { + return request({ + url: "/smartor/satisfaction/list", + method: "post", + data: query, + }); +} + +// 鎵归噺鏂板婊℃剰搴� +export function addsatisfaction(data) { + return request({ + url: "/smartor/satisfaction/batchinsert", + method: "post", + data: data, + }); +} + +// 淇敼婊℃剰搴� +export function updatesatisfaction(data) { + return request({ + url: "/smartor/satisfaction/edit", + method: "post", + data: data, + }); +} + +// 鍒犻櫎婊℃剰搴� +export function delsatisfaction(satisfactionId) { + return request({ + url: "/smartor/satisfaction/remove/" + satisfactionId, + method: "get", + }); +} + + + + + diff --git a/src/api/system/user.js b/src/api/system/user.js index f7abb88..451a5c0 100644 --- a/src/api/system/user.js +++ b/src/api/system/user.js @@ -86,7 +86,7 @@ data: data, }); } -// 淇敼鐢ㄦ埛涓汉淇℃伅 +// 缁熻鏌ヨ export function getSfStatistics(data) { return request({ url: "/smartor/serviceSubtask/getSfStatistics", @@ -94,6 +94,14 @@ data: data, }); } +// 鏈強鏃舵煡璇� +export function selectTimelyRate(data) { + return request({ + url: "/smartor/servicetask/selectTimelyRate", + method: "post", + data: data, + }); +} // 鐢ㄦ埛瀵嗙爜閲嶇疆 export function updateUserPwd(oldPassword, newPassword) { diff --git a/src/components/Assistant/index.vue b/src/components/Assistant/index.vue index 80e9bd5..356ef75 100644 --- a/src/components/Assistant/index.vue +++ b/src/components/Assistant/index.vue @@ -361,7 +361,7 @@ display: block; background: black; - background: -webkit-radial-gradient(100px 100px, circle, #5788fe, #292929); + background: -webkit-radial-gradient(100px 100px, circle, #5788FE, #292929); // background: -moz-radial-gradient(100px 100px, circle, #35a1a1, #000);Firefox 娴忚鍣ㄧ殑瀹炵幇 // background: radial-gradient(100px 100px, circle, #35a1a1, #000);鏍囧噯 HTML5 灞炴�� margin: 0; diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue new file mode 100644 index 0000000..47931a4 --- /dev/null +++ b/src/components/CallButton/index.vue @@ -0,0 +1,294 @@ +<template> + <div class="call-container"> + <div class="sip-status" :class="sipStatusClass"> + SIP鐘舵��: {{ sipStatus }} + </div> + + <!-- 鐘舵�佹樉绀� --> + <div class="call-status" :class="callStatusClass"> + {{ callStatusText }} + </div> + + <!-- 鍛煎彨鎸夐挳 --> + <button + :class="['call-btn', { calling: isCalling }]" + @click="startCall" + :disabled="isCalling || sipStatus !== '宸叉敞鍐�'" + > + {{ callButtonText }} + </button> + + <!-- 鎸傛柇鎸夐挳 --> + <button v-if="isCalling" class="end-call-btn" @click="endCall">鎸傛柇</button> + + <!-- 闊抽鍏冪礌锛堥殣钘忥級 --> + <audio id="remoteAudio" autoplay></audio> + </div> +</template> + +<script> +import sipService from "@/utils/sipService"; + +export default { + props: { + phoneNumber: { + type: String, + default: "", + }, + }, + data() { + const randomNum = Math.floor(Math.random() * 11) + 1000; // 鍐呴儴瀹氫箟 + return { + isCalling: false, + callStatus: "idle", // idle, calling, connected, ended + sipStatus: "鏈繛鎺�", + sipStatusClass: "status-disconnected", + sipConfig: { + wsUrl: "wss://192.168.10.124:7443", + sipUri: `${randomNum}` + "@192.168.10.124", + password: "Smartor@2023", + displayName: "Web 灏忛緳", + }, + }; + }, + computed: { + callStatusText() { + const statusMap = { + idle: "鍑嗗灏辩华", + calling: "鍛煎彨涓�...", + connected: "閫氳瘽涓�", + ended: "閫氳瘽缁撴潫", + }; + return statusMap[this.callStatus]; + }, + callStatusClass() { + return `status-${this.callStatus}`; + }, + callButtonText() { + return this.isCalling ? "閫氳瘽涓�..." : "涓�閿懠鍙�"; + }, + }, + mounted() { + sipService.init(this.sipConfig); + sipService.onStatusChange = (status) => { + this.sipStatus = status.text; + this.sipStatusClass = `status-${status.type}`; + }; + + // 鐩戝惉閫氳瘽鐘舵�佸彉鍖� + sipService.onCallStatusChange = (status) => { + this.callStatus = status.type; + this.isCalling = status.type === "calling" || status.type === "connected"; + + // 閫氱煡鐖剁粍浠堕�氳瘽鐘舵�佸彉鍖� + this.$emit("call-status-change", status); + }; + }, + methods: { + async startCall() { + if (!this.phoneNumber) { + this.$message.error("璇疯緭鍏ョ數璇濆彿鐮�"); + return; + } + + try { + this.callStatus = "calling"; + this.isCalling = true; + + await sipService.makeCall(this.phoneNumber); + } catch (error) { + console.error("鍛煎彨澶辫触:", error); + this.callStatus = "ended"; + this.isCalling = false; + this.$message.error(`鍛煎彨澶辫触: ${error.message}`); + } + }, + + endCall() { + sipService.endCall(); + this.callStatus = "ended"; + this.isCalling = false; + }, + }, +}; +</script> + +<style scoped> +.call-container { + display: flex; + flex-direction: column; + gap: 10px; + max-width: 300px; + margin: 0 auto; + padding: 20px; + border: 1px solid #eee; + border-radius: 8px; +} + +input { + padding: 8px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.call-btn { + padding: 10px; + background-color: #4caf50; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} +.call-status { + padding: 8px; + margin: 10px 0; + border-radius: 4px; + text-align: center; +} + +.status-idle { + background-color: #f5f5f5; + color: #666; +} + +.status-calling { + background-color: #fff8e1; + color: #ff8f00; +} + +.status-connected { + background-color: #e8f5e9; + color: #2e7d32; +} + +.status-ended { + background-color: #ffebee; + color: #c62828; +} + +/* 鍘熸湁鏍峰紡淇濇寔涓嶅彉 */ +.call-container { + display: flex; + flex-direction: column; + gap: 10px; + max-width: 300px; + margin: 0 auto; + padding: 20px; + border: 1px solid #eee; + border-radius: 8px; +} + +.call-btn { + padding: 10px; + background-color: #4caf50; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +.call-btn:hover:not(:disabled) { + background-color: #45a049; +} + +.call-btn:disabled { + background-color: #cccccc; + cursor: not-allowed; +} + +.call-btn.calling { + background-color: #2196f3; +} + +.end-call-btn { + padding: 10px; + background-color: #f44336; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +.end-call-btn:hover { + background-color: #d32f2f; +} + +.sip-status { + padding: 8px; + margin-bottom: 10px; + border-radius: 4px; + text-align: center; +} + +.status-disconnected { + background-color: #ffebee; + color: #c62828; +} + +.status-connecting { + background-color: #fff8e1; + color: #ff8f00; +} + +.status-registered { + background-color: #e8f5e9; + color: #2e7d32; +} + +.status-failed { + background-color: #ffebee; + color: #c62828; +} +.call-btn:hover { + background-color: #45a049; +} + +.call-btn.calling { + background-color: #2196f3; +} + +.end-call-btn { + padding: 10px; + background-color: #f44336; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +.end-call-btn:hover { + background-color: #d32f2f; +} + +.call-status { + margin-top: 10px; + font-size: 14px; + color: #666; +} +.sip-status { + padding: 8px; + margin-bottom: 10px; + border-radius: 4px; + text-align: center; +} + +.status-disconnected { + background-color: #ffebee; + color: #c62828; +} + +.status-connecting { + background-color: #fff8e1; + color: #ff8f00; +} + +.status-registered { + background-color: #e8f5e9; + color: #2e7d32; +} + +.status-failed { + background-color: #ffebee; + color: #c62828; +} +</style> diff --git a/src/store/getters.js b/src/store/getters.js index d5078b3..0b065bd 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -8,6 +8,7 @@ token: (state) => state.user.token, avatar: (state) => state.user.avatar, name: (state) => state.user.name, + nickName: (state) => state.user.nickName, Id: (state) => state.user.Id, introduction: (state) => state.user.introduction, roles: (state) => state.user.roles, diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 524f4de..36c9b90 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -5,6 +5,7 @@ state: { token: getToken(), name: '', + nickName:'', Id: '', avatar: '', hisUserId:'', @@ -87,6 +88,9 @@ SET_NAME: (state, name) => { state.name = name }, + SET_nickNAME: (state, name) => { + state.nickName = name + }, SET_Id: (state, Id) => { state.Id = Id console.log(state.Id,'user2'); @@ -140,11 +144,19 @@ localStorage.setItem('deptCode', '01040201'); }else if (orgid=='47246102433112211A2101') { localStorage.setItem('orgname', '缂欎簯鍘夸腑鍖诲尰闄�'); - localStorage.setItem('ZuHuID', '1400360867068907520'); + localStorage.setItem('ZuHuID', '1429338802177000002'); localStorage.setItem('deptCode', ''); }else if (orgid=='47240018433118111A2101') { localStorage.setItem('orgname', '榫欐硥甯備腑鍖诲尰闄�'); - localStorage.setItem('ZuHuID', '1400360867068907520'); + localStorage.setItem('ZuHuID', '1429338802177000003'); + localStorage.setItem('deptCode', ''); + }else if (orgid=='47243006833112611A2101') { + localStorage.setItem('orgname', '搴嗗厓鍘夸腑鍖诲尰闄�'); + localStorage.setItem('ZuHuID', '1429338802177000004'); + localStorage.setItem('deptCode', ''); + }else if (orgid=='47234002X33112111A2101') { + localStorage.setItem('orgname', '闈掔敯鍘夸腑鍖诲尰闄�'); + localStorage.setItem('ZuHuID', '1429338802177000005'); localStorage.setItem('deptCode', ''); } resolve() @@ -168,6 +180,7 @@ commit('SET_ROLES', ['ROLE_DEFAULT']) } commit('SET_NAME', user.userName) + commit('SET_nickNAME', user.nickName) commit('SET_Id', user.userId) commit('SET_hisUserId', user.hisUserId) commit('SET_leavehospitaldistrictcodes', user.belongWards) diff --git a/src/utils/sipService-bd.js b/src/utils/sipService-bd.js new file mode 100644 index 0000000..8318c1a --- /dev/null +++ b/src/utils/sipService-bd.js @@ -0,0 +1,200 @@ +import JsSIP from "jssip"; + +class SipService { + constructor() { + this.ua = null; + this.currentSession = null; + this.onStatusChange = null; // 鐘舵�佸彉鍖栧洖璋� + this.onCallStatusChange = null; // 鏂板閫氳瘽鐘舵�佸洖璋� + } + + // 鍒濆鍖朣IP瀹㈡埛绔� + init(config) { + try { + this.updateStatus("connecting", "杩炴帴涓�..."); + + this.ua = new JsSIP.UA({ + sockets: [new JsSIP.WebSocketInterface(config.wsUrl)], + uri: config.sipUri, + password: config.password, + display_name: config.displayName, + iceservers: [], + // realm: config.realm, + register: true, + session_expires: 180, + sessionTimersExpires: 300, // 璁剧疆 Session-Expires=120锛堝繀椤� >= Min-SE锛� + extraHeaders: [ + "Min-SE: 120", // 鍙�夛細鏄惧紡鍛婅瘔鏈嶅姟鍣ㄤ綘鏀寔鐨勬渶灏忓�� + ], + register_expires: 300, // 娉ㄥ唽鏈夋晥鏈�(绉�) + connection_recovery_min_interval: 2, // 鏈�灏忛噸杩為棿闅� + connection_recovery_max_interval: 30, // 鏈�澶ч噸杩為棿闅� + }); + + this.ua.start(); + + // 娉ㄥ唽浜嬩欢鐩戝惉 + this.ua.on("registered", () => { + this.updateStatus("registered", "宸叉敞鍐�"); + }); + + this.ua.on("registrationFailed", (e) => { + this.updateStatus("failed", `娉ㄥ唽澶辫触: ${e.cause}`); + }); + + this.ua.on("disconnected", () => { + this.updateStatus("disconnected", "杩炴帴鏂紑"); + }); + + this.ua.on("connected", () => { + this.updateStatus("connecting", "閲嶆柊杩炴帴涓�..."); + }); + + // 鐩戝惉鏉ョ數 + this.ua.on("newRTCSession", (data) => { + this.handleIncomingCall(data.session); + }); + } catch (error) { + this.updateStatus("failed", `鍒濆鍖栧け璐�: ${error.message}`); + console.error("SIP鍒濆鍖栧け璐�:", error); + } + } + handleIncomingCall(session) { + if (session.direction === "incoming") { + console.log("鏉ョ數:", session.remote_identity.uri.toString()); + // 鍙互鍦ㄨ繖閲岃Е鍙� UI 閫氱煡 + if (this.onIncomingCall) { + this.onIncomingCall(session); + } + } + } + + // 鏇存柊鐘舵�佸苟閫氱煡UI + updateStatus(type, text) { + console.log(`SIP鐘舵�佹洿鏂�: ${type} - ${text}`); + if (this.onStatusChange) { + this.onStatusChange({ type, text }); + } + } + + // 涓�閿嫧鍙� - 澧炲姞娉ㄥ唽鐘舵�佹鏌� + makeCall(targetNumber) { + if (!this.ua) { + throw new Error("SIP瀹㈡埛绔湭鍒濆鍖�"); + } + + if (!this.ua.isRegistered()) { + throw new Error("SIP鏈敞鍐岋紝鏃犳硶鍛煎彨"); + } + + const options = { + sessionTimers: true, + sessionTimersExpires: 300, + extraHeaders: [ + "Min-SE: 120", + "Route: <sip:@192.168.100.6>", + "Accept: application/sdp", + "Supported: replaces, timer", + "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS", + ], + eventHandlers: { + progress: (e) => { + this.updateCallStatus("calling", "鍛煎彨涓�..."); + }, + failed: (e) => { + this.updateCallStatus("ended", `鍛煎彨澶辫触: ${e.cause}`); + }, + ended: (e) => { + this.updateCallStatus("ended", "閫氳瘽缁撴潫"); + }, + confirmed: (e) => { + this.updateCallStatus("connected", "閫氳瘽宸叉帴閫�"); + }, + }, + mediaConstraints: { + audio: true, + video: false, + }, + rtcOfferConstraints: { + offerToReceiveAudio: 1, + offerToReceiveVideo: 0, + mandatory: { + OfferToReceiveAudio: true, + OfferToReceiveVideo: false, + }, + }, + pcConfig: { + iceServers: [{ urls: "stun:stun.l.google.com:19302" }], + iceTransportPolicy: "all", + bundlePolicy: "balanced", + rtcpMuxPolicy: "require", + codecs: { + audio: [ + { name: "PCMU", clockRate: 8000, payloadType: 0 }, + { name: "PCMA", clockRate: 8000, payloadType: 8 }, + ], + video: [], + }, + }, + }; + + this.currentSession = this.ua.call( + `sip:${targetNumber}@192.168.100.6`, + options + ); + // 鍦ㄤ細璇濆垱寤哄悗淇敼 SDP + this.currentSession.on("peerconnection", (pc) => { + this.updateCallStatus('calling', '鍛煎彨涓�...'); + pc.createOffer = (offerOptions) => { + return RTCPeerConnection.prototype.createOffer + .call(pc, offerOptions) + .then((offer) => { + const modifiedSdp = offer.sdp + .replace(/c=IN IP4 192\.168\.100\.10/g, "c=IN IP4 192.168.100.6") + .replace(/m=audio \d+ RTP\/AVP.*/, "m=audio 7078 RTP/AVP 0 8"); + return new RTCSessionDescription({ + type: "offer", + sdp: modifiedSdp, + }); + }); + }; + }); + this.currentSession.on('failed', (e) => { + this.updateCallStatus('failed', `鍛煎彨澶辫触2: ${e.cause}`); + }); + + this.currentSession.on('ended', () => { + this.updateCallStatus('ended', '閫氳瘽宸茬粨鏉�'); + }); + + this.currentSession.on('confirmed', () => { + this.updateCallStatus('connected', '閫氳瘽宸叉帴閫�'); + }); + this.setupAudio(this.currentSession); + } + setupAudio(session) { + session.connection.addEventListener("addstream", (e) => { + const audioElement = document.getElementById("remoteAudio"); + if (audioElement) { + audioElement.srcObject = e.stream; + } + }); + } + // 鎸傛柇褰撳墠閫氳瘽 + endCall() { + if (this.currentSession) { + this.currentSession.terminate(); + this.updateCallStatus('ended', '閫氳瘽宸茬粨鏉�'); + this.currentSession = null; + } + } + // 鏂板鏂规硶锛氭洿鏂伴�氳瘽鐘舵�� + updateCallStatus(type, text) { + console.log(`閫氳瘽鐘舵�佹洿鏂�: ${type} - ${text}`); + if (this.onCallStatusChange) { + this.onCallStatusChange({ type, text }); + } + } +} + +export default new SipService(); diff --git a/src/utils/sipService.js b/src/utils/sipService.js new file mode 100644 index 0000000..9088bad --- /dev/null +++ b/src/utils/sipService.js @@ -0,0 +1,216 @@ +import JsSIP from "jssip"; + +class SipService { + constructor() { + this.ua = null; + this.currentSession = null; + this.onStatusChange = null; + this.onCallStatusChange = null; + this.onIncomingCall = null; + } + + init(config) { + try { + this.updateStatus("connecting", "杩炴帴涓�;..."); + + this.ua = new JsSIP.UA({ + sockets: [new JsSIP.WebSocketInterface(config.wsUrl)], + uri: config.sipUri, + password: config.password, + display_name: config.displayName, + iceServers: [], + register: true, + sessionExpires: 1800, + minSessionExpires: 90, + register_expires: 300, + }); + + this.ua.start(); + + // 浜嬩欢鐩戝惉 + this.ua.on("registered", () => + this.updateStatus("registered", "宸叉敞鍐�56") + ); + this.ua.on("registrationFailed", (e) => + this.updateStatus("failed", `娉ㄥ唽澶辫触11: ${e.cause}`) + ); + this.ua.on("disconnected", () => + this.updateStatus("disconnected", "杩炴帴鏂紑") + ); + this.ua.on("connected", () => + this.updateStatus("connecting", "閲嶆柊杩炴帴涓�...") + ); + this.ua.on("newRTCSession", (data) => + this.handleIncomingCall(data.session) + ); + } catch (error) { + this.updateStatus("failed", `鍒濆鍖栧け璐�: ${error.message}`); + console.error("SIP鍒濆鍖栧け璐�:", error); + throw error; + } + } + + makeCall(targetNumber) { + return new Promise((resolve, reject) => { + try { + if (!this.ua) { + throw new Error("SIP瀹㈡埛绔湭鍒濆鍖�"); + } + + if (!this.ua.isRegistered()) { + throw new Error("SIP鏈敞鍐岋紝鏃犳硶鍛煎彨"); + } + + const options = { + sessionTimers: true, // 鍚敤浼氳瘽璁℃椂鍣� + sessionTimersExpires: 90, + extraHeaders: ["Accept: application/sdp"], + mediaConstraints: { audio: true, video: false }, + rtcOfferConstraints: { + offerToReceiveAudio: true, + offerToReceiveVideo: false, + }, + eventHandlers: { + progress: () => this.updateCallStatus("calling", "鍛煎彨涓�..."), + failed: (e) => { + this.handleCallFailure(e, reject); + }, + ended: () => this.updateCallStatus("ended", "閫氳瘽缁撴潫"), + confirmed: () => { + this.updateCallStatus("connected", "閫氳瘽宸叉帴閫�"); + resolve(); + }, + }, + }; + + this.currentSession = this.ua.call( + `sip:${targetNumber}@192.168.10.124`, + options + ); + + this.setupPeerConnection(this.currentSession); + this.setupAudio(this.currentSession); + } catch (error) { + this.updateCallStatus("failed", `鍛煎彨澶辫触22: ${error.message}`); + reject(error); + } + }); + } + + setupPeerConnection(session) { + session.on("peerconnection", (pc) => { + const originalCreateOffer = pc.createOffer.bind(pc); + + pc.createOffer = async (offerOptions) => { + try { + const offer = await originalCreateOffer(offerOptions); + return this.normalizeSDP(offer); + } catch (error) { + console.error("鍒涘缓Offer澶辫触:", error); + throw error; + } + }; + }); + } + + normalizeSDP(offer) { + let sdp = offer.sdp; + + // 鏍囧噯鍖朣DP + sdp = sdp.replace(/c=IN IP4.*\r\n/, "c=IN IP4 0.0.0.0\r\n"); + sdp = sdp.replace( + /m=audio \d+.*\r\n/, + "m=audio 9 UDP/TLS/RTP/SAVPF 0 8\r\n" + ); + + // 纭繚鍖呭惈鍩烘湰缂栬В鐮佸櫒 + if (!sdp.includes("PCMU/8000")) sdp += "a=rtpmap:0 PCMU/8000\r\n"; + if (!sdp.includes("PCMA/8000")) sdp += "a=rtpmap:8 PCMA/8000\r\n"; + + // 娣诲姞蹇呰灞炴�� + sdp += "a=rtcp-mux\r\n"; + sdp += "a=sendrecv\r\n"; + + console.log("鏍囧噯鍖栧悗鐨凷DP:", sdp); + return new RTCSessionDescription({ + type: offer.type, + sdp: sdp, + }); + } + + handleCallFailure(e, reject) { + if (e.response?.status_code === 422) { + const serverMinSE = e.response.headers["Min-SE"]?.[0]?.raw || "鏈煡"; + console.error(`鏈嶅姟鍣ㄨ姹� Min-SE 鈮� ${serverMinSE}锛屽綋鍓嶈缃�: 120`); + } + console.error("鍛煎彨澶辫触璇︽儏:", { + cause: e.cause, + message: e.message, + response: e.response && { + status: e.response.status_code, + reason: e.response.reason_phrase, + }, + }); + + let errorMessage = "鍛煎彨澶辫触"; + switch (e.cause) { + case "Incompatible SDP": + errorMessage = "濯掍綋鍗忓晢澶辫触锛岃妫�鏌ョ紪瑙g爜鍣ㄩ厤缃�"; + break; + case "488": + case "606": + errorMessage = "瀵规柟璁惧涓嶆敮鎸佸綋鍓嶅獟浣撻厤缃�"; + break; + case "422": + errorMessage = "浼氳瘽鍙傛暟涓嶆弧瓒虫湇鍔″櫒瑕佹眰"; + break; + default: + errorMessage = `鍛煎彨澶辫触: ${e.cause || e.message}`; + } + + this.updateCallStatus("failed55", errorMessage); + reject(new Error(errorMessage)); + } + + setupAudio(session) { + session.connection.addEventListener("addstream", (e) => { + const audioElement = document.getElementById("remoteAudio"); + if (audioElement) { + audioElement.srcObject = e.stream; + } + }); + } + + endCall() { + if (this.currentSession) { + this.currentSession.terminate(); + this.updateCallStatus("ended", "閫氳瘽宸茬粨鏉�"); + this.currentSession = null; + } + } + + updateStatus(type, text) { + console.log(`SIP鐘舵�佹洿鏂�: ${type} - ${text}`); + if (this.onStatusChange) { + this.onStatusChange({ type, text }); + } + } + + updateCallStatus(type, text) { + console.log(`閫氳瘽鐘舵�佹洿鏂�: ${type} - ${text}`); + if (this.onCallStatusChange) { + this.onCallStatusChange({ type, text }); + } + } + + handleIncomingCall(session) { + if (session.direction === "incoming") { + console.log("鏉ョ數:", session.remote_identity.uri.toString()); + if (this.onIncomingCall) { + this.onIncomingCall(session); + } + } + } +} + +export default new SipService(); diff --git a/src/views/followvisit/SpecificDisease/index.vue b/src/views/followvisit/SpecificDisease/index.vue index feb2e2b..424d6a5 100644 --- a/src/views/followvisit/SpecificDisease/index.vue +++ b/src/views/followvisit/SpecificDisease/index.vue @@ -842,10 +842,10 @@ name: "寰呭彂閫�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "宸插彂閫佹湭棰嗗彇", @@ -986,7 +986,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; diff --git a/src/views/followvisit/again/index.vue b/src/views/followvisit/again/index.vue index ba0cee9..bccd382 100644 --- a/src/views/followvisit/again/index.vue +++ b/src/views/followvisit/again/index.vue @@ -644,7 +644,17 @@ </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="杩囨护鍘熷洜"> @@ -929,10 +939,10 @@ name: "寰呴殢璁�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "琛ㄥ崟宸插彂閫�", @@ -1157,7 +1167,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; @@ -1237,7 +1247,7 @@ 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.cardlist[5].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; @@ -1590,6 +1600,7 @@ handleUpdate(row) { particularpatient(row.patid).then((response) => { this.form = response.data; + this.form.filterDrname = store.getters.nickName; }); this.amendtag = true; this.Labelchange = true; diff --git a/src/views/followvisit/discharge/outpatientService.vue b/src/views/followvisit/discharge/outpatientService.vue new file mode 100644 index 0000000..0601da8 --- /dev/null +++ b/src/views/followvisit/discharge/outpatientService.vue @@ -0,0 +1,1808 @@ +<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="搴旈殢璁挎椂闂�"> + <el-date-picker + v-model="dateRangefs" + 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="鎮h�呭鍚�" 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="鎮h�呰寖鍥�" 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" + :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="200" + align="center" + key="longSendTime" + prop="longSendTime" + > + <template slot-scope="scope"> + <span>{{ formatTime(scope.row.longSendTime) }}</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="鍑洪櫌澶╂暟" + 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="璐d换鎶ゅ+" + 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>鎮h�呰繃婊�</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="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'" + :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="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="鎮h�呭啀娆¢殢璁�" :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="鎮h�呭悕绉�"> + <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> + <el-button type="primary" @click="setupsubtask">纭鍒涘缓鏈嶅姟</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { + delUser, + addUser, + updateUser, + resetUserPwd, + changeUserStatus, +} from "@/api/system/user"; +import { + getTaskservelist, + buidegetTasklist, + addserviceSubtask, + query360PatInfo, +} 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, // 鎬绘潯鏁� + ImportQuantity: 999, //瀵煎奖鍍忛殢璁挎暟閲� + //棰勮褰卞儚闅忚淇℃伅 + previewvalue: { + username: "杩欎釜鍖荤敓瀵逛綘鎬庝箞鏍�", + }, + value: [], + list: [], + + sourcetype: [ + { + value: 1, + label: "绉戝", + children: [], + }, + { + value: 2, + label: "鐥呭尯", + children: [], + }, + { + value: 3, + label: "鍏ㄩ儴", + }, + ], + loading: false, + cardlist: [ + { + name: "闂ㄨ瘖鏈嶅姟鎬婚噺", + value: 0, + }, + // { + // name: "鎮h�呰繃婊�", + // 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: "鍑洪櫌鏃堕棿(姝e簭)", + }, + { + value: 1, + label: "鍑洪櫌鏃堕棿(鍊掑簭)", + }, + { + value: 2, + label: "鍙戦�佹椂闂�(姝e簭)", + }, + { + value: 3, + label: "鍙戦�佹椂闂�(鍊掑簭)", + }, + ], + // 鏌ヨ鍙傛暟 + topqueryParams: { + pageNum: 1, + pageSize: 10, + sendstate: null, + sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) + serviceType: 3, + 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: "姝e父", + }, + ], + 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 + ); + // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null + return item ? item.label : null; + }); + } + }); + this.total = response.total; + }); + }, + affiliation() { + this.topqueryParams.drcode = store.getters.hisUserId; + this.topqueryParams.nurseId = store.getters.hisUserId; + 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 + ); + // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖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); + }, + // 鎮h�呰寖鍥村鐞� + 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: 2, + sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) + serviceType: 3, + searchscope: 3, + visitCount: 1, + scopetype: [], + leaveldeptcodes: [], + leavehospitaldistrictcodes: [], + }; + this.handleQuery(1); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map((item) => item.userId); + this.single = selection.length != 1; + this.multiple = !selection.length; + }, + //鍒犻櫎閫夐」 + 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: 3, + }, + }); + }, + //鎮h��360璺宠浆 + gettoken360(sfzh, drcode, drname) { + 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("鎮h�呰繃婊ゆ垚鍔�"); + }); + + 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, + }, + }); + }, + // 鍐嶆闅忚 + followupvisit(row) { + this.zcform = row; + this.zcform.endtime = this.formatTime(this.zcform.endtime); + this.dialogFormVisible = true; + }, + onSubmit() {}, + // 鏆傚仠鏈嶅姟 + handlestop(row) { + let objson = row; + this.$modal + .confirm( + '鏄惁纭鏆傚仠浠诲姟鍚嶇О涓�"' + + row.taskName + + '鎮h�呭悕绉颁负"' + + 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(() => {}); + }, + // 鎮h�呰繃婊よЕ鍙� + handleUpdate(row) { + particularpatient(row.patid).then((response) => { + this.form = response.data; + }); + 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 ""; + }, + // 鍒涘缓鍐嶆闅忚鏈嶅姟 + setupsubtask() { + this.$refs["zcform"].validate((valid) => { + if (valid) { + this.zcform.remark = + this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�"; + let form = structuredClone(this.zcform); + form.longSendTime = this.formatTime(form.date1); + form.finishtime = ""; + if (form.resource) { + if (form.resource == 2) { + form.serviceType = 13; + } + } else { + this.$modal.msgError("鏈�夋嫨闅忚鏂瑰紡"); + } + form.id = null; + form.sendstate = 2; + form.preachform = form.preachformson; + form.longTask = 0; + addserviceSubtask(form).then((res) => { + if (res.code == 200) { + this.$modal.msgSuccess("鍒涘缓鎴愬姛"); + } else { + this.$modal.msgError("鍒涘缓澶辫触"); + } + 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}`; + }, + }, +}; +</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; + } +} + +// 閫夐」瀛椾綋鏀惧ぇ +// ::v-deep.el-checkbox-group { +// span { +// font-size: 24px; +// } +// } +</style> diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue index ba36907..3ed901e 100644 --- a/src/views/followvisit/record/detailpage/index.vue +++ b/src/views/followvisit/record/detailpage/index.vue @@ -206,7 +206,12 @@ </div> <div class="Followuserinfos"> <div> - <el-form ref="form" :model="form" label-width="120px"> + <el-form + ref="userform" + :model="form" + :rules="userrules" + label-width="120px" + > <div class="headline"> <div>浜哄伐澶勭悊</div> <el-row :gutter="20"> @@ -215,6 +220,13 @@ <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" @@ -222,6 +234,13 @@ <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" @@ -232,13 +251,37 @@ ></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> + <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> + <!-- 鎸傛柇鎸夐挳锛堜粎鍦ㄩ�氳瘽涓樉绀猴級 --> + <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> @@ -343,6 +386,14 @@ </el-collapse-item> </el-collapse> </div> + </div> + <div> + <h2>涓�閿懠鍙姛鑳�</h2> + <CallButton + ref="callButton" + :phoneNumber="currentPhoneNumber" + style="display: none" + /> </div> <div> <el-tabs v-model="activeName" type="border-card"> @@ -671,7 +722,7 @@ allow-create default-first-option @change="visitChange" - placeholder="璇烽�夋嫨闅忚鏂瑰紡" + placeholder="璇烽�夋嫨闅忚鏂瑰紡(渚濆嚭闄㈡椂闂存妧璁$畻)" > <el-option v-for="item in options" @@ -691,6 +742,7 @@ :picker-options="pickerOptions" align="right" v-model="form.date1" + class="custom-disabled" ></el-date-picker> </el-form-item> </el-col> @@ -735,11 +787,34 @@ alterpatient, listcontactinformation, } from "@/api/patient/homepage"; +import CallButton from "@/components/CallButton"; export default { + components: { + CallButton, + }, + 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, + currentCall: null, // 褰撳墠閫氳瘽瀵硅薄 input: "浠婂ぉ韬綋杩樹笉閿�", radio: "2", taskname: "", @@ -757,6 +832,10 @@ { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" }, ], date1: [{ required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" }], + }, + userrules: { + telcode: [{ validator: validatePhone, trigger: "blur" }], + relativetelcode: [{ validator: validatePhone, trigger: "blur" }], }, url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo", postData: { @@ -793,6 +872,10 @@ }, }, pickerOptions: { + disabledDate(time) { + // 绂佺敤浠婂ぉ鍙婁箣鍓嶇殑鏃ユ湡 + return time.getTime() < Date.now() - 24 * 60 * 60 * 1000; + }, shortcuts: [ { text: "涓冨ぉ鍚�", @@ -884,7 +967,28 @@ patid: null, }; }, - + computed: { + callStatusText() { + const statusMap = { + idle: "鍑嗗鍛煎彨", + calling: `姝e湪鍛煎彨 ${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; @@ -979,17 +1083,29 @@ // 鏍规嵁閫夋嫨鐨勯殢璁挎柟寮忚缃椂闂� const now = new Date(); if (value.includes("涓冨ぉ鍚�")) { - this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 7); + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 7 + ); } else if (value.includes("15澶╁悗")) { - this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 15); + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 15 + ); } else if (value.includes("涓�涓湀鍚�")) { - this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 30); + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 30 + ); } else if (value.includes("涓変釜鏈堝悗")) { - this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 90); + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 90 + ); } else if (value.includes("鍏釜鏈堝悗")) { - this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 180); + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 180 + ); } else if (value.includes("涓�骞村悗")) { - this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 365); + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 365 + ); } }, @@ -1123,10 +1239,10 @@ path: "/logisticsservice/record", }); } - } else if (form.serviceType == 2) { + } else if (this.form.serviceType == 2) { if (this.visitCount) { this.$router.push({ - path: "/followvisit/again", + path: "/logisticsservice/again", }); } else { this.$router.push({ @@ -1140,6 +1256,96 @@ // 濡傛灉鏈変换浣曚竴涓紓姝ユ搷浣滃け璐ワ紝浼氳繘鍏ヨ繖閲� 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; + 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() { this.tableDatatop.forEach((item, index) => { @@ -1186,7 +1392,7 @@ }) .catch(() => { if (this.form.serviceType == 13) { - if (this.visitCount) { + if (this.visitCount != 1) { this.$router.push({ path: "/logisticsservice/zbAgain", }); @@ -1196,7 +1402,7 @@ }); } } else if (form.serviceType == 2) { - if (this.visitCount) { + if (this.visitCount != 1) { this.$router.push({ path: "/followvisit/again", }); @@ -1232,11 +1438,12 @@ this.form = res.rows[0].serviceSubtaskList.find( (item) => item.id == this.id ); + console.log(this.form.serviceType, "serviceType"); + this.logsheetlist = res.rows[0].serviceSubtaskList; this.templateid = this.logsheetlist[0].templateid; const targetDate = new Date(this.form.longSendTime); // 鐩爣鏃ユ湡 const now = new Date(); // 褰撳墠鏃堕棿 - this.form.endtime = this.formatTime(this.form.endtime); if (now < targetDate && this.form.sendstate == 2) { this.$confirm("褰撳墠鏈嶅姟鏈埌鍙戦�佹椂闂磋璋ㄦ厧淇敼", "鎻愮ず", { confirmButtonText: "纭畾", @@ -1388,7 +1595,6 @@ form.finishtime = ""; if (form.resource) { if (form.resource == 2) { - form.serviceType = 13; form.visitDeptCode = localStorage.getItem("deptCode"); form.visitDeptName = "闅忚涓績"; } else { @@ -1401,16 +1607,18 @@ } // 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/again", + path: "/logisticsservice/zbAgain", }); } else if (form.serviceType == 2) { this.$router.push({ - path: "/logisticsservice/zbAgain", + path: "/logisticsservice/again", }); } } else { @@ -1614,6 +1822,19 @@ 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; diff --git a/src/views/followvisit/record/index.vue b/src/views/followvisit/record/index.vue index 1063d26..6192c55 100644 --- a/src/views/followvisit/record/index.vue +++ b/src/views/followvisit/record/index.vue @@ -879,10 +879,10 @@ name: "寰呴殢璁�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "琛ㄥ崟宸插彂閫�", @@ -1049,7 +1049,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; @@ -1127,7 +1127,7 @@ 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.cardlist[5].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; diff --git a/src/views/followvisit/record/physical/index.vue b/src/views/followvisit/record/physical/index.vue new file mode 100644 index 0000000..58077c6 --- /dev/null +++ b/src/views/followvisit/record/physical/index.vue @@ -0,0 +1,1433 @@ +<template> + <!-- 鑱婅繛椤甸潰璁板綍 --> + <div class="Followupdetailspage" id="app-container"> + <div class="Followuserinfo"> + <div> + <div class="userinfo-text"> + <!-- <span>鎮h�呮湇鍔¤鎯�</span> --> + <div class="headline"> + <div>鎮h�呮湇鍔¤鎯�</div> + <div style="margin-left: 20px"> + <el-button + v-if="!Whetherall" + type="primary" + @click="getTaskservelist()" + >鏌ョ湅鎮h�呭叏閮ㄦ湇鍔�</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> + <!-- <el-button type="success">闅忚鍚庣煭淇�</el-button> --> + </div> + </div> + <div> + <el-table + :data="logsheetlist" + :row-class-name="tableRowClassName" + style="width: 100%" + > + <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="璐d换鎶ゅ+" + 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="Followuserinfos"> + <div> + <el-form + ref="userform" + :model="form" + :rules="userrules" + label-width="120px" + > + <div class="headline"> + <div>浜哄伐澶勭悊</div> + <el-form-item label="鑱旂郴鐢佃瘽"> + <el-input placeholder="鑱旂郴鐢佃瘽缂哄け" v-model="form.phone"> + <el-button + slot="append" + icon="el-icon-phone" + @click="handleCall(form.phone, 'tel')" + :disabled="!isValidPhone(form.phone)" + ></el-button + ></el-input> + </el-form-item> + </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 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 + > + + <el-button type="success" @click="Editsingletasksonyic('')" + >淇濆瓨鏈嶅姟</el-button + > + </div> + </el-form-item> + </el-form> + <!-- <el-collapse> + <el-collapse-item title="鏌ョ湅褰撳墠鎮h�呬俊鎭�" name="1"> + <div class="detailed"> + <el-form ref="userform" :model="userform" label-width="100px"> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="鎮h�呭鍚�" 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-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="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> + </el-collapse-item> + </el-collapse> --> + </div> + </div> + <div> + <CallButton + ref="callButton" + :phoneNumber="currentPhoneNumber" + style="display: none" + /> + </div> + <el-dialog + title="鎮h�呭啀娆¢殢璁�" + 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="鎮h�呭悕绉�"> + <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="date1"> + <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" + ></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> +</template> + +<script> +import { + getsearchrResults, + getPersonVoices, + addserviceSubtask, + getTaskservelist, + getTaskFollowup, + Editsingletaskson, + serviceSubtaskDetailedit, + serviceSubtaskDetailadd, + updatePersonVoices, + addPersonVoices, + query360PatInfo, +} from "@/api/AiCentre/index"; +import { + messagelistpatient, + alterpatient, + listcontactinformation, +} from "@/api/patient/homepage"; +import CallButton from "@/components/CallButton"; +export default { + components: { + CallButton, + }, + + 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: "", // 鐢ㄤ簬鍖哄垎鏄摢涓數璇� + input: "浠婂ぉ韬綋杩樹笉閿�", + radio: "2", + taskname: "", + voice: "", + templateid: "", + again: "", + zcform: {}, + form: {}, + tableDatatop: [], //棰樼洰琛� + voiceDatatop: [], //棰樼洰琛� + dynamicTags: [], + zcrules: { + resource: [ + { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" }, + ], + date1: [{ required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" }], + }, + 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: "1400466972205912064", + YongHuXM: "JNRMYY", + ZuZhiJGID: localStorage.getItem("orgid"), + ZuZhiJGMC: localStorage.getItem("orgname"), + idp: "lyra", + }, + }, + }, + pickerOptions: { + 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: {}, + Whetherall: true, //鏄惁鍏ㄩ儴璁板綍灞曠ず + dialogFormVisible: false, + Voicetype: 0, //鏄惁涓鸿闊虫湇鍔� + visitCount: null, + logsheetlist: [], + topicobj: {}, + sendname: null, + serviceType: null, + id: null, + taskid: null, + patid: null, + }; + }, + + 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.getTaskservelist(); + }, + + methods: { + // 鑾峰彇闂嵎鏁版嵁 + + //鎮h��360璺宠浆 + gettoken360(sfzh, drcode, drname) { + 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鏌ヨ鏃犵粨鏋�"); + } + }); + }, + // 鑾峰彇鍩虹淇℃伅 + getuserinfo() { + const queryParams = { + pid: Number(this.patid), + allhosp: "0", + pageNum: 1, + }; + // 鎮h�呭熀纭�淇℃伅 + 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) { + // 鏍规嵁閫夋嫨鐨勯殢璁挎柟寮忚缃椂闂� + const now = new Date(); + if (value.includes("涓冨ぉ鍚�")) { + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 7 + ); + } else if (value.includes("15澶╁悗")) { + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 15 + ); + } else if (value.includes("涓�涓湀鍚�")) { + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 30 + ); + } else if (value.includes("涓変釜鏈堝悗")) { + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 90 + ); + } else if (value.includes("鍏釜鏈堝悗")) { + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 180 + ); + } else if (value.includes("涓�骞村悗")) { + this.form.date1 = new Date( + Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 365 + ); + } + }, + + // 鑾峰彇璇煶鏁版嵁 + 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) => { + var objs = item.svyLibTemplateTargetoptions.find( + (items) => items.optioncontent == item.scriptResult + ); + if (obj) { + if (objs.isabnormal) { + excep = 1; + } + } + let obj = { + asrtext: null, + patid: this.patid, + subId: this.id, + taskid: this.taskid, + scriptid: item.id, + excep: excep, + questiontext: item.scriptContent, + }; + 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( + '浠诲姟淇濆瓨鎴愬姛鏄惁閽堝鎮h�咃細"' + + this.logsheetlist[0].sendname + + '"鍐嶆闅忚锛�', + "纭", + { + 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) { + this.$router.push({ + path: "/logisticsservice/zbAgain", + }); + } else { + this.$router.push({ + path: "/logisticsservice/record", + }); + } + } else if (form.serviceType == 2) { + if (this.visitCount) { + this.$router.push({ + path: "/followvisit/again", + }); + } else { + this.$router.push({ + path: "/followvisit/discharge", + }); + } + } + }); + }) + .catch((error) => { + // 濡傛灉鏈変换浣曚竴涓紓姝ユ搷浣滃け璐ワ紝浼氳繘鍏ヨ繖閲� + console.error("鍙戠敓閿欒锛�", error); + }); + }, + // 楠岃瘉鎵嬫満鍙锋牸寮� + isValidPhone(phone) { + return /^1[3-9]\d{9}$/.test(phone); + }, + // 鍛煎彨澶勭悊 + handleCall(phone, type) { + if (this.isValidPhone(phone)) { + this.currentPhoneNumber = phone; + this.callType = type; + + // 绛夊緟涓嬩竴涓猼ick纭繚鍊煎凡鏇存柊 + this.$nextTick(() => { + this.$refs.callButton.startCall(); + + // 鍙�夛細鏍规嵁涓嶅悓绫诲瀷鍋氫笉鍚屽鐞� + if (type === "tel") { + console.log("姝e湪鍛煎彨鎮h�呮湰浜�:", phone); + } else { + console.log("姝e湪鍛煎彨鑱旂郴浜�:", phone); + } + }); + } + }, + yuyingetdetail() { + this.tableDatatop.forEach((item, index) => { + 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: this.tableDatatop, + param1: this.taskid, + param2: this.patid, + subId: this.id, + }; + + addPersonVoices(obj).then((res) => { + if (res.code == 200) { + this.$modal.msgSuccess("鏈嶅姟淇濆瓨鎴愬姛"); + this.$modal + .confirm( + '浠诲姟淇濆瓨鎴愬姛鏄惁閽堝鎮h�咃細"' + + 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) { + this.$router.push({ + path: "/logisticsservice/zbAgain", + }); + } else { + this.$router.push({ + path: "/logisticsservice/record", + }); + } + } else if (form.serviceType == 2) { + if (this.visitCount) { + 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.remark2 = this.form.remark; + }, + // 鑾峰彇鎮h�呰褰� + getTaskservelist(id) { + if (id) { + this.Whetherall = false; + } else { + this.Whetherall = true; + } + + getTaskservelist({ + patid: this.patid, + subId: id, + }).then((res) => { + if (res.code == 200) { + this.form = res.rows[0].serviceSubtaskList.find( + (item) => item.id == this.id + ); + if (!this.form.remark) { + this.form.remark = this.form.taskDesc; + } + this.logsheetlist = res.rows[0].serviceSubtaskList; + this.templateid = this.logsheetlist[0].templateid; + const targetDate = new Date(this.form.longSendTime); // 鐩爣鏃ユ湡 + const now = new Date(); // 褰撳墠鏃堕棿 + this.form.endtime = this.formatTime(this.form.endtime); + if (now < targetDate && this.form.sendstate == 2) { + this.$confirm("褰撳墠鏈嶅姟鏈埌鍙戦�佹椂闂磋璋ㄦ厧淇敼", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => {}) + .catch(() => {}); + } + this.getuserinfo(); + } + }); + }, + 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; + 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 ""; + }, + // 璋冭捣鍐嶆鍙戦�� + sendAgain() { + document.querySelector("#app").scrollTo(0, 0); + // scrollTo(0, 0) + this.formtidy(); + this.dialogFormVisible = true; + }, + // 鏌ョ湅璇︽儏 + Seedetails(row) { + this.$modal + .confirm('鏄惁鏌ョ湅浠诲姟涓�"' + row.taskName + '"鐨勬湇鍔¤鎯呮暟鎹紵') + .then(() => { + if (row.preachformson) { + if (row.preachformson.includes("3")) { + this.Voicetype = 1; + } + } + this.taskid = row.taskid; + this.id = row.id; + this.patid = row.patid; + this.serviceType = row.serviceType; + this.getTaskservelist(); + }) + .catch(() => {}); + }, + handleOptionChange(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].svyLibTemplateTargetoptions.find( + (item) => item.optioncontent == a + ); + } + if (obj.isabnormal) { + this.tableDatatop[b].isabnormal = true; + } else { + this.tableDatatop[b].isabnormal = false; + } + this.$forceUpdate(); + }, + overdata() { + this.tableDatatop.forEach((item, index) => { + var obj = item.svyLibTemplateTargetoptions.find( + (items) => items.optioncontent == item.scriptResult + ); + if (obj) { + if (obj.isabnormal) { + this.tableDatatop[index].isabnormal = true; + } else { + this.tableDatatop[index].isabnormal = false; + } + this.$forceUpdate(); + } + }); + }, + // 鍒涘缓鍐嶆闅忚鏈嶅姟 + setupsubtask() { + this.$refs["zcform"].validate((valid) => { + if (valid) { + 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.serviceType = 13; + 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; + addserviceSubtask(form).then((res) => { + if (res.code == 200) { + this.$modal.msgSuccess("鍒涘缓鎴愬姛"); + if (form.serviceType == 13) { + this.$router.push({ + path: "/logisticsservice/again", + }); + } else if (form.serviceType == 2) { + this.$router.push({ + path: "/logisticsservice/zbAgain", + }); + } + } 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) {}, + }, +}; +</script> + +<style lang="scss"> +.Followupdetailspage { + margin: 10px; +} +.Followuserinfo { + 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); + .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); + .userinfo-text { + font-size: 20px; + margin-right: 20px; + margin-bottom: 10px; + } + .userinfo-value { + color: rgb(15, 139, 211); + span { + margin-right: 20px; + } + } +} +.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; + } + } +} +.CONTENT { + padding: 10px; + .title { + font-size: 22px; + font-weight: bold; + margin-bottom: 20px; + 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); + .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; + // 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; /* 鏍规嵁闇�瑕佽皟鏁� */ + } + ::v-deep.el-radio__label::after { + content: "*"; + color: red; + position: absolute; + right: -5px; /* 鏍规嵁闇�瑕佽皟鏁� */ + top: 0; + } + ::v-deep.el-input-group__textarea { + white-space: pre-wrap; /* 淇濇寔绌虹櫧绗﹀簭鍒楀苟姝e父鎹㈣ */ + word-break: break-all; /* 鍦ㄩ暱鍗曡瘝鎴朥RL鍦板潃鍐呴儴杩涜鎹㈣ */ + } + ::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; + } +} +::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; /* 榧犳爣鏍峰紡 */ +} +</style> diff --git a/src/views/followvisit/satisfaction/index.vue b/src/views/followvisit/satisfaction/index.vue index 1a45f3c..59915c3 100644 --- a/src/views/followvisit/satisfaction/index.vue +++ b/src/views/followvisit/satisfaction/index.vue @@ -11,44 +11,23 @@ v-show="showSearch" label-width="98px" > - <el-form-item label="浠诲姟鍚嶇О"> - <el-input v-model="topqueryParams.name"></el-input> + <el-form-item label="鐥呭尯鍚嶇О"> + <el-input + placeholder="璇疯緭鍏ユ偅鑰呯梾鍖�" + v-model="topqueryParams.hospitaldistrictname" + ></el-input> </el-form-item> - <el-form-item label="鍙戣捣浜�"> - <el-input v-model="topqueryParams.name"></el-input> + <el-form-item label="绉戝鍚嶇О"> + <el-input + placeholder="璇疯緭鍏ユ偅鑰呯瀹�" + v-model="topqueryParams.deptname" + ></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="status"> - <el-select v-model="topqueryParams.topic" 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.topic" placeholder="璇烽�夋嫨"> - <el-option - v-for="item in topicoptions" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> + <el-form-item label="鎮h�呭悕绉�"> + <el-input + placeholder="璇疯緭鍏ユ偅鑰呭鍚�" + v-model="topqueryParams.patName" + ></el-input> </el-form-item> <el-form-item> <el-button @@ -66,51 +45,6 @@ <el-divider></el-divider> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-select v-model="tasktopic" placeholder="璇烽�夋嫨鏂板绫诲瀷"> - <el-option - v-for="item in taskoptions" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </el-col> - <el-col :span="1.5"> - <el-button - type="primary" - icon="el-icon-plus" - size="medium" - :disabled="!tasktopic" - @click="handleAdd" - >鏂板</el-button - > - </el-col> - <el-col :span="1.5"> - <el-button - type="success" - plain - icon="el-icon-edit" - size="medium" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['system:user:edit']" - >淇敼</el-button - > - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - plain - icon="el-icon-delete" - size="medium" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['system:user:remove']" - >鍒犻櫎</el-button - > - </el-col> - <el-col :span="1.5"> <div class="documentf"> <div class="document"> <el-button @@ -119,7 +53,6 @@ icon="el-icon-download" size="medium" @click="handleExport" - v-hasPermi="['system:user:export']" >瀵煎嚭</el-button > </div> @@ -138,146 +71,255 @@ @selection-change="handleSelectionChange" > <el-table-column type="selection" width="50" align="center" /> - <el-table-column - label="搴忓彿" - align="center" - key="userId" - prop="userId" - /> + <el-table-column label="缂栧彿" align="center" key="id" prop="id" /> <el-table-column - label="浣忛櫌缂栧彿" + label="鐥呭尯" align="center" - sortable - key="userName" - prop="userName" + width="120" + key="hospitaldistrictname" + prop="hospitaldistrictname" + :show-overflow-tooltip="true" + /> + <el-table-column + label="绉戝" + width="120" + align="center" + key="deptname" + prop="deptname" :show-overflow-tooltip="true" /> <el-table-column label="濮撳悕" - width="100" align="center" + key="patName" + prop="patName" + width="120" + /> + <el-table-column + label="鑱旂郴鐢佃瘽" + align="center" + key="phone" + prop="phone" + width="150" + show-overflow-tooltip + /> + <el-table-column + label="鐪熷疄鎬�(20)" + align="center" + key="authenticity" + prop="authenticity" sortable - key="userName" - prop="userName" - :show-overflow-tooltip="true" - /> - <el-table-column - label="骞撮緞" - align="center" - key="age" - prop="age" width="120" - /> - <el-table-column - label="璋冩煡妯℃澘" - align="center" - key="types" - prop="types" - /> - <el-table-column - label="璋冩煡绫诲瀷" - align="center" - key="types" - prop="types" - /> - <el-table-column - label="璋冩煡鍐呭" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="浣忛櫌鐥呭尯" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="搴婂彿" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="涓绘不鍖荤敓" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="绠″簥鎶ゅ+" - align="center" - key="nickName" - prop="nickName" - /> - - <el-table-column - label="鎵ц鐘舵��" - align="center" - key="topicnumber" - prop="topicnumber" - width="120" - :show-overflow-tooltip="true" > <template slot-scope="scope"> - <div>鎵ц瀹屾垚/鎵ц澶辫触</div> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.authenticity" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.authenticity }}</span> </template> </el-table-column> <el-table-column - label="璇婃柇" + label="涓�鍛ㄥ唴瀹屾垚(20)" align="center" - key="topicnumberaa" - prop="topicnumberaa" + key="weekFinish" + prop="weekFinish" sortable + width="150" + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.weekFinish" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.weekFinish }}</span> + </template> + </el-table-column> + <el-table-column + label="瑙勮寖鎬�(10)" + align="center" + key="standard" + prop="standard" width="120" - :show-overflow-tooltip="true" - /> + sortable + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.standard" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.standard }}</span> + </template> + </el-table-column> + <el-table-column + label="鍙婃椂鎬�(10)" + align="center" + key="timeliness" + prop="timeliness" + sortable + width="150" + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.timeliness" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.timeliness }}</span> + </template> + </el-table-column> + <el-table-column + label="瀹f暀鎯呭喌(10)" + align="center" + key="library" + prop="library" + sortable + width="150" + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.library" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.library }}</span> + </template> + </el-table-column> + <el-table-column + label="鐜婊℃剰搴�(10)" + align="center" + key="environment" + prop="environment" + sortable + width="150" + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.environment" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.environment }}</span> + </template> + </el-table-column> <el-table-column - label="鍏ラ櫌鏃堕棿" - sortable + label="鍖荤敓婊℃剰搴�(10)" align="center" + key="doctorSatisfaction" + prop="doctorSatisfaction" + width="150" + sortable + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.doctorSatisfaction" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.doctorSatisfaction }}</span> + </template> + </el-table-column> + <el-table-column + label="鎶ゅ+婊℃剰搴�(10)" + align="center" + key="nurseSatisfaction" + prop="nurseSatisfaction" + width="150" + sortable + > + <template slot-scope="scope"> + <el-input-number + v-if="scope.row.editing" + v-model="scope.row.nurseSatisfaction" + :min="0" + :max="20" + size="small" + controls-position="right" + /> + <span v-else>{{ scope.row.nurseSatisfaction }}</span> + </template> + </el-table-column> + <el-table-column + label="鎬诲垎" + fixed="right" + align="center" + key="total" + prop="total" + sortable + > + </el-table-column> + <el-table-column + label="瀹屾垚鏃ユ湡" + fixed="right" + width="150" + align="center" + key="createTime" prop="createTime" - width="160" + sortable > - <template slot-scope="scope"> - <span>{{ formatTime(scope.row.createTime) }}</span> - </template> </el-table-column> + <el-table-column - label="浠诲姟璇︽儏" + label="鎿嶄綔" align="center" + fixed="right" width="200" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button + v-if="!scope.row.editing" size="medium" type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-xq" - ><i class="el-icon-s-data"></i>璇︽儏</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-bb" - ><i class="el-icon-s-order"></i>鎶ヨ〃</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-sc" + @click="handleDelete(scope.row)" + ><span class="button-zx" ><i class="el-icon-delete"></i>鍒犻櫎</span ></el-button + > + <el-button + size="medium" + type="text" + @click="toggleEdit(scope.row, scope.$index)" + > + <span class="button-textxga"> + <i + :class="scope.row.editing ? 'el-icon-check' : 'el-icon-edit'" + ></i> + {{ scope.row.editing ? "淇濆瓨" : "缂栬緫" }} + </span> + </el-button> + <el-button + v-if="scope.row.editing" + size="medium" + type="text" + @click="handleCancel(scope.row, scope.$index)" + >鍙栨秷</el-button > </template> </el-table-column> @@ -291,73 +333,16 @@ @pagination="getList" /> </el-row> - <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 --> - <el-dialog - :title="title" - :visible.sync="addalteropen" - width="700px" - append-to-body - > - <el-form ref="form" :model="form" label-width="100px"> - <el-row :gutter="20"> - <el-col :span="12" - ><el-form-item label="浠诲姟鍚嶇О"> - <el-input v-model="form.name"></el-input> </el-form-item - ></el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24" - ><el-form-item label="鎵�灞炵瀹�"> - <el-select v-model="form.region" placeholder="璇烽�夋嫨绉戝"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> </el-form-item></el-col - ></el-row> - <el-row :gutter="20"> - <el-col :span="24" - ><el-form-item label="闅忚绫诲瀷"> - <el-select v-model="form.region" placeholder="璇烽�夋嫨闅忚绫诲瀷"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> </el-form-item - ></el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="鏈嶅姟妯″潡"> - <el-select v-model="form.region" placeholder="璇烽�夋嫨妯″潡"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="褰卞儚闅忚瑕佹眰"> - <el-input type="textarea" v-model="form.desc"></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> </div> </template> <script> import { - listUser, - getUser, - delUser, - addUser, - updateUser, - resetUserPwd, + listsatisfaction, + delsatisfaction, + updatesatisfaction, changeUserStatus, -} from "@/api/system/user"; +} from "@/api/AiCentre/index"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; @@ -426,58 +411,7 @@ value: [], list: [], loading: false, - states: [ - "Alabama", - "Alaska", - "Arizona", - "Arkansas", - "California", - "Colorado", - "Connecticut", - "Delaware", - "Florida", - "Georgia", - "Hawaii", - "Idaho", - "Illinois", - "Indiana", - "Iowa", - "Kansas", - "Kentucky", - "Louisiana", - "Maine", - "Maryland", - "Massachusetts", - "Michigan", - "Minnesota", - "Mississippi", - "Missouri", - "Montana", - "Nebraska", - "Nevada", - "New Hampshire", - "New Jersey", - "New Mexico", - "New York", - "North Carolina", - "North Dakota", - "Ohio", - "Oklahoma", - "Oregon", - "Pennsylvania", - "Rhode Island", - "South Carolina", - "South Dakota", - "Tennessee", - "Texas", - "Utah", - "Vermont", - "Virginia", - "Washington", - "West Virginia", - "Wisconsin", - "Wyoming", - ], + states: [], pickerOptions: { disabledDate(time) { return time.getTime() > Date.now(); @@ -610,13 +544,11 @@ /** 鏌ヨ褰卞儚闅忚鍒楄〃 */ getList() { this.loading = true; - listUser(this.addDateRange(this.topqueryParams, this.dateRange)).then( - (response) => { - this.userList = response.rows; - this.total = response.total; - this.loading = false; - } - ); + listsatisfaction(this.topqueryParams).then((response) => { + this.userList = response.rows; + this.total = response.total; + this.loading = false; + }); }, // 鏌ョ湅褰卞儚闅忚璇︽儏 Referencequestion(row) { @@ -635,21 +567,6 @@ } 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"; - }); }, // 鍙栨秷鎸夐挳 cancel() { @@ -721,43 +638,46 @@ path: "/Intelligentcenter/satisfaction/particulars", query: { type: this.tasktopic }, }); - // getUser().then((response) => { - // this.postOptions = response.posts; - // this.roleOptions = response.roles; - // this.title = "鏂板褰卞儚闅忚"; - // this.form.password = this.initPassword; - // }); }, /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.reset(); - const userId = row.userId || this.ids; - getUser(userId).then((response) => { - this.form = response.data; - this.postOptions = response.posts; - this.roleOptions = response.roles; - this.$set(this.form, "postIds", response.postIds); - this.$set(this.form, "roleIds", response.roleIds); - this.addalteropen = true; - this.title = "淇敼鐢ㄦ埛"; - this.form.password = ""; - }); - }, - /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */ - 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); + toggleEdit(row, index) { + if (row.editing) { + // 淇濆瓨閫昏緫 + updatesatisfaction(row).then((response) => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.$set(this.userList, index, { + ...row, + editing: false, + // 璁$畻鎬诲垎 + total: this.calculateTotal(row), }); - }) - .catch(() => {}); + }); + + // 杩欓噷鍙互娣诲姞API璋冪敤淇濆瓨鏁版嵁 + } else { + // 杩涘叆缂栬緫妯″紡 + this.$set(this.userList, index, { + ...row, + editing: true, + // 淇濆瓨鍘熷鏁版嵁鐢ㄤ簬鍙兘鐨勫彇娑堟搷浣� + originalData: { ...row }, + }); + } + }, + handleCancel(row, index) { + this.$set(this.userList, index, row.originalData); + }, + 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) + ); }, /** 鎻愪氦鎸夐挳 */ @@ -765,14 +685,8 @@ this.$refs["form"].validate((valid) => { if (valid) { if (this.form.userId != undefined) { - updateUser(this.form).then((response) => { + updatesatisfaction(this.form).then((response) => { this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addUser(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); this.open = false; this.getList(); }); @@ -782,11 +696,11 @@ }, /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { - const userIds = row.userId || this.ids; + const userIds = row.id || this.ids; this.$modal - .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') + .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + row.patName + '"鐨勬暟鎹」锛�') .then(function () { - return delUser(userIds); + return delsatisfaction(userIds); }) .then(() => { this.getList(); @@ -797,7 +711,7 @@ /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { this.download( - "system/user/export", + "smartor/satisfaction/export", { ...this.topqueryParams, }, @@ -909,11 +823,22 @@ font-weight: 500; color: #dd302a; } +// .button-zx { +// background: #e94f4f; +// padding: 5px; +// border-radius: 1px; +// color: #ffffff; +// } +.el-table .cell .el-input-number { + width: 100%; +} + +/* 鎸夐挳鏍峰紡 */ .button-zx { - background: #4fabe9; - padding: 5px; - border-radius: 1px; - color: #ffffff; + color: #f56c6c; +} +.button-textxga { + color: #409eff; } ::v-deep.el-radio-group { diff --git a/src/views/followvisit/technology/index.vue b/src/views/followvisit/technology/index.vue index 5697c8b..dde2ab3 100644 --- a/src/views/followvisit/technology/index.vue +++ b/src/views/followvisit/technology/index.vue @@ -823,10 +823,10 @@ name: "寰呴殢璁�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "琛ㄥ崟宸插彂閫�", @@ -999,7 +999,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; @@ -1061,7 +1061,7 @@ 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.cardlist[5].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; diff --git a/src/views/followvisit/zbAgain/index.vue b/src/views/followvisit/zbAgain/index.vue index 624a23d..e53487e 100644 --- a/src/views/followvisit/zbAgain/index.vue +++ b/src/views/followvisit/zbAgain/index.vue @@ -929,10 +929,10 @@ name: "寰呴殢璁�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "琛ㄥ崟宸插彂閫�", @@ -1157,7 +1157,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; @@ -1237,7 +1237,7 @@ 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.cardlist[5].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; diff --git a/src/views/index.vue b/src/views/index.vue index 984673c..d76be1a 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -105,13 +105,13 @@ ></el-radio-button> </el-radio-group> </div> - <!-- 涓棿echars --> + <!-- 涓儴绾挎�ф煴鐘跺浘 --> <div class="boxEchars"> <div class="echars1" id="echars"></div> </div> </div> </el-col> - <!-- 涓棿鍜屽彸杈� --> + <!-- 鍙宠竟鍒楄〃 --> <el-col :span="4" class="aside"> <div class="grid-content bg-purple" style="margin-top: -180px"> <div class="title"> @@ -134,9 +134,7 @@ ></el-table-column> <el-table-column prop="rc" class-name="rc"> - <template slot-scope="scope"> - {{ scope.row.rc }}娆� - </template> + <template slot-scope="scope"> {{ scope.row.rc }}娆� </template> </el-table-column> </el-table> </div> @@ -292,7 +290,7 @@ getechartsListCountdata, getechartsMedOuthospList, getechartsMedInhospList, - getechartsandData, + getServiceStatistics, getDeptRanking, } from "@/api/AiCentre/index"; import dayjs from "dayjs"; @@ -308,8 +306,13 @@ mypPieCharts: null, lastWidth: window.innerWidth, lastHeight: window.innerHeight, - radio1: "鍛�", + radio1: "鏈�", ticketStatistics: {}, + timeTypeMap: { + 鍛�: "day", + 鏈�: "month", + 骞�: "year", + }, DischargeData: { rs: "", rc: "", @@ -352,7 +355,7 @@ this.getgraphdata(); this.getranking(); this.$nextTick(function () { - this.getregionAmountCollect(); + this.myEcharts2(); this.getnodeCollect(); this.getSkuTop(); }); @@ -379,7 +382,7 @@ this.getgraphdata(); this.getranking(); this.getTopdata(); - this.getregionAmountCollect(); + this.myEcharts2(); this.getnodeCollect(); this.getSkuTop(); }, @@ -396,15 +399,15 @@ }, // top鎺掕 async getSkuTop() { - let Rankingdata = { + let Rankingdata = { startDate: this.endatd, endDate: this.statd, cy: 1, }; await getDeptRanking(Rankingdata).then((res) => { if (res.code == 200) { - this.SkuTop=res.rows.sort((a, b) => b.rc - a.rc); - console.log(this.SkuTop,'this.SkuTop'); + this.SkuTop = res.rows.sort((a, b) => b.rc - a.rc); + console.log(this.SkuTop, "this.SkuTop"); } }); @@ -451,26 +454,141 @@ } }); }, - // 鑾峰彇灏辫瘖鏁伴噺 - getranking() { - - }, // 鑾峰彇涓儴绾挎煴鍥炬暟鎹� - getgraphdata() { - let Outhospdata = { + getranking() {}, + + async getgraphdata() { + let params = { startDate: this.endatd, endDate: this.statd, - cy: 1, + timeType: + this.radio1 === "鍛�" + ? "day" + : this.radio1 === "鏈�" + ? "month" + : "year", }; - let Inhospdata = { - startDate: this.endatd, - endDate: this.statd, - cy: 1, + + try { + const res = await getServiceStatistics(params); + if (res.code === 200) { + this.processChartData(res.data); + } + } catch (error) { + console.error("鑾峰彇鍥捐〃鏁版嵁澶辫触:", error); + } + }, + processChartData(data) { + // 鎸夋椂闂存帓搴忕‘淇濇暟鎹『搴忔纭� + const sortedData = [...data].sort( + (a, b) => new Date(a.timePeriod) - new Date(b.timePeriod) + ); + + const xAxisData = []; + const dischargeFollowData = []; + const outpatientFollowData = []; + const pmiData = []; + const pmoData = []; + + sortedData.forEach((item) => { + // 鏍规嵁鏃堕棿绫诲瀷鏍煎紡鍖栨樉绀� + let timeLabel = item.timePeriod; + if (this.radio1 === "鍛�") { + timeLabel = dayjs(item.timePeriod).format("MM-DD"); + } else if (this.radio1 === "鏈�") { + timeLabel = item.timePeriod.split("-")[1] + "鏈�"; + } else { + timeLabel = item.timePeriod.split("-")[0] + "骞�"; + } + + xAxisData.push(timeLabel); + dischargeFollowData.push(item.dischargeFollowCount); + outpatientFollowData.push(item.outpatientFollowCount); + pmiData.push(item.pmiCount); + pmoData.push(item.pmoCount); + }); + + // 鏇存柊鍥捐〃 + this.updateChart( + xAxisData, + dischargeFollowData, + outpatientFollowData, + pmiData, + pmoData + ); + }, + updateChart( + xAxisData, + dischargeFollowData, + outpatientFollowData, + pmiData, + pmoData + ) { + if (!this.myChart2) { + this.myEcharts2(); + return; + } + + // 璁$畻闅忚閲忕殑鏈�澶у�� + const maxFollow = Math.max( + ...dischargeFollowData, + ...outpatientFollowData + ); + // 璁$畻鏈嶅姟浜烘鐨勬渶澶у�� + const maxService = Math.max(...pmiData, ...pmoData); + + // 鍔ㄦ�佽绠梚nterval鍊� + const followInterval = this.calculateOptimalInterval(maxFollow); + const serviceInterval = this.calculateOptimalInterval(maxService); + + const option = { + xAxis: { + data: xAxisData, + }, + yAxis: [ + { + interval: followInterval, + max: Math.ceil(maxFollow / followInterval) * followInterval, + }, + { + interval: serviceInterval, + max: Math.ceil(maxService / serviceInterval) * serviceInterval, + }, + ], + series: [ + { data: dischargeFollowData }, + { data: outpatientFollowData }, + { data: pmiData }, + { data: pmoData }, + ], }; - getechartsMedOuthospList(Outhospdata).then((res) => {}); - getechartsMedInhospList(Inhospdata).then((res) => {}); + + this.myChart2.setOption(option); }, + // 璁$畻鏈�浼樼殑interval鍊� + calculateOptimalInterval(maxValue) { + if (maxValue <= 0) return 50; // 榛樿鍊� + + // 鏍规嵁鏈�澶у�艰绠楀悎閫傜殑闂撮殧 + const magnitude = Math.pow(10, Math.floor(Math.log10(maxValue))); + const stepRatio = maxValue / magnitude; + + let interval; + if (stepRatio > 5) { + interval = magnitude; + } else if (stepRatio > 2) { + interval = magnitude / 2; + } else { + interval = magnitude / 5; + } + + // 纭繚interval鏄暣鏁� + interval = Math.round(interval); + + // 闄愬埗鏈�灏忛棿闅� + return Math.max(interval, 50); + }, // 鑾峰彇绾跨姸鍥炬椂闂� async getregionAmountCollect() { //getregionAmountCollect(1, this.endatd, this.statd); @@ -480,11 +598,12 @@ this.series = [123, 123, 223, 212, 432, 123, 442, 234]; this.myEcharts2(); }, - // 绾挎�у浘 + // 绾挎�у浘鍙婃煴鐘跺浘 myEcharts2() { var echarts = require("echarts"); var myChart2 = echarts.init(document.getElementById("echars")); this.myChart2 = myChart2; + var option2 = { tooltip: { trigger: "axis", @@ -504,30 +623,12 @@ }, }, legend: { - data: [ - "鍑洪櫌闅忚閲�", - "闂ㄨ瘖闅忚閲�", - // "鍦ㄩ櫌闅忚閲�", - // "闂ㄨ瘖澶嶈瘖閫氱煡", - "鍑洪櫌鏈嶅姟浜烘", - "闂ㄨ瘖鏈嶅姟浜烘", - ], + data: ["鍑洪櫌闅忚閲�", "闂ㄨ瘖闅忚閲�", "鍑洪櫌鏈嶅姟浜烘", "闂ㄨ瘖鏈嶅姟浜烘"], }, xAxis: [ { type: "category", - data: [ - "涓�鏈�", - "浜屾湀", - "涓夋湀", - "鍥涙湀", - "浜旀湀", - "鍏湀", - "涓冩湀", - "鍏湀", - "涔濇湀", - "鍗佹湀", - ], + data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖 axisPointer: { type: "shadow", }, @@ -538,18 +639,14 @@ type: "value", name: "闅忚閲�", min: 0, - max: 250, - interval: 50, axisLabel: { formatter: "{value} 浜�", }, }, { type: "value", - name: "澶嶈瘖/璇勪及娆℃暟", + name: "鏈嶅姟浜烘", min: 0, - max: 250, - interval: 50, axisLabel: { formatter: "{value} 娆�", }, @@ -565,18 +662,8 @@ return value + " 浜�"; }, }, - data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160], + data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖 }, - // { - // name: "褰卞儚闅忚閲�", - // type: "bar", - // tooltip: { - // valueFormatter: function (value) { - // return value + " 浜�"; - // }, - // }, - // data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180], - // }, { name: "闂ㄨ瘖闅忚閲�", type: "bar", @@ -585,21 +672,8 @@ return value + " 浜�"; }, }, - data: [145, 92, 178, 134, 167, 85, 199, 112, 156, 88, 120, 145], + data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖 }, - - // { - // name: "鍑洪櫌澶嶈瘖閫氱煡", - // type: "line", - // smooth: 0.3, - // yAxisIndex: 1, - // tooltip: { - // valueFormatter: function (value) { - // return value + " 娆�"; - // }, - // }, - // data: [45, 123, 78, 156, 89, 34, 199, 112, 67, 145, 88, 175], - // }, { name: "鍑洪櫌鏈嶅姟浜烘", type: "line", @@ -610,7 +684,7 @@ return value + " 娆�"; }, }, - data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180], + data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖 }, { name: "闂ㄨ瘖鏈嶅姟浜烘", @@ -622,29 +696,15 @@ return value + " 娆�"; }, }, - data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160], + data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖 }, ], }; - myChart2.on("updateAxisPointer", function (event) { - const xAxisInfo = event.axesInfo[0]; - if (xAxisInfo) { - const dimension = xAxisInfo.value + 1; - myChart2.setOption({ - series: { - id: "pie", - label: { - formatter: "{b}: {@[" + dimension + "]} ", - }, - encode: { - value: dimension, - tooltip: dimension, - }, - }, - }); - } - }); + myChart2.setOption(option2); + + // 鍒濆鍔犺浇鏁版嵁 + this.getgraphdata(); }, // 楗肩姸鍥� myPieChart() { diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue index 1060bfa..59ebeef 100644 --- a/src/views/knowledge/education/compilequer/index.vue +++ b/src/views/knowledge/education/compilequer/index.vue @@ -703,7 +703,7 @@ }); } // 瀹f暀鍒嗙被 - getheLibraryAssort({}).then((res) => { + getheLibraryAssort({ hetype: 1 }).then((res) => { this.sortlist = res.rows; console.log(this.sortlist); }); diff --git a/src/views/login.vue b/src/views/login.vue index 4550afd..d506da5 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -119,6 +119,8 @@ { value: "47231022633110211A2101", label: "涓芥按甯備腑鍖婚櫌" }, { value: "47246102433112211A2101", label: "缂欎簯鍘夸腑鍖诲尰闄� " }, { value: "47240018433118111A2101", label: "榫欐硥甯備腑鍖诲尰闄� " }, + { value: "47243006833112611A2101", label: "搴嗗厓鍘夸腑鍖诲尰闄� " }, + { value: "47234002X33112111A2101", label: "闈掔敯鍘夸腑鍖诲尰闄� " }, ], loginRules: { username: [ @@ -195,9 +197,12 @@ this.loginForm.orgid = '1', this.$store .dispatch("Login", this.loginForm) - .then(() => { - // this.$router.push({ path: this.redirect || "/" }).catch(() => {}); - this.$router.push({ path:"/followvisit/discharge" }).catch(() => {}); + .then((res) => { + if (this.loginForm.username=='admin') { + this.$router.push({ path:"/index" }).catch(() => {}); + }else{ + this.$router.push({ path:"/followvisit/discharge" }).catch(() => {}); + } }) .catch(() => { this.loading = false; diff --git a/src/views/patient/follow/index.vue b/src/views/patient/follow/index.vue index 6c7d903..06f2765 100644 --- a/src/views/patient/follow/index.vue +++ b/src/views/patient/follow/index.vue @@ -11,11 +11,19 @@ v-show="showSearch" label-width="98px" > - <el-form-item label="濮撳悕" - width="100" prop="name"> + <el-form-item label="鎮h�呭鍚�" width="100" prop="name"> <el-input v-model="queryParams.name" placeholder="璇疯緭鍏ュ鍚�" + clearable + style="width: 200px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="杩囨护鍖荤敓" width="100" prop="filterDrname"> + <el-input + v-model="queryParams.filterDrname" + placeholder="璇疯緭鍏ュ尰鐢熷鍚�" clearable style="width: 200px" @keyup.enter.native="handleQuery" @@ -37,9 +45,7 @@ </el-select> </el-form-item> --> - <el-row> - <el-form-item> <el-button type="primary" @@ -58,7 +64,6 @@ </el-row> </el-form> - <el-table v-loading="loading" :data="userList" @@ -74,12 +79,18 @@ <el-table-column fixed label="濮撳悕" - width="100" + width="100" align="center" key="name" prop="name" /> - <el-table-column label="鎬у埆"width="100" align="center" key="sex" prop="sex"> + <el-table-column + label="鎬у埆" + width="100" + align="center" + key="sex" + prop="sex" + > <template slot-scope="scope"> <span>{{ scope.row.sex == 1 ? "鐢�" : "濂�" }}</span> </template> @@ -128,6 +139,12 @@ prop="placeOfResidence" width="180" :show-overflow-tooltip="true" + /> + <el-table-column + label="杩囨护鍖荤敓" + align="center" + key="filterDrname" + prop="filterDrname" /> <el-table-column label="鎮h�呮爣绛�" @@ -185,7 +202,6 @@ query: { id: scope.row.id }, }) " - ><span class="button-textsc" ><i class="el-icon-zoom-in"></i>鏌ョ湅</span ></el-button @@ -194,7 +210,6 @@ size="medium" type="text" @click="handleDelete(scope.row)" - ><span class="button-textxga" ><i class="el-icon-edit"></i>鍙栨秷杩囨护</span ></el-button @@ -212,8 +227,6 @@ /> </el-col> </el-row> - - </div> </template> @@ -295,7 +308,7 @@ propss: { multiple: true }, optionstag: [], //鏍囩鍒楄〃 Patientrange: [ - { + { value: 0, label: "鎵�灞炴偅鑰�", }, @@ -437,13 +450,13 @@ }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { - this.queryParams={ + (this.queryParams = { pageNum: 1, pageSize: 10, allhosp: "1", notrequiredFlag: 1, - }, - this.handleQuery(); + }), + this.handleQuery(); }, // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { @@ -490,16 +503,16 @@ const userIds = row.id || this.ids; this.$modal .confirm('鏄惁纭鍙栨秷鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」杩囨护锛�') - .then( ()=> { - row.notrequiredFlag=0 + .then(() => { + row.notrequiredFlag = 0; alterpatient(row) - .then((response) => { - console.log(response); - }) - .then(() => { - this.getList(); - this.$modal.msgSuccess("淇敼鎴愬姛"); - }); + .then((response) => { + console.log(response); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("淇敼鎴愬姛"); + }); }) .catch(() => {}); diff --git a/src/views/patient/medtechnician/Compositeeditdetails.vue b/src/views/patient/medtechnician/Compositeeditdetails.vue index cca2e90..0b1e6d5 100644 --- a/src/views/patient/medtechnician/Compositeeditdetails.vue +++ b/src/views/patient/medtechnician/Compositeeditdetails.vue @@ -816,7 +816,7 @@ .headline { font-size: 24px; height: 40px; - border-left: 5px solid #5788fe; + border-left: 5px solid #5788FE; padding-left: 5px; margin-bottom: 10px; display: flex; diff --git a/src/views/patient/medtechnician/SpecializedService.vue b/src/views/patient/medtechnician/SpecializedService.vue deleted file mode 100644 index a5a9493..0000000 --- a/src/views/patient/medtechnician/SpecializedService.vue +++ /dev/null @@ -1,1315 +0,0 @@ -<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-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="鎮h�呭鍚�" prop="sendname"> - <el-input - v-model="topqueryParams.sendname" - placeholder="璇疯緭鍏ユ偅鑰呭鍚�" - ></el-input> - </el-form-item> - <el-form-item label="鎮h�呰寖鍥�" 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> - <el-button - type="primary" - icon="el-icon-search" - size="medium" - @click="handleQuery" - >鎼滅储</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"> - <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-upload2" - size="medium" - @click="handleExport" - >瀵煎嚭</el-button - > - </div> - </div> - </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-row> - <el-table - v-loading="loading" - :data="userList" - height="808" - :row-class-name="tableRowClassName" - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" width="50" align="center" /> - <el-table-column - label="浠诲姟缁勫悕绉�" - fixed - align="center" - key="taskName" - prop="taskName" - width="180" - /> - <!-- <el-table-column label="搴忓彿" fixed align="center" key="id" prop="id" /> --> - <el-table-column - label="濮撳悕" - width="100" - fixed - align="center" - key="sendname" - prop="sendname" - /> - <el-table-column - label="浠诲姟缁勭姸鎬�" - align="center" - key="sendstate" - prop="sendstate" - width="120" - > - <template slot-scope="scope"> - <div v-if="scope.row.sendstate == 1"> - <el-tag type="primary" :disable-transitions="false" - >琛ㄥ崟宸查鍙�</el-tag - > - </div> - <div v-if="scope.row.sendstate == 2"> - <el-tag type="primary" :disable-transitions="false" - >寰呴殢璁�</el-tag - > - </div> - <div v-if="scope.row.sendstate == 3"> - <el-tag type="success" :disable-transitions="false" - >琛ㄥ崟宸插彂閫�</el-tag - > - </div> - <div v-if="scope.row.sendstate == 4"> - <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag> - </div> - <div v-if="scope.row.sendstate == 5"> - <el-tag type="danger" :disable-transitions="false" - >鍙戦�佸け璐�</el-tag - > - </div> - <div v-if="scope.row.sendstate == 6"> - <el-tag type="danger" :disable-transitions="false">宸插畬鎴�</el-tag> - </div> - </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="闅忚浜哄憳" - align="center" - key="updateBy" - prop="updateBy" - width="120" - /> - <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="200" - align="center" - key="longSendTime" - prop="longSendTime" - > - <template slot-scope="scope"> - <span>{{ formatTime(scope.row.longSendTime) }}</span> - </template></el-table-column - > - <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="璐d换鎶ゅ+" - 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" - 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="icdName" - prop="icdName" - 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="浠诲姟缁勭粨鏋滆鏄�" - fixed="right" - width="120" - align="center" - key="remark" - prop="remark" - > - <template slot-scope="scope" v-if="scope.row.remark"> - <el-tag - type="success" - 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> - </template> - </el-table-column> - <el-table-column - label="鎿嶄綔" - fixed="right" - align="center" - width="200" - 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" - @click="followupvisit(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-bb" - ><i class="el-icon-s-promotion"></i></span - ></el-button> - </el-tooltip> --> - <!-- <el-tooltip - 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-delete"></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 - > - </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="title" - :visible.sync="addalteropen" - width="700px" - append-to-body - > - <el-form ref="form" :model="form" label-width="100px"> - <el-row :gutter="20"> - <el-col :span="12" - ><el-form-item label="浠诲姟缁勫悕绉�"> - <el-input v-model="form.name"></el-input> </el-form-item - ></el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24" - ><el-form-item label="鎵�灞炵瀹�"> - <el-select v-model="form.region" placeholder="璇烽�夋嫨绉戝"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> </el-form-item></el-col - ></el-row> - <el-row :gutter="20"> - <el-col :span="24" - ><el-form-item label="闅忚绫诲瀷"> - <el-select v-model="form.region" placeholder="璇烽�夋嫨闅忚绫诲瀷"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> </el-form-item - ></el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="鏈嶅姟妯″潡"> - <el-select v-model="form.region" placeholder="璇烽�夋嫨妯″潡"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="褰卞儚闅忚瑕佹眰"> - <el-input type="textarea" v-model="form.desc"></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 { - listUser, - getUser, - delUser, - addUser, - updateUser, - resetUserPwd, - changeUserStatus, -} from "@/api/system/user"; -import { getTaskservelist } from "@/api/AiCentre/index"; -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: [], - // 宀椾綅閫夐」 - postOptions: [], - ruleForm: { - type: [], - }, - sourcetype: [ - { - value: 1, - label: "绉戝", - children: [], - }, - { - value: 2, - label: "鐥呭尯", - children: [], - }, - { - value: 3, - label: "鍏ㄩ儴", - }, - ], - dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」 - inputVisible: false, - inputValue: "", - previewVisible: false, //褰卞儚闅忚棰勮寮规 - radio: "", - radios: [], - previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷 - total: 0, // 鎬绘潯鏁� - ImportQuantity: 999, //瀵煎奖鍍忛殢璁挎暟閲� - //棰勮褰卞儚闅忚淇℃伅 - previewvalue: { - username: "杩欎釜鍖荤敓瀵逛綘鎬庝箞鏍�", - }, - value: [], - list: [], - source: [ - { - value: 0, - label: "鎵�灞炴偅鑰�", - }, - { - value: 1, - label: "绉戝鎮h��", - }, - { - value: 2, - label: "鐥呭尯鎮h��", - }, - ], - loading: false, - cardlist: [ - { - name: "鍏ㄩ儴鏈嶅姟", - value: 0, - }, - { - name: "搴旈殢璁�", - value: 0, - }, - { - name: "涓嶆墽琛�", - value: 0, - }, - { - name: "寮傚父", - value: 0, - }, - { - name: "鍙戦�佸け璐�", - value: 0, - }, - { - name: "琛ㄥ崟宸查鍙�", - value: 0, - }, - { - name: "琛ㄥ崟宸插彂閫�", - value: 0, - }, - ], - pickerOptions: { - disabledDate(time) { - return time.getTime() > Date.now(); - }, - shortcuts: [ - { - text: "浠婂ぉ", - onClick(picker) { - picker.$emit("pick", new Date()); - }, - }, - { - text: "鏄ㄥぉ", - onClick(picker) { - const date = new Date(); - date.setTime(date.getTime() - 3600 * 1000 * 24); - picker.$emit("pick", date); - }, - }, - { - text: "涓�鍛ㄥ墠", - onClick(picker) { - const date = new Date(); - date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); - picker.$emit("pick", date); - }, - }, - ], - }, - // 琛ㄥ崟鍙傛暟 - form: { - phonenumber: "", - totagid: "", - types: "", - nickName: "", - qystatus: "", - btstatus: "", - }, - // 鏌ヨ鍙傛暟 - topqueryParams: { - pageNum: 1, - pageSize: 10, - serviceType: 2, - sendstate:2, - searchscope: 2, - scopetype: [], - leaveldeptcodes: [], - leavehospitaldistrictcodes: [], - }, - propss: { multiple: true }, - options: [], - - topicoptions: [ - { - value: 1, - label: "琛ㄥ崟宸查鍙�", - }, - { - value: 2, - label: "寰呴殢璁�", - }, - { - value: 3, - label: "琛ㄥ崟宸插彂閫�", - }, - { - value: 4, - label: "涓嶆墽琛�", - }, - { - value: 5, - label: "鍙戦�佸け璐�", - }, - { - value: 6, - label: "宸插畬鎴�", - }, - ], - topicoptionsyj: [ - { - value: 1, - label: "寮傚父", - }, - { - value: 0, - label: "姝e父", - }, - ], - serviceState: [], - checkboxlist: [], - // 琛ㄥ崟鏍¢獙 - rules: {}, - }; - }, - watch: {}, - created() { - this.serviceState = store.getters.serviceState; - this.checkboxlist = store.getters.checkboxlist; - 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, - }; - }); - this.getList(); - this.getConfigKey("sys.user.initPassword").then((response) => { - this.initPassword = response.msg; - }); - }, - activated() { - this.getList(); - }, - methods: { - /** 鏌ヨ褰卞儚闅忚鏈嶅姟鍒楄〃 */ - getList() { - if (this.topqueryParams.searchscope == 1) { - this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( - (obj) => obj.deptCode - ); - this.topqueryParams.leavehospitaldistrictcodes = null; - } else if (this.topqueryParams.searchscope == 2) { - this.topqueryParams.leavehospitaldistrictcodes = - store.getters.belongWards.map((obj) => obj.districtCode); - this.topqueryParams.leaveldeptcodes = null; - } else { - this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( - (obj) => obj.deptCode - ); - this.topqueryParams.leavehospitaldistrictcodes = - store.getters.belongWards.map((obj) => obj.districtCode); - } - 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.cardlist[0].value = - Number(response.rows[0].wzx) + Number(response.rows[0].ysf); - this.cardlist[1].value = response.rows[0].ysf; - this.cardlist[2].value = response.rows[0].wzx; - this.cardlist[3].value = response.rows[0].yc; - this.cardlist[4].value = response.rows[0].fssb; - this.cardlist[5].value = response.rows[0].blq; - this.cardlist[6].value = response.rows[0].yfs; - this.userList.forEach((item) => { - if (item.endtime) { - item.endDay = this.daysBetween(item.endtime); - } - const idArray = item.preachform.split(","); - item.preachform = idArray.map((value) => { - // 鏌ユ壘id瀵瑰簲鐨勫璞� - const item = this.checkboxlist.find((item) => item.value == value); - // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null - return item ? item.label : null; - }); - }); - this.total = response.total; - this.loading = false; - }); - }, - // 鏌ョ湅褰卞儚闅忚璇︽儏 - 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"; - }); - }, - // 鍙栨秷鎸夐挳 - cancel() { - this.addalteropen = false; - this.reset(); - }, - // 鎮h�呰寖鍥村鐞� - 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; - } - }, - // 琛ㄥ崟閲嶇疆 - 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() { - if (this.topqueryParams.searchscope == 1) { - this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( - (obj) => obj.deptCode - ); - this.topqueryParams.leavehospitaldistrictcodes = null; - } else if (this.topqueryParams.searchscope == 2) { - this.topqueryParams.leavehospitaldistrictcodes = - store.getters.belongWards.map((obj) => obj.districtCode); - this.topqueryParams.leaveldeptcodes = null; - } else { - 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.getList(); - }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ - resetQuery() { - this.dateRange = []; - this.topqueryParams = { - pageNum: 1, - pageSize: 10, - serviceType: 2, - searchscope: 2, - sendstate:2, - }; - this.handleQuery(); - }, - // 澶氶�夋閫変腑鏁版嵁 - handleSelectionChange(selection) { - this.ids = selection.map((item) => item.userId); - this.single = selection.length != 1; - this.multiple = !selection.length; - }, - //鍒犻櫎閫夐」 - 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: 2, - }, - }); - }, - - /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */ - 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(() => {}); - }, - - /** 鎻愪氦鎸夐挳 */ - submitForm: function () { - this.$refs["form"].validate((valid) => { - if (valid) { - if (this.form.userId != undefined) { - updateUser(this.form).then((response) => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addUser(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } - } - }); - }, - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete(row) { - const userIds = row.userId || this.ids; - this.$modal - .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') - .then(function () { - return delUser(userIds); - }) - .then(() => { - this.getList(); - this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }) - .catch(() => {}); - }, - // 鍏ㄩ儴鍋滄 - AllStop() { - this.$modal - .confirm("鏄惁鍋滄鍏ㄩ儴浠诲姟缁勶紵") - .then(function () { - return console.log("鍋滄鎴愬姛"); - }) - .then(() => { - this.getList(); - this.$modal.msgWarning("鍋滄鎴愬姛"); - }) - .catch(() => {}); - }, - // 鍏ㄩ儴寮�濮� - AllStarted() { - this.$modal - .confirm("鏄惁寮�鍚叏閮ㄤ换鍔$粍锛�") - .then(function () { - return console.log("寮�鍚垚鍔�"); - }) - .then(() => { - this.getList(); - this.$modal.msgSuccess("寮�鍚垚鍔�"); - }) - .catch(() => {}); - }, - // 浠诲姟缁勯噸缃� - TaskReset() { - this.$modal - .confirm("鏄惁閲嶇疆閫変腑鐨勪换鍔$粍椤癸紵") - .then(function () { - return console.log("閫変腑鎴愬姛"); - }) - .then(() => { - this.getList(); - this.$modal.msgSuccess("閲嶇疆鎴愬姛"); - }) - .catch(() => {}); - }, - // 璁剧疆鍙戦�佹椂闂� - Sendtimesetting() { - this.modificationVisible = true; - }, - // 璺宠浆璇︽儏椤� - Seedetails(row) { - this.$router.push({ - path: "/followvisit/record/detailpage/", - query: { taskid: row.taskid, patid: row.patid, id: row.id }, - }); - }, - // 渚挎嵎鎸夐挳 - 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 ""; - }, - }, -}; -</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; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */ -} -.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: #dd302a; - 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; - } -} - -// 閫夐」瀛椾綋鏀惧ぇ -// ::v-deep.el-checkbox-group { -// span { -// font-size: 24px; -// } -// } -</style> diff --git a/src/views/patient/patient/behospitalized.vue b/src/views/patient/patient/behospitalized.vue index 1395d88..e6f8312 100644 --- a/src/views/patient/patient/behospitalized.vue +++ b/src/views/patient/patient/behospitalized.vue @@ -638,7 +638,7 @@ (obj) => obj.deptCode ); this.getList(); - this.listDept(); + // this.listDept(); this.gettabList(); }, methods: { diff --git a/src/views/patient/patient/hospital.vue b/src/views/patient/patient/hospital.vue index 09d0dde..de94d9e 100644 --- a/src/views/patient/patient/hospital.vue +++ b/src/views/patient/patient/hospital.vue @@ -45,6 +45,15 @@ @keyup.enter.native="handleQuery" /> </el-form-item> + <el-form-item label="绉戝鍚嶇О" prop="inhospno"> + <el-input + v-model="queryParams.deptname" + placeholder="璇疯緭鍏ョ瀹ゅ悕绉�" + clearable + style="width: 250px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> <el-form-item label="鎮h�呰寖鍥�" prop="status"> <el-cascader @@ -256,6 +265,13 @@ align="center" key="bedNo" prop="bedNo" + width="120" + /> + <el-table-column + label="缁忕鍖荤敓" + align="center" + key="managementDoctor" + prop="managementDoctor" width="120" /> <el-table-column @@ -615,7 +631,7 @@ (obj) => obj.deptCode ); this.getList(); - this.listDept(); + // this.listDept(); this.gettabList(); }, methods: { diff --git a/src/views/patient/patient/index.vue b/src/views/patient/patient/index.vue index b4d407a..18b054b 100644 --- a/src/views/patient/patient/index.vue +++ b/src/views/patient/patient/index.vue @@ -554,6 +554,17 @@ </el-form-item> </el-col> </el-row> + <el-row v-if="amendtag"> + <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 v-if="!amendtag"> <el-col :span="8"> <el-form-item label="姘戞棌" prop="name"> @@ -1272,8 +1283,8 @@ handleUpdate(row) { const userIds = row.id || this.ids; particularpatient(userIds).then((response) => { - console.log(response); this.form = response.data; + this.form.filterDrname = store.getters.nickName; }); this.amendtag = true; this.Labelchange = true; diff --git a/src/views/patient/patient/outpatient.vue b/src/views/patient/patient/outpatient.vue index d317a51..02b2368 100644 --- a/src/views/patient/patient/outpatient.vue +++ b/src/views/patient/patient/outpatient.vue @@ -20,6 +20,33 @@ @keyup.enter.native="handleQuery" /> </el-form-item> + <el-form-item label="璇婃柇" width="100" prop="name"> + <el-input + v-model="queryParams.diagname" + placeholder="璇疯緭鍏ヨ瘖鏂�" + clearable + style="width: 200px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="绉戝" width="100" prop="name"> + <el-input + v-model="queryParams.deptname" + placeholder="璇疯緭鍏ョ瀹ゅ悕绉�" + clearable + style="width: 200px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鍖荤敓" width="100" prop="name"> + <el-input + v-model="queryParams.drname" + placeholder="璇疯緭鍏ュ尰鐢熷鍚�" + clearable + style="width: 200px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> <el-form-item label="鐥呮鍙�" prop="outhospno"> <el-input v-model="queryParams.outhospno" @@ -39,18 +66,7 @@ @change="handleChange" ></el-cascader> </el-form-item> - <el-row> - <!-- <el-form-item label=" 灏辫瘖鏃ユ湡 " prop="admitdate"> - <el-date-picker - clearable - v-model="queryParams.admitdate" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨 灏辫瘖鏃ユ湡 " - > - </el-date-picker> - </el-form-item> --> - <el-form-item label="灏辫瘖鏃ユ湡"> + <el-form-item label="灏辫瘖鏃ユ湡"> <el-date-picker v-model="dateRange" style="width: 240px" @@ -70,6 +86,18 @@ > </el-date-picker> --> </el-form-item> + <el-row> + <!-- <el-form-item label=" 灏辫瘖鏃ユ湡 " prop="admitdate"> + <el-date-picker + clearable + v-model="queryParams.admitdate" + type="date" + value-format="yyyy-MM-dd" + placeholder="璇烽�夋嫨 灏辫瘖鏃ユ湡 " + > + </el-date-picker> + </el-form-item> --> + <el-form-item> <el-button type="primary" diff --git a/src/views/patient/propaganda/Missioncreation.vue b/src/views/patient/propaganda/Missioncreation.vue index 2c5ed42..e272911 100644 --- a/src/views/patient/propaganda/Missioncreation.vue +++ b/src/views/patient/propaganda/Missioncreation.vue @@ -124,14 +124,33 @@ </el-select> </el-form-item ></el-col> </el-row> - <el-form-item label="鍙戦�佽缃細" v-if="currenttype != 2"> + <el-form-item label="鎵ц鍛ㄦ湡" prop="longTask"> + <el-radio-group v-model="form.longTask"> + <el-radio :label="0">鑷畾涔夊懆鏈�</el-radio> + <el-radio :label="1">闀挎湡浠诲姟</el-radio> + </el-radio-group> + </el-form-item> + <el-row :gutter="20" v-if="form.longTask"> + <el-col :span="8"> + <el-form-item label="鍛ㄦ湡鏃堕棿" prop="name"> + <el-input + v-model="form.sendDay" + placeholder="榛樿5澶╁悗" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="鎵ц璁剧疆" v-if="!form.longTask"> <el-radio-group v-model="form.sendType"> <el-radio :label="1">鏃堕棿娈靛彂閫�</el-radio> <el-radio :label="3">鏃堕棿鐐瑰彂閫�</el-radio> <el-radio :label="2">鍗冲埢鍙戦��</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="鍙戦�佹棩鏈燂細" v-if="form.sendType == 1"> + <el-form-item + label="鎵ц鏃ユ湡锛�" + v-if="form.sendType == 1 && !form.longTask" + > <el-date-picker v-model="daytime" @change="changeTimeday" @@ -144,7 +163,10 @@ </el-date-picker> </el-form-item> - <el-form-item label="鍙戦�佹椂闂寸偣锛�" v-if="form.sendType == 3"> + <el-form-item + label="鎵ц鏃堕棿鐐癸細" + v-if="form.sendType == 3 && !form.longTask" + > <div style="display: flex"> <div style="margin-right: 10px"> <el-date-picker @@ -159,7 +181,10 @@ </div> </el-form-item> - <el-form-item label="鍙戦�佹椂闂存锛�" v-if="form.sendType == 1"> + <el-form-item + label="鎵ц鏃堕棿娈碉細" + v-if="form.sendType == 1 && !form.longTask" + > <div style="display: flex"> <div style="margin-right: 10px"> <span style="font-size: 18px; margin-right: 10px">鈶�</span> @@ -390,7 +415,6 @@ icon="el-icon-upload2" size="medium" @click="handleImport" - >瀵煎叆</el-button > </el-col> @@ -514,11 +538,19 @@ <!-- 妯℃澘棰勮 --> <el-dialog title="妯℃澘棰勮" :visible.sync="previewtf" width="60%"> <div class="preview-left"> - <!-- 鍗曢�� --> - <div v-html="htmlRichText"></div> + <!-- 鏍规嵁妯℃澘绫诲瀷鏄剧ず涓嶅悓鍐呭 --> + <div v-if="currentTemplateType == '2'"> + <!-- 閫氱煡妯℃澘鍙樉绀虹函鏂囨湰鍐呭 --> + <div style="white-space: pre-wrap; font-size: 16px; line-height: 1.6"> + {{ plainTextContent }} + </div> + </div> + <div v-else> + <!-- 鍏朵粬绫诲瀷妯℃澘鏄剧ず瀵屾枃鏈唴瀹� --> + <div v-html="htmlRichText"></div> + </div> </div> <span slot="footer" class="dialog-footer"> - <!-- <el-button @click="previewGo">鍓嶅線妯℃澘璇︽儏淇敼</el-button> --> <el-button type="primary" @click="previewFn">纭浣跨敤</el-button> </span> </el-dialog> @@ -590,13 +622,16 @@ <el-table :data="uploadingData" style="width: 100%"> <el-table-column prop="serial" label="鎮h�卛d"> </el-table-column> - <el-table-column prop="name" label="濮撳悕" - width="100"> </el-table-column> - <el-table-column prop="sex" label="鎬у埆"width="100"> </el-table-column> - <el-table-column prop="idcardno" width="300" label="璇佷欢鍙风爜"> </el-table-column> + <el-table-column prop="name" label="濮撳悕" width="100"> + </el-table-column> + <el-table-column prop="sex" label="鎬у埆" width="100"> + </el-table-column> + <el-table-column prop="idcardno" width="300" label="璇佷欢鍙风爜"> + </el-table-column> <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column> - <el-table-column prop="telcode" width="200" label="鑱旂郴鏂瑰紡"> </el-table-column> - <el-table-column prop="createTime" width="200" label="鍒涘缓鏃ユ湡"> + <el-table-column prop="telcode" width="200" label="鑱旂郴鏂瑰紡"> + </el-table-column> + <el-table-column prop="createTime" width="200" label="鍒涘缓鏃ユ湡"> </el-table-column> </el-table> <!-- <pagination @@ -637,26 +672,20 @@ <el-form-item label="瀹f暀鍚嶇О"> <el-input v-model="topqueryParams.preachname"></el-input> </el-form-item> - <el-form-item label="瀹f暀鍒嗙被" prop="region"> + <el-form-item label="瀹f暀绫诲瀷" prop="region"> <el-select - v-model="topqueryParams.assortid" + v-model="topqueryParams.hetype" size="medium" filterable placeholder="璇烽�夋嫨鍒嗙被" > - <el-option-group - v-for="group in sortlist" - :key="group.id" - :label="group.assortname" + <el-option + v-for="item in heLibraryAssortList" + :key="item.id" + :label="item.value" + :value="item.id" > - <el-option - v-for="item in group.heLibraryAssortList" - :key="item.id" - :label="item.assortname" - :value="item.id" - > - </el-option> - </el-option-group> + </el-option> </el-select> </el-form-item> @@ -751,6 +780,8 @@ return { title: "瀹f暀鍐呭鍒楄〃", currenttype: 1, //1瀹f暀2闂ㄨ瘖3鍑洪櫌4澶嶈瘖5浣撴6闂嵎 + currentTemplateType: "", // 褰撳墠妯℃澘绫诲瀷 + plainTextContent: "", // 绾枃鏈唴瀹� id: "", // previewid: "", //浠诲姟妯℃澘浼犻�抜d libName: "", @@ -800,7 +831,7 @@ tableLabelxj: [ { label: "鍒涘缓浜�", width: "", prop: "createBy" }, { label: "瀹f暀鍚嶇О", width: "180", prop: "preachname" }, - { label: "瀹f暀鎻忚堪", width: "180", prop: "preachcontent" }, + { label: "瀹f暀鍐呭", width: "180", prop: "preachcontent" }, // { label: "瀹f暀褰㈠紡", width: "", prop: "playType" }, { label: "閫傜敤鏂瑰紡", width: "", prop: "suitway" }, { label: "淇敼鏃ユ湡", width: "", prop: "uploadTime" }, @@ -914,15 +945,23 @@ ], variableListTime: [], sortlist: [], + heLibraryAssortList: [ + { id: 1, value: "瀹f暀" }, + { id: 2, value: "閫氱煡" }, + ], tasktopic: null, //鏂板绫诲瀷 SelectPatientslist: [], form: { patTaskRelevances: [], sendType: 1, + longTask: 0, templatename: "", templateid: null, libtemplateid: null, - kcb: "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸"+localStorage.getItem("orgname")+"鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�", + kcb: + "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸" + + localStorage.getItem("orgname") + + "鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�", jsy: "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈瀹f暀鍐呭灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒", }, taskoptions: [ @@ -970,7 +1009,7 @@ this.belongDepts = store.getters.belongDepts; this.form.typename = this.$route.query.typename; this.form.serviceType = Number(this.$route.query.serviceType); - this.listDept(); + // this.listDept(); this.Acquisitiontype(); this.Getdetails(); this.getheLibraryAssort(); @@ -1087,7 +1126,7 @@ submitForm(formName) { this.form.preachform = this.checkList.join(","); // this.formatFn(1); - if (!this.form.patTaskRelevances[0]) { + if (!this.form.patTaskRelevances[0]&&this.form.longTask==0) { this.$modal.msgError("璇烽�夋嫨鐥呬汉"); return; } @@ -1105,7 +1144,7 @@ this.form.isoperation = 2; } else { this.form.isoperation = 1; - this.form.sendState=1; + this.form.sendState = 1; } if (!this.form.type) { this.form.type = this.$route.query.type; @@ -1133,28 +1172,33 @@ // ----------------------琛ㄦ牸瀛愮粍浠朵簨浠� // 閫夋嫨妯℃澘骞堕瑙� selectfn(row, type) { - // 妯℃澘鎯呭喌涓嬭幏鍙栨ā鏉夸俊鎭� this.libName = row.preachname; this.htmlRichText = null; this.libId = row.id; - console.log(row, "row"); this.Tasktemplate = row; + + // 璁剧疆褰撳墠妯℃澘绫诲瀷 + this.currentTemplateType = row.hetype || "1"; // 榛樿涓哄鏁欑被鍨� + this.previewtf = true; this.previewid = row.svyid; - console.log(this.questionList, "questionList"); - // this.Variablehandling(row.svyLibScripts, 1); - console.log(row.htmlRichText); - axios - .get(row.htmlRichText) - .then((response) => { - console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭 - this.htmlRichText = response.data; - this.htmlRichText = this.addStyleToImages(this.htmlRichText); - }) - .catch((error) => { - this.$modal.msgError("鑾峰彇瀵屾枃鏈け璐�"); - console.error("Failed to fetch file:", error); - }); + + if (this.currentTemplateType == "2") { + // 濡傛灉鏄�氱煡妯℃澘锛岃幏鍙栫函鏂囨湰鍐呭 + this.plainTextContent = row.preachcontent; + } else { + // 鍏朵粬绫诲瀷妯℃澘鑾峰彇瀵屾枃鏈唴瀹� + axios + .get(row.htmlRichText) + .then((response) => { + this.htmlRichText = response.data; + this.htmlRichText = this.addStyleToImages(this.htmlRichText); + }) + .catch((error) => { + this.$modal.msgError("鑾峰彇瀵屾枃鏈け璐�"); + console.error("Failed to fetch file:", error); + }); + } }, // 棰勮妯℃澘 previewfnm() { @@ -1165,16 +1209,24 @@ this.Tasktemplate = res.rows[0]; this.previewtf = true; this.previewid = res.rows[0].svyid; - axios - .get(res.rows[0].htmlRichText) - .then((response) => { - this.htmlRichText = response.data; - this.htmlRichText = this.addStyleToImages(this.htmlRichText); - }) - .catch((error) => { - this.$modal.msgError("鑾峰彇瀵屾枃鏈け璐�"); - console.error("Failed to fetch file:", error); - }); + this.currentTemplateType = res.rows[0].hetype || "1"; // 榛樿涓哄鏁欑被鍨� + + if (this.currentTemplateType == "2") { + // 濡傛灉鏄�氱煡妯℃澘锛岃幏鍙栫函鏂囨湰鍐呭 + this.plainTextContent = res.rows[0].preachcontent; + } else { + // 鍏朵粬绫诲瀷妯℃澘鑾峰彇瀵屾枃鏈唴瀹� + axios + .get(res.rows[0].htmlRichText) + .then((response) => { + this.htmlRichText = response.data; + this.htmlRichText = this.addStyleToImages(this.htmlRichText); + }) + .catch((error) => { + this.$modal.msgError("鑾峰彇瀵屾枃鏈け璐�"); + console.error("Failed to fetch file:", error); + }); + } }); }, addStyleToImages(html) { @@ -1257,7 +1309,7 @@ handleExport() {}, // 閫夋嫨鎮h�呰〃鏁版嵁 - handleSelectionChange(selection,type) { + handleSelectionChange(selection, type) { console.log("澶氶�夋偅鑰�"); this.SelectPatientslist = selection; this.multiple = !selection.length; @@ -1272,8 +1324,8 @@ item.sfzh = item.idcardno; } if (type) { - item.hospType=type - }else{ + item.hospType = type; + } else { item.hospType = this.patientqueryParams.allhosp; } this.overallCase.push(item); @@ -1351,7 +1403,10 @@ templateid: null, libtemplateid: null, serviceType: Number(this.$route.query.serviceType), - kcb: "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸"+localStorage.getItem("orgname")+"鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�", + kcb: + "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸" + + localStorage.getItem("orgname") + + "鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�", jsy: "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈鍥炶灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒", }; @@ -1584,9 +1639,9 @@ this.$refs.upload.submit(); this.dractive++; } else if (this.dractive == 2) { - this.handleSelectionChange(this.uploadingData,4); + this.handleSelectionChange(this.uploadingData, 4); this.upload.open = false; - this.dractive = 1 + this.dractive = 1; } }, @@ -1737,6 +1792,23 @@ } } } +/* 鏂板鏍峰紡 */ +.preview-left { + padding: 20px; + max-height: 70vh; + overflow-y: auto; +} + +/* 绾枃鏈唴瀹规牱寮� */ +.plain-text-content { + white-space: pre-wrap; + font-size: 16px; + line-height: 1.6; + padding: 15px; + background: #f9f9f9; + border-radius: 4px; +} + .download { text-align: center; .el-upload__tip { diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue index c9d61e8..a8e83be 100644 --- a/src/views/patient/propaganda/QuestionnaireTask.vue +++ b/src/views/patient/propaganda/QuestionnaireTask.vue @@ -438,7 +438,7 @@ </div> <!-- 浠诲姟璇︽儏 --> <div v-if="Editprogress == 2"> - <el-alert title="鍦ㄦ湰闃舵閫夋嫨瀹f暀鐥呬汉" type="success" effect="dark"> + <el-alert title="鍦ㄦ湰闃舵閫夋嫨闅忚鐥呬汉" type="success" effect="dark"> </el-alert> <div class="leftvlue-jbxx"> <div class="examine-jic"> @@ -550,6 +550,12 @@ <el-form-item label="鎮h�呰瘖鏂細"> <el-input v-model="patientqueryParams.leavediagname" + @keyup.enter.native="handleQuery" + ></el-input> + </el-form-item> + <el-form-item label="涓绘不鍖荤敓锛�"> + <el-input + v-model="patientqueryParams.drname" @keyup.enter.native="handleQuery" ></el-input> </el-form-item> @@ -1026,7 +1032,6 @@ patientqueryParams: { pageNum: 1, // pageSize: 10, - topica: 1, //0鍏ㄩ儴1绉戝2鐥呭尯 leavehospitaldistrictcodes: [], leaveldeptcodes: [], }, @@ -1109,11 +1114,11 @@ }, taskoptions: [ { - value: "1", + value: "4", label: "鍑洪櫌鐥呬汉", }, { - value: "4", + value: "1", label: "鍦ㄩ櫌鐥呬汉", }, { @@ -1687,11 +1692,7 @@ this.overallCase.forEach((item) => { this.allpids.push(item.patid); }); - if ( - this.patientqueryParams.allhosp == 1 || - (this.patientqueryParams.allhosp == 1 && - this.patientqueryParams.cry == 1) - ) { + if (this.patientqueryParams.allhosp == 4) { this.tableLabelhz = [ // { label: "鍏ラ櫌鏃ユ湡", width: "170", prop: "starttime" }, { label: "鍑洪櫌鏃ユ湡", width: "150", prop: "endtime" }, @@ -1706,7 +1707,7 @@ { label: "绉戝", width: "180", prop: "dept" }, { label: "鐥呭尯", width: "150", prop: "leavehospitaldistrictname" }, ]; - } else if (this.patientqueryParams.allhosp == 4) { + } else if (this.patientqueryParams.allhosp == 1) { this.tableLabelhz = [ { label: "鍏ラ櫌鏃ユ湡", width: "150", prop: "starttime" }, { label: "鎮h��", width: "", prop: "name" }, @@ -1728,21 +1729,16 @@ } // 鏉ユ簮鍒ゆ柇 - if (this.patientqueryParams.searchscope == 1) { - this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map( - (obj) => obj.deptCode - ); + if (this.patientqueryParams.allhosp == 4) { + this.patientqueryParams.hospitaldistrictcodes = []; + this.patientqueryParams.deptcodes = []; + } else if (this.patientqueryParams.allhosp == 1) { + this.patientqueryParams.deptcodes = + this.patientqueryParams.leaveldeptcodes; + this.patientqueryParams.hospitaldistrictcodes = + this.patientqueryParams.leavehospitaldistrictcodes; this.patientqueryParams.leavehospitaldistrictcodes = []; - } else if (this.patientqueryParams.searchscope == 2) { - this.patientqueryParams.leavehospitaldistrictcodes = - store.getters.belongWards.map((obj) => obj.districtCode); this.patientqueryParams.leaveldeptcodes = []; - } else { - this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map( - (obj) => obj.deptCode - ); - this.patientqueryParams.leavehospitaldistrictcodes = - store.getters.belongWards.map((obj) => obj.districtCode); } getTaskpatientQC(this.patientqueryParams).then((response) => { this.patientuserList = response.rows; @@ -1829,7 +1825,6 @@ getList() {}, handleQuery() { // 鑾峰彇澶栭儴鎮h�� - console.log(this.patientqueryParams.allhosp, "aaalll"); if (this.patientqueryParams.allhosp == 6) { this.Externallist(); @@ -1837,19 +1832,22 @@ return; } - if (this.patientqueryParams.topica == 0) { + if (this.patientqueryParams.searchscope == 1) { + this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map( + (obj) => obj.deptCode + ); + this.patientqueryParams.leavehospitaldistrictcodes = []; + } else if (this.patientqueryParams.searchscope == 2) { this.patientqueryParams.leavehospitaldistrictcodes = - store.getters.leavehospitaldistrictcodes; - this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes; - } else if (this.patientqueryParams.topica == 1) { - this.patientqueryParams.leavehospitaldistrictcodes = null; - this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes; - } else if (this.patientqueryParams.topica == 2) { + store.getters.belongWards.map((obj) => obj.districtCode); + this.patientqueryParams.leaveldeptcodes = []; + } else { + this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map( + (obj) => obj.deptCode + ); this.patientqueryParams.leavehospitaldistrictcodes = - store.getters.leavehospitaldistrictcodes; - this.patientqueryParams.leaveldeptcodes = null; + store.getters.belongWards.map((obj) => obj.districtCode); } - if ( !this.patientqueryParams.leavehospitaldistrictcodes || !this.patientqueryParams.leavehospitaldistrictcodes[0] diff --git a/src/views/patient/propaganda/particty copy.vue b/src/views/patient/propaganda/particty copy.vue index e10301d..0bfc80c 100644 --- a/src/views/patient/propaganda/particty copy.vue +++ b/src/views/patient/propaganda/particty copy.vue @@ -714,7 +714,7 @@ this.serviceType = Number(this.$route.query.serviceType); this.form.serviceType = Number(this.$route.query.serviceType); this.form.nhh = this.$route.query.nhh; - this.listDept(); + // this.listDept(); this.Acquisitiontype(); this.Getdetails(); }, diff --git a/src/views/patient/questionnaire/index.vue b/src/views/patient/questionnaire/index.vue index ba76b66..15a7093 100644 --- a/src/views/patient/questionnaire/index.vue +++ b/src/views/patient/questionnaire/index.vue @@ -739,10 +739,10 @@ name: "寰呴殢璁�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "琛ㄥ崟宸插彂閫�", @@ -883,7 +883,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; diff --git a/src/views/patient/shadow/index.vue b/src/views/patient/shadow/index.vue index 62b7cd5..a6f3b66 100644 --- a/src/views/patient/shadow/index.vue +++ b/src/views/patient/shadow/index.vue @@ -739,10 +739,10 @@ name: "寰呴殢璁�", value: 0, }, - { - name: "宸插彂閫�", - value: 0, - }, + // { + // name: "宸插彂閫�", + // value: 0, + // }, // { // name: "琛ㄥ崟宸插彂閫�", @@ -883,7 +883,7 @@ 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.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; diff --git a/src/views/patient/subsequent/index.vue b/src/views/patient/subsequent/index.vue index 641797b..1003a53 100644 --- a/src/views/patient/subsequent/index.vue +++ b/src/views/patient/subsequent/index.vue @@ -1141,7 +1141,7 @@ } } this.$router.push({ - path: "/followvisit/record/detailpage/", + path: "/followvisit/record/physical/", query: { taskid: row.taskid, patid: row.patid, diff --git a/src/views/repositoryai/general/particulars/index.vue b/src/views/repositoryai/general/particulars/index.vue index 48608e6..eb9de9c 100644 --- a/src/views/repositoryai/general/particulars/index.vue +++ b/src/views/repositoryai/general/particulars/index.vue @@ -573,7 +573,7 @@ padding: 10px; .leftvlue-jbxx { font-size: 24px; - border-left: 5px solid #5788fe; + border-left: 5px solid #5788FE; padding-left: 5px; margin: 15px 0; } @@ -594,7 +594,7 @@ } .leftvlue-jbxx { font-size: 24px; - border-left: 5px solid #5788fe; + border-left: 5px solid #5788FE; padding-left: 5px; margin: 15px 0; } diff --git a/src/views/repositoryai/templateku/configurat/measurement.vue b/src/views/repositoryai/templateku/configurat/measurement.vue index d9fc2a2..85a1685 100644 --- a/src/views/repositoryai/templateku/configurat/measurement.vue +++ b/src/views/repositoryai/templateku/configurat/measurement.vue @@ -155,7 +155,6 @@ this.timeout = this.$route.query.timeout; // 闃叉鐢ㄦ埛澶氭杩炵画鐐瑰嚮鍙戣捣璇锋眰锛屾墍浠ヨ鍏堝叧闂笂娆$殑ws璇锋眰銆� closeWebsocket(); - console.log(this.id); const obj = { type: "text", userId: this.userid, diff --git a/src/views/shortmessage/healthinformation/compilequer/index.vue b/src/views/shortmessage/healthinformation/compilequer/index.vue index f872f3b..8a6e6ef 100644 --- a/src/views/shortmessage/healthinformation/compilequer/index.vue +++ b/src/views/shortmessage/healthinformation/compilequer/index.vue @@ -1,5 +1,5 @@ <template> - <div class="Questionnairemanagement"> + <div class="NotificationManagement"> <!-- 宸︿晶鏍� --> <div class="sidecolumn"> <el-steps finish-status="success" :active="Editprogress" simple> @@ -10,13 +10,6 @@ > </template> </el-step> - <el-step> - <template slot="title"> - <span style="cursor: pointer" @click="Editprogress = 2" - >閫氱煡鍐呭</span - > - </template> - </el-step> </el-steps> </div> <!-- 鍙充晶鏁版嵁 --> @@ -24,6 +17,7 @@ <!-- 鍩烘湰淇℃伅 --> <div v-if="Editprogress == 1"> <div class="leftvlue-jbxx">鍩烘湰淇℃伅</div> + <el-divider></el-divider> <el-form :model="ruleForm" :rules="rules" @@ -58,20 +52,20 @@ <el-col :span="12"> </el-col> </el-row> <el-form-item label="閫氱煡鏍囬" prop="preachname"> - <div style="width: 30%"> + <div style="width: 60%"> <el-input v-model="ruleForm.preachname" placeholder="璇疯緭鍏ユ爣棰�" ></el-input> </div> </el-form-item> - <el-form-item label="閫氱煡鎻忚堪" prop="preachcontent"> - <div style="width: 60%"> + <el-form-item label="閫氱煡鍐呭" prop="preachcontent"> + <div style="width: 80%"> <el-input type="textarea" - :rows="2" + :rows="5" v-model="ruleForm.preachcontent" - placeholder="璇疯緭鍏ユ弿杩�" + placeholder="璇疯緭鍏ラ�氱煡鍐呭" ></el-input> </div> </el-form-item> @@ -109,21 +103,6 @@ </div> </el-form-item> - <el-form-item label="鏂囦欢" prop="sickness"> - <div style="width: 40%"> - <el-upload - class="upload-demo" - action="https://jsonplaceholder.typicode.com/posts/" - :on-change="handleChange" - :file-list="fileList" - > - <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> - <div slot="tip" class="el-upload__tip"> - 鍙兘涓婁紶jpg/png/xsl鏂囦欢锛屼笖涓嶈秴杩�50mb - </div> - </el-upload> - </div> - </el-form-item> <el-form-item label="鏍囩" prop="desc"> <div class="xinz-inf"> <el-tag @@ -142,6 +121,7 @@ @change="handleInputConfirm" filterable remote + allow-create reserve-keyword default-first-option :remote-method="remoteMethodtag" @@ -175,53 +155,23 @@ ></el-col> <el-col :span="9"> <el-form-item label="鍙敤鐘舵��" prop="region"> - <el-select - v-model="ruleForm.isavailable" - size="medium" - filterable - placeholder="璇烽�夋嫨鍒嗙被" - > - <el-option - class="ruleFormaa" - v-for="item in usable" - :key="item.value" - :label="item.label" - :value="item.value" + <el-radio-group v-model="ruleForm.isAvailable"> + <el-radio + v-for="(item, index) in usable" + :label="item.value" + >{{ item.label }}</el-radio > - </el-option> - </el-select> </el-form-item - ></el-col> + </el-radio-group> + </el-form-item></el-col + > </el-row> - <el-form-item label="閫氱煡鏂瑰紡" prop="region"> - <el-select - v-model="ruleForm.suitway" - size="medium" - multiple - filterable - placeholder="璇烽�夋嫨鍒嗙被" - > - <el-option - class="ruleFormaa" - v-for="item in mode" - :key="item.label" - :label="item.label" - :value="item.label" - > - </el-option> - </el-select> - </el-form-item> - <!-- <el-form-item label="閫傜敤鐤剧梾" prop="region"> - <el-button type="warning" @click="$refs.child.handleAddpatient()" - >娣诲姞鐤剧梾</el-button - > - </el-form-item> --> <el-form-item label="閫傜敤闄㈠尯" prop="region"> <el-select v-model="ruleForm.campus" size="medium" multiple filterable - placeholder="璇烽�夋嫨鍒嗙被" + placeholder="璇烽�夋嫨闄㈠尯" > <el-option class="ruleFormaa" @@ -248,105 +198,12 @@ </el-cascader> </el-form-item> <el-form-item> - <el-button type="success" @click="nextstep('ruleForm')" - >涓嬩竴姝�</el-button - > <el-button type="success" @click="Departmenttreatment('ruleForm')" >淇濆瓨</el-button > <el-button type="info" @click="closeFm('ruleForm')">鍏抽棴</el-button> </el-form-item> </el-form> - </div> - <!-- 閫氱煡鍐呭 --> - <div v-if="Editprogress == 2"> - <el-row :gutter="20"> - <el-col :span="4"><div class="leftvlue-jbxx">閫氱煡鍐呭</div></el-col> - </el-row> - - <div> - <el-form - :model="ruleForm" - :rules="rules" - ref="ruleForm" - label-width="100px" - class="demo-ruleForm" - > - <el-row gutter="20"> - <el-col :span="12"> - <el-form-item label="璧勬枡褰㈠紡" prop="region"> - <el-select - v-model="ruleForm.shape" - placeholder="璇烽�夋嫨鍐呭褰㈠紡" - > - <el-option - v-for="item in xjxsoptions" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <div> - <el-button @click="laststep('ruleForm')">涓婁竴姝�</el-button> - <el-button - type="success" - @click="Departmenttreatment('ruleForm')" - >淇濆瓨</el-button - > - <el-button - type="warning" - @click="Departmenttreatment('ruleForm')" - >鍙﹀瓨鏂扮増鏈�</el-button - > - <el-button type="info" @click="closeFm('ruleForm')" - >鍏抽棴</el-button - > - </div></el-col - > - </el-row> - </el-form> - </div> - <div> - <el-upload - class="upload-demo" - :action="uploadImgUrlword" - :on-success="uploadEditorSuccessword" - :on-error="uploadEditorErrorword" - :before-upload="beforeEditorUploadword" - :headers="headers" - > - <el-button size="small" type="primary">word鏂囦欢涓婁紶</el-button> - </el-upload> - <div id="quillEditorQiniu"> - <!-- 鍩轰簬elementUi鐨勪笂浼犵粍浠� el-upload begin--> - <el-upload - class="avatar-uploader" - :action="uploadImgUrl" - :accept="'image/*,video/*'" - :show-file-list="false" - :on-success="uploadEditorSuccess" - :on-error="uploadEditorError" - :before-upload="beforeEditorUpload" - :headers="headers" - > - </el-upload> - <!-- 鍩轰簬elementUi鐨勪笂浼犵粍浠� el-upload end--> - <quill-editor - class="editor" - v-model="content" - ref="customQuillEditor" - :options="editorOption" - @blur="onEditorBlur" - @focus="onEditorFocus" - @change="onEditorChange" - > - </quill-editor> - </div> - </div> </div> </div> <!-- 娣诲姞閫傜敤鐤剧梾绐楀彛 --> @@ -361,9 +218,7 @@ </template> <script> -import { quillEditor } from "vue-quill-editor"; import axios from "axios"; - import { getheLibraryAssort, delheLibraryAssort, @@ -379,115 +234,33 @@ illnesslistget, getillness, } from "@/api/AiCentre/index"; -import OptionalForm from "@/components/OptionalForm"; //姝e垯缁勪欢 - +import OptionalForm from "@/components/OptionalForm"; import { listDept } from "@/api/system/dept"; -// import * as Quill from "quill"; -import Quill from "quill"; import { listtag } from "@/api/system/label"; import store from "@/store"; - -// 杩欓噷寮曞叆淇敼杩囩殑video妯″潡骞舵敞鍐� -import Video from "./video"; -Quill.register(Video, true); -//鑾峰彇鐧诲綍token锛屽紩鍏ユ枃浠讹紝濡傛灉鍙槸绠�鍗曟祴璇曪紝娌℃湁涓婁紶鏂囦欢鏄惁鐧诲綍鐨勯檺鍒剁殑璇濓紝 -//杩欎釜token鍙互涓嶇敤鑾峰彇锛屾枃浠跺彲浠ヤ笉寮曞叆锛屾妸涓婇潰瀵瑰簲鐨勪笂浼犳枃浠舵惡甯﹁姹傚ご :headers="headers" 杩欎釜浠g爜鍒犳帀鍗冲彲 import { getToken } from "@/utils/auth"; -const toolbarOptions = [ - ["bold", "italic", "underline", "strike"], // toggled buttons - ["blockquote", "code-block"], - - [{ header: 1 }, { header: 2 }], // custom button values - [{ list: "ordered" }, { list: "bullet" }], - [{ script: "sub" }, { script: "super" }], // superscript/subscript - [{ indent: "-1" }, { indent: "+1" }], // outdent/indent - [{ direction: "rtl" }], // text direction - - [{ size: ["small", false, "large", "huge"] }], // custom dropdown - [{ header: [1, 2, 3, 4, 5, 6, false] }], - - [{ color: [] }, { background: [] }], // dropdown with defaults from theme - [{ font: [] }], - [{ align: [] }], - ["link", "image", "video"], - ["clean"], // remove formatting button -]; export default { + name: "NotificationManagement", components: { OptionalForm }, data() { return { headers: { Authorization: "Bearer " + getToken(), }, - uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", - uploadImgUrlword: process.env.VUE_APP_BASE_API + "/common/uploadShow", - uploadUrlPath: "娌℃湁鏂囦欢涓婁紶", - quillUpdateImg: false, - fileList: [ - { - name: "food.jpeg", - url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", - }, - { - name: "food2.jpeg", - url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", - }, - ], - content: "", //鏈�缁堜繚瀛樼殑鍐呭 - fileName: "", //鏂囦欢鍚� dynamicTags: [], inputVisible: false, illnessVisible: false, - dialogVisiblepatient: false, //閫傜敤鐤剧梾绐楀彛 + dialogVisiblepatient: false, inputValue: "", - // 瀵屾枃鏈� - editorOption: { - placeholder: "浣犳兂璇翠粈涔堬紵", - modules: { - imageResize: { - displayStyles: { - backgroundColor: "black", - border: "none", - color: "white", - }, - modules: ["Resize", "DisplaySize", "Toolbar"], - }, - toolbar: { - container: toolbarOptions, // 宸ュ叿鏍� - handlers: { - image: function (value) { - if (value) { - document - .querySelector("#quillEditorQiniu .avatar-uploader input") - .click(); - } else { - this.quill.format("image", false); - } - }, - video: function (value) { - if (value) { - document - .querySelector("#quillEditorQiniu .avatar-uploader input") - .click(); - } else { - this.quill.format("video", false); - } - }, - }, - }, - }, - }, - - sidecolumnrabs: "left", //鏂瑰悜 - Editprogress: 1, //缂栬緫杩涘害 - currentVersion: "1.2.3", //褰撳墠鐗堟湰 - loading: false, // 閬僵灞� - drawer: false, //鎺у埗灞曞紑 - radio: "false", //鍗曢�夐閫変腑 - radios: [], //澶氶�夐閫変腑 - radioas: "", //濉┖棰樼瓟妗� - // 鎬绘潯鏁� + sidecolumnrabs: "left", + Editprogress: 1, + currentVersion: "1.2.3", + loading: false, + drawer: false, + radio: "false", + radios: [], + radioas: "", total: 1, hetype: "", id: null, @@ -513,42 +286,24 @@ deptList: [], tempDetpRelevanceslist: [], props: { multiple: true, value: "deptId", label: "deptName" }, - xjxsoptions: [ - { - value: "1", - label: "鍥炬枃", - }, - { - value: "2", - label: "瑙嗛", - }, - { - value: "3", - label: "闊抽", - }, - ], - valssu: [ - { - idd: 1, - wssd: "浣犳渶杩戞�庝箞鏍�", - sdadd: ["sss", "ssccss", "ssaas", "ss"], - }, - ], - addvalue: "娣诲姞棰樼洰", - variablelist: [ { variatename: "濮撳悕", variate: "${name}", default: 1 }, { variatename: "鐢佃瘽", variate: "${phone}", default: 1 }, { variatename: "鐥呮儏", variate: "${illness}", default: 1 }, ], - // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, }, }; }, - + activated() { + if (this.id != this.$route.query.id) { + this.gettabList(); + this.getList(); + this.illnessUpdate(); + } + }, created() { this.gettabList(); this.getList(); @@ -559,18 +314,7 @@ this.precedencetype = store.getters.precedencetype; this.courtyardlist = store.getters.courtyardlist; }, - watch: { - content(newVal, oldVal) { - //this.$emit('input', newVal); - console.log(newVal, "A"); - console.log(oldVal, "B"); - }, - }, - methods: { - processElement(element) { - return { ...element, isoperation: null }; - }, // 鑾峰彇椤甸潰鏁版嵁 getList() { this.loading = true; @@ -579,16 +323,13 @@ if (this.id) { getlibraryinfo({ id: this.id }).then((res) => { this.ruleForm = res.data[0]; - this.ruleForm.campus = this.ruleForm.campus.split(","); + if (this.ruleForm.campus) + this.ruleForm.campus = this.ruleForm.campus.split(","); this.dynamicTags = res.data[0].heLibraryTagList.map( this.processElement ); - this.Getmissioncontent(this.ruleForm.richText); if (this.ruleForm.deptNames) { this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames); - } - if (this.ruleForm.suitway) { - this.ruleForm.suitway = this.ruleForm.suitway.split(","); } this.variablelist = this.ruleForm.otherdata ? JSON.parse(this.ruleForm.otherdata) @@ -598,51 +339,46 @@ // 閫氱煡鍒嗙被 getheLibraryAssort({ hetype: 2 }).then((res) => { this.sortlist = res.rows; - console.log(this.sortlist); }); // 閮ㄩ棬 listDept(this.queryParams).then((response) => { this.deptList = this.handleTree(response.data, "deptId"); }); - this.loading = false; }, - + processElement(element) { + return { ...element, isoperation: null }; + }, submitForm(formName) { let tgs = []; this.dynamicTags.forEach((item) => { tgs.push(item.tagname); }); - this.ruleForm.campus = this.ruleForm.campus.join(","); + if (this.ruleForm.campus) { + this.ruleForm.campus = this.ruleForm.campus.join(","); + } this.ruleForm.labelInfo = tgs.length != 0 ? tgs.join(", ") : ""; this.ruleForm.otherdata = JSON.stringify(this.variablelist); - this.ruleForm.hetype = 2; - console.log(22); - this.ruleForm.suitway = - this.ruleForm.suitway.length != 0 - ? this.ruleForm.suitway.join(",") - : ""; + this.ruleForm.hetype = 2; // 閫氱煡绫诲瀷 - addrichText({ - content: this.content, - fileName: this.fileName ? this.fileName : "娴嬭瘯.html", - }).then((res) => { - this.ruleForm.richText = res.msg; - if (this.id) { - this.ruleForm.isoperation = 2; - compilelibrary(this.ruleForm).then((res) => { + if (this.id) { + this.ruleForm.isoperation = 2; + compilelibrary(this.ruleForm).then((res) => { + if (res.code == 200) { this.$modal.msgSuccess("缂栬緫鎴愬姛"); this.confirmillness(); this.$router.go(-1); - }); - } else { - this.ruleForm.isoperation = 1; - compilelibrary(this.ruleForm).then((res) => { + } + }); + } else { + this.ruleForm.isoperation = 1; + compilelibrary(this.ruleForm).then((res) => { + if (res.code == 200) { this.$modal.msgSuccess("鏂板鎴愬姛"); this.confirmillness(res.data); this.$router.go(-1); - }); - } - }); + } + }); + } }, // 淇濆瓨鐤剧梾 confirmillness(guid) { @@ -650,7 +386,6 @@ if (guid) { item.outid = guid; } else { - console.log(this.ruleForm); item.outid = this.ruleForm.id; } item.icd10name = item.icdname; @@ -662,20 +397,6 @@ }); this.illnessVisible = false; this.$modal.msgSuccess("缂栬緫鎴愬姛"); - }, - getFileNameFromPath(path) { - const parts = path.split("/"); - return parts[parts.length - 1]; - }, - // 涓嬩竴姝� - nextstep() { - if (this.Editprogress <= 1) { - return this.Editprogress++; - } - }, - // 涓婁竴姝� - laststep() { - this.Editprogress = this.Editprogress - 1; }, // 鍏抽棴 closeFm() { @@ -707,7 +428,6 @@ ); if (!condition) { listDept({ deptId: item }).then((res) => { - console.log("dept"); res.data[0].type = 2; this.ruleForm.tempDetpRelevances.push(res.data[0]); }); @@ -724,12 +444,7 @@ setTimeout(() => { this.submitForm(); }, 1000); - // this.submitForm(); }, - // 淇濆瓨棰樼洰淇℃伅 - Saveproblem() {}, - /** 鏌ヨ棰樼洰鍒楄〃 */ - // 鏂板鍙橀噺 addvariable() { this.variablelist.push({ @@ -741,16 +456,12 @@ delvariable(item) { const index = this.variablelist.indexOf(item); if (index !== -1) { - this.variablelist.splice(index, 1); // 浠庣储寮曚綅缃垹闄や竴涓厓绱� + this.variablelist.splice(index, 1); } else { console.log("鏈壘鍒拌瀵硅薄"); } }, - // 鎺у埗鏂囦欢 - handleChange(file, fileList) { - this.fileList = fileList.slice(-3); - }, - // 鏍囩----------------- + // 鏍囩鐩稿叧鏂规硶 gettabList() { const tagqueryParams = { pageNum: 1, @@ -762,11 +473,9 @@ }); }, handleClosetag(tag) { - console.log(tag); const lindex = this.ruleForm.heLibraryTagList.findIndex( (item) => item.tagname == tag.tagname ); - console.log(lindex); this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); this.ruleForm.heLibraryTagList[lindex].isoperation = 3; }, @@ -812,7 +521,7 @@ showInput() { this.inputVisible = true; }, - // 鐤剧梾----------------------- + // 鐤剧梾鐩稿叧鏂规硶 illnessUpdate() { if (this.id) { getillness({ outid: this.$route.query.id, type: 6 }).then((res) => { @@ -823,9 +532,6 @@ }); } }, - - // -------------------------- - // 棰勮妯℃澘 PreviewTemplate() { this.drawer = true; @@ -833,129 +539,12 @@ resetForm(formName) { this.$refs[formName].resetFields(); }, - - //涓婁紶鍥剧墖涔嬪墠async - beforeEditorUpload(res, file) { - //鏄剧ず涓婁紶鍔ㄧ敾 - this.quillUpdateImg = true; - // const res1 = await uploadImage() - // console.log(res1,'====='); - // this.$emit('before',res, file) - console.log(res); - console.log(file); - }, - // 涓婁紶鍥剧墖鎴愬姛 - uploadEditorSuccess(res, file) { - console.log("涓婁紶鎴愬姛"); - // this.$emit('upload',res, file) - console.log(res, file); - //鎷兼帴鍑轰笂浼犵殑鍥剧墖鍦ㄦ湇鍔″櫒鐨勫畬鏁村湴鍧� - let imgUrl = res.url; - let type = imgUrl.substring(imgUrl.lastIndexOf(".") + 1); - console.log(type); - // 鑾峰彇瀵屾枃鏈粍浠跺疄渚� - let quill = this.$refs.customQuillEditor.quill; - // 鑾峰彇鍏夋爣鎵�鍦ㄤ綅缃� - let length = quill.getSelection().index; - // 鎻掑叆鍥剧墖||瑙嗛 res.info涓烘湇鍔″櫒杩斿洖鐨勫浘鐗囧湴鍧� - if (type == "mp4" || type == "MP4") { - window.jsValue = imgUrl; - quill.insertEmbed(length, "video", imgUrl); - } else { - quill.insertEmbed(length, "image", imgUrl); - } - // 璋冩暣鍏夋爣鍒版渶鍚� - quill.setSelection(length + 1); - //鍙栨秷涓婁紶鍔ㄧ敾 - this.quillUpdateImg = false; - }, - // 澶卞幓鐒︾偣浜嬩欢 - onEditorBlur(e) { - console.log("onEditorBlur: ", e); - }, - // 鑾峰緱鐒︾偣浜嬩欢 - onEditorFocus(e) { - console.log("onEditorFocus: ", e); - }, - // 鍐呭鏀瑰彉浜嬩欢 - onEditorChange(e) { - console.log("onEditorChange: ", e); - }, - // 涓婁紶(鏂囦欢)鍥剧墖澶辫触 - uploadEditorError(res, file) { - console.log(res, "word"); - console.log(file, "word"); - //椤甸潰鎻愮ず - this.$message.error("涓婁紶鍥剧墖澶辫触"); - //鍙栨秷涓婁紶鍔ㄧ敾 - this.quillUpdateImg = false; - }, - //涓婁紶缁勪欢杩斿洖鐨勭粨鏋� - uploadResult: function (res) { - this.uploadUrlPath = res; - }, - // 涓婁紶(鏂囦欢)鍥剧墖澶辫触 - uploadEditorErrorword(res, file) { - console.log(res); - console.log(file); - //椤甸潰鎻愮ず - this.$message.error("涓婁紶鍥剧墖澶辫触"); - //鍙栨秷涓婁紶鍔ㄧ敾 - this.quillUpdateImg = false; - }, - //涓婁紶鍥剧墖涔嬪墠async - beforeEditorUploadword(res, file) { - //鏄剧ず涓婁紶鍔ㄧ敾 - this.quillUpdateImg = true; - // const res1 = await uploadImage() - // console.log(res1,'====='); - // this.$emit('before',res, file) - console.log(res); - console.log(file); - }, - // 涓婁紶鍥剧墖鎴愬姛 - uploadEditorSuccessword(res, file) { - console.log("涓婁紶鎴愬姛"); - const data = null; - console.log(res, file, "word"); - axios - .get(res.url) - .then((response) => { - console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭 - this.content = response.data; - this.texturl = res.url; - this.fileName = this.getFileNameFromPath(res.url); - }) - .catch((error) => { - console.error("Failed to fetch file:", error); - }); - }, - Getmissioncontent(url) { - axios - .get(url) - .then((response) => { - console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭 - this.content = response.data; - this.fileName = this.getFileNameFromPath(res.url); - }) - .catch((error) => { - console.error("Failed to fetch file:", error); - }); - }, }, }; </script> <style lang="scss" scoped> -.Questionnairemanagement { - // display: flex; -} .sidecolumn { - // width: 300px; - // min-height: 100vh; - // text-align: center; - // display: flex; - // margin-top: 20px; margin: 20px; margin-bottom: 0; padding: 20px; @@ -964,47 +553,34 @@ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); } + .leftvlue { - // display: flex; - // flex: 1; 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); - .mulsz { - font-size: 20px; - } + .leftvlue-jbxx { - margin-bottom: 50px; - font-size: 20px; - span { - position: absolute; - right: 80px; - } - } - .demo-cascader { - margin-right: 20px; - } - .PreviewTemplate { - color: #02a7f0; - cursor: pointer; - font-size: 20px; - margin: 0 20px; + font-size: 24px; + height: 30px; + border-left: 3px solid #41a1be; + padding-left: 3px; } } + .xinz-inf { font-size: 18px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - line-height: 48px; .el-tag + .el-tag { margin-left: 10px; } + .button-new-tag { margin-left: 10px; height: 32px; @@ -1012,176 +588,41 @@ padding-top: 0; padding-bottom: 0; } + .input-new-tag { width: 90px; margin-left: 10px; vertical-align: bottom; } } -.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); - .topic-dev { - margin-bottom: 25px; - font-size: 20px !important; - .dev-text { - margin-bottom: 10px; - } - } -} -.addtopic { - margin-top: 30px; -} -.presentation { - margin: 20px 0; - display: flex; - .presentation-left { - width: 50%; - height: 500px; - .button-textxg { - color: #024df0; - } - .button-textsc { - color: #f52727; - } - } - .presentation-right { - width: 50%; - height: 500px; - padding: 20px; - font-size: 18px; - border: 1px solid #909091; - span { - padding: 0 35px; - margin-right: 10px; - border-bottom: 1px solid #909091; - } - .headline { - font-size: 20px; - border-left: 3px solid #41a1be; - padding-left: 5px; - margin: 15px 0; - } - } -} -::v-deep .addtopic-input { - input { - background: #02a7f0; - color: #edf1f7; - width: 150px; - } -} -::v-deep.el-step.is-vertical .el-step__title { + +::v-deep .el-step.is-vertical .el-step__title { font-size: 25px; } + ::v-deep.el-input--medium { font-size: 18px !important; } -::v-deep.ruleFormaa.el-select { - display: inline-block; - position: relative; - width: 700px; -} -.el-select__tags { + +::v-deep.el-select__tags { font-size: 20px; max-width: 888px !important; } + ::v-deep.el-radio__inner { width: 22px; height: 22px; } -// ::v-deep.topic-dev.el-radio__label { -// font-size: 24px; -// } + ::v-deep.el-radio-group { span { font-size: 24px; } } + ::v-deep.el-checkbox-group { span { font-size: 24px; } -} -.editor { - line-height: normal !important; - height: 600px; - margin-bottom: 80px; -} -.ql-snow .ql-tooltip[data-mode="link"]::before { - content: "璇疯緭鍏ラ摼鎺ュ湴鍧�:"; -} -.ql-snow .ql-tooltip.ql-editing a.ql-action::after { - border-right: 0px; - content: "淇濆瓨"; - padding-right: 0px; -} - -.ql-snow .ql-tooltip[data-mode="video"]::before { - content: "璇疯緭鍏ヨ棰戝湴鍧�:"; -} - -.ql-snow .ql-picker.ql-size .ql-picker-label::before, -.ql-snow .ql-picker.ql-size .ql-picker-item::before { - content: "14px"; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { - content: "10px"; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { - content: "18px"; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before { - content: "32px"; -} - -.ql-snow .ql-picker.ql-header .ql-picker-label::before, -.ql-snow .ql-picker.ql-header .ql-picker-item::before { - content: "鏂囨湰"; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - content: "鏍囬1"; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - content: "鏍囬2"; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - content: "鏍囬3"; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - content: "鏍囬4"; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - content: "鏍囬5"; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - content: "鏍囬6"; -} - -.ql-snow .ql-picker.ql-font .ql-picker-label::before, -.ql-snow .ql-picker.ql-font .ql-picker-item::before { - content: "鏍囧噯瀛椾綋"; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before { - content: "琛嚎瀛椾綋"; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before { - content: "绛夊瀛椾綋"; } </style> diff --git a/src/views/shortmessage/healthinformation/index.vue b/src/views/shortmessage/healthinformation/index.vue index ee7d665..009fdf7 100644 --- a/src/views/shortmessage/healthinformation/index.vue +++ b/src/views/shortmessage/healthinformation/index.vue @@ -141,7 +141,6 @@ icon="el-icon-plus" size="medium" @click="handleAdd" - v-hasPermi="['system:user:add']" >鏂板</el-button > </el-col> -- Gitblit v1.9.3