Răsfoiți Sursa

✨ feat(【SPD售后问题收集】):

免登录处理、接口联调
20240425292
002390 11 luni în urmă
părinte
comite
3d39df6e65

+ 10 - 0
src/api/business/as/after-sales.js

@@ -1,6 +1,16 @@
 // SPD售后问题收集 ——移动端
 import request from "@/utils/request";
 
+// 查询项目信息
+export function ProjectInfo(params) {
+  return request({
+    url: `/mk/as/hospital/getById/${params.id}`,
+    method: "GET",
+    // params,
+  });
+}
+
+
 // 判断是否第一次登录
 export function FirstLogin(params) {
   return request({

+ 3 - 2
src/permission.js

@@ -13,9 +13,10 @@ const whiteList = ['/login', '/register', '/test01', '/ehrentrance', '/contractB
   '/foodScreen', '/business/wms/historical-route', '/business/SupAtttachment',
   '/business/purchase/form/transferOrder/bipPull-entrance', '/contractDetail',
   '/spdAddQuestion', '/business/wms/ProductMarking',
-  '/after-sales/index', '/after-sales/login', '/after-sales/feedback', '/after-sales/progress', '/after-sales/updateInfo'
 ]
 
+const whiteListName = ['asLogin', "afterSales", "Feedback", "Progress", "UpdateInfo"]
+
 router.beforeEach((to, from, next) => {
   NProgress.start()
   if (getToken()) {
@@ -47,7 +48,7 @@ router.beforeEach((to, from, next) => {
     }
   } else {
     // 没有token
-    if (whiteList.indexOf(to.path) !== -1) {
+    if (whiteList.indexOf(to.path) !== -1 || whiteListName.indexOf(to.name) !== -1) {
       // 在免登录白名单,直接进入
       next()
     } else {

+ 1 - 1
src/router/index.js

@@ -295,7 +295,7 @@ export const constantRoutes = [
     hidden: true,
   },
   {
-    path: '/after-sales/login',
+    path: '/after-sales/login/:id?',
     name: "asLogin",
     component: () => import('@/views/business/as/after-sales/user/login'),
     hidden: true,

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

@@ -40,7 +40,7 @@ const salesUser = {
         resolve()
       })
 
-    }
+    },
 
 
   }

+ 19 - 2
src/views/business/as/after-sales/contact-us/index.vue

@@ -1,10 +1,12 @@
 <!-- 联系我们 -->
 <script>
+import Cookies from "js-cookie";
+import { ProjectInfo } from "@/api/business/as/after-sales";
 export default {
   name: "contactUs",
   data() {
     return {
-      phone: "18874149031",
+      phone: "",
       show: false,
       actions: [
         { name: "拨号", key: "call" },
@@ -25,8 +27,23 @@ 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);
   },
-  created() {},
 };
 </script>
 

+ 3 - 3
src/views/business/as/after-sales/feedback/index.vue

@@ -17,6 +17,7 @@ export default {
       params: {
         ...params,
         userId: null,
+        hospitalId: null,
         // projectSource: "测试项目",
       },
       files: [],
@@ -36,8 +37,7 @@ export default {
       this.$refs[prop].validate(async (valid) => {
         if (valid) {
           try {
-            console.log(this.params, "params");
-            console.log(this.files, "files");
+            console.log({ params: this.params, files: this.files }, "params");
             this.loading = true;
             let formData = new FormData();
             this.files.forEach((f) => {
@@ -70,12 +70,12 @@ export default {
         if (code === 200) {
           this.params = {
             userId: data.id,
+            hospitalId: data.hospitalId,
             projectSource: data.userProject,
             questioner: data.userName,
             roomInformation: data.userRoom,
             questionerWay: data.userPhone,
           };
-          // this.params.userId = data.id;
         }
       } catch (error) {}
     },

+ 15 - 10
src/views/business/as/after-sales/progress/details.vue

@@ -136,16 +136,11 @@ export default {
       </el-descriptions>
 
       <el-card shadow="never">
-        <p
-          style="
-            border-bottom: 1px solid #e2dede;
-            margin: 0;
-            line-height: 28px;
-            padding: 6px 12px;
-            font-weight: 600;
-          "
-        >
-          工单处理状态
+        <p class="dispose">
+          <span>工单处理状态</span>
+          <span style="color: #ff8500;font-size:12px"
+            >持续时长:{{ params.processingTime }}</span
+          >
         </p>
         <el-timeline style="padding: 16px 12px">
           <el-timeline-item
@@ -205,4 +200,14 @@ export default {
 ::v-deep .el-card__body {
   padding: 0;
 }
+.dispose {
+  border-bottom: 1px solid #e2dede;
+  margin: 0;
+  line-height: 28px;
+  padding: 6px 12px;
+  font-weight: 600;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
 </style>

+ 5 - 3
src/views/business/as/after-sales/user/bindingInfo.vue

@@ -32,11 +32,13 @@ export default {
       this.visible = prop;
     },
     beforeOpen() {
-      const { userProject, userPhone } = this.$props.value;
+      // const { userProject, userPhone, hid } = this.$props.value;
       this.params = {
         ...this.params,
-        userPhone,
-        userProject,
+        ...this.$props.value,
+        // hid,
+        // userPhone,
+        // userProject,
       };
     },
     useSubmit(prop) {

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

@@ -13,7 +13,7 @@ export default {
       Columns,
       size: "mini",
       loading: false,
-      title: "进度查询",
+      title: "用户信息",
       params,
       rules,
     };
@@ -25,7 +25,6 @@ export default {
     async fetchUser() {
       try {
         // const { id } = this.$store.state.salesUser;
-        console.log();
         const id = Cookies.get("salesId");
         let { code, data } = await GetUser({ id });
         if (code === 200) {

+ 23 - 4
src/views/business/as/after-sales/user/login.vue

@@ -1,6 +1,7 @@
 <!-- 登录 -->
 <script>
-import { FirstLogin } from "@/api/business/as/after-sales";
+import Cookies from "js-cookie";
+import { FirstLogin, ProjectInfo } from "@/api/business/as/after-sales";
 export default {
   name: "asLogin",
   components: {
@@ -13,8 +14,9 @@ export default {
       fit: "contain",
       imgUrl: require("../images/logo.jpg"),
       formData: {
-        userProject: "测试项目",
-        userPhone: "13520547701",
+        hospitalId: null,
+        userProject: null,
+        userPhone: "13520547721",
       },
       rules: {
         userProject: [
@@ -58,8 +60,25 @@ export default {
         }
       });
     },
+    async getProjectInfo(id) {
+      try {
+        this.loading = true;
+        let { code, data } = await ProjectInfo({ id });
+        if (code === 200) {
+          Cookies.set("salesProId", data.id);
+          this.formData.userProject = data.projectSource;
+        }
+      } catch (error) {
+      } finally {
+        this.loading = false;
+      }
+    },
+  },
+  created() {
+    const { id } = this.$route.params;
+    this.formData.hospitalId = id;
+    this.getProjectInfo(id);
   },
-  created() {},
 };
 </script>