yxh
2023-11-27 12ce06c69440bf1bf581fca19aa38e7920bee01b
Merge branch 'wulong' of http://116.62.18.175:6699/r/~yxh/smartor-web into yxh01
已添加4个文件
已删除67个文件
已修改7个文件
30989 ■■■■ 文件已修改
src/views/patient/patient/behospitalized.vue 927 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 718 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/outpatient.vue 946 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/physical.vue 945 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/profile/index.vue 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/index.vue 883 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 1101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/servefn/index.vue 849 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/particulars/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/hecategory/index.vue 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/helibrary/index.vue 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrexecuteconfig/index.vue 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrextemplate/index.vue 483 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrextemplatescript/index.vue 382 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrflow/index.vue 428 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrflownode/index.vue 459 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrflownodebranch/index.vue 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrglobalconfig/index.vue 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrintent/index.vue 476 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrlibascript/index.vue 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrlibintent/index.vue 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrlibintentcategory/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrlibscript/index.vue 380 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrlibscriptcategory/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrlibscriptmodel/index.vue 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrquestionlib/QuestionMaint.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrrecall/index.vue 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrscene/index.vue 470 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrscenecategory/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrscript/index.vue 403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrscriptmodel/index.vue 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrscripttarget/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtarget/index.vue 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtask/index.vue 597 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtaskcall/index.vue 790 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtaskcalldetail/index.vue 739 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtaskcallrecord/index.vue 646 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtasksms/index.vue 403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtemplate/index.vue 363 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtemplatescript/index.vue 386 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/ivrtemplatetarget/index.vue 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/patarchive/index.vue 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/patarchive/index0.vue 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/patinhosp/index.vue 421 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/patouthosp/index.vue 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/patphysical/index.vue 340 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemeautofinshrule/index.vue 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemecalldetail/index.vue 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemecategory/index.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemelibrary/index.vue 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemeplan/index.vue 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemetask/index.vue 569 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemetaskconfig/index.vue 431 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemetaskrecord/index.vue 381 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemetaskrepeatconfig/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemetriggerrule/index.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/schemetriggerscene/index.vue 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/smsaccount/index.vue 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/smsparam/index.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/smsrecords/index.vue 544 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/smstemplet/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svycategory/index.vue 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svyexception/index.vue 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svyfinish/index.vue 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svyfinishoption/index.vue 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svyfinishtopic/index.vue 334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svyresult/index.vue 358 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytitle/index.vue 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytitle/index0.vue 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytitle/index1.vue 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytopic/index.vue 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytopic/index1.vue 366 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytopic/maint.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytopicoption/index.vue 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smartor/svytopicoption/index1.vue 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/behospitalized.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,927 @@
<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="患者姓名" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="患者住院号" prop="iccardno">
            <el-input
              v-model="queryParams.iccardno"
              placeholder="请输入患者编号"
              clearable
              style="width: 250px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="护理等级" prop="tagId">
            <el-select
              v-model="queryParams.Patientid"
              multiple
              placeholder="请选择"
            >
              <el-option
                v-for="item in Patientrange"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-row>
            <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="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="序号"
            align="center"
            key="patid"
            prop="patid"
          />
          <el-table-column
            label="床位号"
            align="center"
            key="Patientnumber"
            prop="Patientnumber"
          />
          <el-table-column
            label="住院号"
            align="center"
            key="Patientnumber"
            prop="Patientnumber"
          />
          <el-table-column
            label="患者姓名"
            align="center"
            key="name"
            prop="name"
          />
          <el-table-column label="性别" 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="telephone"
            prop="telephone"
            width="120"
          />
          <el-table-column
            label="入科时间"
            align="center"
            key="archivetime"
            prop="archivetime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="出院时间"
            align="center"
            key="archivetime"
            prop="archivetime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="护理等级"
            align="center"
            key="iccardtype"
            prop="iccardtype"
            width="120"
          />
          <el-table-column
            label="病情状态"
            align="center"
            key="iccardno"
            prop="iccardno"
            width="190"
          />
          <el-table-column
            label="主任医师"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="主治医师"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="住院医师"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="住院病区"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="入院诊断"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="操作"
            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
              >
              <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>
        <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="getList"
        />
      </el-col>
    </el-row>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹ç”¨æˆ·é…ç½®å¯¹è¯æ¡† -->
    <el-dialog
      :title="amendtag ? '修改患者信息' : '新增患者'"
      :visible.sync="Labelchange"
      width="900px"
    >
      <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-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="iccardtype">
              <el-select v-model="form.iccardtype" 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="iccardno">
              <el-input
                v-model="form.iccardno"
                placeholder="请输入证件号"
                maxlength="50"
              />
            </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-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>
      <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="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="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </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 {
  listpat_archive,
  getpat_archive,
  addpat_archive,
  updatepat_archive,
  delpat_archive,
} from "@/api/smartorpor/pat_archive";
import {
  messagelistpatient,
  alterpatient,
  addpatient,
  particularpatient,
  deletepatient,
  Exporterrorpatient,
  toleadpatient,
} 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";
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: [],
        iccardno: "",
        telcode: "",
        iccardtype: "",
        relativetelcode: "",
      },
      //导入进度
      dractive: 1,
      // å¯¼å…¥å±•示表单
      uploadingData: {},
      total: 0, // æ€»æ¡æ•°
      ImportQuantity: 999, //导入患者数量
      Labelchange: false, //修改新增弹窗
      propss: { multiple: true },
      optionstag: [], //标签列表
      Patientrange: [
        {
          name: "全部",
          id: 1,
        },
        {
          name: "当前科室",
          id: 1,
        },
      ],
      defaultProps: {
        children: "children",
        label: "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,
        iccardno: undefined,
        name: undefined,
        status: undefined,
        tagIds: undefined,
        telcode: undefined,
      },
      // è¡¨å•校验
      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.getList();
    this.gettabList();
  },
  methods: {
    /** æŸ¥è¯¢æ‚£è€…列表 */
    getList() {
      this.loading = true;
      messagelistpatient(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
      const queryParams = {};
      listtag().then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
    },
    // æŸ¥è¯¢å¯¼å…¥å±•示列表
    geterryList() {
      this.loading = true;
      listJob(this.queryParams).then((response) => {
        this.jobList = 1;
        this.total = 1;
        this.loading = false;
      });
    },
    // ç­›é€‰èŠ‚ç‚¹
    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: [],
        iccardno: "",
        telcode: "",
        iccardtype: "",
        relativetelcode: "",
      };
      // this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.$refs.tree.setCurrentKey(null);
      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) {
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
          })
          .then(() => {
            this.getList();
            this.$modal.msgSuccess("修改成功");
          });
      } else {
        addpatient(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(
        "system/user/importTemplate",
        {},
        `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;
    },
  },
};
</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: #28cfe6;
}
</style>
src/views/patient/patient/index.vue
@@ -1,281 +1,354 @@
<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="姓名" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="身份证号码" prop="iccardno">
            <el-input
              v-model="queryParams.iccardno"
              placeholder="请输入身份证号码"
              clearable
              style="width: 250px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="联系方式" prop="telcode">
            <el-input
              v-model="queryParams.telcode"
              placeholder="请输入联系方式"
              clearable
              style="width: 280px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-row>
            <el-form-item label="患者标签" prop="tagId">
              <el-select
                v-model="queryParams.tagIds"
                multiple
                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>
              <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>
  <div class="Questionnairemanagement">
    <!-- å·¦ä¾§æ  -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">医院患者</div>
      </div>
        <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="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 class="bottom-fl">
        <el-tabs
          tab-position="right"
          v-model="activeName"
          @tab-click="handleClick"
        >
          <el-tab-pane label="全部" name="first"></el-tab-pane>
          <el-tab-pane label="在院" name="Inhospital"></el-tab-pane>
          <el-tab-pane label="离院" name="Discharge"></el-tab-pane>
          <el-tab-pane label="预约" name="subscribe"></el-tab-pane>
          <el-tab-pane label="已检" name="checked"></el-tab-pane>
          <el-tab-pane label="住院患者" name="behospitalized"></el-tab-pane>
          <el-tab-pane label="门诊患者" name="outpatient"></el-tab-pane>
          <el-tab-pane label="体检患者" name="physical"></el-tab-pane>
        </el-tabs>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
    <div class="leftvlue">
      <div>
        <el-row :gutter="10">
          <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
            <el-card shadow="hover">
              <div style="padding: 8px">
                <span>{{ item.name }}</span>
                <div
                  style="
                    text-align: center;
                    font-size: 18px;
                    margin-top: 10px;
                    font-weight: 600;
                  "
                >
                  {{ item.value }}
                </div>
              </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-card>
          </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="序号"
            align="center"
            key="patid"
            prop="patid"
          />
          <el-table-column label="姓名" align="center" key="name" prop="name" />
          <el-table-column label="性别" 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="archivetime"
            prop="archivetime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="家庭住址"
            align="center"
            key="age"
            prop="age"
            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="iccardtype"
            prop="iccardtype"
            width="120"
          /><el-table-column
            label="证件号码"
            align="center"
            key="iccardno"
            prop="iccardno"
            width="190"
          />
          <el-table-column
            label="联系方式"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="建档日期"
            align="center"
            key="archivetime"
            prop="archivetime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="更新日期"
            align="center"
            prop="updateTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="操作"
            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
      </div>
      <div class="leftvlue-bg">
        <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="院区" prop="userName">
                <el-select v-model="queryParams.value1" 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-form-item label="科室/病区" prop="userName">
                <el-select v-model="queryParams.value2" 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-form-item
                label-width="138px"
                label="主治医生"
                prop="userName"
              >
              <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-select v-model="queryParams.value3" 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-form-item label="出院日期" prop="userName">
                <el-date-picker
                  v-model="queryParams.valuetime1"
                  align="right"
                  type="date"
                  placeholder="选择日期"
                  :picker-options="pickerOptionsa"
                >
                </el-date-picker>
              </el-form-item>
              <el-form-item label="就诊编号" prop="number">
                <el-input
                  v-model="queryParams.number"
                  placeholder="请输入编号"
                  maxlength="30"
                />
              </el-form-item>
              <el-form-item label="姓名" prop="name">
                <el-input
                  v-model="queryParams.name"
                  placeholder="请输入姓名"
                  maxlength="30"
                />
              </el-form-item>
        <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="getList"
        />
      </el-col>
    </el-row>
              <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-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="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="序号"
                align="center"
                key="patid"
                prop="patid"
              />
              <el-table-column
                label="姓名"
                align="center"
                key="name"
                prop="name"
              />
              <el-table-column label="性别" 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="archivetime"
                prop="archivetime"
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
                label="家庭住址"
                align="center"
                key="age"
                prop="age"
                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="iccardtype"
                prop="iccardtype"
                width="120"
              /><el-table-column
                label="证件号码"
                align="center"
                key="iccardno"
                prop="iccardno"
                width="190"
              />
              <el-table-column
                label="联系方式"
                align="center"
                key="telcode"
                prop="telcode"
                width="120"
              />
              <el-table-column
                label="建档日期"
                align="center"
                key="archivetime"
                prop="archivetime"
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
                label="更新日期"
                align="center"
                prop="updateTime"
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                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
                  >
                  <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>
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getList"
            />
          </el-col>
        </el-row>
      </div>
    </div>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹ç”¨æˆ·é…ç½®å¯¹è¯æ¡† -->
    <el-dialog
@@ -549,6 +622,28 @@
        { papersname: "中国港澳居民身份证" },
        { papersname: "中国台湾居民身份证" },
      ],
      cardlist: [
        {
          name: "患者总数",
          value: 123,
        },
        {
          name: "在院患者",
          value: 23,
        },
        {
          name: "离院患者",
          value: 41,
        },
        {
          name: "诊疗患者",
          value: 56,
        },
        {
          name: "离世患者",
          value: 0,
        },
      ],
      // è¡¨å•参数
      form: {
        name: "",
@@ -560,6 +655,7 @@
        iccardtype: "",
        relativetelcode: "",
      },
      activeName: "first", //侧边选择
      //导入进度
      dractive: 1,
      // å¯¼å…¥å±•示表单
@@ -852,6 +948,88 @@
</script>
<style lang="scss" scoped>
.Questionnairemanagement {
  display: flex;
}
.sidecolumn {
  width: 180px;
  min-height: 100vh;
  text-align: center;
  //   display: flex;
  margin-top: 20px;
  margin: 20px;
  padding: 30px;
  background: #d0e9fd;
  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);
  .sidecolumn-top {
    display: flex;
    justify-content: space-between;
    .top-wj {
      font-size: 20px;
    }
    .top-tj {
      font-size: 18px;
      color: rgb(0, 89, 255);
      cursor: pointer;
    }
  }
  .center-ss {
    margin-top: 30px;
    .input-with-select {
      height: 40px !important;
    }
  }
  .bottom-fl {
    margin-top: 30px;
    display: center !important;
  }
}
::v-deep.el-tabs--left,
.el-tabs--right {
  overflow: hidden;
  align-items: center;
  display: flex;
}
::v-deep.el-input--medium .el-input__inner {
  height: 40px !important;
}
::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
  height: 40px;
  width: 5px;
  left: 0;
}
::v-deep.el-tabs--right .el-tabs__item.is-right {
  display: block;
  text-align: left;
  font-size: 20px;
}
::v-deep.leftvlue .el-card__body {
  background: #d0e9fd;
}
::v-deep.leftvlue .el-card__body:hover {
  background: #8dc8f8;
}
.leftvlue {
  width: 80%;
  margin-top: 10px;
}
.leftvlue-bg {
  //   display: flex;
  //   flex: 1;
  margin-top: 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);
  .mulsz {
    font-size: 20px;
  }
}
.el-button--primary.is-plain {
  color: #ffffff;
  background: #409eff;
src/views/patient/patient/outpatient.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,946 @@
<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="姓名" prop="name">
              <el-input
                v-model="queryParams.name"
                placeholder="请输入姓名"
                clearable
                style="width: 200px"
                @keyup.enter.native="handleQuery"
              />
            </el-form-item>
            <el-form-item label="患者编号" prop="iccardno">
              <el-input
                v-model="queryParams.iccardno"
                placeholder="请输入患者编号"
                clearable
                style="width: 250px"
                @keyup.enter.native="handleQuery"
              />
            </el-form-item>
            <el-form-item label="患者编号" prop="telcode">
              <el-input
                v-model="queryParams.telcode"
                placeholder="请输入患者编号"
                clearable
                style="width: 280px"
                @keyup.enter.native="handleQuery"
              />
            </el-form-item>
            <el-form-item label="患者范围" prop="tagId">
              <el-select
                v-model="queryParams.Patientid"
                multiple
                placeholder="请选择"
              >
                <el-option
                  v-for="item in Patientrange"
                  :key="item.id"
                  :label="item.name"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <el-row>
              <el-form-item label="患者标签" prop="tagId">
                <el-select
                  v-model="queryParams.tagIds"
                  multiple
                  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="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="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="序号"
              align="center"
              key="patid"
              prop="patid"
            />
            <el-table-column
              label="患者编号"
              align="center"
              key="Patientnumber"
              prop="Patientnumber"
            />
            <el-table-column label="姓名" align="center" key="name" prop="name" />
            <el-table-column label="性别" 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="telephone"
              prop="telephone"
              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="iccardtype"
              prop="iccardtype"
              width="120"
            />
            <el-table-column
              label="诊断"
              align="center"
              key="iccardno"
              prop="iccardno"
              width="190"
            />
            <el-table-column
              label="科室"
              align="center"
              key="telcode"
              prop="telcode"
              width="120"
            />
            <el-table-column
              label="医生"
              align="center"
              key="telcode"
              prop="telcode"
              width="120"
            />
            <el-table-column
              label="状态"
              align="center"
              key="telcode"
              prop="telcode"
              width="120"
            />
            <el-table-column
              label="就诊时间"
              align="center"
              key="archivetime"
              prop="archivetime"
              width="160"
            >
              <template slot-scope="scope">
                <span>{{ parseTime(scope.row.createTime) }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="复诊时间"
              align="center"
              prop="updateTime"
              width="160"
            >
              <template slot-scope="scope">
                <span>{{ parseTime(scope.row.createTime) }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="操作"
              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
                >
                <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>
          <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="queryParams.pageNum"
            :limit.sync="queryParams.pageSize"
            @pagination="getList"
          />
        </el-col>
      </el-row>
      <!-- æ·»åŠ æˆ–ä¿®æ”¹ç”¨æˆ·é…ç½®å¯¹è¯æ¡† -->
      <el-dialog
        :title="amendtag ? '修改患者信息' : '新增患者'"
        :visible.sync="Labelchange"
        width="900px"
      >
        <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-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="iccardtype">
                <el-select v-model="form.iccardtype" 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="iccardno">
                <el-input
                  v-model="form.iccardno"
                  placeholder="请输入证件号"
                  maxlength="50"
                />
              </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-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>
        <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="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="姓名"> </el-table-column>
            <el-table-column prop="sex" label="性别"> </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 {
    listpat_archive,
    getpat_archive,
    addpat_archive,
    updatepat_archive,
    delpat_archive,
  } from "@/api/smartorpor/pat_archive";
  import {
    messagelistpatient,
    alterpatient,
    addpatient,
    particularpatient,
    deletepatient,
    Exporterrorpatient,
    toleadpatient,
  } 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";
  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: [],
          iccardno: "",
          telcode: "",
          iccardtype: "",
          relativetelcode: "",
        },
        //导入进度
        dractive: 1,
        // å¯¼å…¥å±•示表单
        uploadingData: {},
        total: 0, // æ€»æ¡æ•°
        ImportQuantity: 999, //导入患者数量
        Labelchange: false, //修改新增弹窗
        propss: { multiple: true },
        optionstag: [], //标签列表
        Patientrange: [
          {
            name: "全部",
            id: 1,
          },
          {
            name: "当前科室",
            id: 1,
          },
        ],
        defaultProps: {
          children: "children",
          label: "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,
          iccardno: undefined,
          name: undefined,
          status: undefined,
          tagIds: undefined,
          telcode: undefined,
        },
        // è¡¨å•校验
        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.getList();
      this.gettabList();
    },
    methods: {
      /** æŸ¥è¯¢æ‚£è€…列表 */
      getList() {
        this.loading = true;
        messagelistpatient(this.queryParams).then((response) => {
          console.log(response);
          this.userList = response.rows;
          this.total = response.total;
          this.loading = false;
        });
      },
      /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
      gettabList() {
        const queryParams = {};
        listtag().then((response) => {
          console.log(response);
          this.optionstag = response.rows;
        });
      },
      // æŸ¥è¯¢å¯¼å…¥å±•示列表
      geterryList() {
        this.loading = true;
        listJob(this.queryParams).then((response) => {
          this.jobList = 1;
          this.total = 1;
          this.loading = false;
        });
      },
      // ç­›é€‰èŠ‚ç‚¹
      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: [],
          iccardno: "",
          telcode: "",
          iccardtype: "",
          relativetelcode: "",
        };
        // this.resetForm("form");
      },
      /** æœç´¢æŒ‰é’®æ“ä½œ */
      handleQuery() {
        this.queryParams.pageNum = 1;
        this.getList();
      },
      /** é‡ç½®æŒ‰é’®æ“ä½œ */
      resetQuery() {
        this.dateRange = [];
        this.resetForm("queryForm");
        this.$refs.tree.setCurrentKey(null);
        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) {
          alterpatient(this.form)
            .then((response) => {
              console.log(response);
            })
            .then(() => {
              this.getList();
              this.$modal.msgSuccess("修改成功");
            });
        } else {
          addpatient(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(
          "system/user/importTemplate",
          {},
          `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;
      },
    },
  };
  </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: #28cfe6;
  }
  </style>
