Эх сурвалжийг харах

✨ feat(【SPD售后问题收集】): 接入小程序端

因目前微信小程序未接入运营端,导致用户提出的问题无法及时处理。新开发的售后端、运营端是通过链接在群里的方式来运营的,所以需要实现通过微信小程序扫描医院售后二维码来进行问题提报。 需求: 1、通过微信小程序扫描二维码授权登录后跳转到SPD 售后端服务,取二维码上:(科室、医院、用户手机号 )信息来初始化SPD售后端服务信息 2、增加微信小程序标识,避免已通过链接提报的用户受影响 3、微信小程序代码提交到git管理

20240702162
002390 11 сар өмнө
parent
commit
42a40264c8

+ 7 - 1
src/store/modules/salesUser.js

@@ -7,6 +7,7 @@ const salesUser = {
     userPhone: "",
     userProject: "",
     userRoom: "",
+    hospitalId: "",
   },
 
   mutations: {
@@ -25,18 +26,23 @@ const salesUser = {
     SET_SALESROOM: (state, userRoom) => {
       state.userRoom = userRoom;
     },
+    SET_HOSPITALID: (state, hospitalId) => {
+      state.hospitalId = hospitalId;
+    },
   },
   actions: {
     // 获取信息
     setSalesUser({ commit }, { data }) {
       return new Promise((resolve, reject) => {
-        let { id, userName, userPhone, userProject, userRoom } = data;
+        let { id, userName, userPhone, userProject, userRoom, hospitalId } = data;
         Cookies.set('salesId', id);
+        Cookies.set('salesProId', hospitalId);
         commit("SET_SALESID", id);
         commit("SET_SALESNAME", userName);
         commit("SET_SALESPHONE", userPhone);
         commit("SET_SALESPROJECT", userProject);
         commit("SET_SALESROOM", userRoom);
+        commit("SET_HOSPITALID", hospitalId);
         resolve()
       })
 

+ 3 - 15
src/views/business/as/after-sales/contact-us/index.vue

@@ -1,7 +1,7 @@
 <!-- 联系我们 -->
 <script>
 import Cookies from "js-cookie";
-import { ProjectInfo } from "@/api/business/as/after-sales";
+// import { ProjectInfo } from "@/api/business/as/after-sales";
 export default {
   name: "contactUs",
   data() {
@@ -39,22 +39,10 @@ export default {
       }
     },
     onCancel() {},
-    async getProjectInfo(id) {
-      try {
-        this.loading = true;
-        let { code, data } = await ProjectInfo({ id });
-        if (code === 200) {
-          this.phone = data.defaultContactWay;
-        }
-      } catch (error) {
-      } finally {
-        this.loading = false;
-      }
-    },
   },
   created() {
-    const projectId = Cookies.get("salesProId");
-    this.getProjectInfo(projectId);
+    // const projectId = Cookies.get("salesProId");
+    // this.getProjectInfo(projectId);
   },
 };
 </script>

+ 5 - 1
src/views/business/as/after-sales/feedback/columns.js

@@ -8,7 +8,11 @@ export default function useColumns() {
       }
     },
     {
-      item: { key: "questioner", title: "用户姓名", required: true, },
+      item: {
+        key: "questioner",
+        title: "用户姓名",
+        // required: true, 
+      },
       attr: {
         is: "el-input",
       }

+ 47 - 1
src/views/business/as/after-sales/index.vue

@@ -1,7 +1,9 @@
 <!-- SPD售后问题收集 -->
 <!-- 首页 -->
 <script>
+import Cookies from "js-cookie";
 import Columns from "./columns";
+import { AddUser, ProjectInfo } from "@/api/business/as/after-sales";
 export default {
   name: "afterSales",
   components: {
@@ -18,9 +20,53 @@ export default {
   },
   methods: {
     useBack() {},
+    // 用户信息获取——二维码进入
+    async fetchUser(prop) {
+      try {
+        this.loading = true;
+        let params = {
+          ...prop,
+          userSource: "2",
+        };
+        console.log(params, "params");
+        let { code, data } = await AddUser({ ...params });
+        if (code === 200) {
+          await this.getProjectInfo(data.hospitalId);
+          this.$store.dispatch("setSalesUser", { data }).then(async () => {
+            this.$toast("登录成功");
+          });
+        }
+      } catch (error) {
+      } finally {
+        this.loading = false;
+      }
+    },
+    async getProjectInfo(id) {
+      try {
+        this.loading = true;
+        let { code, data } = await ProjectInfo({ id });
+        if (code === 200) {
+          this.phone = data.defaultContactWay;
+        }
+      } catch (error) {
+      } finally {
+        this.loading = false;
+      }
+    },
   },
 
-  created() {},
+  created() {
+    // phonenumber 手机号 hosName 项目名称 officeName 科室名称
+    const { phonenumber, hosName, officeName } = this.$route.query;
+    if (phonenumber && hosName && officeName) {
+      // 二维码进入
+      this.fetchUser({
+        userRoom: officeName,
+        userProject: hosName,
+        userPhone: phonenumber,
+      });
+    }
+  },
 };
 </script>
 

+ 12 - 1
src/views/business/as/after-sales/progress/index.vue

@@ -78,7 +78,7 @@ export default {
         style="width: 100%"
       />
     </van-sticky>
-    <el-row>
+    <el-row v-if="dataList.length">
       <el-col
         v-for="data in dataList"
         :span="24"
@@ -126,6 +126,17 @@ export default {
         </p>
       </el-col>
     </el-row>
+
+    <el-empty
+      v-else
+      :image-size="100"
+      style="
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+      "
+    ></el-empty>
     <progress-detail
       ref="ProgressDetail"
       v-model="checkedId"