|  |  | 
 |  |  |           v-show="showSearch" | 
 |  |  |           label-width="98px" | 
 |  |  |         > | 
 |  |  |           <el-form-item label="姓名" prop="name"> | 
 |  |  |           <el-form-item label="姓名" width="100" prop="name"> | 
 |  |  |             <el-input | 
 |  |  |               v-model="queryParams.patname" | 
 |  |  |               placeholder="请输入姓名" | 
 |  |  | 
 |  |  |               @keyup.enter.native="handleQuery" | 
 |  |  |             /> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="患者编号" prop="patid"> | 
 |  |  |           <el-form-item label="诊断" width="100" prop="name"> | 
 |  |  |             <el-input | 
 |  |  |               v-model="queryParams.patid" | 
 |  |  |               placeholder="请输入患者编号" | 
 |  |  |               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="tagId"> | 
 |  |  |             <el-select v-model="queryParams.Patientid" placeholder="请选择"> | 
 |  |  |               <el-option | 
 |  |  |                 v-for="item in Patientrange" | 
 |  |  |                 :key="item.id" | 
 |  |  |                 :label="item.name" | 
 |  |  |                 :value="item.id" | 
 |  |  |           <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-option> | 
 |  |  |             </el-select> | 
 |  |  |               </el-date-picker> --> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-row> | 
 |  |  |             <!-- <el-form-item label="患者标签" prop="tagId"> | 
 |  |  |               <el-select | 
 |  |  |                 v-model="queryParams.tagIds" | 
 |  |  |                 multiple | 
 |  |  |                 filterable | 
 |  |  |                 placeholder="请选择" | 
 |  |  |               > | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in optionstag" | 
 |  |  |                   :key="item.tagid" | 
 |  |  |                   :label="item.tagname" | 
 |  |  |                   :value="item.tagid" | 
 |  |  |                 > | 
 |  |  |                 </el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </el-form-item> --> | 
 |  |  |             <el-form-item label=" 就诊日期 " prop="createTime"> | 
 |  |  |             <!-- <el-form-item label=" 就诊日期 " prop="admitdate"> | 
 |  |  |               <el-date-picker | 
 |  |  |                 clearable | 
 |  |  |                 v-model="queryParams.createTime" | 
 |  |  |                 v-model="queryParams.admitdate" | 
 |  |  |                 type="date" | 
 |  |  |                 value-format="yyyy-MM-dd" | 
 |  |  |                 placeholder="请选择 就诊日期 " | 
 |  |  |               > | 
 |  |  |               </el-date-picker> | 
 |  |  |             </el-form-item> | 
 |  |  |             </el-form-item> --> | 
 |  |  |  | 
 |  |  |             <el-form-item> | 
 |  |  |               <el-button | 
 |  |  |                 type="primary" | 
 |  |  | 
 |  |  |         </el-form> | 
 |  |  |  | 
 |  |  |         <el-row :gutter="10" class="mb8"> | 
 |  |  |           <el-col :span="1.5"> | 
 |  |  |           <!-- <el-col :span="1.5"> | 
 |  |  |             <el-button | 
 |  |  |               type="primary" | 
 |  |  |               plain | 
 |  |  | 
 |  |  |               v-hasPermi="['system:user:edit']" | 
 |  |  |               >修改</el-button | 
 |  |  |             > | 
 |  |  |           </el-col> | 
 |  |  |           </el-col> --> | 
 |  |  |           <el-col :span="1.5"> | 
 |  |  |             <el-button | 
 |  |  |               type="danger" | 
 |  |  | 
 |  |  |               @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"> | 
 |  |  | 
 |  |  |           @selection-change="handleSelectionChange" | 
 |  |  |         > | 
 |  |  |           <el-table-column type="selection" width="50" align="center" /> | 
 |  |  |           <el-table-column | 
 |  |  |           <!-- <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="姓名" | 
 |  |  |             fixed | 
 |  |  |             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="患者编号" | 
 |  |  |             label="性别" | 
 |  |  |             width="100" | 
 |  |  |             align="center" | 
 |  |  |             key="patid" | 
 |  |  |             prop="patid" | 
 |  |  |           /> | 
 |  |  |           <el-table-column label="性别" align="center" key="sex" prop="sex"> | 
 |  |  |             key="sex" | 
 |  |  |             prop="sex" | 
 |  |  |           > | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <!-- <el-table-column | 
 |  |  |             label="年龄(缺)" | 
 |  |  |           <el-table-column | 
 |  |  |             label="年龄" | 
 |  |  |             align="center" | 
 |  |  |             key="age" | 
 |  |  |             prop="age" | 
 |  |  |             width="120" | 
 |  |  |           /> | 
 |  |  |           <el-table-column | 
 |  |  |             label="联系电话(缺)" | 
 |  |  |             label="联系电话" | 
 |  |  |             align="center" | 
 |  |  |             key="telephone" | 
 |  |  |             prop="telephone" | 
 |  |  |             key="telcode" | 
 |  |  |             prop="telcode" | 
 |  |  |             width="120" | 
 |  |  |           /> --> | 
 |  |  |           /> | 
 |  |  |           <!-- <el-table-column | 
 |  |  |             label="患者标签(缺)" | 
 |  |  |             align="center" | 
 |  |  | 
 |  |  |             prop="diagname" | 
 |  |  |             width="190" | 
 |  |  |           /> | 
 |  |  |           <el-table-column | 
 |  |  |           <!-- <el-table-column | 
 |  |  |             label="主述" | 
 |  |  |             align="center" | 
 |  |  |             key="mainsuit" | 
 |  |  |             prop="mainsuit" | 
 |  |  |             width="120" | 
 |  |  |           /> | 
 |  |  |           /> --> | 
 |  |  |           <el-table-column | 
 |  |  |             label="科室" | 
 |  |  |             label="就诊科室" | 
 |  |  |             align="center" | 
 |  |  |             key="deptname" | 
 |  |  |             prop="deptname" | 
 |  |  |             width="120" | 
 |  |  |           /> | 
 |  |  |           <el-table-column | 
 |  |  |             label="医生" | 
 |  |  |             label="接诊医生" | 
 |  |  |             align="center" | 
 |  |  |             key="drname" | 
 |  |  |             prop="drname" | 
 |  |  |             width="120" | 
 |  |  |           /> | 
 |  |  |  | 
 |  |  |           <el-table-column | 
 |  |  |             label="就诊时间" | 
 |  |  |             label="是否存在任务" | 
 |  |  |             align="center" | 
 |  |  |             key="createTime" | 
 |  |  |             prop="createTime" | 
 |  |  |             width="160" | 
 |  |  |             key="serverState" | 
 |  |  |             prop="serverState" | 
 |  |  |             width="100" | 
 |  |  |           > | 
 |  |  |             <template slot-scope="scope"> | 
 |  |  |               <span>{{ parseTime(scope.row.createTime) }}</span> | 
 |  |  |               <span | 
 |  |  |                 :style="{ | 
 |  |  |                   color: scope.row.serverState == 1 ? 'green' : 'gray', | 
 |  |  |                 }" | 
 |  |  |               > | 
 |  |  |                 {{ scope.row.serverState == 1 ? "是" : "无" }} | 
 |  |  |               </span> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |  | 
 |  |  |           <el-table-column | 
 |  |  |             label="操作" | 
 |  |  |             fixed="right" | 
 |  |  | 
 |  |  |                   ><i class="el-icon-zoom-in"></i>查看</span | 
 |  |  |                 ></el-button | 
 |  |  |               > | 
 |  |  |               <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 | 
 |  |  |               > | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |         </el-table> | 
 |  |  | 
 |  |  |         /> | 
 |  |  |       </el-col> | 
 |  |  |     </el-row> | 
 |  |  |  | 
 |  |  |     <!-- 添加或修改用户配置对话框 --> | 
 |  |  |     <el-dialog | 
 |  |  |       :title="amendtag ? '修改患者信息' : '新增患者'" | 
 |  |  |       :visible.sync="Labelchange" | 
 |  |  |       width="900px" | 
 |  |  |       title="批量添加任务" | 
 |  |  |       :visible.sync="batchTaskVisible" | 
 |  |  |       width="90%" | 
 |  |  |       append-to-body | 
 |  |  |     > | 
 |  |  |       <el-form ref="form" :model="form" :rules="rules" label-width="100px"> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="姓名" prop="name"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.name" | 
 |  |  |                 placeholder="请输入姓名" | 
 |  |  |                 maxlength="30" | 
 |  |  |       <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-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="性别" prop="sex"> | 
 |  |  |               <el-select v-model="form.sex" placeholder="请选择性别"> | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="dict in dict.type.sys_user_sex" | 
 |  |  |                   :key="dict.value" | 
 |  |  |                   :label="dict.label" | 
 |  |  |                   :value="dict.value" | 
 |  |  |                 ></el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="证件类型" prop="idcardtype"> | 
 |  |  |               <el-select v-model="form.idcardtype" placeholder="请选择性别"> | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in paperstypes" | 
 |  |  |                   :key="item.papersname" | 
 |  |  |                   :label="item.papersname" | 
 |  |  |                   :value="item.papersname" | 
 |  |  |                 ></el-option> | 
 |  |  |               </el-select> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="证件号" prop="idcardno"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.idcardno" | 
 |  |  |                 placeholder="请输入证件号" | 
 |  |  |                 maxlength="50" | 
 |  |  |  | 
 |  |  |               <el-table-column | 
 |  |  |                 label="服务项目" | 
 |  |  |                 align="center" | 
 |  |  |                 key="templatename" | 
 |  |  |                 prop="templatename" | 
 |  |  |                 :show-overflow-tooltip="true" | 
 |  |  |               /> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="本人手机号" prop="telcode"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.telcode" | 
 |  |  |                 placeholder="请输入手机号" | 
 |  |  |                 maxlength="30" | 
 |  |  |  | 
 |  |  |               <el-table-column | 
 |  |  |                 label="创建人" | 
 |  |  |                 align="center" | 
 |  |  |                 key="createBy" | 
 |  |  |                 prop="createBy" | 
 |  |  |                 :show-overflow-tooltip="true" | 
 |  |  |               /> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="亲属手机号" prop="relativetelcode"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.relativetelcode" | 
 |  |  |                 placeholder="请输入亲属手机号" | 
 |  |  |                 type="password" | 
 |  |  |                 maxlength="20" | 
 |  |  |                 show-password | 
 |  |  |               /> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="年龄" prop="age"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.age" | 
 |  |  |                 placeholder="请输入年龄" | 
 |  |  |                 maxlength="30" | 
 |  |  |               /> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="患者标签"> | 
 |  |  |               <!-- <el-select v-model="form.sex" placeholder="请选择"> --> | 
 |  |  |               <el-select v-model="form.tagList" multiple placeholder="请选择"> | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in optionstag" | 
 |  |  |                   :key="item.tagid" | 
 |  |  |                   :label="item.tagname" | 
 |  |  |                   :value="item.tagid" | 
 |  |  |                 > | 
 |  |  |                 </el-option> | 
 |  |  |               </el-select> | 
 |  |  |               <!-- </el-select> --> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="24"> | 
 |  |  |             <el-form-item label="备注"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.remark" | 
 |  |  |                 type="textarea" | 
 |  |  |                 placeholder="请输入内容" | 
 |  |  |               ></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |       </el-form> | 
 |  |  |               <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 type="primary" @click="submitForm">确 定</el-button> | 
 |  |  |         <el-button @click="cancel">取 消</el-button> | 
 |  |  |         <el-button @click="batchTaskVisible = false">取 消</el-button> | 
 |  |  |         <el-button | 
 |  |  |           type="primary" | 
 |  |  |           :loading="batchLoading" | 
 |  |  |           @click="submitBatchTask" | 
 |  |  |           >创建任务</el-button | 
 |  |  |         > | 
 |  |  |       </div> | 
 |  |  |     </el-dialog> | 
 |  |  |  | 
 |  |  |     <!-- 用户导入对话框 --> | 
 |  |  |     <el-dialog | 
 |  |  |       :title="upload.title" | 
 |  |  | 
 |  |  |           </div> | 
 |  |  |         </el-upload> | 
 |  |  |       </div> | 
 |  |  |  | 
 |  |  |       <!-- 导入检查 --> | 
 |  |  |       <div class="uploading" v-else-if="dractive == 2"> | 
 |  |  |         <el-table :data="uploadingData" style="width: 100%"> | 
 |  |  |           <el-table-column prop="serial" label="序号"> </el-table-column> | 
 |  |  |           <el-table-column prop="name" label="姓名"> </el-table-column> | 
 |  |  |           <el-table-column prop="sex" 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="证件号码"> | 
 |  |  | 
 |  |  |   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"; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: "Userhuanze", | 
 |  |  | 
 |  |  |       Labelchange: false, //修改新增弹窗 | 
 |  |  |       propss: { multiple: true }, | 
 |  |  |       optionstag: [], //标签列表 | 
 |  |  |       batchTaskVisible: false, // 弹窗可见性 | 
 |  |  |       selectedPatients: [], // 选中的患者列表 | 
 |  |  |       taskList: [], // 任务列表 | 
 |  |  |       selectedTask: null, // 选中的任务列表 | 
 |  |  |       batchLoading: false, // 批量提交加载状态 | 
 |  |  |       deptcode: "", | 
 |  |  |       Patientrange: [ | 
 |  |  |         { | 
 |  |  |           name: "全部", | 
 |  |  |           id: 1, | 
 |  |  |           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: "1400466972205912064", | 
 |  |  |             YongHuXM: "JNRMYY", | 
 |  |  |             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: { | 
 |  |  |         // 是否显示弹出层(用户导入) | 
 |  |  | 
 |  |  |       queryParams: { | 
 |  |  |         pageNum: 1, | 
 |  |  |         pageSize: 10, | 
 |  |  |         searchscope: 3, | 
 |  |  |         scopetype: [], | 
 |  |  |         leaveldeptcodes: [], | 
 |  |  |         leavehospitaldistrictcodes: [], | 
 |  |  |       }, | 
 |  |  |       // 表单校验 | 
 |  |  |       rules: { | 
 |  |  | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   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(); | 
 |  |  |   }, | 
 |  |  | 
 |  |  |     /** 查询患者列表 */ | 
 |  |  |     getList() { | 
 |  |  |       this.loading = true; | 
 |  |  |       if (this.queryParams.searchscope == 3) { | 
 |  |  |         this.queryParams.leaveldeptcodes = 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) => { | 
 |  |  |         console.log(response); | 
 |  |  |         this.userList = response.rows; | 
 |  |  |         this.total = response.total; | 
 |  |  |         this.loading = false; | 
 |  |  | 
 |  |  |         this.optionstag = response.rows; | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // 患者范围处理 | 
 |  |  |     handleChange(value) { | 
 |  |  |       let type = value[0]; | 
 |  |  |       let code = value.slice(-1)[0]; | 
 |  |  |       this.queryParams.leavehospitaldistrictcodes = []; | 
 |  |  |       this.queryParams.leaveldeptcodes = []; | 
 |  |  |  | 
 |  |  |       if (type == 1) { | 
 |  |  |         this.queryParams.leaveldeptcodes.push(code); | 
 |  |  |         this.queryParams.leavehospitaldistrictcodes = []; | 
 |  |  |         this.queryParams.searchscope = 1; | 
 |  |  |       } else if (type == 2) { | 
 |  |  |         this.queryParams.leavehospitaldistrictcodes.push(code); | 
 |  |  |         this.queryParams.leaveldeptcodes = []; | 
 |  |  |         this.queryParams.searchscope = 2; | 
 |  |  |       } else { | 
 |  |  |         this.queryParams.searchscope = 3; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     // 查询导入展示列表 | 
 |  |  |     geterryList() { | 
 |  |  |       this.loading = true; | 
 |  |  | 
 |  |  |         this.loading = false; | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     //患者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查询无结果"); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // 筛选节点 | 
 |  |  |     filterNode(value, data) { | 
 |  |  |       if (!value) return true; | 
 |  |  | 
 |  |  |     resetQuery() { | 
 |  |  |       this.dateRange = []; | 
 |  |  |       this.resetForm("queryForm"); | 
 |  |  |       this.$refs.tree.setCurrentKey(null); | 
 |  |  |       this.queryParams = { | 
 |  |  |         pageNum: 1, | 
 |  |  |         pageSize: 10, | 
 |  |  |         searchscope: 3, | 
 |  |  |         scopetype: [], | 
 |  |  |         leaveldeptcodes: [], | 
 |  |  |         leavehospitaldistrictcodes: [], | 
 |  |  |       }; | 
 |  |  |       this.handleQuery(); | 
 |  |  |     }, | 
 |  |  |     // 多选框选中数据 | 
 |  |  | 
 |  |  |     /** 下载模板操作 */ | 
 |  |  |     importTemplate() { | 
 |  |  |       this.download( | 
 |  |  |         "system/user/importTemplate", | 
 |  |  |         "smartor/import/getImportPatTemplate", | 
 |  |  |         {}, | 
 |  |  |         `user_template_${new Date().getTime()}.xlsx` | 
 |  |  |       ); | 
 |  |  | 
 |  |  |       this.upload.open = false; | 
 |  |  |       this.dractive = 1; | 
 |  |  |     }, | 
 |  |  |     /** 批量添加任务按钮点击 */ | 
 |  |  |     handleBatchAddTask() { | 
 |  |  |       // 校验是否选中患者 | 
 |  |  |       if (this.ids.length === 0) { | 
 |  |  |         this.$modal.msgWarning("请至少选中1名患者"); | 
 |  |  |         return; | 
 |  |  |       } | 
 |  |  |       // 检查选中的患者中是否有已有任务的 | 
 |  |  |       const hasTaskPatients = this.userList.filter( | 
 |  |  |         (item) => this.ids.includes(item.patid) && item.serverState == 1 | 
 |  |  |       ); | 
 |  |  |  | 
 |  |  |       if (hasTaskPatients.length > 0) { | 
 |  |  |         const patientNames = hasTaskPatients.map((p) => p.patname).join("、"); | 
 |  |  |         this.$modal.msgError( | 
 |  |  |           `选中的患者 ${patientNames} 已有任务,无法重复添加` | 
 |  |  |         ); | 
 |  |  |         return; | 
 |  |  |       } | 
 |  |  |       // 获取选中患者的科室信息(用于校验同一科室) | 
 |  |  |       const patientDepts = new Set(); | 
 |  |  |       let deptcode = ""; | 
 |  |  |       this.ids.forEach((patId) => { | 
 |  |  |         const patient = this.userList.find((item) => item.patid === patId); | 
 |  |  |         if (patient) { | 
 |  |  |           patientDepts.add(patient.deptname); | 
 |  |  |           deptcode = patient.deptcode; | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |       // 校验是否同一科室 | 
 |  |  |       if (patientDepts.size > 1) { | 
 |  |  |         this.$modal.msgError("选中的患者不属于同一科室,无法批量添加任务"); | 
 |  |  |         return; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       // 获取选中患者列表 | 
 |  |  |       this.selectedPatients = this.userList.filter((item) => | 
 |  |  |         this.ids.includes(item.patid) | 
 |  |  |       ); | 
 |  |  |  | 
 |  |  |       // 显示弹窗 | 
 |  |  |       this.batchTaskVisible = true; | 
 |  |  |  | 
 |  |  |       // 获取任务列表 | 
 |  |  |       this.loadTaskList(deptcode); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     /** 加载任务列表 */ | 
 |  |  |     loadTaskList(deptcode) { | 
 |  |  |       this.batchLoading = true; | 
 |  |  |       let topqueryParams = { | 
 |  |  |         pageNum: 1, | 
 |  |  |         pageSize: 10, | 
 |  |  |         serviceType: 3, | 
 |  |  |         type: 2, | 
 |  |  |         deptcode: deptcode, | 
 |  |  |       }; | 
 |  |  |       getTasklist(topqueryParams).then((response) => { | 
 |  |  |         this.taskList = response.rows; | 
 |  |  |         this.batchLoading = false; | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     /** 处理任务选择变化 */ | 
 |  |  |     handleTaskSelectionChange(currentRow) { | 
 |  |  |       this.selectedTask = currentRow; | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // 重写批量提交方法 | 
 |  |  |     async submitBatchTask() { | 
 |  |  |       // 校验是否选中任务 | 
 |  |  |       if (!this.selectedTask) { | 
 |  |  |         this.$modal.msgWarning("请选择1个任务"); | 
 |  |  |         return; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       this.batchLoading = true; | 
 |  |  |       const successPatients = []; | 
 |  |  |       const failedPatients = []; | 
 |  |  |  | 
 |  |  |       try { | 
 |  |  |         // 遍历选中的患者,逐个调用接口 | 
 |  |  |         for (const patient of this.selectedPatients) { | 
 |  |  |           const params = { | 
 |  |  |             taskid: this.selectedTask.taskid, | 
 |  |  |             taskName: this.selectedTask.taskName, | 
 |  |  |             serviceType: this.selectedTask.serviceType, | 
 |  |  |             sendstate:2, | 
 |  |  |             ...patient, | 
 |  |  |             age: "", | 
 |  |  |           }; | 
 |  |  |  | 
 |  |  |           try { | 
 |  |  |             await addSubtask(params); | 
 |  |  |             successPatients.push(patient.patname); | 
 |  |  |           } catch (error) { | 
 |  |  |             failedPatients.push(patient.patname); | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 显示处理结果 | 
 |  |  |         let message = `成功为 ${successPatients.length} 名患者添加任务`; | 
 |  |  |         if (failedPatients.length > 0) { | 
 |  |  |           message += `,${failedPatients.length} 名患者添加失败`; | 
 |  |  |         } | 
 |  |  |         this.$modal.msgSuccess(message); | 
 |  |  |  | 
 |  |  |         this.batchTaskVisible = false; | 
 |  |  |         this.getList(); // 刷新患者列表 | 
 |  |  |       } catch (error) { | 
 |  |  |         this.$modal.msgError("批量添加任务过程中出错"); | 
 |  |  |       } finally { | 
 |  |  |         this.batchLoading = false; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     /** 批量添加患者任务接口 */ | 
 |  |  |     batchAddPatientTask(params) {}, | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  | 
 |  |  | .button-textsc { | 
 |  |  |   color: #28cfe6; | 
 |  |  | } | 
 |  |  | .batch-patient-section, | 
 |  |  | .batch-task-section { | 
 |  |  |   padding: 15px; | 
 |  |  |   border: 1px solid #ebeef5; | 
 |  |  |   border-radius: 4px; | 
 |  |  |   margin-bottom: 15px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .el-table--enable-row-hover .el-table__body tr:hover > td { | 
 |  |  |   background-color: #f5f7fa; | 
 |  |  | } | 
 |  |  | .el-table__body tr.current-row > td { | 
 |  |  |   background-color: #e6f7ff; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /* 禁用状态下按钮样式 */ | 
 |  |  | .el-button.is-disabled { | 
 |  |  |   cursor: not-allowed; | 
 |  |  | } | 
 |  |  | .batch-patient-section h4, | 
 |  |  | .batch-task-section h4 { | 
 |  |  |   margin-top: 0; | 
 |  |  |   margin-bottom: 15px; | 
 |  |  |   color: #303133; | 
 |  |  |   font-size: 16px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /* 表格样式优化 */ | 
 |  |  | .el-table { | 
 |  |  |   margin-bottom: 10px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /* 弹窗底部按钮间距 */ | 
 |  |  | .dialog-footer { | 
 |  |  |   text-align: right; | 
 |  |  |   padding: 10px 20px 20px; | 
 |  |  | } | 
 |  |  | </style> |