src/views/patient/patient/physical.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,945 @@
<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="姓名" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="患者编号" prop="iccardno">
            <el-input
              v-model="queryParams.iccardno"
              placeholder="请输入患者编号"
              clearable
              style="width: 250px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="患者编号" prop="telcode">
            <el-input
              v-model="queryParams.telcode"
              placeholder="请输入患者编号"
              clearable
              style="width: 280px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="患者范围" prop="tagId">
            <el-select
              v-model="queryParams.Patientid"
              multiple
              placeholder="请选择"
            >
              <el-option
                v-for="item in Patientrange"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-row>
            <el-form-item label="患者标签" prop="tagId">
              <el-select
                v-model="queryParams.tagIds"
                multiple
                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="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="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="序号"
            align="center"
            key="patid"
            prop="patid"
          />
          <el-table-column
            label="患者编号"
            align="center"
            key="Patientnumber"
            prop="Patientnumber"
          />
          <el-table-column label="姓名" align="center" key="name" prop="name" />
          <el-table-column label="性别" 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="telephone"
            prop="telephone"
            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="iccardtype"
            prop="iccardtype"
            width="120"
          />
          <el-table-column
            label="诊断"
            align="center"
            key="iccardno"
            prop="iccardno"
            width="190"
          />
          <el-table-column
            label="科室"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="医生"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="状态"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="就诊时间"
            align="center"
            key="archivetime"
            prop="archivetime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="复诊时间"
            align="center"
            prop="updateTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="操作"
            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
              >
              <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>
        <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="getList"
        />
      </el-col>
    </el-row>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹ç”¨æˆ·é…ç½®å¯¹è¯æ¡† -->
    <el-dialog
      :title="amendtag ? '修改患者信息' : '新增患者'"
      :visible.sync="Labelchange"
      width="900px"
    >
      <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-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="iccardtype">
              <el-select v-model="form.iccardtype" 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="iccardno">
              <el-input
                v-model="form.iccardno"
                placeholder="请输入证件号"
                maxlength="50"
              />
            </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-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>
      <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="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="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </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 {
  listpat_archive,
  getpat_archive,
  addpat_archive,
  updatepat_archive,
  delpat_archive,
} from "@/api/smartorpor/pat_archive";
import {
  messagelistpatient,
  alterpatient,
  addpatient,
  particularpatient,
  deletepatient,
  Exporterrorpatient,
  toleadpatient,
} 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";
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: [],
        iccardno: "",
        telcode: "",
        iccardtype: "",
        relativetelcode: "",
      },
      //导入进度
      dractive: 1,
      // å¯¼å…¥å±•示表单
      uploadingData: {},
      total: 0, // æ€»æ¡æ•°
      ImportQuantity: 999, //导入患者数量
      Labelchange: false, //修改新增弹窗
      propss: { multiple: true },
      optionstag: [], //标签列表
      Patientrange: [
        {
          name: "全部",
          id: 1,
        },
        {
          name: "当前科室",
          id: 1,
        },
      ],
      defaultProps: {
        children: "children",
        label: "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,
        iccardno: undefined,
        name: undefined,
        status: undefined,
        tagIds: undefined,
        telcode: undefined,
      },
      // è¡¨å•校验
      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.getList();
    this.gettabList();
  },
  methods: {
    /** æŸ¥è¯¢æ‚£è€…列表 */
    getList() {
      this.loading = true;
      messagelistpatient(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
      const queryParams = {};
      listtag().then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
    },
    // æŸ¥è¯¢å¯¼å…¥å±•示列表
    geterryList() {
      this.loading = true;
      listJob(this.queryParams).then((response) => {
        this.jobList = 1;
        this.total = 1;
        this.loading = false;
      });
    },
    // ç­›é€‰èŠ‚ç‚¹
    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: [],
        iccardno: "",
        telcode: "",
        iccardtype: "",
        relativetelcode: "",
      };
      // this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.$refs.tree.setCurrentKey(null);
      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) {
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
          })
          .then(() => {
            this.getList();
            this.$modal.msgSuccess("修改成功");
          });
      } else {
        addpatient(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(
        "system/user/importTemplate",
        {},
        `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;
    },
  },
};
</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: #28cfe6;
}
</style>
src/views/patient/patient/profile/index.vue
@@ -11,10 +11,34 @@
            <div>吴大龙</div>
          </div></el-col
        >
        <el-col :span="4"
        <el-col :span="8"
          ><div class="xinz-inf">
            <div class="addtag">+新增标签</div>
            <div class="tagvalue">心血管</div>
            <el-tag
              :key="tag"
              v-for="tag in dynamicTags"
              closable
              :disable-transitions="false"
              @close="handleClose(tag)"
            >
              {{ tag }}
            </el-tag>
            <el-input
              class="input-new-tag"
              v-if="inputVisible"
              v-model="inputValue"
              ref="saveTagInput"
              size="small"
              @keyup.enter.native="handleInputConfirm"
              @blur="handleInputConfirm"
            >
            </el-input>
            <el-button
              v-else
              class="button-new-tag"
              size="small"
              @click="showInput"
              >+ æ–°å¢žæ ‡ç­¾</el-button
            >
          </div></el-col
        >
        <el-col :span="4"
@@ -315,6 +339,9 @@
      activeName: "health", //一类导航
      sonactiveName: "outpatient", //健康监测导航
      sontwoactiveName: "blood", //医疗档案导航
      dynamicTags: ["标签一", "标签二", "标签三"],
      inputVisible: false,
      inputValue: "",
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
@@ -385,15 +412,27 @@
        this.loading = false;
      });
    },
    // getUser() {
    //   getUserProfile().then((response) => {
    //     this.user = response.data;
    //     this.roleGroup = response.roleGroup;
    //     this.postGroup = response.postGroup;
    //   });
    // },
    handleClick(tab, event) {
      console.log(tab, event);
    },
    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 = "";
    },
    // è¡€åŽ‹å›¾è¡¨éƒ¨åˆ†
@@ -680,11 +719,27 @@
    }
  }
  .xinz-inf {
    display: flex;
    font-size: 18px;
    cursor: pointer;
    .addtag{
    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;
      line-height: 30px;
      padding-top: 0;
      padding-bottom: 0;
    }
    .input-new-tag {
      width: 90px;
      margin-left: 10px;
      vertical-align: bottom;
    }
  }
}
src/views/patient/propaganda/index.vue
@@ -1,17 +1,888 @@
<template>
  <div>宣教服务</div>
  <div class="app-container">
    <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.name"></el-input>
        </el-form-item>
        <el-form-item label="审核人">
          <el-input v-model="topqueryParams.name"></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>
        <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>
          <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"
            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="19">
          <div class="documentf">
            <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>
      <!-- <right-toolbar
              :showSearch.sync="showSearch"
              @queryTable="getList"
              :columns="columns"
            ></right-toolbar> -->
      <el-table
        v-loading="loading"
        :data="userList"
        @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"
          sortable
          key="userName"
          prop="userName"
          :show-overflow-tooltip="true"
        />
        <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="phonenumber"
          prop="phonenumber"
          width="120"
        >
          <template slot-scope="scope">
            <span style="margin-left: 10px"
              >{{ scope.row.date }}/{{ scope.row.data }}</span
            >
          </template>
        </el-table-column>
        <el-table-column
          label="执行状态"
          align="center"
          key="topicnumber"
          prop="topicnumber"
          width="120"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <div>执行完成/执行失败</div>
          </template>
        </el-table-column>
        <el-table-column
          label="审核人"
          align="center"
          key="topicnumberaa"
          prop="topicnumberaa"
          sortable
          width="120"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="审核时间"
          sortable
          align="center"
          prop="createTime"
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="操作"
          align="center"
          width="120"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              size="medium"
              type="text"
              @click="handleUpdate(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-zx"
                ><i class="el-icon-s-promotion"></i>开始执行</span
              ></el-button
            >
          </template>
        </el-table-column>
        <el-table-column
          label="任务详情"
          align="center"
          width="200"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              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"
                ><i class="el-icon-delete"></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>
  </div>
</template>
<script>
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
  resetUserPwd,
  changeUserStatus,
} from "@/api/system/user";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "User",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  components: { Treeselect },
  data() {
    return {};
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: null,
      // å¼¹å‡ºå±‚标题
      title: "新增门诊随访",
      // æ˜¯å¦æ˜¾ç¤ºä¿®æ”¹ã€æ·»åŠ å¼¹å‡ºå±‚
      addalteropen: false,
      // éƒ¨é—¨åç§°
      deptName: undefined,
      // é»˜è®¤å¯†ç 
      initPassword: undefined,
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      // å²—位选项
      postOptions: [],
      // è§’色选项
      roleOptions: [],
      dynamicTags: ["选项一", "选项二", "选项三"], //选项
      inputVisible: false,
      inputValue: "",
      previewVisible: false, //门诊随访预览弹框
      radio: "",
      radios: [],
      previewtype: 2, //预览门诊随访类型
      total: 0, // æ€»æ¡æ•°
      ImportQuantity: 999, //导门诊随访数量
      //预览门诊随访信息
      previewvalue: {
        username: "这个医生对你怎么样",
      },
      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",
      ],
      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,
        userName: undefined,
        tagid: undefined,
        topic: undefined,
      },
      propss: { multiple: true },
      options: [],
      topicoptions: [
        {
          value: 1,
          label: "待审核",
        },
        {
          value: 2,
          label: "执行中",
        },
        {
          value: 3,
          label: "执行完成",
        },
        {
          value: 4,
          label: "已停止",
        },
      ],
      // è¡¨å•校验
      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.getConfigKey("sys.user.initPassword").then((response) => {
      this.initPassword = response.msg;
    });
  },
  // æœç´¢
  mounted() {
    this.list = this.states.map((item) => {
      return { value: `value:${item}`, label: `label:${item}` };
    });
  },
  methods: {
    /** æŸ¥è¯¢é—¨è¯Šéšè®¿åˆ—表 */
    getList() {
      this.loading = true;
      listUser(this.addDateRange(this.topqueryParams, this.dateRange)).then(
        (response) => {
          this.userList = response.rows;
          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();
    },
    // è¡¨å•重置
    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() {
      this.topqueryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.topqueryParams.deptId = undefined;
      this.$refs.tree.setCurrentKey(null);
      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.reset();
      this.addalteropen = true;
      // getUser().then((response) => {
      //   this.postOptions = response.posts;
      //   this.roleOptions = response.roles;
      //   this.title = "新增门诊随访";
      //   this.form.password = this.initPassword;
      // });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.$router.push({
        path: "/followvisit/particty",
      });
    },
    /** é‡ç½®å¯†ç æŒ‰é’®æ“ä½œ */
    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(() => {});
    },
  created() {},
  methods: {},
    /** æäº¤æŒ‰é’® */
    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(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download(
        "system/user/export",
        {
          ...this.topqueryParams,
        },
        `user_${new Date().getTime()}.xlsx`
      );
    },
  },
};
</script>
<style lang="scss" scoped></style>
<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);
}
.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;
    }
  }
}
.button-bb {
  font-weight: 500;
  color: #2ba05c;
}
.button-xq {
  font-weight: 500;
  color: #409eff;
}
.button-sc {
  font-weight: 500;
  color: #dd302a;
}
.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>
src/views/patient/propaganda/particty.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1101 @@
<template>
  <div class="Questionnairemanagement">
    <!-- ä¸Šä¾§æ  -->
    <div class="sidecolumn">
      <div>
        <el-steps simple :active="Editprogress">
          <el-step
            icon="el-icon-edit"
            title="基础信息"
            description="选择宣教模版、形式等基础信息"
          ></el-step>
          <el-step
            icon="el-icon-user"
            title="宣教对象"
            description="在本部选择宣教病人"
          ></el-step>
        </el-steps>
      </div>
    </div>
    <!-- ä¸‹ä¾§æ•°æ® -->
    <div class="leftvlue" style="margin: 0 20px">
      <!-- åŸºæœ¬ä¿¡æ¯ -->
      <div v-if="Editprogress == 1">
        <el-alert
          title="选择宣教模版、形式等基础信息"
          type="success"
          effect="dark"
        >
        </el-alert>
        <div class="leftvlue-jbxx">
          <!-- åŸºç¡€ä¿¡æ¯ -->
          <div class="examine-jic">
            <div class="headline">
              <div>基础信息</div>
            </div>
            <div class="jic-value">
              <el-form ref="form" :model="form" label-width="105px">
                <el-form-item label="发送时间:">
                  <el-date-picker
                    v-model="form.name"
                    type="date"
                    placeholder="选择日期"
                  >
                  </el-date-picker>
                </el-form-item>
                <el-form-item label="发送时间段:">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox label="上午(8:30-11:30)"></el-checkbox>
                    <el-checkbox label="下午(14:30-16:30)"></el-checkbox>
                    <el-checkbox label="夜间(18:30-20:30)"></el-checkbox>
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="宣教形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox label="当面"></el-checkbox>
                    <el-checkbox label="多媒体"></el-checkbox>
                    <el-checkbox label="纸质"></el-checkbox>
                    <el-checkbox label="电话"></el-checkbox>
                    <el-checkbox label="短信"></el-checkbox>
                    <el-checkbox label="微信公众号"></el-checkbox>
                    <el-checkbox label="微信小程序"></el-checkbox>
                    <el-checkbox label="钉钉"></el-checkbox>
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="发送时间段:">
                  <el-radio-group v-model="form.radio">
                    <el-radio :label="3">单人</el-radio>
                    <el-radio :label="6">多人</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="语音模版" prop="region">
                  <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-form>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>宣教内容列表</div>
            </div>
            <div class="examine-jic">
              <div class="jic-value">
                <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.name"></el-input>
                    </el-form-item>
                    <el-form-item label="适用疾病">
                      <el-input v-model="topqueryParams.name"></el-input>
                    </el-form-item>
                    <el-form-item label="宣教类型" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in taskoptions"
                          :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.topica"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in taskoptions"
                          :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.topicd"
                        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-table
                    v-loading="loading"
                    :data="userList"
                    @selection-change="handleSelectionChange"
                  >
                    <el-table-column
                      type="selection"
                      width="50"
                      align="center"
                    />
                    <el-table-column
                      label="序号"
                      align="center"
                      key="id"
                      prop="id"
                    />
                    <el-table-column
                      label="宣教名称"
                      align="center"
                      sortable
                      key="name"
                      prop="name"
                      :show-overflow-tooltip="true"
                    />
                    <el-table-column
                      label="宣教模板"
                      align="center"
                      key="impTemplate"
                      prop="impTemplate"
                    />
                    <el-table-column
                      label="创建日期"
                      align="center"
                      key="create_time"
                      prop="create_time"
                    />
                    <el-table-column
                      label="创建人"
                      align="center"
                      key="update_by"
                      prop="update_by"
                      sortable
                      width="120"
                      :show-overflow-tooltip="true"
                    />
                    <el-table-column
                      label="操作"
                      align="center"
                      width="120"
                      class-name="small-padding fixed-width"
                    >
                      <template slot-scope="scope">
                        <el-button
                          size="medium"
                          type="text"
                          @click="handleUpdate(scope.row)"
                          v-hasPermi="['system:user:edit']"
                          ><span class="button-zx"
                            ><i class="el-icon-s-promotion"></i>开始执行</span
                          ></el-button
                        >
                      </template>
                    </el-table-column>
                    <el-table-column
                      label="任务详情"
                      align="center"
                      width="200"
                      class-name="small-padding fixed-width"
                    >
                      <template slot-scope="scope">
                        <el-button
                          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
                        >
                      </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>
              </div>
            </div>
          </div>
        </div>
        <el-button type="success" @click="submitForm('ruleForm')">{{
          quote ? "立即创建" : "任务详情设置"
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
      <!-- ä»»åŠ¡è¯¦æƒ… -->
      <div v-if="Editprogress == 2">
        <el-alert title="在本阶段选择宣教病人" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <div class="examine-jic">
            <div class="headline">
              <div>患者列表</div>
            </div>
            <div class="examine-jic">
              <div class="jic-value">
                <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.name"></el-input>
                    </el-form-item>
                    <el-form-item label="患者范围" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in taskoptions"
                          :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>
                    <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="患者电话">
                      <el-input v-model="topqueryParams.name"></el-input>
                    </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-button
                        icon="el-icon-upload2"
                        size="medium"
                        type="warning"
                        >当前患者一键发送</el-button
                      >
                    </el-form-item>
                  </el-form>
                  <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"
                        plain
                        icon="el-icon-plus"
                        size="medium"
                        :disabled="!tasktopic"
                        @click="handleAdd"
                        v-hasPermi="['system:user:add']"
                        >新增</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-col> -->
                  </el-row>
                  <!-- <right-toolbar
                :showSearch.sync="showSearch"
                @queryTable="getList"
                :columns="columns"
              ></right-toolbar> -->
                  <el-table
                    v-loading="loading"
                    :data="userList"
                    @selection-change="handleSelectionChange"
                  >
                    <el-table-column
                      type="selection"
                      width="50"
                      align="center"
                    />
                    <el-table-column
                      label="序号"
                      align="center"
                      key="id"
                      prop="id"
                    />
                    <el-table-column
                      label="任务名称"
                      align="center"
                      sortable
                      key="name"
                      prop="name"
                      :show-overflow-tooltip="true"
                    />
                    <el-table-column
                      label="服务模板"
                      align="center"
                      key="impTemplate"
                      prop="impTemplate"
                    />
                    <el-table-column
                      label="创建日期"
                      align="center"
                      key="create_time"
                      prop="create_time"
                    />
                    <el-table-column
                      label="执行状态"
                      align="center"
                      key="phonenumber"
                      prop="phonenumber"
                      width="120"
                    />
                    <el-table-column
                      label="执行状态"
                      align="center"
                      key="topicnumber"
                      prop="topicnumber"
                      width="120"
                      :show-overflow-tooltip="true"
                    >
                      <template slot-scope="scope">
                        <div>执行完成/执行失败</div>
                      </template>
                    </el-table-column>
                    <el-table-column
                      label="更新人"
                      align="center"
                      key="update_by"
                      prop="update_by"
                      sortable
                      width="120"
                      :show-overflow-tooltip="true"
                    />
                    <el-table-column
                      label="更新时间"
                      sortable
                      align="center"
                      prop="update_time"
                      width="160"
                    >
                      <template slot-scope="scope">
                        <span>{{ parseTime(scope.row.createTime) }}</span>
                      </template>
                    </el-table-column>
                    <el-table-column
                      label="操作"
                      align="center"
                      width="120"
                      class-name="small-padding fixed-width"
                    >
                      <template slot-scope="scope">
                        <el-button
                          size="medium"
                          type="text"
                          @click="handleUpdate(scope.row)"
                          v-hasPermi="['system:user:edit']"
                          ><span class="button-zx"
                            ><i class="el-icon-s-promotion"></i>开始执行</span
                          ></el-button
                        >
                      </template>
                    </el-table-column>
                    <el-table-column
                      label="任务详情"
                      align="center"
                      width="200"
                      class-name="small-padding fixed-width"
                    >
                      <template slot-scope="scope">
                        <el-button
                          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"
                            ><i class="el-icon-delete"></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>
              </div>
            </div>
          </div>
        </div>
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="success" @click="submitForm('ruleForm')"
          >立即创建</el-button
        >
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
    </div>
    <!-- æ·»åŠ æ‚£è€… -->
    <el-dialog
      title="添加派发患者"
      :visible.sync="dialogVisiblepatient"
      width="70%"
      :before-close="handleClosehz"
    >
      <div class="examine-jic">
        <div class="jic-value">
          <el-row :gutter="20">
            <!--用户数据-->
            <el-form
              :model="patientqueryParams"
              ref="queryForm"
              size="small"
              :inline="true"
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="患者名称:">
                <el-input v-model="patientqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="患者来源" prop="status">
                <el-select
                  v-model="patientqueryParams.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="patientqueryParams.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="patientqueryParams.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>
                <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-table
              v-loading="patientloading"
              :data="patientuserList"
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                label="序号"
                align="center"
                key="patid"
                prop="patid"
              />
              <el-table-column
                label="患者名称"
                align="center"
                sortable
                key="name"
                prop="name"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="患者来源"
                align="center"
                key="source"
                prop="source"
              />
              <el-table-column
                label="手机号码"
                align="center"
                key="telcode"
                prop="telcode"
                width="120"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="任务详情"
                align="center"
                width="200"
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    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-sc"
                      ><i class="el-icon-delete"></i>删除</span
                    ></el-button
                  >
                </template>
              </el-table-column>
            </el-table>
          </el-row>
          <pagination
            v-show="patienttotal > 0"
            :total="patienttotal"
            :page.sync="patientqueryParams.pageNum"
            :limit.sync="patientqueryParams.pageSize"
            @pagination="handleAddpatient"
          />
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisiblepatient = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="AddDispatchpatients"
          >确定添加</el-button
        >
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  listsvr_prjtask,
  getsvr_prjtask,
  addsvr_prjtask,
  updatesvr_prjtask,
  delsvr_prjtask,
  Addpatienttask,
} from "@/api/smartorpor/svr_prjtask";
import { listpat_archive } from "@/api/smartorpor/pat_archive";
import { listsvr_prjtaskline } from "@/api/smartorpor/svr_prjtaskline";
export default {
  data() {
    return {
      Editprogress: 1, //编辑进度
      loading: false, // é®ç½©å±‚
      patientloading: false, // é®ç½©å±‚
      dialogVisible: false, //任务详情弹框
      dialogVisiblepatient: false, //添加患者弹框
      topqueryParams: {
        pageNum: 1, //
        pageSize: 10,
      },
      checkList: [],
      deliverytopqueryParams: {
        pageNum: 1, //
        pageSize: 10,
      },
      patientqueryParams: {
        pageNum: 1, //
        pageSize: 10,
      },
      topicoptions: [],
      showSearch: true, //
      total: 0, //
      sontotal: 0, //
      patienttotal: 0, //
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: null,
      patientuserList: null,
      sonuserList: null,
      tasktopic: null, //新增类型
      form: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
      },
      options: [
        {
          value: "选项1",
          label: "黄金糕",
        },
        {
          value: "选项2",
          label: "双皮奶",
        },
        {
          value: "选项3",
          label: "蚵仔煎",
        },
        {
          value: "选项4",
          label: "龙须面",
        },
        {
          value: "选项5",
          label: "北京烤鸭",
        },
      ],
      taskoptions: [
        {
          value: "1",
          label: "通知",
        },
        {
          value: "2",
          label: "随访",
        },
        {
          value: "3",
          label: "问卷",
        },
        {
          value: "4",
          label: "宣教",
        },
      ],
      quote: false,
    };
  },
  created() {
    this.Addsubtask();
    this.Getsubtask();
  },
  methods: {
    // ä¸‹ä¸€æ­¥
    submitForm(formName) {
      if (this.Editprogress <= 3) {
        return this.Editprogress++;
      }
      // æäº¤
      // this.$refs[formName].validate((valid, object) => {
      //   if (valid) {
      //     alert("submit!");
      //   } else {
      //     console.log("error submit!!", object);
      //     return false;
      //   }
      // });
    },
    // å­ä»»åŠ¡ä¸€çº§å¼¹æ¡†
    handleAdd() {
      this.multiple = true;
      listsvr_prjtaskline(this.deliverytopqueryParams).then((response) => {
        console.log(response);
        this.sonuserList = response.rows;
        this.sontotal = response.total;
        this.loading = false;
      });
      this.dialogVisible = true;
    },
    // å­ä»»åŠ¡äºŒçº§å¼¹æ¡†
    handleAddpatient() {
      console.log(this.multiple);
      listpat_archive(this.patientqueryParams).then((response) => {
        console.log(response);
        this.patientuserList = response.rows;
        this.patienttotal = response.total;
        this.loading = false;
      });
      this.dialogVisiblepatient = true;
    },
    handleUpdate() {},
    handleDelete() {},
    handleExport() {},
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = null;
      this.ids = selection.map((item) => item.patid).join(",");
      // let result = this.ids.join(",");
      this.multiple = !selection.length;
      console.log(this.ids);
    },
    getList() {},
    handleQuery() {},
    resetQuery() {},
    handleCloserw() {
      this.dialogVisible = false;
    },
    handleClosehz() {
      this.dialogVisiblepatient = false;
    },
    // ä¸Šä¸€æ­¥
    laststep() {
      this.Editprogress--;
    },
    // æäº¤è¡¨å•
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // é¢„览模版
    PreviewTemplate() {},
    Acknowledgereference() {
      this.quote = true;
    },
    // æ–°å¢žå­ä»»åŠ¡
    Addsubtask() {
      this.topqueryParams.pguid = 2;
      // addsvr_prjtask(this.topqueryParams).then((res) => {
      //   console.log(res);
      // });
    },
    // æ–°å¢žæ´¾é€æ‚£è€…
    AddDispatchpatients() {
      let objictpint = {};
      objictpint.patientes = this.ids;
      objictpint.pguid = 2;
      Addpatienttask(objictpint).then((res) => {
        console.log(res);
      });
      this.dialogVisiblepatient = false;
    },
    // æŸ¥è¯¢å­ä»»åŠ¡åˆ—è¡¨
    Getsubtask() {
      this.topqueryParams.pguid = 2;
      console.log(this.topqueryParams);
      // this.topqueryParams.pid = this.$route.query.id;
      // console.log(this.topqueryParams.pid);
      listsvr_prjtask(this.topqueryParams).then((res) => {
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList);
      });
    },
    /** æŸ¥è¯¢æ‚£è€…列表 */
  },
};
</script>
<style lang="scss" scoped>
.Questionnairemanagement {
}
.leftvlue-jbxx {
  margin-top: 10px;
}
.sidecolumn {
  width: 100%;
  // min-height: 12vh;
  margin: 20px;
  margin-bottom: 0;
  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);
}
.leftvlue {
  //   display: flex;
  //   flex: 1;
  width: 100%;
  margin-top: 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);
}
.examine-jic {
  .headline {
    font-size: 24px;
    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;
    }
  }
  .jic-value {
    font-size: 20px;
    border-top: 1px solid #a7abac;
    padding: 10px;
    margin-bottom: 10px;
    .details-jic {
      padding: 10px 15px;
      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);
      .details-title {
        display: flex;
        justify-content: space-between;
        margin-bottom: 10px;
        div:nth-child(2) {
          color: #02a7f0;
          cursor: pointer;
        }
      }
      .details-renw {
        background: #e4ebfc;
        padding: 15px 5px;
        border-radius: 5px;
        margin-bottom: 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;
//   }
// }
.jic-value {
  font-size: 20px;
  border-top: 1px solid #a7abac;
  padding: 10px;
  margin-bottom: 10px;
  .details-jic {
    padding: 10px 15px;
    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);
    .details-title {
      display: flex;
      justify-content: space-between;
      margin-bottom: 10px;
      div:nth-child(2) {
        color: #02a7f0;
        cursor: pointer;
      }
    }
    .details-renw {
      background: #e4ebfc;
      padding: 15px 5px;
      border-radius: 5px;
      margin-bottom: 20px;
    }
  }
}
::v-deep .addtopic-input {
  input {
    background: #02a7f0;
    color: #edf1f7;
    width: 150px;
  }
}
::v-deep.el-step.is-vertical .el-step__title {
  font-size: 25px;
}
::v-deep.el-row {
  margin-bottom: 10px;
}
// ::v-deep.el-input--medium {
//   font-size: 24px !important;
// }
::v-deep.ruleFormaa.el-select {
  display: inline-block;
  position: relative;
  width: 700px;
}
.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;
  }
}
</style>
src/views/patient/servefn/index.vue
ÎļþÒÑɾ³ý
src/views/repositoryai/templateku/configurat/index.vue
@@ -230,16 +230,18 @@
  .basic {
    height: 50px;
    margin: 15px;
    border-radius: 8px;
    margin-bottom: 0;
    padding: 0 20px 20px 20px;
    line-height: 50px;
    background: #92c5f0;
    background: #bee2ff;
    justify-content: space-between;
  }
  .top-menu {
    margin: 15px;
    margin-top: 0;
    height: 400px;
    border-radius: 4px;
    padding: 10px 30px 10px 30px;
    background: #f2f5fc;
    border: 1px solid #dcdfe6;
@@ -269,9 +271,10 @@
    }
    .basics {
      height: 50px;
      border-radius: 8px;
      padding-left: 20px;
      line-height: 50px;
      background: #92c5f0;
      background: #bee2ff;
      justify-content: space-between;
    }
  }
@@ -289,7 +292,7 @@
      height: 50px;
      padding: 0 20px 20px 20px;
      line-height: 50px;
      background: #92c5f0;
      background: #bee2ff;
      justify-content: space-between;
    }
    .valuetop {
@@ -301,7 +304,7 @@
        // padding: 0 20px 20px 20px;
        padding: 0 20px;
        align-items: center;
        background: #92c5f0;
        background: #bee2ff;
        justify-content: space-between;
        .text-icon {
          width: 35px;
src/views/repositoryai/templateku/index.vue
@@ -897,12 +897,12 @@
    compileUpdate(row) {
      if (this.topactiveName == "Local") {
        this.$router.push({
          path: "/repositoryai/templateku/configurat/",
          path: "/knowledge/templateku/configurat/",
          query: { id: "1" },
        });
      } else {
        this.$router.push({
          path: "/repositoryai/templateku/particulars/",
          path: "/knowledge/templateku/particulars/",
          query: { id: "1" },
        });
      }
src/views/repositoryai/templateku/particulars/index.vue
@@ -97,6 +97,7 @@
.top-text {
  margin: 15px;
  margin-top: 0;
  border-radius: 4px;
  padding: 0 30px 30px 30px;
  background: #f2f5fc;
  border: 1px solid #dcdfe6;
@@ -105,32 +106,35 @@
}
.basic {
  height: 50px;
  border-radius: 8px;
  margin: 15px;
  margin-bottom: 0;
  padding: 0 20px 20px 20px;
  line-height: 50px;
  background: #92c5f0;
  background: #bee2ff;
}
.headline {
  display: flex;
  height: 50px;
  border-radius: 8px;
  margin: 15px;
  margin-bottom: 0;
  padding: 0 20px 20px 20px;
  line-height: 50px;
  background: #92c5f0;
  background: #bee2ff;
  justify-content: space-between;
}
.valuetop {
  .val-text {
    display: flex;
    border-radius: 8px;
    height: 50px;
    margin: 15px;
    margin-bottom: 0;
    // padding: 0 20px 20px 20px;
    padding: 0 20px;
    align-items: center;
    background: #92c5f0;
    background: #bee2ff;
    justify-content: space-between;
    .text-icon {
      width: 35px;
@@ -145,6 +149,7 @@
  .val-bon {
    margin: 15px;
    margin-top: 0;
    border-radius: 4px;
    padding: 30px;
    background: #f2f5fc;
    border: 1px solid #dcdfe6;
src/views/repositoryai/verbaltrick/index.vue
@@ -707,7 +707,7 @@
    },
    compileUpdate(row) {
      this.$router.push({
        path: "/repositoryai/verbaltrick/particulars/",
        path: "/knowledge/verbaltrick/particulars/",
        query: { id: "1" },
      });
    },
src/views/smartor/hecategory/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/helibrary/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrexecuteconfig/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrextemplate/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrextemplatescript/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrflow/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrflownode/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrflownodebranch/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrglobalconfig/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrintent/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrlibascript/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrlibintent/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrlibintentcategory/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrlibscript/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrlibscriptcategory/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrlibscriptmodel/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrquestionlib/QuestionMaint.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrrecall/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrscene/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrscenecategory/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrscript/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrscriptmodel/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrscripttarget/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtarget/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtask/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtaskcall/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtaskcalldetail/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtaskcallrecord/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtasksms/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtemplate/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtemplatescript/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/ivrtemplatetarget/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/patarchive/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/patarchive/index0.vue
ÎļþÒÑɾ³ý
src/views/smartor/patinhosp/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/patouthosp/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/patphysical/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemeautofinshrule/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemecalldetail/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemecategory/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemelibrary/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemeplan/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemetask/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemetaskconfig/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemetaskrecord/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemetaskrepeatconfig/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemetriggerrule/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/schemetriggerscene/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/smsaccount/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/smsparam/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/smsrecords/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/smstemplet/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svycategory/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svyexception/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svyfinish/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svyfinishoption/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svyfinishtopic/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svyresult/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytitle/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytitle/index0.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytitle/index1.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytopic/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytopic/index1.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytopic/maint.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytopicoption/index.vue
ÎļþÒÑɾ³ý
src/views/smartor/svytopicoption/index1.vue
ÎļþÒÑɾ³ý