| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-row :gutter="20"> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-col :span="24" :xs="24"> |
| | | <el-form |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="å§å" width="100" prop="name"> |
| | | <el-input |
| | | v-model="queryParams.patname" |
| | | 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.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" |
| | | placeholder="请è¾å
¥ç
æ¡å·" |
| | | clearable |
| | | style="width: 250px" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ£è
èå´" prop="status"> |
| | | <el-cascader |
| | | v-model="queryParams.scopetype" |
| | | placeholder="é»è®¤å
¨é¨" |
| | | :options="sourcetype" |
| | | :props="{ expandTrigger: 'hover' }" |
| | | @change="handleChange" |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="å°±è¯æ¥æ"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | <!-- <el-date-picker |
| | | v-model="dateRange" |
| | | type="datetimerange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | :default-time="['12:00:00']" |
| | | > |
| | | </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" |
| | | 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-row> |
| | | </el-form> |
| | | |
| | | <el-row :gutter="10" class="mb8"> |
| | | <!-- <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | @click="handleAdd" |
| | | v-hasPermi="['system:user:add']" |
| | | >æ°å¢</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"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | :disabled="multiple" |
| | | @click="handleBatchAddTask" |
| | | > |
| | | æ¹éåéå
¥é¢éç¥</el-button |
| | | > |
| | | </el-col> |
| | | <el-col :span="19"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="info" |
| | | plain |
| | | icon="el-icon-upload2" |
| | | size="medium" |
| | | @click="handleImport" |
| | | v-hasPermi="['system:user:import']" |
| | | >导å
¥</el-button |
| | | > |
| | | </div> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="medium" |
| | | @click="handleExport" |
| | | v-hasPermi="['system:user:export']" |
| | | >导åº</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <!-- <el-col :span="1.5"> </el-col> --> |
| | | </el-row> |
| | | |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="userList" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | | <!-- <el-table-column |
| | | label="åºå·" |
| | | fixed |
| | | align="center" |
| | | key="id" |
| | | prop="id" |
| | | /> --> |
| | | <el-table-column |
| | | label="å°±è¯æ¶é´" |
| | | align="center" |
| | | key="admitdate" |
| | | prop="admitdate" |
| | | width="160" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.admitdate) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="ç
æ¡å·" |
| | | align="center" |
| | | key="patno" |
| | | prop="patno" |
| | | /> --> |
| | | <el-table-column |
| | | label="ç
æ¡å·" |
| | | align="center" |
| | | key="outhospno" |
| | | prop="outhospno" |
| | | /> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="100" |
| | | align="center" |
| | | key="patname" |
| | | prop="patname" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | gettoken360( |
| | | scope.row.idcardno, |
| | | scope.row.drcode, |
| | | scope.row.drname |
| | | ) |
| | | " |
| | | ><span class="button-textsc">{{ |
| | | scope.row.patname |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ§å«" |
| | | width="100" |
| | | align="center" |
| | | key="sex" |
| | | prop="sex" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.sex == 1 ? "ç·" : "女" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å¹´é¾" |
| | | align="center" |
| | | key="age" |
| | | prop="age" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="èç³»çµè¯" |
| | | align="center" |
| | | key="telcode" |
| | | prop="telcode" |
| | | width="120" |
| | | /> |
| | | <!-- <el-table-column |
| | | label="æ£è
æ ç¾ï¼ç¼ºï¼" |
| | | align="center" |
| | | key="tagList" |
| | | prop="tagList" |
| | | width="160" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.tagList">{{ item }} </span> |
| | | </template> |
| | | </el-table-column> --> |
| | | |
| | | <el-table-column |
| | | label="è¯æ" |
| | | align="center" |
| | | key="diagname" |
| | | prop="diagname" |
| | | width="190" |
| | | /> |
| | | <!-- <el-table-column |
| | | label="主述" |
| | | align="center" |
| | | key="mainsuit" |
| | | prop="mainsuit" |
| | | width="120" |
| | | /> --> |
| | | <el-table-column |
| | | label="å°±è¯ç§å®¤" |
| | | align="center" |
| | | key="deptname" |
| | | prop="deptname" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="æ¥è¯å»ç" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | label="æä½" |
| | | fixed="right" |
| | | align="center" |
| | | width="160" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | $router.push({ |
| | | path: '/patient/patient/profile/', |
| | | query: { id: scope.row.patid }, |
| | | }) |
| | | " |
| | | v-hasPermi="['system:user:edit']" |
| | | ><span class="button-textsc" |
| | | ><i class="el-icon-zoom-in"></i>æ¥ç</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog |
| | | title="æ¹éæ·»å ä»»å¡" |
| | | :visible.sync="batchTaskVisible" |
| | | width="90%" |
| | | append-to-body |
| | | > |
| | | <el-row :gutter="20"> |
| | | <!-- 左侧ï¼é䏿£è
å表 --> |
| | | <el-col :span="12"> |
| | | <div class="batch-patient-section"> |
| | | <h4>é䏿£è
ï¼{{ selectedPatients.length }}人ï¼</h4> |
| | | <el-table |
| | | :data="selectedPatients" |
| | | border |
| | | style="width: 100%" |
| | | size="small" |
| | | > |
| | | <el-table-column prop="patname" label="å§å" width="100" /> |
| | | <el-table-column prop="sex" label="æ§å«" width="80"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.sex === 1 ? "ç·" : "女" }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å°±è¯æ¶é´" |
| | | align="center" |
| | | key="admitdate" |
| | | prop="admitdate" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.admitdate) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="outhospno" label="ç
æ¡å·" /> |
| | | <el-table-column prop="deptname" label="ç§å®¤" /> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | |
| | | <!-- å³ä¾§ï¼ä»»å¡å表 --> |
| | | <el-col :span="12"> |
| | | <div class="batch-task-section"> |
| | | <h4>ä»»å¡å表ï¼è¯·éæ©1个任å¡ï¼</h4> |
| | | <el-table |
| | | :data="taskList" |
| | | border |
| | | style="width: 100%" |
| | | size="small" |
| | | @current-change="handleTaskSelectionChange" |
| | | highlight-current-row |
| | | > |
| | | <el-table-column |
| | | label="ä»»å¡åç§°" |
| | | fixed |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="æå¡é¡¹ç®" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="å建人" |
| | | align="center" |
| | | key="createBy" |
| | | prop="createBy" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="å建æ¶é´" |
| | | sortable |
| | | align="center" |
| | | prop="createTime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <template #empty> |
| | | <div class="empty-message"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ£è
ç§å®¤æ å¹é
æå¡</span> |
| | | </div> |
| | | </template> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- åºé¨æé® --> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="batchTaskVisible = false">å æ¶</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :loading="batchLoading" |
| | | @click="submitBatchTask" |
| | | >å建任å¡</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | <!-- ç¨æ·å¯¼å
¥å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | :title="upload.title" |
| | | :visible.sync="upload.open" |
| | | width="70%" |
| | | append-to-body |
| | | > |
| | | <el-steps :active="dractive" simple> |
| | | <el-step title="ä¸ä¼ 导å
¥æä»¶" icon="el-icon-upload"></el-step> |
| | | <el-step title="导å
¥æ£æ¥" icon="el-icon-picture"></el-step> |
| | | <el-step title="导å
¥ç»æ" icon="el-icon-picture"></el-step> |
| | | </el-steps> |
| | | <!-- ä¸ä¼ 导å
¥æä»¶ --> |
| | | <div class="download" v-if="dractive == 1"> |
| | | <el-upload |
| | | class="upload-demo" |
| | | ref="upload" |
| | | :limit="1" |
| | | accept=".xlsx, .xls" |
| | | :headers="upload.headers" |
| | | :action="upload.url + '?updateSupport=' + upload.updateSupport" |
| | | :disabled="upload.isUploading" |
| | | :on-progress="handleFileUploadProgress" |
| | | :on-success="handleFileSuccess" |
| | | :auto-upload="false" |
| | | drag |
| | | > |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | <div class="el-upload__tip text-center" slot="tip"> |
| | | <div class="el-upload__tip" slot="tip"> |
| | | <el-checkbox v-model="upload.updateSupport" /> |
| | | æ¯å¦æ´æ°å·²ç»åå¨çç¨æ·æ°æ® |
| | | </div> |
| | | <span>ä»
å
许导å
¥xlsãxlsxæ ¼å¼æä»¶ã</span> |
| | | <el-link |
| | | type="primary" |
| | | :underline="false" |
| | | style="font-size: 24px; vertical-align: baseline" |
| | | @click="importTemplate" |
| | | >ä¸è½½æ¨¡æ¿</el-link |
| | | > |
| | | </div> |
| | | </el-upload> |
| | | </div> |
| | | |
| | | <!-- 导å
¥æ£æ¥ --> |
| | | <div class="uploading" v-else-if="dractive == 2"> |
| | | <el-table :data="uploadingData" style="width: 100%"> |
| | | <el-table-column prop="serial" 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="certificate" label="è¯ä»¶ç±»å"> |
| | | </el-table-column> |
| | | <el-table-column prop="certificatenum" label="è¯ä»¶å·ç "> |
| | | </el-table-column> |
| | | <el-table-column prop="goday" label="åºçæ¥æ"> </el-table-column> |
| | | <el-table-column prop="menum" label="æ¬äººèç³»æ¹å¼"> </el-table-column> |
| | | <el-table-column prop="younum" label="亲å±èç³»æ¹å¼"> |
| | | </el-table-column> |
| | | <el-table-column prop="tag" label="æ£è
æ ç¾"> </el-table-column> |
| | | <el-table-column prop="erry" label="é误åå "> </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="geterryList" |
| | | /> |
| | | </div> |
| | | <!-- 宿 --> |
| | | <div class="drexamine" v-else-if="dractive == 3"> |
| | | <img |
| | | src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg" |
| | | /> |
| | | <p>导å
¥æ£è
æåï¼</p> |
| | | <p>æ¬æ¬¡å
±è®¡å¯¼å
¥{{ ImportQuantity }}使£è
</p> |
| | | </div> |
| | | |
| | | <div slot="footer" class="dialog-footer" v-if="dractive == 3"> |
| | | <!-- <el-button type="primary" @click="submitFileForm">ä¸ä¸æ¥</el-button> --> |
| | | <el-button @click="submitclose">宿</el-button> |
| | | </div> |
| | | <div slot="footer" v-else> |
| | | <el-button type="primary" @click="submitFileForm">ä¸ä¸æ¥</el-button> |
| | | <el-button @click="submitclose">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { delUser } from "@/api/system/user"; |
| | | |
| | | import { |
| | | listPatouthosp, |
| | | getPatouthosp, |
| | | addPatouthosp, |
| | | updatePatouthosp, |
| | | delPatouthosp, |
| | | } from "@/api/smartor/patouthosp"; |
| | | import { particularpatient } from "@/api/patient/homepage"; |
| | | import { listtag } from "@/api/system/label"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | import { query360PatInfo, getTasklist, addSubtask } from "@/api/AiCentre/index"; |
| | | |
| | | import store from "@/store"; |
| | | import { type } from "jquery"; |
| | | |
| | | export default { |
| | | name: "Userhuanze", |
| | | dicts: ["sys_normal_disable", "sys_user_sex"], |
| | | components: { Treeselect }, |
| | | data() { |
| | | return { |
| | | // é®ç½©å± |
| | | loading: true, |
| | | // é䏿°ç» |
| | | ids: [], |
| | | // éå个ç¦ç¨ |
| | | single: true, |
| | | // éå¤ä¸ªç¦ç¨ |
| | | multiple: true, |
| | | // æ¾ç¤ºæç´¢æ¡ä»¶ |
| | | showSearch: true, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // ç¨æ·è¡¨æ ¼æ°æ® |
| | | userList: null, |
| | | // å¼¹åºå±æ é¢ |
| | | title: "", |
| | | // é¨é¨æ é项 |
| | | deptOptions: undefined, |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå± |
| | | open: false, |
| | | // é¨é¨åç§° |
| | | deptName: undefined, |
| | | // é»è®¤å¯ç |
| | | initPassword: undefined, |
| | | amendtag: false, //æ¯å¦ä¿®æ¹ |
| | | // æ¥æèå´ |
| | | dateRange: [], |
| | | paperstypes: [ |
| | | { papersname: "身份è¯" }, |
| | | { papersname: "æ¤ç
§" }, |
| | | { papersname: "ä¸å½æ¸¯æ¾³å±
æ°èº«ä»½è¯" }, |
| | | { papersname: "ä¸å½å°æ¹¾å±
æ°èº«ä»½è¯" }, |
| | | ], |
| | | // 表ååæ° |
| | | form: { |
| | | name: "", |
| | | age: "", |
| | | sex: "", |
| | | tagList: [], |
| | | idcardno: "", |
| | | telcode: "", |
| | | idcardtype: "", |
| | | relativetelcode: "", |
| | | }, |
| | | //导å
¥è¿åº¦ |
| | | dractive: 1, |
| | | // 导å
¥å±ç¤ºè¡¨å |
| | | uploadingData: {}, |
| | | total: 0, // æ»æ¡æ° |
| | | ImportQuantity: 999, //导å
¥æ£è
æ°é |
| | | Labelchange: false, //ä¿®æ¹æ°å¢å¼¹çª |
| | | propss: { multiple: true }, |
| | | optionstag: [], //æ ç¾å表 |
| | | batchTaskVisible: false, // å¼¹çªå¯è§æ§ |
| | | selectedPatients: [], // éä¸çæ£è
å表 |
| | | taskList: [], // ä»»å¡å表 |
| | | selectedTask: null, // éä¸çä»»å¡å表 |
| | | batchLoading: false, // æ¹éæäº¤å è½½ç¶æ |
| | | deptcode: "", |
| | | Patientrange: [ |
| | | { |
| | | name: "å
¨é¨", |
| | | id: 999, |
| | | }, |
| | | { |
| | | name: "å½åç§å®¤", |
| | | id: 1, |
| | | }, |
| | | ], |
| | | postData: { |
| | | XiaoXiTou: { |
| | | FaSongFCSJC: "ZJHES", |
| | | FaSongJGID: localStorage.getItem("orgid"), |
| | | FaSongJGMC: localStorage.getItem("orgname"), |
| | | FaSongSJ: "2025-01-09Â 17:29:36", |
| | | FaSongXTJC: "SUIFANGXT", |
| | | FaSongXTMC: "é访系ç»", |
| | | XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", |
| | | XiaoXiLX: "SC_LC_360STCX", |
| | | XiaoXiMC: "360 è§å¾æ¥è¯¢", |
| | | ZuHuID: localStorage.getItem("ZuHuID"), |
| | | ZuHuMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YeWuXX: { |
| | | BingRenXX: { |
| | | ZhengJianHM: "", |
| | | ZhengJianLXDM: "01", |
| | | ZhengJianLXMC: "å±
æ°èº«ä»½è¯", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YongHuXX: { |
| | | XiTongID: "SUIFANGXT", |
| | | XiTongMC: "é访系ç»", |
| | | YongHuID: localStorage.getItem("YongHuID"), |
| | | YongHuXM: localStorage.getItem("YongHuXM"), |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | idp: "lyra", |
| | | }, |
| | | }, |
| | | }, |
| | | defaultProps: { |
| | | children: "children", |
| | | label: "label", |
| | | }, |
| | | sourcetype: [ |
| | | { |
| | | value: 1, |
| | | label: "ç§å®¤", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "ç
åº", |
| | | children: [], |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "å
¨é¨", |
| | | }, |
| | | ], |
| | | // ç¨æ·å¯¼å
¥åæ° |
| | | upload: { |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå±ï¼ç¨æ·å¯¼å
¥ï¼ |
| | | open: false, |
| | | // å¼¹åºå±æ é¢ï¼ç¨æ·å¯¼å
¥ï¼ |
| | | title: "", |
| | | // æ¯å¦ç¦ç¨ä¸ä¼ |
| | | isUploading: false, |
| | | // æ¯å¦æ´æ°å·²ç»åå¨çç¨æ·æ°æ® |
| | | updateSupport: 0, |
| | | // 设置ä¸ä¼ ç请æ±å¤´é¨ |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | // ä¸ä¼ çå°å |
| | | url: process.env.VUE_APP_BASE_API + "/system/user/importData", |
| | | }, |
| | | // æ¥è¯¢åæ° |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | searchscope: 3, |
| | | scopetype: [], |
| | | deptcodes: [], |
| | | }, |
| | | // è¡¨åæ ¡éª |
| | | 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: { |
| | | // æ ¹æ®åç§°çéé¨é¨æ |
| | | deptName(val) { |
| | | this.$refs.tree.filter(val); |
| | | }, |
| | | }, |
| | | created() { |
| | | 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.gettabList(); |
| | | }, |
| | | methods: { |
| | | /** æ¥è¯¢æ£è
å表 */ |
| | | getList() { |
| | | this.loading = true; |
| | | if (this.queryParams.searchscope == 3) { |
| | | this.queryParams.deptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | // this.queryParams.leavehospitaldistrictcodes = |
| | | // store.getters.belongWards.map((obj) => obj.districtCode); |
| | | } |
| | | if (this.dateRange) { |
| | | this.queryParams.beginTime = this.dateRange[0]; |
| | | this.queryParams.endTime = this.dateRange[1]; |
| | | } else { |
| | | this.queryParams.beginTime = ""; |
| | | this.queryParams.endTime = ""; |
| | | } |
| | | listPatouthosp(this.queryParams).then((response) => { |
| | | this.userList = response.rows; |
| | | this.total = response.total; |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | /** æ¥è¯¢æ ç¾å表 */ |
| | | gettabList() { |
| | | const tagqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 1000, |
| | | tagname: undefined, |
| | | tagdescription: undefined, |
| | | tagcategoryid: "0", |
| | | }; |
| | | listtag(tagqueryParams).then((response) => { |
| | | console.log(response); |
| | | this.optionstag = response.rows; |
| | | }); |
| | | }, |
| | | // æ£è
èå´å¤ç |
| | | handleChange(value) { |
| | | let type = value[0]; |
| | | let code = value.slice(-1)[0]; |
| | | // this.queryParams.leavehospitaldistrictcodes = []; |
| | | this.queryParams.deptcodes = []; |
| | | |
| | | if (type == 1) { |
| | | this.queryParams.deptcodes.push(code); |
| | | // this.queryParams.leavehospitaldistrictcodes = []; |
| | | this.queryParams.searchscope = 1; |
| | | } else if (type == 2) { |
| | | // this.queryParams.leavehospitaldistrictcodes.push(code); |
| | | this.queryParams.deptcodes = []; |
| | | this.queryParams.searchscope = 2; |
| | | } else { |
| | | this.queryParams.searchscope = 3; |
| | | } |
| | | }, |
| | | // æ¥è¯¢å¯¼å
¥å±ç¤ºå表 |
| | | geterryList() { |
| | | this.loading = true; |
| | | listJob(this.queryParams).then((response) => { |
| | | this.jobList = 1; |
| | | this.total = 1; |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | //æ£è
360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | // this.$modal.msgWarning('360åè½ææªå¼é'); |
| | | |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | |
| | | query360PatInfo(this.postData).then((res) => { |
| | | if (res.data.url) { |
| | | window.open(res.data.url, "_blank"); |
| | | // this.linkUrl = res.data.url; |
| | | } else { |
| | | this.$modal.msgWarning("360æ¥è¯¢æ ç»æ"); |
| | | } |
| | | }); |
| | | }, |
| | | // çéèç¹ |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | }, |
| | | // èç¹åå»äºä»¶ |
| | | handleNodeClick(data) { |
| | | this.queryParams.deptId = data.id; |
| | | this.handleQuery(); |
| | | }, |
| | | |
| | | // åæ¶æé® |
| | | cancel() { |
| | | this.Labelchange = false; |
| | | this.reset(); |
| | | }, |
| | | // 表åéç½® |
| | | reset() { |
| | | this.form = { |
| | | name: "", |
| | | age: "", |
| | | sex: "", |
| | | tagList: [], |
| | | idcardno: "", |
| | | telcode: "", |
| | | idcardtype: "", |
| | | relativetelcode: "", |
| | | }; |
| | | // this.resetForm("form"); |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.resetForm("queryForm"); |
| | | this.queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | searchscope: 3, |
| | | scopetype: [], |
| | | deptcodes: [], |
| | | // leavehospitaldistrictcodes: [], |
| | | }; |
| | | this.handleQuery(); |
| | | }, |
| | | // å¤éæ¡é䏿°æ® |
| | | handleSelectionChange(selection) { |
| | | this.ids = selection.map((item) => item.patid); |
| | | this.single = selection.length != 1; |
| | | this.multiple = !selection.length; |
| | | }, |
| | | |
| | | /** æ°å¢æé®æä½ */ |
| | | handleAdd() { |
| | | this.reset(); |
| | | this.Labelchange = true; |
| | | this.amendtag = false; |
| | | }, |
| | | /** ä¿®æ¹æé®æä½ */ |
| | | handleUpdate(row) { |
| | | console.log(row); |
| | | const userIds = row.patid || this.ids; |
| | | particularpatient(userIds).then((response) => { |
| | | console.log(response); |
| | | this.form = response.data; |
| | | }); |
| | | this.amendtag = true; |
| | | this.Labelchange = true; |
| | | }, |
| | | |
| | | //ä¿®æ¹/æ°å¢æ£è
|
| | | submitForm() { |
| | | if (this.amendtag) { |
| | | console.log(22); |
| | | this.form.isoperation = 2; |
| | | } else { |
| | | this.form.isoperation = 1; |
| | | } |
| | | alterpatient(this.form) |
| | | .then((response) => { |
| | | console.log(response); |
| | | }) |
| | | .then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("ä¿åæå"); |
| | | }); |
| | | this.reset(); |
| | | // this.idds = ""; |
| | | this.Labelchange = false; |
| | | }, |
| | | |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | const userIds = row.userId || this.ids; |
| | | this.$modal |
| | | .confirm('æ¯å¦ç¡®è®¤å é¤ç¨æ·ç¼å·ä¸º"' + userIds + '"çæ°æ®é¡¹ï¼') |
| | | .then(function () { |
| | | return deletepatient(userIds); |
| | | }) |
| | | .then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("å 餿å"); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | | handleExport() { |
| | | this.download( |
| | | "smartor/patarchive/export", |
| | | { |
| | | ...this.queryParams, |
| | | }, |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | | }, |
| | | /** 导å
¥æé®æä½ */ |
| | | handleImport() { |
| | | this.upload.title = "ç¨æ·å¯¼å
¥"; |
| | | this.upload.open = true; |
| | | }, |
| | | /** ä¸è½½æ¨¡æ¿æä½ */ |
| | | importTemplate() { |
| | | this.download( |
| | | "smartor/import/getImportPatTemplate", |
| | | {}, |
| | | `user_template_${new Date().getTime()}.xlsx` |
| | | ); |
| | | }, |
| | | // æä»¶ä¸ä¼ ä¸å¤ç |
| | | handleFileUploadProgress(event, file, fileList) { |
| | | this.upload.isUploading = true; |
| | | }, |
| | | // æä»¶ä¸ä¼ æåå¤ç |
| | | handleFileSuccess(response, file, fileList) { |
| | | this.upload.open = false; |
| | | this.upload.isUploading = false; |
| | | this.$refs.upload.clearFiles(); |
| | | this.$alert( |
| | | "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + |
| | | response.msg + |
| | | "</div>", |
| | | "导å
¥ç»æ", |
| | | { dangerouslyUseHTMLString: true } |
| | | ); |
| | | this.getList(); |
| | | }, |
| | | // æäº¤ä¸ä¼ æä»¶ |
| | | submitFileForm() { |
| | | // ä¸ä¼ |
| | | if (this.dractive == 1) { |
| | | this.$refs.upload.submit(); |
| | | this.dractive++; |
| | | } else { |
| | | this.dractive++; |
| | | } |
| | | }, |
| | | submitclose() { |
| | | this.upload.open = false; |
| | | this.dractive = 1; |
| | | }, |
| | | /** æ¹éæ·»å 任塿é®ç¹å» */ |
| | | handleBatchAddTask() { |
| | | // æ ¡éªæ¯å¦é䏿£è
|
| | | if (this.ids.length === 0) { |
| | | this.$modal.msgWarning("请è³å°éä¸1忣è
"); |
| | | return; |
| | | } |
| | | // æ£æ¥éä¸çæ£è
䏿¯å¦æå·²æä»»å¡ç |
| | | const hasTaskPatients = this.userList.filter( |
| | | (item) => this.ids.includes(item.patid) && item.serverState == 1 |
| | | ); |
| | | |
| | | if (hasTaskPatients.length > 0) { |
| | | const patientNames = hasTaskPatients.map((p) => p.patname).join("ã"); |
| | | this.$modal.msgError( |
| | | `éä¸çæ£è
${patientNames} å·²æä»»å¡ï¼æ æ³é夿·»å ` |
| | | ); |
| | | return; |
| | | } |
| | | // è·åé䏿£è
çç§å®¤ä¿¡æ¯ï¼ç¨äºæ ¡éªåä¸ç§å®¤ï¼ |
| | | const patientDepts = new Set(); |
| | | let deptcode = ""; |
| | | this.ids.forEach((patId) => { |
| | | const patient = this.userList.find((item) => item.patid === patId); |
| | | if (patient) { |
| | | patientDepts.add(patient.deptname); |
| | | deptcode = patient.deptcode; |
| | | } |
| | | }); |
| | | |
| | | // æ ¡éªæ¯å¦åä¸ç§å®¤ |
| | | // if (patientDepts.size > 1) { |
| | | // this.$modal.msgError("éä¸çæ£è
ä¸å±äºåä¸ç§å®¤ï¼æ æ³æ¹éæ·»å ä»»å¡"); |
| | | // return; |
| | | // } |
| | | |
| | | // è·åé䏿£è
å表 |
| | | this.selectedPatients = this.userList.filter((item) => |
| | | this.ids.includes(item.patid) |
| | | ); |
| | | |
| | | // æ¾ç¤ºå¼¹çª |
| | | this.batchTaskVisible = true; |
| | | |
| | | // è·åä»»å¡å表 |
| | | this.loadTaskList(deptcode); |
| | | }, |
| | | |
| | | /** å 载任å¡å表 */ |
| | | loadTaskList(deptcode) { |
| | | this.batchLoading = true; |
| | | let topqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | serviceType: 3, |
| | | type: 2, |
| | | }; |
| | | // deptcode: deptcode,åæ¶ç§å®¤éå¶ |
| | | getTasklist(topqueryParams).then((response) => { |
| | | this.taskList = response.rows; |
| | | this.batchLoading = false; |
| | | }); |
| | | }, |
| | | |
| | | /** å¤çä»»å¡éæ©åå */ |
| | | handleTaskSelectionChange(currentRow) { |
| | | this.selectedTask = currentRow; |
| | | }, |
| | | |
| | | // éåæ¹éæäº¤æ¹æ³ |
| | | async submitBatchTask() { |
| | | // æ ¡éªæ¯å¦éä¸ä»»å¡ |
| | | if (!this.selectedTask) { |
| | | this.$modal.msgWarning("è¯·éæ©1个任å¡"); |
| | | return; |
| | | } |
| | | |
| | | this.batchLoading = true; |
| | | const successPatients = []; |
| | | const failedPatients = []; |
| | | |
| | | try { |
| | | // éåéä¸çæ£è
ï¼é个è°ç¨æ¥å£ |
| | | for (const patient of this.selectedPatients) { |
| | | const params = { |
| | | taskid: this.selectedTask.taskid, |
| | | type: this.selectedTask.type, |
| | | taskName: this.selectedTask.taskName, |
| | | serviceType: this.selectedTask.serviceType, |
| | | preachform: this.selectedTask.preachform, |
| | | templateid: this.selectedTask.templateid, |
| | | libtemplateid: this.selectedTask.libtemplateid, |
| | | sendstate: 2, |
| | | ...patient, |
| | | sendname: patient.patname, |
| | | endtime: patient.admitdate + " 00:00:00", |
| | | leavediagname: patient.diagname, |
| | | age: "", |
| | | }; |
| | | |
| | | try { |
| | | await addSubtask(params); |
| | | successPatients.push(patient.patname); |
| | | } catch (error) { |
| | | failedPatients.push(patient.patname); |
| | | } |
| | | } |
| | | |
| | | // æ¾ç¤ºå¤çç»æ |
| | | let message = `æå为 ${successPatients.length} 忣è
æ·»å ä»»å¡`; |
| | | if (failedPatients.length > 0) { |
| | | message += `ï¼${failedPatients.length} 忣è
æ·»å 失败`; |
| | | } |
| | | this.$modal.msgSuccess(message); |
| | | |
| | | this.batchTaskVisible = false; |
| | | this.getList(); // å·æ°æ£è
å表 |
| | | } catch (error) { |
| | | this.$modal.msgError("æ¹éæ·»å ä»»å¡è¿ç¨ä¸åºé"); |
| | | } finally { |
| | | this.batchLoading = false; |
| | | } |
| | | }, |
| | | |
| | | /** æ¹éæ·»å æ£è
任塿¥å£ */ |
| | | batchAddPatientTask(params) {}, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-button--primary.is-plain { |
| | | color: #ffffff; |
| | | background: #409eff; |
| | | border-color: #4fabe9; |
| | | } |
| | | .document { |
| | | width: 100px; |
| | | height: 50px; |
| | | } |
| | | .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); |
| | | } |
| | | .drexamine { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 30px; |
| | | background: #daeaf5; |
| | | img { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | } |
| | | .button-textsc { |
| | | color: #3664d9; |
| | | } |
| | | .batch-patient-section, |
| | | .batch-task-section { |
| | | padding: 15px; |
| | | border: 1px solid #ebeef5; |
| | | border-radius: 4px; |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .el-table--enable-row-hover .el-table__body tr:hover > td { |
| | | background-color: #f5f7fa; |
| | | } |
| | | .el-table__body tr.current-row > td { |
| | | background-color: #e6f7ff; |
| | | } |
| | | |
| | | /* ç¦ç¨ç¶æä¸æé®æ ·å¼ */ |
| | | .el-button.is-disabled { |
| | | cursor: not-allowed; |
| | | } |
| | | .batch-patient-section h4, |
| | | .batch-task-section h4 { |
| | | margin-top: 0; |
| | | margin-bottom: 15px; |
| | | color: #303133; |
| | | font-size: 16px; |
| | | } |
| | | |
| | | /* è¡¨æ ¼æ ·å¼ä¼å */ |
| | | .el-table { |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | /* å¼¹çªåºé¨æé®é´è· */ |
| | | .dialog-footer { |
| | | text-align: right; |
| | | padding: 10px 20px 20px; |
| | | } |
| | | </style> |