Browse Source

完成医生签名上传

xiaochan 1 year ago
parent
commit
cb1cee662c

+ 12 - 1
src/views/settings/permissions/UserRoleSettings.vue

@@ -18,6 +18,7 @@
       <el-input v-model="queryConditions.ybCode" style="width: 120px" clearable></el-input>
       <el-button icon="Search" type="primary" @click="clickToQuery"> 查询</el-button>
       <el-button icon="Plus" type="success" @click="addEmployees"> 添加</el-button>
+      <el-button @click="updateImagMultiple">批量上传签名</el-button>
     </header>
     <div class="layout_main layout_container layout-horizontal">
       <aside class="layout_container" style="width: 220px">
@@ -73,11 +74,17 @@
           <el-table-column prop="socialNo" label="身份证"></el-table-column>
           <el-table-column prop="phoneNo" label="手机号码"></el-table-column>
           <el-table-column prop="ybCode" label="医保编码"></el-table-column>
-          <el-table-column label="操作" fixed="right" width="108">
+          <el-table-column label="操作" fixed="right" width="180">
             <template v-slot="scope">
               <el-button-group>
                 <el-button text bg type="primary" @click="clickToEdit(scope.$index, scope.row)">编辑</el-button>
                 <el-button text bg size="small" @click="viewUserRoles(scope.row)" v-if="competence">角色</el-button>
+                <el-button text
+                           bg
+                           type="primary"
+                           @click="updateImageByUserCode(scope.row.code ,scope.row.name)">
+                  上传签名
+                </el-button>
               </el-button-group>
             </template>
           </el-table-column>
@@ -139,6 +146,10 @@ import PersonnelInformationEditing from '@/components/settings/permissions/Perso
 import {needRule} from '@/utils/public'
 import {CyMessageBox} from "@/components/cy/message-box";
 import LUpload from "@/views/settings/permissions/LUpload.vue"
+import {
+  updateImageByUserCode,
+  updateImagMultiple
+} from "@/views/settings/upload-doctor-signature/useUploadDoctorSignature";
 
 const tableHeight = window.innerHeight - 10
 const competence = needRule(1, 62)

+ 86 - 0
src/views/settings/upload-doctor-signature/UploadDoctorSignature.vue

@@ -0,0 +1,86 @@
+<template>
+  <CyDialog
+      :title
+      ignore-error
+      body-width="60%"
+      :body-height="windowSize"
+  >
+    <el-upload
+        v-model:fileList="fileList"
+        accept="image/png"
+        drag
+        :onSuccess
+        :headers
+        :action
+        list-type="picture"
+        :multiple
+    >
+      <el-icon class="el-icon--upload">
+        <UploadFilled/>
+      </el-icon>
+      <div class="el-upload__text">
+        拖拽上传 或 <em>点击上传</em>
+      </div>
+      <template #tip>
+        <div class="el-upload__tip">
+          尺寸小于500KB的 PNG 文件
+        </div>
+      </template>
+    </el-upload>
+  </CyDialog>
+</template>
+
+<script setup lang="ts">
+import {UploadFilled} from '@element-plus/icons-vue'
+import {isDev} from "@/utils/public";
+import {UploadFile, UploadFiles, UploadUserFile} from "element-plus";
+import {stringIsBlank} from "@/utils/blank-utils";
+import XEUtils from "xe-utils";
+import CyDialog from "@/components/cy/dialog/src/CyDialog.vue";
+
+const props = withDefaults(defineProps<{
+  code?: string,
+  name?: string
+}>(), {
+  code: null,
+  name: ''
+})
+
+const windowSize = `calc(${window.innerHeight}px - 500px)`
+
+const multiple = computed(() => {
+  return stringIsBlank(props.code)
+})
+
+const title = multiple.value ? "批量上传,根据图片的名称上传,如(3891.png),格式为 工号.png" : props.name + ":上传签名"
+
+const fileList = ref<UploadUserFile[]>([])
+
+const url = isDev ? 'http://172.16.30.66:8706/' : 'http://172.16.32.167:8706'
+
+const action = computed(() => {
+  if (multiple.value) {
+    return url + `/settings/putAutographImage`;
+  } else {
+    return url + `/settings/putAutographImage?code=${props.code}`;
+  }
+})
+
+const headers = {
+  token: localStorage.token
+}
+
+function onSuccess(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) {
+  const index = XEUtils.findLastIndexOf(fileList.value, (item: UploadUserFile) => {
+    return item.uid === uploadFile.uid;
+  })
+  if (response.code === 200) {
+    fileList.value[index] = {
+      ...fileList.value[index],
+      ...response.data
+    }
+  } else {
+    fileList.value[index].status = 'fail'
+  }
+}
+</script>

+ 11 - 0
src/views/settings/upload-doctor-signature/useUploadDoctorSignature.ts

@@ -0,0 +1,11 @@
+// @ts-nocheck
+import useDialogToJs from "@/components/js-dialog-comp/useDialogToJs";
+import UploadDoctorSignature from "@/views/settings/upload-doctor-signature/UploadDoctorSignature.vue";
+
+export function updateImageByUserCode(code: string, name): Promise<void> {
+    return useDialogToJs(UploadDoctorSignature, {code, name})
+}
+
+export function updateImagMultiple() {
+    return useDialogToJs(UploadDoctorSignature)
+}