瀏覽代碼

同城店铺新建流程重构

zhujindu 1 年之前
父節點
當前提交
40614a43c0

+ 9 - 0
src/api/index.js

@@ -816,3 +816,12 @@ export function getOrderByStoreCode(query) {
     params: query,
   });
 }
+
+// 部门主管审批新建店铺-退回
+export function updateStoreRejectMessage(data) {
+  return request({
+    url: '/mobile/store/updateStoreRejectMessage',
+    method: 'post',
+    data: data,
+  });
+}

+ 1 - 1
src/assets/styles/index.css

@@ -45,7 +45,7 @@ div:focus {outline: none;}
     }
 }
 /*public*/
-.bgcolor {background-color: #F5F5F5;}
+.bgcolor {background-color: #F5F5F5;width: 100%;height: 100%;}
 .contentborder {background-color: #fff;border-radius: 5px;margin: 0 10px 16px;overflow: hidden}
 .colorbalck {color: #333;}
 .rateText{vertical-align: super;display: inline-block;font-size: 14px;}

+ 2 - 1
src/main.js

@@ -18,7 +18,7 @@ import { toastLoading } from '@/utils/commonVant';
 import '@vant/touch-emulator';
 Vue.config.productionTip = false;
 import Vant from 'vant';
-import { Toast } from 'vant';
+import { Toast, Notify } from 'vant';
 import 'vant/lib/index.css';
 import ClipboardJS from 'clipboard';
 Vue.use(Vant);
@@ -49,6 +49,7 @@ Vue.prototype.wx = wx;
 Vue.prototype.parseTimeParagraph = parseTimeParagraph;
 Vue.prototype.Micrometer = Micrometer;
 Vue.prototype.Toast = Toast;
+Vue.prototype.notify = Notify;
 var clipboard = new ClipboardJS('.btn');
 clipboard.on('success', function (e) {
   Toast('编码复制成功!');

+ 388 - 376
src/router/index.js

@@ -1,390 +1,402 @@
-import Vue from "vue";
-import VueRouter from "vue-router";
-import layout from "@/layout/index.vue";
+import Vue from 'vue';
+import VueRouter from 'vue-router';
+import layout from '@/layout/index.vue';
 
 const originalPush = VueRouter.prototype.push;
 VueRouter.prototype.push = function push(location) {
-    return originalPush.call(this, location).catch(err => err);
+  return originalPush.call(this, location).catch((err) => err);
 };
 Vue.use(VueRouter);
 const router = new VueRouter({
-    // mode:"history",
-    // mode:process.env.NODE_ENV !==
-    // "production" ? "hash" : "history",
-    mode:"history",
-    scrollBehavior(to, from, savedPosition) {
-      if (savedPosition) {
-        return savedPosition;
-      } else {
-        return { x: 0, y: 0 };
-      }
+  // mode:"history",
+  // mode:process.env.NODE_ENV !==
+  // "production" ? "hash" : "history",
+  mode: 'history',
+  scrollBehavior(to, from, savedPosition) {
+    if (savedPosition) {
+      return savedPosition;
+    } else {
+      return { x: 0, y: 0 };
+    }
+  },
+  base: '/mobile/',
+  routes: [
+    {
+      path: '/',
+      component: layout,
+      redirect: '/home',
+      children: [
+        {
+          path: '/home',
+          name: 'home',
+          component: () => import('@/views/home/index.vue'),
+        },
+        {
+          path: '/reportingRate',
+          name: 'reportingRate',
+          component: () => import('@/views/home/reportingRate.vue'),
+        },
+        {
+          path: '/err',
+          name: 'err',
+          component: () => import('@/views/home/err.vue'),
+        },
+        {
+          path: '/login',
+          name: 'login',
+          component: () => import('@/views/home/login.vue'),
+        },
+        {
+          path: '/clew',
+          name: 'clew',
+          component: () => import('@/views/clew/index.vue'),
+        },
+        {
+          path: '/clewent',
+          name: 'clew',
+          component: () => import('@/views/clew/clewent.vue'),
+        },
+        // {
+        //     path: "/logincs",
+        //     name: "logincs",
+        //     component: () => import("@/views/home/logincs.vue")
+        // }
+      ],
     },
-    base: '/mobile/',
-    routes: [
-        {
-            path: "/",
-            component: layout,
-            redirect: "/home",
-            children: [
-                {
-                    path: "/home",
-                    name: "home",
-                    component: () => import("@/views/home/index.vue")
-                },
-                {
-                    path: "/reportingRate",
-                    name: "reportingRate",
-                    component: () => import("@/views/home/reportingRate.vue")
-                },
-                {
-                    path: "/err",
-                    name: "err",
-                    component: () => import("@/views/home/err.vue")
-                },
-                {
-                    path: "/login",
-                    name: "login",
-                    component: () => import("@/views/home/login.vue")
-                },
-                {
-                    path: "/clew",
-                    name: "clew",
-                    component: () => import("@/views/clew/index.vue")
-                },
-                {
-                    path: "/clewent",
-                    name: "clew",
-                    component: () => import("@/views/clew/clewent.vue")
-                },
-                // {
-                //     path: "/logincs",
-                //     name: "logincs",
-                //     component: () => import("@/views/home/logincs.vue")
-                // }
-            ]
-        },
-        {
-            path: "/storemanagementlist",
-            component: layout,
-            redirect: "/storemanagement/index",
-            children: [
-                {
-                    path: "/storemanagement/index",
-                    name: "storeManagement",
-                    component: () => import("@/views/storeManagement/index.vue")
-                },
-                {
-                    path: "/storeDetail",
-                    name: "storeDetail",
-                    component: () => import("@/views/storeManagement/storeDetail.vue")
-                },
-                {
-                    path: "/storeAdd",
-                    name: "storeAdd",
-                    component: () => import("@/views/storeManagement/storeAdd.vue")
-                },
-                {
-                    path: "/storeAddress",
-                    name: "storeAddress",
-                    component: () => import("@/views/storeManagement/storeAddress.vue")
-                },
-                {
-                    path: "/odersuccess",
-                    name: "storeAdd",
-                    component: () => import("@/views/deviceOutside/oderSuccess.vue")
-                },
-                {
-                    path: "/storeEdit",
-                    name: "storeEdit",
-                    component: () => import("@/views/storeManagement/storeEdit.vue")
-                },
-                {
-                    path: "/success",
-                    name: "success",
-                    component: () => import("@/views/storeManagement/success.vue")
-                }
-            ]
-        },
-        {
-            path: "/outsidelist",
-            component: layout,
-            redirect: "/outsidelist/index",
-            children: [
-                {
-                    path: "/outsidelist/index",
-                    name: "outsidelist",
-                    component: () => import("@/views/deviceOutside/index.vue")
-                },
-                {
-                    path: "/ai",
-                    name: "ai",
-                    component: () => import("@/views/intelligence/index.vue")
-                },
-                {
-                    path: "/topStore",
-                    name: "topStore",
-                    component: () => import("@/views/deviceOutside/topStore.vue")
-                },
-                {
-                    path: "/pItem",
-                    name: "pItem",
-                    component: () => import("@/views/deviceOutside/productItem.vue")
-                },
-                {
-                    path: "/suishenbangOutstoreVisit",
-                    name: "suishenbangOutstoreVisit",
-                    component: () => import("@/views/deviceOutside/suishenbangOutstoreVisit.vue")
-                },
-                {
-                    path: "/projectOut",
-                    name: "projectOut",
-                    component: () => import("@/views/deviceOutside/projectOut.vue")
-                },
-                {
-                    path: "/rangeStore",
-                    name: "rangeStore",
-                    component: () => import("@/views/deviceOutside/rangeStore.vue")
-                },
-                {
-                    path: "/outstoreVisit",
-                    name: "outstoreVisit",
-                    component: () => import("@/views/deviceOutside/outstoreVisit.vue")
-                },
-                {
-                    path: "/taskList",
-                    name: "taskList",
-                    component: () => import("@/views/deviceOutside/taskList.vue")
-                },
-                {
-                    path: "/storeGroup",
-                    name: "storeGroup",
-                    component: () => import("@/views/deviceOutside/storeGroup.vue")
-                },
-                {
-                    path: "/outabnormalVisit",
-                    name: "outabnormalVisit",
-                    component: () => import("@/views/deviceOutside/outabnormalVisit.vue")
-                }
-            ]
-        },
-        {
-            path: "/historicalVisit",
-            component: layout,
-            redirect: "/historicalVisit/index",
-            children: [
-                {
-                    path: "/historicalVisit/index",
-                    name: "historicalVisit",
-                    component: () => import("@/views/historicalVisit/index.vue")
-                },
-                {
-                    path: "/historAllVisit",
-                    name: "historAllVisit",
-                    component: () => import("@/views/historicalVisit/historAllVisit.vue")
-                },
-
-                {
-                    path: "/historicalDetails",
-                    name: "historicalDetails",
-                    component: () => import("@/views/historicalVisit/historicalDetails.vue")
-                },
-                {
-                    path: "/historiStoreVisit",
-                    name: "historiStoreVisit",
-                    component: () => import("@/views/historicalVisit/hisvistdeils.vue")
-                }
-            ]
-        },
-        {
-            path: "/deviceWithin",
-            component: layout,
-            redirect: "/deviceWithin/index",
-            children: [
-                {
-                    path: "/deviceWithin/index",
-                    name: "deviceWithin",
-                    component: () => import("@/views/deviceWithin/index.vue")
-                },
-                {
-                    path: "/storeVisitpage",
-                    name: "storeVisitpage",
-                    component: () => import("@/views/deviceWithin/storeVisit.vue")
-                },
-                {
-                    path: "/addStoreVisit",
-                    name: "addStoreVisit",
-                    component: () => import("@/views/deviceWithin/addStoreVisit.vue")
-                },
+    {
+      path: '/storemanagementlist',
+      component: layout,
+      redirect: '/storemanagement/index',
+      children: [
+        {
+          path: '/storemanagement/index',
+          name: 'storeManagement',
+          component: () => import('@/views/storeManagement/index.vue'),
+        },
+        {
+          path: '/storeDetail',
+          name: 'storeDetail',
+          component: () => import('@/views/storeManagement/storeDetail.vue'),
+        },
+        {
+          path: '/storeAdd',
+          name: 'storeAdd',
+          component: () => import('@/views/storeManagement/storeAdd.vue'),
+        },
+        {
+          path: '/storeAddress',
+          name: 'storeAddress',
+          component: () => import('@/views/storeManagement/storeAddress.vue'),
+        },
+        {
+          path: '/odersuccess',
+          name: 'storeAdd',
+          component: () => import('@/views/deviceOutside/oderSuccess.vue'),
+        },
+        {
+          path: '/storeEdit',
+          name: 'storeEdit',
+          component: () => import('@/views/storeManagement/storeEdit.vue'),
+        },
+        {
+          path: '/success',
+          name: 'success',
+          component: () => import('@/views/storeManagement/success.vue'),
+        },
+      ],
+    },
+    {
+      path: '/outsidelist',
+      component: layout,
+      redirect: '/outsidelist/index',
+      children: [
+        {
+          path: '/outsidelist/index',
+          name: 'outsidelist',
+          component: () => import('@/views/deviceOutside/index.vue'),
+        },
+        {
+          path: '/ai',
+          name: 'ai',
+          component: () => import('@/views/intelligence/index.vue'),
+        },
+        {
+          path: '/topStore',
+          name: 'topStore',
+          component: () => import('@/views/deviceOutside/topStore.vue'),
+        },
+        {
+          path: '/pItem',
+          name: 'pItem',
+          component: () => import('@/views/deviceOutside/productItem.vue'),
+        },
+        {
+          path: '/suishenbangOutstoreVisit',
+          name: 'suishenbangOutstoreVisit',
+          component: () => import('@/views/deviceOutside/suishenbangOutstoreVisit.vue'),
+        },
+        {
+          path: '/projectOut',
+          name: 'projectOut',
+          component: () => import('@/views/deviceOutside/projectOut.vue'),
+        },
+        {
+          path: '/rangeStore',
+          name: 'rangeStore',
+          component: () => import('@/views/deviceOutside/rangeStore.vue'),
+        },
+        {
+          path: '/outstoreVisit',
+          name: 'outstoreVisit',
+          component: () => import('@/views/deviceOutside/outstoreVisit.vue'),
+        },
+        {
+          path: '/taskList',
+          name: 'taskList',
+          component: () => import('@/views/deviceOutside/taskList.vue'),
+        },
+        {
+          path: '/storeGroup',
+          name: 'storeGroup',
+          component: () => import('@/views/deviceOutside/storeGroup.vue'),
+        },
+        {
+          path: '/outabnormalVisit',
+          name: 'outabnormalVisit',
+          component: () => import('@/views/deviceOutside/outabnormalVisit.vue'),
+        },
+      ],
+    },
+    {
+      path: '/historicalVisit',
+      component: layout,
+      redirect: '/historicalVisit/index',
+      children: [
+        {
+          path: '/historicalVisit/index',
+          name: 'historicalVisit',
+          component: () => import('@/views/historicalVisit/index.vue'),
+        },
+        {
+          path: '/historAllVisit',
+          name: 'historAllVisit',
+          component: () => import('@/views/historicalVisit/historAllVisit.vue'),
+        },
 
-                {
-                    path: "/addStoreVisitd",
-                    name: "addStoreVisitd",
-                    component: () => import("@/views/deviceWithin/addStoreVisitd.vue")
-                },
-                {
-                    path: "/addStoreVisitP",
-                    name: "addStoreVisitP",
-                    component: () => import("@/views/deviceWithin/addStoreVisitP.vue")
-                },
-                {
-                    path: "/abnormalVisit",
-                    name: "abnormalVisit",
-                    component: () => import("@/views/deviceWithin/abnormalVisit.vue")
-                }
-                ,
-                {
-                    path: "/sign",
-                    name: "sign",
-                    component: () => import("@/views/sign/index.vue")
-                } ,
-                {
-                    path: "/signApprovalList",
-                    name: "signApproval",
-                    component: () => import("@/views/signApproval/index.vue")
-                },
-                {
-                    path: "/signApproval",
-                    name: "signApproval",
-                    component: () => import("@/views/signApproval/signApproval.vue")
-                }
-            ]
+        {
+          path: '/historicalDetails',
+          name: 'historicalDetails',
+          component: () => import('@/views/historicalVisit/historicalDetails.vue'),
+        },
+        {
+          path: '/historiStoreVisit',
+          name: 'historiStoreVisit',
+          component: () => import('@/views/historicalVisit/hisvistdeils.vue'),
+        },
+      ],
+    },
+    {
+      path: '/deviceWithin',
+      component: layout,
+      redirect: '/deviceWithin/index',
+      children: [
+        {
+          path: '/deviceWithin/index',
+          name: 'deviceWithin',
+          component: () => import('@/views/deviceWithin/index.vue'),
+        },
+        {
+          path: '/storeVisitpage',
+          name: 'storeVisitpage',
+          component: () => import('@/views/deviceWithin/storeVisit.vue'),
+        },
+        {
+          path: '/addStoreVisit',
+          name: 'addStoreVisit',
+          component: () => import('@/views/deviceWithin/addStoreVisit.vue'),
         },
 
         {
-            path: "/My",
-            component: layout,
-            redirect: "/My/index",
-            children: [
-                {
-                    path: "/My/index",
-                    name: "MyList",
-                    component: () => import("@/views/week/index.vue")
-                },
-                {
-                    path: "/myInventory",
-                    name: "myInventory",
-                    component: () => import("@/views/my/myInventory.vue")
-                },
-                {
-                    path: "/material",
-                    name: "material",
-                    component: () => import("@/views/my/material.vue")
-                },
-                {
-                    path: "/subordinateHistoricalDaily",
-                    name: "subordinateHistoricalDaily",
-                    component: () => import("@/views/week/dailyHistorical.vue")
-                }, {
-                    path: "/subordinateHistoricalWeekly",
-                    name: "subordinateHistoricalWeekly",
-                    component: () => import("@/views/week/weeklyHistorical.vue")
-                }, {
-                    path: "/myHistoricalDaily",
-                    name: "myHistoricalDaily",
-                    component: () => import("@/views/week/myHistoricalDaily.vue")
-                },
-                {
-                    path: "/weeklyApproval",
-                    name: "weeklyApproval",
-                    component: () => import("@/views/week/weeklyApproval.vue")
-                },
-                {
-                    path: "/weeklyApprovalDetils",
-                    name: "weeklyApprovalDetils",
-                    component: () => import("@/views/week/weeklyApprovalDetils.vue")
-                },
-                {
-                    path: "/myComment",
-                    name: "myComment",
-                    component: () => import("@/views/week/myComment.vue")
-                },
-                {
-                    path: "/doubleWeeklyDetils",
-                    name: "doubleWeeklyDetils",
-                    component: () => import("@/views/week/doubleWeeklyDetils.vue")
-                },
-                {
-                    path: "/daily",
-                    name: "daily",
-                    component: () => import("@/views/week/daily.vue")
-                }, {
-                    path: "/dailyApprovalList",
-                    name: "dailyApprovalList",
-                    component: () => import("@/views/week/dailyApprovalList.vue")
-                },
-                {
-                    path: "/dailyApproval",
-                    name: "dailyApproval",
-                    component: () => import("@/views/week/dailyApproval.vue")
-                },
-                {
-                    path: "/dailyDetails",
-                    name: "dailyDetails",
-                    component: () => import("@/views/week/dailyDetails.vue")
-                },
-                {
-                    path: "/weeklyApproval",
-                    name: "weeklyApproval",
-                    component: () => import("@/views/week/weeklyApproval.vue")
-                },
-                {
-                    path: "/weekly",
-                    name: "weekly",
-                    component: () => import("@/views/week/weekly.vue")
-                },
-                {
-                    path: "/doubleWeekly",
-                    name: "doubleWeekly",
-                    component: () => import("@/views/week/doubleWeekly.vue")
-                },
-                {
-                    path: "/doubleWeeklyApproval",
-                    name: "doubleWeeklyApproval",
-                    component: () => import("@/views/week/doubleWeeklyApproval.vue")
-                },
-                {
-                    path: "/doubleWeeklyHistorical",
-                    name: "doubleWeeklyHistorical",
-                    component: () => import("@/views/week/doubleWeeklyHistorical.vue")
-                },
-                {
-                    path: "/dailyHistoricalDetails",
-                    name: "dailyHistoricalDetails",
-                    component: () => import("@/views/week/dailyHistoricalDetails.vue")
-                },
-                {
-                    path: "/doubleHistoricalWeeklyDetils",
-                    name: "doubleHistoricalWeeklyDetils",
-                    component: () => import("@/views/week/doubleHistoricalWeeklyDetils.vue")
-                },
-                {
-                    path: "/weeklyHistoricalDetils",
-                    name: "weeklyHistoricalDetils",
-                    component: () => import("@/views/week/weeklyHistoricalDetils.vue")
-                },
-                {
-                    path: "/VisitSummary",
-                    name: "VisitSummary",
-                    component: () => import("@/views/week/VisitSummary.vue")
-                },
-                {
-                    path: "/VisitSummaryMy",
-                    name: "VisitSummaryMy",
-                    component: () => import("@/views/week/VisitSummaryMy.vue")
-                },
-                {
-                    path: "/VisitSummaryAdd",
-                    name: "VisitSummaryAdd",
-                    component: () => import("@/views/week/VisitSummaryAdd.vue")
-                },
-                {
-                    path: "/VisitSummaryDetail",
-                    name: "VisitSummaryDetail",
-                    component: () => import("@/views/week/VisitSummaryDetail.vue")
-                },
-            ]
+          path: '/addStoreVisitd',
+          name: 'addStoreVisitd',
+          component: () => import('@/views/deviceWithin/addStoreVisitd.vue'),
+        },
+        {
+          path: '/addStoreVisitP',
+          name: 'addStoreVisitP',
+          component: () => import('@/views/deviceWithin/addStoreVisitP.vue'),
+        },
+        {
+          path: '/abnormalVisit',
+          name: 'abnormalVisit',
+          component: () => import('@/views/deviceWithin/abnormalVisit.vue'),
+        },
+        {
+          path: '/sign',
+          name: 'sign',
+          component: () => import('@/views/sign/index.vue'),
+        },
+        {
+          path: '/signApprovalList',
+          name: 'signApproval',
+          component: () => import('@/views/signApproval/index.vue'),
+        },
+        {
+          path: '/signApproval',
+          name: 'signApproval',
+          component: () => import('@/views/signApproval/signApproval.vue'),
+        },
+        // 同城店铺建店审批
+        {
+          path: '/newStoreApprovalList',
+          name: 'newStoreApprovalList',
+          component: () => import('@/views/signApproval/newStoreApprovalList.vue'),
+        },
+        {
+          path: '/newStoreApprovalDetail',
+          name: 'newStoreApprovalDetail',
+          component: () => import('@/views/signApproval/newStoreApprovalDetail.vue'),
+        },
+      ],
+    },
 
-        }
-    ]
+    {
+      path: '/My',
+      component: layout,
+      redirect: '/My/index',
+      children: [
+        {
+          path: '/My/index',
+          name: 'MyList',
+          component: () => import('@/views/week/index.vue'),
+        },
+        {
+          path: '/myInventory',
+          name: 'myInventory',
+          component: () => import('@/views/my/myInventory.vue'),
+        },
+        {
+          path: '/material',
+          name: 'material',
+          component: () => import('@/views/my/material.vue'),
+        },
+        {
+          path: '/subordinateHistoricalDaily',
+          name: 'subordinateHistoricalDaily',
+          component: () => import('@/views/week/dailyHistorical.vue'),
+        },
+        {
+          path: '/subordinateHistoricalWeekly',
+          name: 'subordinateHistoricalWeekly',
+          component: () => import('@/views/week/weeklyHistorical.vue'),
+        },
+        {
+          path: '/myHistoricalDaily',
+          name: 'myHistoricalDaily',
+          component: () => import('@/views/week/myHistoricalDaily.vue'),
+        },
+        {
+          path: '/weeklyApproval',
+          name: 'weeklyApproval',
+          component: () => import('@/views/week/weeklyApproval.vue'),
+        },
+        {
+          path: '/weeklyApprovalDetils',
+          name: 'weeklyApprovalDetils',
+          component: () => import('@/views/week/weeklyApprovalDetils.vue'),
+        },
+        {
+          path: '/myComment',
+          name: 'myComment',
+          component: () => import('@/views/week/myComment.vue'),
+        },
+        {
+          path: '/doubleWeeklyDetils',
+          name: 'doubleWeeklyDetils',
+          component: () => import('@/views/week/doubleWeeklyDetils.vue'),
+        },
+        {
+          path: '/daily',
+          name: 'daily',
+          component: () => import('@/views/week/daily.vue'),
+        },
+        {
+          path: '/dailyApprovalList',
+          name: 'dailyApprovalList',
+          component: () => import('@/views/week/dailyApprovalList.vue'),
+        },
+        {
+          path: '/dailyApproval',
+          name: 'dailyApproval',
+          component: () => import('@/views/week/dailyApproval.vue'),
+        },
+        {
+          path: '/dailyDetails',
+          name: 'dailyDetails',
+          component: () => import('@/views/week/dailyDetails.vue'),
+        },
+        {
+          path: '/weeklyApproval',
+          name: 'weeklyApproval',
+          component: () => import('@/views/week/weeklyApproval.vue'),
+        },
+        {
+          path: '/weekly',
+          name: 'weekly',
+          component: () => import('@/views/week/weekly.vue'),
+        },
+        {
+          path: '/doubleWeekly',
+          name: 'doubleWeekly',
+          component: () => import('@/views/week/doubleWeekly.vue'),
+        },
+        {
+          path: '/doubleWeeklyApproval',
+          name: 'doubleWeeklyApproval',
+          component: () => import('@/views/week/doubleWeeklyApproval.vue'),
+        },
+        {
+          path: '/doubleWeeklyHistorical',
+          name: 'doubleWeeklyHistorical',
+          component: () => import('@/views/week/doubleWeeklyHistorical.vue'),
+        },
+        {
+          path: '/dailyHistoricalDetails',
+          name: 'dailyHistoricalDetails',
+          component: () => import('@/views/week/dailyHistoricalDetails.vue'),
+        },
+        {
+          path: '/doubleHistoricalWeeklyDetils',
+          name: 'doubleHistoricalWeeklyDetils',
+          component: () => import('@/views/week/doubleHistoricalWeeklyDetils.vue'),
+        },
+        {
+          path: '/weeklyHistoricalDetils',
+          name: 'weeklyHistoricalDetils',
+          component: () => import('@/views/week/weeklyHistoricalDetils.vue'),
+        },
+        {
+          path: '/VisitSummary',
+          name: 'VisitSummary',
+          component: () => import('@/views/week/VisitSummary.vue'),
+        },
+        {
+          path: '/VisitSummaryMy',
+          name: 'VisitSummaryMy',
+          component: () => import('@/views/week/VisitSummaryMy.vue'),
+        },
+        {
+          path: '/VisitSummaryAdd',
+          name: 'VisitSummaryAdd',
+          component: () => import('@/views/week/VisitSummaryAdd.vue'),
+        },
+        {
+          path: '/VisitSummaryDetail',
+          name: 'VisitSummaryDetail',
+          component: () => import('@/views/week/VisitSummaryDetail.vue'),
+        },
+      ],
+    },
+  ],
 });
 export default router;

+ 13 - 0
src/views/home/index.vue

@@ -1202,6 +1202,19 @@
       </van-cell>
       <div class="lineGrey"></div>
     </div>
+    <!-- 同城店建店审批 -->
+    <div class="contentborder">
+      <van-cell class="homeTitle" title="同城店建店审批" to="/newStoreApprovalList">
+        <template #title>
+          <span class="custom-title">同城店建店审批&nbsp;&nbsp;</span>
+          <van-tag v-if="approvalPendingNum > 0" type="danger">{{ approvalPendingNum }}</van-tag>
+        </template>
+        <template #right-icon>
+          <van-icon class="homeCellIcon" name="arrow" size="16" />
+        </template>
+      </van-cell>
+      <div class="lineGrey"></div>
+    </div>
     <div class="contentborder">
       <van-button
         v-if="powerGrade == 3 && showButton"

+ 775 - 0
src/views/signApproval/newStoreApprovalDetail.vue

@@ -0,0 +1,775 @@
+<template>
+  <div>
+    <div class="navBarTOP">
+      <!-- 顶部条 -->
+      <van-nav-bar class="navBar" title="客户详情" left-arrow @click-left="onClickLeft" />
+    </div>
+    <!--主体内容-->
+    <div style="margin-top: 44px; padding-bottom: 50px" v-if="pageShow">
+      <van-dialog title="门店位置">
+        <mapmarker :info="list"></mapmarker>
+      </van-dialog>
+      <van-tabs class="myTab" v-model="tabVal" color="#0057ba" @change="tabChange">
+        <van-tab title="基础信息" name="insidePlan" ref="dispsps">
+          <!-- 提交审批后被驳回 -->
+          <div class="rejectMsg" v-if="rejectMsg[0]">
+            <span class="label">审批记录</span>
+            <span class="value">{{ rejectMsg[0].rejectCause }}</span>
+            <span class="examineDetail" @click="examineDetail">查看详情</span>
+          </div>
+          <van-field readonly v-model="list.storeCode" label="编号" />
+          <van-field readonly v-if="DIYshow" v-model="list.attribute1" label="DIY编号" />
+          <van-field readonly v-model="list.storeName" :label="storeName" />
+          <van-field readonly v-model="list.storeCategoryName" label="类型" />
+          <van-field
+            readonly
+            rows="1"
+            autosize
+            type="textarea"
+            v-model="list.addressLine"
+            :label="address" />
+          <van-field v-model="list.lat" readonly label="经度" placeholder="经度" />
+          <van-field readonly v-model="list.lon" label="维度" />
+          <van-field readonly v-model="list.orgName" label="销售部" />
+          <van-field readonly v-model="list.provinceName" label="省(州)"> </van-field>
+          <van-field readonly v-model="list.cityName" label="城市"> </van-field>
+          <van-field readonly v-model="list.districtName" label="区(县)"> </van-field>
+          <van-field readonly v-model="list.townName" label="街道"> </van-field>
+          <van-field readonly v-model="list.cityLevel" label="城市等级" />
+          <van-field
+            readonly
+            v-if="list.ifJzStoreType != 1 && list.storeCategory != 'C917'"
+            v-model="list.contactName"
+            label="联系人" />
+          <van-field
+            readonly
+            v-if="list.ifJzStoreType == 1 && list.storeCategory != 'C917'"
+            v-model="list.contactName"
+            label="老板" />
+          <van-field
+            readonly
+            v-model="list.telephone"
+            label="联系电话"
+            v-if="list.storeCategory != 'C917'" />
+          <van-field
+            readonly
+            v-model="list.chainCode"
+            label="经销商编号"
+            v-if="list.storeCategory != 'C917'" />
+          <van-field
+            readonly
+            v-model="list.chainName"
+            label="经销商名称"
+            v-if="list.storeCategory != 'C917'" />
+          <van-field readonly v-model="list.salesmanName" label="销售员" />
+          <div v-if="list.storeCategory != 'C917'">
+            <van-field
+              readonly
+              v-model="list.area"
+              v-if="list.ifJzStoreType != 1"
+              label="面积(m²)" />
+            <van-field
+              readonly
+              v-model="list.area"
+              v-if="list.ifJzStoreType == 1"
+              label="家装展厅面积(m²)" />
+          </div>
+          <van-field
+            readonly
+            v-if="GZAttributeFormShow"
+            label="潜在客户类型"
+            v-model="list.potentialCustomerType" />
+          <van-field readonly v-if="list.carShop" label="是否车铺开店">
+            <template #input>
+              <span v-if="list.carShop == 1">是</span>
+              <span v-if="list.carShop == 0">否</span>
+            </template>
+          </van-field>
+          <div v-if="list.carShopImgList != null && list.carShop == 1">
+            <p style="padding: 0 16px">车铺照片(店招及车铺产品拍在一张照片里)</p>
+            <viewUploadImg :imgs="list.carShopImgList"></viewUploadImg>
+          </div>
+          <template v-if="list.img != null && list.storeCategory != 'C917'">
+            <van-row gutter="20" style="padding: 16px">
+              <van-col span="12">
+                <div v-if="storeTypePOP">
+                  <van-image
+                    width="100%"
+                    height="160"
+                    :src="setImgSrc(list.img)"
+                    @click="deleteImgs(list.img)" />
+                  <p style="text-align: center">
+                    {{ list.ifJzStoreType != 1 ? '建店时门店照' : '家装前台照片' }}
+                  </p>
+                </div>
+                <div v-else>
+                  <van-image
+                    width="100%"
+                    height="160"
+                    :src="setImgSrc(list.img)"
+                    @click="deleteImgs(list.img)" />
+                  <p style="text-align: center">
+                    {{ list.storeCategory == 'C912' ? '工地铭牌照片' : '公司照片' }}
+                  </p>
+                </div>
+              </van-col>
+              <van-col span="12" v-if="list.ifJzStoreType != 1">
+                <div v-if="storeTypePOP">
+                  <van-image
+                    width="100%"
+                    height="160"
+                    :src="setImgSrc(list.imgSed)"
+                    @click="deleteImgs(list.imgSed)" />
+                  <p style="text-align: center">
+                    {{ list.ifJzStoreType != 1 ? '陈列照' : '立邦展厅照片' }}
+                  </p>
+                </div>
+              </van-col>
+            </van-row>
+          </template>
+          <van-row gutter="20" style="padding: 16px">
+            <van-col span="12" v-if="list.newStoreSignPhoto">
+              <div v-if="storeTypePOP">
+                <van-image
+                  width="100%"
+                  height="160"
+                  :src="setImgSrc(list.newStoreSignPhoto)"
+                  @click="deleteImgs(list.newStoreSignPhoto)" />
+                <p style="text-align: center">最近一次拜访店招</p>
+              </div>
+            </van-col>
+          </van-row>
+          <van-collapse v-model="activeNames" class="orderList">
+            <van-collapse-item title="门店下单记录" name="1">
+              <div class="orderItem" v-for="(item, index) in orderList" :key="index">
+                <div class="orderTitle">
+                  {{ item.ORDERID }} | {{ item.ORDERDATE }} | {{ item.STATUS_DESCR }}
+                </div>
+                <el-table
+                  :data="item.productDetail"
+                  border
+                  class="table-headermd table-headermdhome"
+                  style="width: 100%">
+                  <el-table-column label="产品名称" prop="DESCR" />
+                  <el-table-column label="数量" prop="QTY" width="80px" />
+                  <!-- <el-table-column label="单价" prop="price" width="80px" /> -->
+                </el-table>
+              </div>
+            </van-collapse-item>
+          </van-collapse>
+        </van-tab>
+        <van-tab title="属性信息" name="outsidePlan">
+          <van-field readonly label="属性" v-if="dictTypeFormShow" v-model="list.tcfxName" />
+        </van-tab>
+      </van-tabs>
+      <br />
+      <br />
+      <br />
+      <br />
+      <br />
+      <br />
+      <!-- 未结案 未提交状态下可关闭门店、提交审核 -->
+      <div class="bottomBtn">
+        <van-button color="red" round @click="rejectReasonShow = true">退回</van-button>
+        <van-button type="primary" round>通过</van-button>
+      </div>
+    </div>
+    <!-- 退回原因填写 -->
+    <van-popup v-model="rejectReasonShow" class="rejectMsgBox" closeable round position="bottom">
+      <div class="title">退回原因</div>
+      <div class="content">
+        <van-field
+          v-model="rejectMessage"
+          rows="2"
+          autosize
+          type="textarea"
+          placeholder="请输入退回原因" />
+        <div class="btnBox">
+          <van-button type="primary" round @click="rejectReasonSubmit">提交</van-button>
+        </div>
+      </div>
+    </van-popup>
+    <!-- 提交审核后退回原因 只有同城分销店显示 -->
+    <van-popup v-model="rejectMsgShow" class="rejectMsgBox" closeable round position="bottom">
+      <div class="title">审批详情</div>
+      <div class="content">
+        <div class="rejectMsgItem" v-for="(item, index) in rejectMsg" :key="index">
+          <div class="item approver">
+            <span class="label">审批人:</span>
+            <span class="value">{{ item.approver }}</span>
+          </div>
+          <div class="item approvalTime">
+            <span class="label">审批时间:</span>
+            <span class="value">{{ item.approvalTime }}</span>
+          </div>
+          <div class="item rejectCause">
+            <span class="label">退回原因:</span>
+            <span class="value">{{ item.rejectCause }}</span>
+          </div>
+        </div>
+      </div>
+    </van-popup>
+  </div>
+</template>
+
+<script>
+import { ImagePreview } from 'vant';
+import {
+  getById,
+  getStoreTypeList,
+  getStoreyslTypeList,
+  getTCFXList,
+  getSJSList,
+  getQGJZist,
+  getCustomerInfoList,
+  getCustomerNatureList,
+  getMainProjectList,
+  getMainRelationList,
+  getManagementModelList,
+  getpotentialCustomerTypeList,
+  getOrderByStoreCode,
+  updateStoreRejectMessage,
+} from '@/api/index';
+import mapmarker from '@/components/mapMarker';
+import viewUploadImg from '@/components/viewUploadImg';
+import txmapimg1 from '@/assets/txmap1.svg';
+import txmapimg2 from '@/assets/txmap2.svg';
+import txmapimg3 from '@/assets/marker_blue.png';
+import axios from 'axios';
+import uploadImg from '@/components/viewaddreddUploadImg.vue';
+export default {
+  components: { uploadImg, mapmarker, viewUploadImg },
+  data() {
+    return {
+      tabVal: 'insidePlan',
+      list: [],
+      txmapimg1: txmapimg1,
+      txmapimg2: txmapimg2,
+      txmapimg3: txmapimg3,
+      storeId: '',
+      vaue: '',
+      show: false,
+      storeTypeList: [],
+      ManagementModelList: [],
+      MainRelationList: [],
+      MainProjectList: [],
+      CustomerNatureList: [],
+      CustomerInfoList: [],
+      potentialCustomerTypeList: [],
+      dictTypeFormShow: false,
+      DIYshow: false,
+      visitListList: [],
+      TCFXList: [],
+      QGJZist: [],
+      SJSList: [],
+      storeName: '名称',
+      address: '地址',
+      storeTypePOP: false,
+      GZAttributeFormShow: false,
+      pageShow: false,
+      rejectMsgShow: false,
+      //退回原因详情列表
+      rejectMsg: [
+        {
+          approver: '测试111',
+          approvalTime: '2020-08-06 15:08:08',
+          rejectCause: '测试222',
+        },
+        {
+          approver: '测试111',
+          approvalTime: '2020-08-06 15:08:08',
+          rejectCause: '测试222',
+        },
+        {
+          approver: '测试111',
+          approvalTime: '2020-08-06 15:08:08',
+          rejectCause: '测试222',
+        },
+        {
+          approver: '测试111',
+          approvalTime: '2020-08-06 15:08:08',
+          rejectCause: '测试222',
+        },
+      ],
+      activeNames: [],
+      orderList: [],
+      rejectReasonShow: false, //退回提交原因
+      rejectMessage: '',
+    };
+  },
+  activated() {
+    this.getCustomerInfoList();
+    this.getManagementModelList();
+    this.getMainRelationList();
+    this.getMainProjectList();
+    this.getCustomerNatureList();
+    this.getTCFXList();
+    this.getSJSList();
+    this.getQGJZist();
+    this.getStoreType();
+    this.getpotentialCustomerTypeList();
+    this.visitListList = [];
+    window.scrollTo(0, 0);
+  },
+  methods: {
+    getCustomerInfoList() {
+      getCustomerInfoList().then((res) => {
+        var CustomerInfoList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          CustomerInfoList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.CustomerInfoList = CustomerInfoList;
+      });
+    },
+    getCustomerNatureList() {
+      getCustomerNatureList().then((res) => {
+        var CustomerNatureList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          CustomerNatureList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.CustomerNatureList = CustomerNatureList;
+      });
+    },
+    getpotentialCustomerTypeList() {
+      getpotentialCustomerTypeList().then((res) => {
+        var potentialCustomerTypeList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          potentialCustomerTypeList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.potentialCustomerTypeList = potentialCustomerTypeList;
+      });
+    },
+    getMainProjectList() {
+      getMainProjectList().then((res) => {
+        var MainProjectList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          MainProjectList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.MainProjectList = MainProjectList;
+      });
+    },
+    getMainRelationList() {
+      getMainRelationList().then((res) => {
+        var MainRelationList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          MainRelationList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.MainRelationList = MainRelationList;
+      });
+    },
+    getManagementModelList() {
+      getManagementModelList().then((res) => {
+        var ManagementModelList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          ManagementModelList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.ManagementModelList = ManagementModelList;
+      });
+    },
+    getSJSList() {
+      getSJSList({}).then((res) => {
+        var SJSList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          SJSList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.SJSList = SJSList;
+      });
+    },
+    getQGJZist() {
+      getQGJZist({}).then((res) => {
+        var QGJZist = [];
+        for (var t = 0; t < res.data.length; t++) {
+          QGJZist.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictValue,
+          });
+        }
+        this.QGJZist = QGJZist;
+      });
+    },
+    getTCFXList() {
+      getTCFXList({}).then((res) => {
+        var TCFXList = [];
+        for (var t = 0; t < res.data.length; t++) {
+          TCFXList.push({
+            text: res.data[t].dictLabel,
+            dictCode: res.data[t].dictCode,
+          });
+        }
+        this.TCFXList = TCFXList;
+      });
+    },
+    visitsFn(row) {
+      this.$router.push({
+        path: '/historicalDetails',
+        query: {
+          visitId: row.id,
+          storeCode: row.storeCode,
+          storeId: row.storeId,
+        },
+      });
+    },
+    setImgSrc(imgUrl) {
+      let imgArr = imgUrl.split(',');
+      return imgArr[0];
+    },
+    deleteImgs(val) {
+      ImagePreview(val.split(','));
+    },
+    getStoreType() {
+      if (localStorage.getItem('storeType') == '2') {
+        this.DIYshow = true;
+        getStoreyslTypeList({}).then((res) => {
+          this.storeTypeList = res.data;
+          this.getDetail();
+        });
+      } else {
+        this.DIYshow = false;
+        getStoreTypeList({}).then((res) => {
+          this.storeTypeList = res.data;
+          this.getDetail();
+        });
+      }
+    },
+    getDetail() {
+      this.pageShow = false;
+      let loading1 = this.$toast.loading({
+        duration: 0,
+        message: '加载中...',
+        forbidClick: true,
+      });
+      getById({ storeId: this.$route.query.id }).then((res) => {
+        loading1.clear();
+        this.pageShow = true;
+        localStorage.setItem('locationRemark', res.data.addressLine);
+        localStorage.setItem('orgName', res.data.orgName);
+        localStorage.setItem('chainName', res.data.storeName);
+        if (res.code == 200) {
+          this.list = res.data;
+          if (this.list.carShopImgList != null) {
+          } else {
+            this.list.carShopImgList = [];
+          }
+          if (this.list.storeCategory == 'C917') {
+            this.GZAttributeFormShow = true;
+            this.dictTypeSJSFormShow = false;
+            this.dictTypeQGJZFormShow = false;
+            this.dictTypeFormShow = false;
+            this.dictTypeAFormShow = false;
+            for (let k = 0; k < this.potentialCustomerTypeList.length; k++) {
+              if (this.potentialCustomerTypeList[k].dictCode == this.list.potentialCustomerType) {
+                this.list.potentialCustomerType = this.potentialCustomerTypeList[k].text;
+              }
+            }
+          } else {
+            this.GZAttributeFormShow = false;
+          }
+          if (this.list.storeCategory == '129081') {
+            this.dictTypeFormShow = true;
+            if (this.list.attribute3 != '0' && this.list.attribute3 != null) {
+              this.list.tcfxName = this.list.attribute3;
+            } else {
+              this.list.tcfxName = this.list.attribute5;
+            }
+          }
+          if (this.list.storeCategory == '10131') {
+            this.dictTypeFormShow = true;
+            for (var k = 0; k < this.TCFXList.length; k++) {
+              if (this.TCFXList[k].dictCode == this.list.tcfxName) {
+                this.list.tcfxName = this.TCFXList[k].text;
+              }
+            }
+          }
+
+          if (this.list.storeCategory == 'sjs61') {
+            this.dictTypeFormShow = true;
+            for (var k = 0; k < this.SJSList.length; k++) {
+              if (this.SJSList[k].dictCode == this.list.tcfxName) {
+                this.list.tcfxName = this.SJSList[k].text;
+              }
+            }
+          }
+          if (this.list.storeCategory == 'zyjz63') {
+            this.dictTypeFormShow = true;
+            for (var k = 0; k < this.QGJZist.length; k++) {
+              if (this.QGJZist[k].dictCode == this.list.tcfxName) {
+                this.list.tcfxName = this.QGJZist[k].text;
+              }
+            }
+          }
+          if (this.list.storeCategory == 'C912') {
+            this.storeTypePOP = false;
+            this.storeName = '铭牌上项目名称';
+            this.address = '地址';
+          } else if (this.list.storeCategory == 'C917') {
+            this.storeTypePOP = false;
+            this.storeName = '名称';
+            this.address = '地址';
+          } else {
+            this.storeTypePOP = true;
+            this.storeName = '名称';
+            this.address = '地址';
+          }
+          // 获取门店订单
+          this.getStoreOrderList(this.list.storeCode);
+        } else {
+          this.$toast.fail(res.msg);
+        }
+      });
+    },
+    // 获取门店订单
+    getStoreOrderList(storeCode) {
+      getOrderByStoreCode({ storeCode: storeCode }).then((res) => {
+        if (res.code == 200) {
+          let orderList = res.data.ORDERS;
+          let orderMap = new Map();
+          for (let i = 0; i < orderList.length; i++) {
+            if (orderMap.has(orderList[i].ORDERID)) {
+              orderMap.get(orderList[i].ORDERID).productDetail.push(orderList[i]);
+            } else {
+              let orderObj = {
+                ORDERID: orderList[i].ORDERID,
+                ORDERDATE: orderList[i].ORDERDATE,
+                STATUS_DESCR: orderList[i].STATUS_DESCR,
+                productDetail: [orderList[i]],
+              };
+              orderMap.set(orderList[i].ORDERID, orderObj);
+            }
+          }
+          let orderListArr = [];
+          for (let value of orderMap.values()) {
+            orderListArr.push(value);
+          }
+          this.orderList = orderListArr;
+        }
+      });
+    },
+    formLink() {
+      this.$router.push('/storeVisit/questions');
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    tabChange(name, title) {
+      console.log(name, title);
+    },
+    // 退回原因查看详情
+    examineDetail() {
+      this.rejectMsgShow = true;
+    },
+    // 退回提交
+    rejectReasonSubmit() {
+      if (this.rejectMessage != '') {
+        this.toastLoading(0, '正在提交...', true);
+        updateStoreRejectMessage({
+          storeId: this.$route.query.id,
+          rejectReason: this.rejectMessage,
+        }).then((res) => {
+          this.toastLoading().clear();
+          if (res.code == 200) {
+            this.$toast.success('提交成功');
+            this.rejectReasonShow = false;
+          } else {
+            this.$toast.fail(res.msg);
+          }
+        });
+      } else {
+        this.$notify({ type: 'warning', message: '请输入退回原因' });
+      }
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.container {
+  padding-bottom: 50px;
+}
+.myTab .van-tabs__nav--card {
+  margin: 0 !important;
+  border-left: 0;
+  border-right: 0;
+}
+.myTab .van-tabs__wrap,
+.van-tabs__nav--card {
+  height: 40px;
+}
+.myTab .van-tab {
+  line-height: 40px;
+}
+.helpPageMask {
+  width: 100%;
+  height: 100%;
+  background: rgba(116, 116, 116, 0.8);
+  position: fixed;
+  z-index: 100000;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.bottomBtn {
+  position: fixed;
+  bottom: 0;
+  height: 50px;
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-around;
+  .van-button {
+    /* flex: 1; */
+    width: 40%;
+  }
+}
+.rejectMsg {
+  position: sticky;
+  top: 46px;
+  z-index: 10;
+  display: flex;
+  box-sizing: border-box;
+  width: 100%;
+  padding: 10px 16px;
+  overflow: hidden;
+  color: #323233;
+  font-size: 14px;
+  line-height: 24px;
+  background-color: #f5daac;
+  font-weight: 600;
+  .label {
+    width: 6.2em;
+    margin-right: 12px;
+  }
+  .value {
+    flex: 1;
+  }
+  .examineDetail {
+    width: 70px;
+    color: #0057ba;
+  }
+}
+.rejectMsgBox {
+  min-height: 30%;
+  max-height: 50%;
+  padding: 10px 20px;
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+  .title {
+    padding: 10px 0;
+    text-align: center;
+    font-size: 16px;
+    font-weight: 600px;
+  }
+  .content {
+    flex: 1;
+    overflow-y: auto;
+    .rejectMsgItem {
+      margin-bottom: 20px;
+      .item {
+        padding: 5px 0;
+        span {
+          display: inline-block;
+        }
+      }
+      .label {
+        width: 80px;
+        font-size: 14px;
+        font-weight: 600;
+      }
+      .value {
+        font-size: 14px;
+      }
+    }
+  }
+  .btnBox {
+    button {
+      width: 100%;
+    }
+  }
+}
+.orderList {
+  .orderItem {
+    .orderTitle {
+      padding: 5px 0;
+      font-size: 16px;
+      font-weight: 600;
+      color: #000;
+      display: flex;
+      align-items: center;
+      &::before {
+        content: '';
+        width: 8px;
+        height: 8px;
+        background: red;
+        border-radius: 50%;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+}
+</style>
+<style lang="scss">
+.searchDiv {
+  .van-search {
+    /* // background: #fff; */
+  }
+  .van-search__action {
+    font-size: 14px;
+    color: #0057ba;
+    font-weight: bold;
+    background: #f1f1f1;
+    border-bottom-right-radius: 60px;
+    border-top-right-radius: 60px;
+    border: 1px solid #ccc;
+    padding: 0 20px;
+  }
+  .van-search--show-action {
+    padding-right: 12px;
+  }
+  .van-search__content {
+    border: 1px solid #ccc;
+    border-bottom-left-radius: 60px;
+    border-top-left-radius: 60px;
+    background: #f1f1f1;
+    border-right: 0;
+  }
+}
+.helpAlert {
+  .van-dialog__cancel {
+    .van-button__text {
+      &::before {
+        content: '?';
+        background: #f79200;
+        width: 20px;
+        display: inline-block;
+        border-radius: 50%;
+        color: #fff;
+      }
+    }
+  }
+}
+</style>

+ 127 - 0
src/views/signApproval/newStoreApprovalList.vue

@@ -0,0 +1,127 @@
+<template>
+  <div class="newStoreApprovalList">
+    <div class="navBarTOP">
+      <van-nav-bar class="navBar" title="建店审批" left-arrow @click-left="onClickLeft" />
+    </div>
+    <div class="content">
+      <div class="approvalList">
+        <div
+          class="approvalItem"
+          v-for="(item, index) in approvalList"
+          :key="index"
+          @click="enterApprovalDetail(item)">
+          <div class="item itemtitle">
+            {{ item.storeName }}(<span style="color: #0057ba">{{ item.storeCode }}</span
+            >)
+          </div>
+          <div class="item storeType">
+            <div class="label">门店类型:</div>
+            <div class="value">{{ item.storeCategory }}</div>
+          </div>
+          <div class="item tijiaoName">
+            <div class="label">提交人员:</div>
+            <div class="value">{{ item.tijiaoName }}</div>
+          </div>
+          <div class="item tijiaoTime">
+            <div class="label">提交时间:</div>
+            <div class="value">{{ item.tijiaoTime }}</div>
+          </div>
+          <div class="itemBtn">审批</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getApprovalList } from '@/api/index';
+export default {
+  data() {
+    return {
+      approvalList: [
+        {
+          storeName: '测试门店1',
+          storeCode: '2345324534',
+          storeCategory: '同城分销A',
+          tijiaoName: '测试',
+          tijiaoTime: '2020-08-08',
+          storeId: '876203',
+        },
+        {
+          storeName: '测试门店2',
+          storeCode: '2345324534',
+          storeCategory: '同城分销A',
+          tijiaoName: '测试',
+          tijiaoTime: '2020-08-08',
+          storeId: '32453',
+        },
+        {
+          storeName: '测试门店3',
+          storeCode: '2345324534',
+          storeCategory: '同城分销A',
+          tijiaoName: '测试',
+          tijiaoTime: '2020-08-08',
+          storeId: '32453',
+        },
+      ],
+    };
+  },
+  activated() {
+    this.getApprovalListFun();
+  },
+  methods: {
+    getApprovalListFun() {
+      getApprovalList().then((res) => {
+        if (res.code == 200) {
+          this.approvalList = res.data.list;
+        }
+      });
+    },
+    // 进入审批详情
+    enterApprovalDetail(item) {
+      this.$router.push({
+        path: '/newStoreApprovalDetail',
+        query: { id: item.storeId },
+      });
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.newStoreApprovalList {
+  .content {
+    padding: 56px 10px 10px 10px;
+    .approvalList {
+      .approvalItem {
+        background: #fff;
+        padding: 5px 15px;
+        margin-bottom: 15px;
+        border-radius: 8px;
+        position: relative;
+        .item {
+          display: flex;
+          align-items: center;
+          padding: 3px 0;
+          font-size: 14px;
+        }
+        .itemtitle {
+          font-size: 16px;
+          font-weight: 600;
+        }
+        .itemBtn {
+          position: absolute;
+          top: 20px;
+          right: 20px;
+          font-size: 16px;
+          font-weight: 600;
+          color: #0057ba;
+        }
+      }
+    }
+  }
+}
+</style>