From 54489da33478cf20648a25987e008b27e8403382 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期一, 09 六月 2025 16:34:33 +0800 Subject: [PATCH] 测试完成 --- src/views/sfstatistics/percentage/index.vue | 693 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 352 insertions(+), 341 deletions(-) diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue index 14a3057..8db9073 100644 --- a/src/views/sfstatistics/percentage/index.vue +++ b/src/views/sfstatistics/percentage/index.vue @@ -1,9 +1,9 @@ <template> <div class="Questionnairemanagement"> <!-- 宸︿晶鏍� --> - <div class="sidecolumn"> + <!-- <div class="sidecolumn"> <div class="sidecolumn-top"> - <div class="top-wj">鎮h�呮潵婧�</div> + <div class="top-wj">鎮h�呰寖鍥�</div> </div> <div class="bottom-fl"> @@ -19,10 +19,10 @@ <el-tab-pane label="浣撴" name="physical"></el-tab-pane> </el-tabs> </div> - </div> + </div> --> <!-- 鍙充晶鏁版嵁 --> <div class="leftvlue"> - <div class="leftvlue-top"> + <!-- <div class="leftvlue-top"> <el-tabs v-model="topactiveName" @tab-click="tophandleClick"> <el-tab-pane name="Local"> <span class="mulsz" slot="label">鎸夊嚭闄㈢梾鍖虹粺璁� </span> @@ -31,7 +31,7 @@ <span class="mulsz" slot="label">鎸夊嚭闄㈢瀹ょ粺璁� </span> </el-tab-pane> </el-tabs> - </div> + </div> --> <div class="leftvlue-bg"> <el-row :gutter="20"> <!--鏍囩鏁版嵁--> @@ -44,7 +44,7 @@ v-show="showSearch" label-width="98px" > - <el-form-item label="鍖婚櫌" prop="userName"> + <!-- <el-form-item label="鍖婚櫌" prop="userName"> <el-select v-model="queryParams.value1" placeholder="璇烽�夋嫨"> <el-option v-for="item in options" @@ -54,19 +54,54 @@ > </el-option> </el-select> - </el-form-item> - <el-form-item label="鍑洪櫌鐥呭尯" prop="userName"> - <el-select v-model="queryParams.value2" placeholder="璇烽�夋嫨"> + </el-form-item> --> + <el-form-item label="缁熻绫诲瀷" prop="userName"> + <el-select + v-model="queryParams.Statisticaltype" + placeholder="璇烽�夋嫨缁熻绫诲瀷" + > <el-option - v-for="item in options" + v-for="item in Statisticallist" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> + <el-select + v-if="queryParams.Statisticaltype == 1" + v-model="queryParams.leavehospitaldistrictCode" + size="medium" + multiple + filterable + placeholder="璇烽�夋嫨鐥呭尯" + > + <el-option + v-for="item in flatArray" + :key="item.deptCode" + :label="item.label" + :value="item.deptCode" + > + </el-option> + </el-select> + <el-select + v-else-if="queryParams.Statisticaltype == 2" + v-model="queryParams.deptCode" + size="medium" + multiple + filterable + placeholder="璇烽�夋嫨绉戝" + > + <el-option + v-for="item in flatArray" + :key="item.deptCode" + :label="item.label" + :value="item.deptCode" + > + </el-option> + </el-select> </el-form-item> - <el-form-item label="绠$悊鏂规" prop="userName"> + <!-- <el-form-item label="绠$悊鏂规" prop="userName"> <el-select v-model="queryParams.value3" placeholder="璇烽�夋嫨"> <el-option v-for="item in options" @@ -76,8 +111,8 @@ > </el-option> </el-select> - </el-form-item> - <el-form-item label="鍑洪櫌鏃ユ湡" prop="userName"> + </el-form-item> --> + <!-- <el-form-item label="鍑洪櫌鏃ユ湡" prop="userName"> <el-date-picker v-model="queryParams.valuetime1" align="right" @@ -86,14 +121,31 @@ :picker-options="pickerOptionsa" > </el-date-picker> - </el-form-item> - <el-form-item label="璁″垝闅忚鏃ユ湡" prop="userName"> + </el-form-item> --> + <el-select + v-model="queryParams.serviceType" + multiple + placeholder="璇烽�夋嫨" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + <el-form-item + label-width="200" + label="搴旈殢璁挎椂闂磋寖鍥�" + prop="userName" + > <el-date-picker - v-model="queryParams.valuetime2" - align="right" - type="date" - placeholder="閫夋嫨鏃ユ湡" - :picker-options="pickerOptions" + v-model="queryParams.dateRange" + type="daterange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" > </el-date-picker> </el-form-item> @@ -169,229 +221,174 @@ :border="true" @selection-change="handleSelectionChange" > - <el-table-column type="selection" width="50" align="center" /> <el-table-column - fixed - label="搴忓彿" - align="center" - key="tagid" - prop="tagid" - width="50" - /> - <el-table-column - fixed label="鍑洪櫌鐥呭尯" align="center" - key="tagname" - prop="tagname" - width="100" + key="leavehospitaldistrictname" + prop="leavehospitaldistrictname" :show-overflow-tooltip="true" /> <el-table-column - label="搴旈殢璁挎暟" + label="鍑洪櫌浜烘" align="center" - key="updateTime" - prop="updateTime" - > - <template slot-scope="scope"> - <span - >{{ scope.row.updateBy }} - <p>{{ scope.row.updateTime }}</p></span - > - </template> - </el-table-column> - - <el-table-column - label="闅忚瀹屾垚鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="闅忚瀹屾垚鐜�" - align="center" - key="isupload" - prop="isupload" - > - </el-table-column> - <el-table-column - label="AI澶栧懠娆℃暟" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="AI闅忚瀹屾垚鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="AI闅忚瀹屾垚鐜�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="寰俊鍙戦�佹鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="寰俊闅忚瀹屾垚鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="寰俊闅忚瀹屾垚鐜�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鐭俊鍙戦�佹鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鐭俊闅忚瀹屾垚鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鐭俊闅忚瀹屾垚鐜�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="浜哄伐闅忚娆℃暟" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="浜哄伐闅忚瀹屾垚鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="浜哄伐闅忚瀹屾垚鐜�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="澶辫鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="澶辫鐜�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="澶辫鐜�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="寮傚父鎬绘暟" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鎬诲紓甯哥巼" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鍥炲寮傚父鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鍥炲寮傚父鍙婃椂澶勭悊鏁�" - align="center" - key="tagdescription" - prop="tagdescription" - > - </el-table-column> - <el-table-column - label="鍥炲寮傚父鍙婃椂澶勭悊鐜�" - align="center" - key="tagdescription" - prop="tagdescription" + key="leavehospitaldistrictname" + prop="leavehospitaldistrictname" > </el-table-column> - <!-- <el-table-column - label="鎿嶄綔" + <el-table-column + label="鏃犻渶闅忚浜烘" align="center" - width="300" - class-name="small-padding fixed-width" + width="100" + key="NonFollowUp" + prop="NonFollowUp" > - <template slot-scope="scope"> - <el-button - size="medium" - type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-textxg" - ><i class="el-icon-edit"></i>淇敼</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="handleDelete(scope.row)" - v-hasPermi="['system:user:remove']" - ><span class="button-textsc" - ><i class="el-icon-delete"></i>鍒犻櫎</span - ></el-button - > - </template> - </el-table-column> --> + </el-table-column> + <el-table-column + label="搴旈殢璁夸汉娆�" + align="center" + width="100" + key="FollowUpNeeded" + prop="FollowUpNeeded" + > + </el-table-column> + <el-table-column align="center" label="棣栨鍑洪櫌闅忚"> + <el-table-column + label="搴旈殢璁�" + align="center" + key="needFollowUp" + prop="needFollowUp" + > + </el-table-column> + <el-table-column + label="寰呴殢璁�" + align="center" + key="PendingFollowUp" + prop="PendingFollowUp" + > + </el-table-column> + <el-table-column + label="闅忚鎴愬姛" + align="center" + key="FollowUpSuccess" + prop="FollowUpSuccess" + > + </el-table-column> + <el-table-column + label="闅忚澶辫触" + align="center" + key="FollowUpFail" + prop="FollowUpFail" + > + </el-table-column> + <el-table-column + label="闅忚鐜�" + align="center" + width="120" + key="FollowUpRate" + prop="FollowUpRate" + > + <template slot-scope="scope"> + <span + >{{ (Number(scope.row.FollowUpRate) * 100).toFixed(2) }}%</span + > + </template> + </el-table-column> + <el-table-column + label="浜哄伐" + align="center" + key="Manual" + prop="Manual" + > + </el-table-column> + <el-table-column + label="鐭俊" + align="center" + key="SMS" + prop="SMS" + > + </el-table-column> + <el-table-column + label="寰俊" + align="center" + key="WeChat" + prop="WeChat" + > + </el-table-column> + </el-table-column> + <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚"> + <el-table-column + label="搴旈殢璁�" + align="center" + key="needFollowUpAgain" + prop="needFollowUpAgain" + > + </el-table-column> + <el-table-column + label="寰呴殢璁�" + align="center" + key="PendingFollowUpAgain" + prop="PendingFollowUpAgain" + > + </el-table-column> + <el-table-column + label="闅忚鎴愬姛" + align="center" + key="FollowUpSuccessAgain" + prop="FollowUpSuccessAgain" + > + </el-table-column> + <el-table-column + label="闅忚澶辫触" + align="center" + key="FollowUpFailAgain" + prop="FollowUpFailAgain" + > + </el-table-column> + <el-table-column + label="闅忚鐜�" + align="center" + width="120" + key="FollowUpRateAgain" + prop="FollowUpRateAgain" + > + <template slot-scope="scope"> + <span + >{{ (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2) }}%</span + > + </template> + </el-table-column> + <el-table-column + label="浜哄伐" + align="center" + key="ManualAgain" + prop="ManualAgain" + > + </el-table-column> + <el-table-column + label="鐭俊" + align="center" + key="SMSAgain" + prop="SMSAgain" + > + </el-table-column> + <el-table-column + label="寰俊" + align="center" + key="WeChatAgain" + prop="WeChatAgain" + > + </el-table-column> + </el-table-column> </el-table> - <pagination + <!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" - /> + /> --> </el-col> </el-row> </div> @@ -412,9 +409,34 @@ listtag, tagclassifylist, } from "@/api/system/label"; +import { getSfStatistics, deptTreeSelect } from "@/api/system/user"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +const 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); + }, + }, +]; export default { name: "questionnaire", dicts: ["sys_normal_disable", "sys_user_sex"], @@ -436,6 +458,19 @@ idds: "", //鍒嗙被id // 鎬绘潯鏁� total: 0, + flatArray: [], + deptflatArray: [], + + Statisticallist: [ + { + label: "鐥呭尯缁熻", + value: 1, + }, + { + label: "绉戝缁熻", + value: 2, + }, + ], amendtag: false, //鏄惁淇敼绫诲埆 lstamendtag: false, //鏄惁淇敼鏍囩 scavisible: false, //鍒犻櫎寮规 @@ -474,89 +509,71 @@ goQRCodeVisible: false, //浜岀淮鐮佸脊妗� sidecolumnval: "", //绫诲埆鎼滅储 propss: { multiple: true }, - topqueryParams: {}, //瀵煎嚭绛涢�夋潯浠� + options: [ { value: 1, - label: "涓滃崡", + label: "鐩戞祴璇勪及", }, { value: 2, - label: "瑗垮寳", + label: "鍑洪櫌闅忚", }, { value: 3, - label: "浠ㄤ花浠�", + label: "闂ㄨ瘖闅忚", }, { value: 4, - label: "鍏椋掗", + label: "瀹f暀鍏虫��", + }, + { + value: 5, + label: "澶嶈瘖绠$悊", + }, + + { + value: 7, + label: "鎮h�呮姤鍛�", + }, + + { + value: 9, + label: "浣撴闅忚", + }, + + { + value: 11, + label: "褰卞儚闅忚", + }, + { + value: 12, + label: "蹇冪數闅忚", + }, + { + value: 13, + label: "涓撶梾闅忚", }, ], pickerOptions: { disabledDate(time) { return time.getTime() < Date.now() - 3600 * 1000 * 24; }, - 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); - }, - }, - ], + shortcuts: shortcuts, }, pickerOptionsa: { 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); - }, - }, - ], + shortcuts: shortcuts, }, // 鏌ヨ鏍囩鍒楄〃鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, - tagname: undefined, - tagdescription: undefined, + serviceType: [2], + dateRange: [], + Statisticaltype: 1, }, // 鍒椾俊鎭� columns: [ @@ -568,67 +585,21 @@ { key: 5, label: `鐘舵�乣, visible: true }, { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, ], - // 琛ㄥ崟鏍¢獙 - // rules: { - // userName: [ - // { required: true, message: "鏍囩鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, - // { - // min: 2, - // max: 20, - // message: "鏍囩鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", - // trigger: "blur", - // }, - // ], - // nickName: [ - // { required: true, message: "鏍囩鏄电О涓嶈兘涓虹┖", trigger: "blur" }, - // ], - // password: [ - // { required: true, message: "鏍囩瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, - // { - // min: 5, - // max: 20, - // message: "鏍囩瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", - // trigger: "blur", - // }, - // ], - // email: [ - // { - // type: "email", - // message: "璇疯緭鍏ユ纭殑閭鍦板潃", - // trigger: ["blur", "change"], - // }, - // ], - // phonenumber: [ - // { - // pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, - // message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", - // trigger: "blur", - // }, - // ], - // IDnumber: [ - // { - // pattern: - // /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, - // message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", - // trigger: "blur", - // }, - // ], - // }, }; }, watch: {}, created() { this.getList(); - this.gitclasify(); + this.getDeptTree(); }, methods: { /** 鏌ヨ鏍囩鍒楄〃 */ getList() { - listtag(this.addDateRange(this.queryParams)).then((response) => { + getSfStatistics(this.queryParams).then((response) => { console.log(response); - this.total = response.total; - this.userList = response.rows; + // this.total = response.total; + this.userList = response.data; }); }, /** 淇敼鏍囩 */ @@ -643,6 +614,36 @@ tagdescription: row.tagdescription, tagid: row.tagid, }; + }, + // 鑾峰彇绉戝鏍� + getDeptTree() { + // 绉戝鍒楄〃 + deptTreeSelect().then((response) => { + this.deptOptions = response.data; + console.log(this.deptOptions, " this.deptOptions"); + + this.flatArray = this.flattenArray(response.data); + console.log(this.flatArray, "this.flatArray"); + }); + }, + flattenArray(multiArray) { + let result = []; + + // 閫掑綊鍑芥暟锛岀敤浜庡皢澶氱骇鏁扮粍杞崲涓轰竴缁存暟缁勶紝鍙寘鍚渶搴曞眰鐨勫厓绱� + function flatten(element) { + // 濡傛灉褰撳墠鍏冪礌鏈夊瓙鍏冪礌锛岀户缁�掑綊 + if (element.children && element.children.length > 0) { + element.children.forEach((child) => flatten(child)); + } else { + // 鍏嬮殕鍏冪礌浠ラ伩鍏嶄慨鏀瑰師濮嬫暟鎹� + let item = JSON.parse(JSON.stringify(element)); + result.push(item); // 灏嗘渶搴曞眰鐨勫厓绱犳坊鍔犲埌缁撴灉鏁扮粍 + } + } + + // 浠庨《灞傚厓绱犲紑濮嬮�掑綊 + multiArray.forEach((element) => flatten(element)); + return result; // 杩斿洖鍙寘鍚渶搴曞眰鍏冪礌鐨勪竴缁存暟缁� }, addladeltag() { this.lstamendtagVisible = true; @@ -675,6 +676,16 @@ tagdescription: "", tagid: "", }; + }, + routerErr(row) { + console.log(row, "璺宠浆寮傚父"); + this.$router.push({ + path: "/followvisit/discharge", + query: { + errtype: 1, + leavehospitaldistrictcode: row.leavehospitaldistrictcode, + }, + }); }, // 琛ㄥ崟閲嶇疆 @@ -714,14 +725,17 @@ /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { this.queryParams.pageNum = 1; + console.log(); + this.queryParams.startTime = this.parseTime( + this.queryParams.dateRange[0] + ); + this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]); this.getList(); }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { - this.dateRange = []; - this.resetForm("queryForm"); - this.queryParams.tagname = ""; - this.$refs.tree.setCurrentKey(null); + this.queryParams.dateRange = []; + this.queryParams.leavehospitaldistrictcodes = []; this.handleQuery(); }, // 澶氶�夋閫変腑鏁版嵁 @@ -755,9 +769,9 @@ /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { this.download( - "base/tag/export", + "smartor/serviceSubtask/getSfStatisticsExport", { - ...this.topqueryParams, + ...this.queryParams, }, `user_${new Date().getTime()}.xlsx` ); @@ -767,9 +781,6 @@ </script> <style lang="scss" scoped> -.Questionnairemanagement { - display: flex; -} .sidecolumn { width: 180px; min-height: 100vh; @@ -849,9 +860,9 @@ .leftvlue { // display: flex; // flex: 1; - width: 80%; - margin-top: 20px; - // margin: 20px; + // width: 80%; + // margin-top: 20px; + margin: 20px; padding: 30px; background: #ffff; border: 1px solid #dcdfe6; -- Gitblit v1.9.3