Kaynağa Gözat

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_companyUI

caoliqin 18 saat önce
ebeveyn
işleme
7eb307ce77

+ 10 - 0
src/api/company/companyUser.js

@@ -87,6 +87,16 @@ export function addUser(data) {
   })
 }
 
+//创建二维码
+export function addCodeUrl(data) {
+  return request({
+    url: '/company/user/addCodeUrl',
+    method: 'post',
+    data: data
+  })
+}
+
+
 // 修改用户
 export function updateUser(data) {
   return request({

+ 27 - 0
src/api/company/firstDiagnosis.js

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 新增初诊单
+export function addFsFirstDiagnosis(data) {
+  return request({
+    url: '/his/diagnosis',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改初诊单
+export function updateFsFirstDiagnosis(data) {
+  return request({
+    url: '/his/diagnosis',
+    method: 'put',
+    data: data
+  })
+}
+
+// 查询初诊单详细
+export function getFsFirstDiagnosis(userId) {
+  return request({
+    url: '/his/diagnosis/' + userId,
+    method: 'get'
+  })
+}

+ 156 - 19
src/views/company/companyUser/index.vue

@@ -100,6 +100,14 @@
               @click="handleAllowedAllRegister"
             >允许注册会员开关</el-button>
           </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              size="mini"
+              @click="handleBindCompanyUserCode"
+            >生成注册/绑定销售二维码</el-button>
+          </el-col>
           <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
 
@@ -406,25 +414,60 @@
       </div>
     </el-dialog>
 
-<!--    &lt;!&ndash; 用户导入对话框 &ndash;&gt;-->
-<!--    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>-->
-<!--      <el-upload 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" slot="tip">-->
-<!--          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
-<!--          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>-->
-<!--        </div>-->
-<!--        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>-->
-<!--      </el-upload>-->
-<!--      <div slot="footer" class="dialog-footer">-->
-<!--        <el-button type="primary" @click="submitFileForm">确 定</el-button>-->
-<!--        <el-button @click="upload.open = false">取 消</el-button>-->
-<!--      </div>-->
-<!--    </el-dialog>-->
+    <el-dialog :title="title" :visible.sync="bindCompanyOpen" width="700px" append-to-body>
+      <el-form ref="formBindCompany" :model="formBindCompany" :rules="bindCompanyRules" label-width="80px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="企微主体" prop="corpId">
+              <el-select v-model="formBindCompany.corpId" placeholder="企微主体" size="small">
+                <el-option
+                  v-for="dict in myQwCompanyList"
+                  :key="dict.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="归属部门" prop="deptId">
+              <treeselect v-model="formBindCompany.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="角色" prop="roleIds">
+              <el-select v-model="formBindCompany.roleIds" multiple placeholder="请选择">
+                <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId "></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="销售区域" prop="addressId">
+              <el-select v-model="formBindCompany.addressId"  filterable placeholder="请选择所属销售的区域" style="width: 200px;">
+                <el-option
+                  v-for="item in citysAreaList"
+                  :key="item.cityId"
+                  :label="item.cityName"
+                  :value="item.cityId"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitBingCompanyForm">确 定</el-button>
+        <el-button @click="cancelBind">取 消</el-button>
+      </div>
+    </el-dialog>
+
     <el-dialog :title="user.title" :visible.sync="user.open" width="1000px" append-to-body>
       <selectUser ref="selectUser" @bindQwUser="bindQwUser"></selectUser>
     </el-dialog>
@@ -470,6 +513,17 @@
         <el-button @click="allowedAllRegisterOpen = false">取 消</el-button>
       </div>
     </el-dialog>
+
+    <el-dialog :title="bindCompanyUrl.title" v-if="bindCompanyUrl.open"  :visible.sync="bindCompanyUrl.open" width="450px"  append-to-body>
+      <div style="padding-bottom:15px;" >
+        <img :src="bindCompanyUrl.url" width="400px">
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="downloadImage(bindCompanyUrl.url, bindCompanyUrl.name+'.png')">下载二维码</el-button>
+      </div>
+    </el-dialog>
+
+
   </div>
 </template>
 
@@ -500,6 +554,7 @@ import { getMyQwUserList,getMyQwCompanyList } from "@/api/qw/user";
 import  selectUser  from "@/views/company/components/selectQwUser.vue";
 import { getConfigByKey } from "@/api/company/companyConfig";
 import axios from "axios";
+import {addCodeUrl} from "../../../api/company/companyUser";
 export default {
   name: "User",
   components: { Treeselect ,selectUser},
@@ -538,6 +593,7 @@ export default {
       deptOptions: undefined,
       // 是否显示弹出层
       open: false,
+      bindCompanyOpen: false,
       qwOpen:false,
       // 部门名称
       deptName: undefined,
@@ -569,6 +625,15 @@ export default {
       citysAreaList:[],
       // 表单参数
       form: {},
+      formBindCompany: {},
+
+      bindCompanyUrl:{
+        open:false,
+        title:"绑定/注册销售二维码",
+        name:null,
+        url:null,
+      },
+
       form1: {},
       defaultProps: {
         children: "children",
@@ -646,6 +711,21 @@ export default {
           },
         ],
       },
+      // 表单校验
+      bindCompanyRules: {
+        deptId: [
+          { required: true, message: "归属部门不能为空", trigger: "blur" },
+        ],
+        addressId: [
+          { required: true, message: "销售所属区域不能为空", trigger: "blur" },
+        ],
+        roleIds: [
+          { required: true, message: "角色不能为空", trigger: "blur" },
+        ],
+        corpId: [
+          { required: true, message: "角色不能为空", trigger: "blur" },
+        ],
+      },
       // 是否允许注册会员开关
       allowedAllRegisterOpen: false,
       allowedAllRegisterForm: {
@@ -771,6 +851,10 @@ export default {
       this.open = false;
       this.reset();
     },
+    cancelBind(){
+      this.bindCompanyOpen=false;
+      this.resetBindCompany();
+    },
 
     submitFormArea(address){
       const uIds = this.ids;
@@ -820,6 +904,15 @@ export default {
       };
       this.resetForm("form");
     },
+
+    resetBindCompany() {
+      this.formBindCompany = {
+        deptId: null,
+        addressId: null,
+        roleIds: [],
+      };
+      this.resetForm("formBindCompany");
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.page = 1;
@@ -850,6 +943,17 @@ export default {
         console.log(" this.form1 ", this.form1)
       });
     },
+
+    handleBindCompanyUserCode(){
+      this.reset();
+      this.getTreeselect();
+      getUser().then((response) => {
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.bindCompanyOpen = true;
+        this.title = "创建 新增/绑定销售 的二维码";
+      });
+    },
     qwBind(row){
       this.qwUser=[];
       this.qwUserList=[];
@@ -960,6 +1064,39 @@ export default {
         }
       });
     },
+
+    downloadImage(imageSrc, fileName) {
+      const link = document.createElement('a');
+      link.href = imageSrc;
+      link.download = fileName || '绑定或新增销售.png';
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    },
+
+    submitBingCompanyForm: function () {
+
+      this.$refs["formBindCompany"].validate((valid) => {
+        if (valid) {
+
+          let loadingRock = this.$loading({
+            lock: true,
+            text: '生成二维码中~~请不要刷新页面!!',
+            spinner: 'el-icon-loading',
+            background: 'rgba(0, 0, 0, 0.7)'
+          });
+
+            addCodeUrl(this.formBindCompany).then((response) => {
+              this.bindCompanyOpen=false;
+              this.bindCompanyUrl.url=response.data.url
+              this.bindCompanyUrl.open=true;
+              this.bindCompanyUrl.name="绑定或新增 销售二维码";
+            }).finally(res=>{
+              loadingRock.close();
+            })
+        }
+      });
+    },
     /**
     * 同步企业微信员工
     */

+ 137 - 1
src/views/qw/externalContact/myExternalContact.vue

@@ -435,6 +435,13 @@
           >
             <span>解除会员绑定</span>
           </el-button>
+          <el-button v-show="scope.row.fsUserId"
+            size="mini"
+            type="text"
+            @click="handleDiagnosis(scope.row)"
+          >
+            <span>初诊单</span>
+          </el-button>
 
 <!--          <el-button v-if="scope.row.customerId"-->
 <!--            size="mini"-->
@@ -466,6 +473,82 @@
       @pagination="getList"
     />
 
+    <!-- 添加或修改初诊单对话框 -->
+    <el-dialog title="初诊单" :visible.sync="diagnosisOpen" width="1000px" append-to-body>
+      <el-form ref="diagnosisForm" :model="diagnosisForm" :rules="diagnosisRules" label-width="110px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="患者姓名" prop="patientName">
+              <el-input v-model="diagnosisForm.patientName" placeholder="请输入患者姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="年龄" prop="age">
+              <el-input-number v-model="diagnosisForm.age"  :min="1" label="年龄"></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="患者电话" prop="phone">
+              <el-input v-model="diagnosisForm.phone" placeholder="请输入电话" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="性别" prop="gender">
+              <el-select  v-model="diagnosisForm.gender">
+                <el-option label="未知" :value = "0"></el-option>
+                <el-option label="男性" :value = "1"></el-option>
+                <el-option label="女性" :value = "2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="日期" prop="dateTime">
+              <el-date-picker clearable size="small"
+                v-model="diagnosisForm.dateTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="医生" prop="doctorId">
+              <el-select v-model="diagnosisForm.doctorId" placeholder="选择医生"  size="small" @change="doctorChange">
+                <el-option
+                  v-for="dict in doctorList"
+                  :key="dict.id"
+                  :label="dict.name"
+                  :value="dict.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="身体状况" prop="physicalCondition">
+          <el-input v-model="diagnosisForm.physicalCondition" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        
+        <el-form-item label="初步诊断" prop="firstDiagnosis">
+          <el-input v-model="diagnosisForm.firstDiagnosis" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        
+        <el-form-item label="医生职称" prop="doctorDep">
+          <el-input disabled v-model="diagnosisForm.doctorDep" placeholder="医生职称" />
+        </el-form-item>
+        <el-form-item label="医生证号" prop="doctorCertificate">
+          <el-input disabled v-model="diagnosisForm.doctorCertificate" placeholder="医生证号" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="diagnosisSubmitForm">确 定</el-button>
+        <el-button @click="diagnosisCancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
     <el-drawer size="75%" :title="show.title" :visible.sync="show.open">
       <customer-details  ref="customerDetails" @refreshList="refreshList"/>
     </el-drawer>
@@ -751,6 +834,7 @@ import {
 } from '@/api/qw/externalContact'
 import info from "@/views/qw/externalContact/info.vue";
 import {getMyQwUserList, getMyQwCompanyList, handleInputAuthAppKey, updateUser} from "@/api/qw/user";
+import {addFsFirstDiagnosis, updateFsFirstDiagnosis, getFsFirstDiagnosis} from "@/api/company/firstDiagnosis";
 import {listTag, getTag, searchTags,} from "@/api/qw/tag";
 import { allListTagGroup} from "../../../api/qw/tagGroup";
 import mycustomer from '@/views/qw/externalContact/mycustomer'
@@ -759,12 +843,17 @@ import SopDialog from '@/views/course/sop/SopDialog.vue'
 import  selectUser  from "@/views/qw/externalContact/selectUser.vue";
 import { editTalk,editAllTalk } from "@/api/qw/externalContactInfo";
 import {createLinkUrl} from "@/api/course/sopCourseLink";
+import {docList} from "@/api/doctor/doctor";
 import PaginationMore from "../../../components/PaginationMore/index.vue";
 export default {
   name: "ExternalContact",
   components:{PaginationMore, mycustomer,customerDetails,SopDialog,selectUser,info},
   data() {
     return {
+      doctorList:[],
+      diagnosisForm:{},
+      diagnosisOpen:false,
+      diagnosisRules:{},
       notesOpen: {
         type: 1,
         nameType: 3,
@@ -938,7 +1027,8 @@ export default {
       statusOptions:[],
       // 表单校验
       rules: {
-      }
+      },
+      fsUserId: null,
     };
   },
   created() {
@@ -972,9 +1062,55 @@ export default {
     this.getDicts("sys_qw_transfer_status").then(response => {
       this.transferStatusOptions = response.data;
     });
+    this.getDocList();
 
   },
   methods: {
+    doctorChange(val){
+      for(const doctor of this.doctorList) {
+        if(doctor.id == val) {
+          this.diagnosisForm.doctorDep = doctor.position;
+          this.diagnosisForm.doctorCertificate = doctor.certificateCode;
+          this.diagnosisForm.doctorName = doctor.name;
+          break;
+        }
+      }
+      console.log(this.diagnosisForm)
+    },
+    getDocList(){
+      docList().then(res => {
+        this.doctorList = res.rows;
+      })
+    },
+    handleDiagnosis(row){
+      getFsFirstDiagnosis(row.fsUserId).then(res => {
+        this.diagnosisForm = res.data;
+      });
+      this.fsUserId = row.fsUserId;
+      this.diagnosisOpen = true;
+    },
+   diagnosisSubmitForm(){
+    this.$refs["diagnosisForm"].validate(valid => {
+        if (valid) {
+          this.diagnosisForm.qwUserId = this.queryParams.qwUserId;
+          this.diagnosisForm.userId = this.fsUserId;
+          if (this.diagnosisForm.id != null) {
+            updateFsFirstDiagnosis(this.diagnosisForm).then(response => {
+              this.msgSuccess("修改成功");
+              this.diagnosisOpen = false;
+            });
+          } else {
+            addFsFirstDiagnosis(this.diagnosisForm).then(response => {
+              this.msgSuccess("新增成功");
+              this.diagnosisOpen = false;
+            });
+          }
+        }
+      });
+   },
+   diagnosisCancel(){
+    this.diagnosisOpen = false;
+   },
 	 change(){
 		if(this.createTime!=null){
 		  this.queryParams.sTime=this.createTime[0];

+ 6 - 1
src/views/statistics/section/channel.vue

@@ -345,7 +345,12 @@ export default {
     handleQuery() {
       console.log(this.selectedCompanyList == null || this.selectedCompanyList.length < 0)
       if (!this.dateRange || this.dateRange.length !== 2) {
-        this.$message.warning("请选择时间范围");
+        this.$message.error("请选择时间范围");
+        return;
+      }
+
+      if(this.selectedCompanyList == null || this.selectedCompanyList.length <= 0) {
+        this.$message.error("公司为必选!");
         return;
       }
       this.queryParams.pageNum = 1;

+ 6 - 1
src/views/statistics/section/index.vue

@@ -326,7 +326,12 @@ export default {
     /** 搜索按钮操作 */
     handleQuery() {
       if (!this.dateRange || this.dateRange.length !== 2) {
-        this.$message.warning("请选择时间范围");
+        this.$message.error("请选择时间范围");
+        return;
+      }
+
+      if(this.selectedCompanyList == null || this.selectedCompanyList.length <= 0) {
+        this.$message.error("公司为必选!");
         return;
       }
       this.queryParams.pageNum = 1;

+ 5 - 1
src/views/statistics/section/inline.vue

@@ -343,7 +343,11 @@ export default {
     /** 搜索按钮操作 */
     handleQuery() {
       if (!this.dateRange || this.dateRange.length !== 2) {
-        this.$message.warning("请选择时间范围");
+        this.$message.error("请选择时间范围");
+        return;
+      }
+      if(this.selectedCompanyList == null || this.selectedCompanyList.length <= 0) {
+        this.$message.error("公司为必选!");
         return;
       }
       this.queryParams.pageNum = 1;

+ 4 - 0
src/views/statistics/section/today.vue

@@ -344,6 +344,10 @@ export default {
         this.$message.error("公司和时间为必选!");
         return;
       }
+      if (!this.dateRange || this.dateRange.length !== 2) {
+        this.$message.error("请选择时间范围");
+        return;
+      }
       this.queryParams.pageNum = 1;
       this.queryParams.periodList = this.selectedMultipleTasks;
       this.getList();