浏览代码

同城店铺新建流程重构

zhujindu 1 年之前
父节点
当前提交
ab597b3f54
共有 2 个文件被更改,包括 328 次插入112 次删除
  1. 65 5
      src/views/storeManagement/index.vue
  2. 263 107
      src/views/storeManagement/storeDetail.vue

+ 65 - 5
src/views/storeManagement/index.vue

@@ -11,7 +11,20 @@
           <van-button type="info" size="small" style="margin-top: 10px;background: #0057ba;border-color: #0057ba;width: 100%;border-radius: 5px;" @click="onSelect('B')"><van-icon name="guide-o" />&nbsp;{{addBTN}}</van-button>
         </van-col>
       </van-row> -->
-      <div class="select"></div>
+      <div class="selectFilter" v-if="tabVal == 1">
+        <van-dropdown-menu>
+          <van-dropdown-item
+            v-model="storeType"
+            :title="storeTypeTitle"
+            :options="typeOption"
+            @change="storeTypeChange" />
+          <van-dropdown-item
+            v-model="storeStatus"
+            :title="storeStatusTitle"
+            :options="statusOption"
+            @change="storeStatusChange" />
+        </van-dropdown-menu>
+      </div>
       <div class="searchDiv">
         <van-search
           v-model="fromValue.storeName"
@@ -47,9 +60,10 @@
                 class="title btn"
                 style="padding-right: 74px"
                 :data-clipboard-text="item.storeCode">
-                <span>{{ item.storeName }}</span
-                >(<span style="color: #0057ba">{{ item.storeCode }}</span
-                >)<span
+                <span>{{ item.storeName }}</span>
+                (<span style="color: #0057ba">{{ item.storeCode }}</span
+                >)
+                <!-- <span
                   v-if="item.validFlag == 2"
                   style="
                     display: inline-block;
@@ -60,7 +74,12 @@
                     font-weight: normal;
                   "
                   >临</span
-                ><van-icon
+                > -->
+                <template v-if="item.submit && item.submit != ''">
+                  <span class="statusIcon submit" v-if="item.submit">已提交</span>
+                  <span class="statusIcon noSubmit" v-else>未提交</span>
+                </template>
+                <van-icon
                   :name="paste"
                   color="#ee0a24"
                   size="20"
@@ -342,6 +361,20 @@ export default {
         district: '',
         timeData: '',
       },
+      storeType: 0,
+      storeStatus: 0,
+      typeOption: [
+        { text: '全部门店', value: 0 },
+        { text: '已结案', value: 1 },
+        { text: '未结案', value: 2 },
+      ],
+      statusOption: [
+        { text: '全部状态', value: 0 },
+        { text: '已提交', value: 1 },
+        { text: '未提交', value: 2 },
+      ],
+      storeTypeTitle: '门店类型',
+      storeStatusTitle: '门店状态',
     };
   },
   created() {
@@ -723,6 +756,8 @@ export default {
       fromValue.pageNum = this.pageNum;
       fromValue.pageSize = this.pageSize;
       fromValue.storeName = this.fromValue.storeName.trim();
+      // fromValue.storeType = this.storeType //门店类型
+      // fromValue.storeStatus = this.storeStatus //门店状态
       storeMyList(fromValue).then((res) => {
         loading1.clear();
         this.disabled = false;
@@ -792,6 +827,19 @@ export default {
       this.finished = true;
       this.onLoad();
     },
+    // 门店类型下拉选change
+    storeTypeChange(value) {
+      let storeTypeItem = this.typeOption.find((item) => item.value == value);
+      this.storeTypeTitle = storeTypeItem ? storeTypeItem.title : '门店类型';
+      // 门店每次切换 门店状态重置
+      this.storeStatus = 0;
+      this.storeStatusTitle = '门店状态';
+    },
+    // 门店状态下拉选change
+    storeStatusChange(value) {
+      let storeStatusItem = this.statusOption.find((item) => item.value == value);
+      this.storeStatusTitle = storeStatusItem ? storeStatusItem.title : '门店状态';
+    },
   },
 };
 </script>
@@ -935,4 +983,16 @@ export default {
 .positionContent .img .van-icon__image {
   border-radius: 100px;
 }
+.statusIcon {
+  padding: 3px;
+  font-size: 12px;
+  margin: 0 3px;
+  color: #fff;
+}
+.submit {
+  background: #ffba13;
+}
+.noSubmit {
+  background: #f11818;
+}
 </style>

+ 263 - 107
src/views/storeManagement/storeDetail.vue

@@ -4,28 +4,50 @@
       <!-- 顶部条 -->
       <van-nav-bar class="navBar" title="客户详情" left-arrow @click-left="onClickLeft">
         <template #right>
-          <span
-            style="color: #0057ba"
-            v-if="list.updatable && list.validFlag == 2"
-            @click="placeOrderFn"
-            >去下单</span
-          >
-          <span
-            style="color: #0057ba"
-            v-if="list.updatable && list.validFlag != 2 && type != 'address'"
-            @click="editorFn"
-            >编辑</span
-          >
+          <!-- 未结案状态下 已提交/未提交 -->
+          <template v-if="list.storeType == '未结案'">
+            <!-- 已提交状态禁止操作 -->
+            <template v-if="list.submit"></template>
+            <!-- 未提交 -->
+            <template v-if="!list.submit">
+              <span
+                style="color: #0057ba"
+                v-if="list.updatable && list.validFlag != 2 && type != 'address'"
+                @click="editorFn"
+                >编辑
+              </span>
+            </template>
+          </template>
+          <template v-else>
+            <span
+              style="color: #0057ba"
+              v-if="list.updatable && list.validFlag == 2"
+              @click="placeOrderFn"
+              >去下单
+            </span>
+            <span
+              style="color: #0057ba"
+              v-if="list.updatable && list.validFlag != 2 && type != 'address'"
+              @click="editorFn"
+              >编辑
+            </span>
+          </template>
         </template>
       </van-nav-bar>
     </div>
     <!--主体内容-->
-    <div style="margin-top: 44px" v-if="pageShow">
+    <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" />
@@ -196,6 +218,24 @@
                 :type="1"></upload-img>
             </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.orderNum }} | {{ item.createTime }} | {{ item.state }}
+                </div>
+                <el-table
+                  :data="item.productDetail"
+                  border
+                  class="table-headermd table-headermdhome"
+                  style="width: 100%">
+                  <el-table-column label="产品名称" prop="productName" />
+                  <el-table-column label="数量" prop="productNum" 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" />
@@ -240,6 +280,11 @@
       <br />
       <br />
       <br />
+      <!-- 未结案 未提交状态下可关闭门店、提交审核 -->
+      <div class="bottomBtn">
+        <van-button color="red" round>撤销建店</van-button>
+        <van-button type="primary" round>提交审核</van-button>
+      </div>
       <div
         style="
           position: fixed;
@@ -375,6 +420,28 @@
     <div class="helpPageMask" v-if="helpPageFlag">
       <helpPage @btnClick="btnClick"></helpPage>
     </div>
+    <!-- 提交审核 退回原因 -->
+    <van-popup v-model="rejectMsgShow" class="rejectMsgBox" round position="bottom">
+      <!-- <div class="rejectMsgBox"> -->
+      <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> -->
+      </div>
+    </van-popup>
   </div>
 </template>
 
@@ -476,20 +543,93 @@ export default {
       pLot: '',
       poiName: '',
       helpPageFlag: 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: [
+        {
+          orderNum: 'D2323523532',
+          createTime: '2020-08-06 15:08:08',
+          state: '待确认',
+          productDetail: [
+            {
+              productName: '外墙平油',
+              productNum: '1',
+              price: '100',
+            },
+            {
+              productName: '外墙平油',
+              productNum: '1',
+              price: '100',
+            },
+            {
+              productName: '外墙平油',
+              productNum: '1',
+              price: '100',
+            },
+          ],
+        },
+        {
+          orderNum: 'D2323523532',
+          createTime: '2020-08-06 15:08:08',
+          state: '已签收',
+          productDetail: [
+            {
+              productName: '外墙平油',
+              productNum: '1',
+              price: '100',
+            },
+          ],
+        },
+        {
+          orderNum: 'D2323523532',
+          createTime: '2020-08-06 15:08:08',
+          state: '已签收',
+          productDetail: [
+            {
+              productName: '外墙平油',
+              productNum: '1',
+              price: '100',
+            },
+          ],
+        },
+      ],
     };
   },
   created() {
-    this.detilId = this.$route.query.detilId;
-    this.type = this.$route.query.type;
-    this.getTCFXList();
-    this.getSJSList();
-    this.getQGJZist();
-    this.getCustomerInfoList();
-    this.getManagementModelList();
-    this.getMainRelationList();
-    this.getMainProjectList();
-    this.getCustomerNatureList();
-    this.getpotentialCustomerTypeList();
+    // this.detilId = this.$route.query.detilId;
+    // this.type = this.$route.query.type;
+    // this.getTCFXList();
+    // this.getSJSList();
+    // this.getQGJZist();
+    // this.getCustomerInfoList();
+    // this.getManagementModelList();
+    // this.getMainRelationList();
+    // this.getMainProjectList();
+    // this.getCustomerNatureList();
+    // this.getpotentialCustomerTypeList();
   },
   activated() {
     this.showmap = false;
@@ -504,7 +644,7 @@ export default {
     this.getTCFXList();
     this.getSJSList();
     this.getQGJZist();
-    this.getStoreTypeList();
+    this.getStoreType();
     this.getpotentialCustomerTypeList();
     this.visitListList = [];
     this.getStreetQuery('');
@@ -1204,7 +1344,7 @@ export default {
     deleteImgs(val) {
       ImagePreview([val]);
     },
-    getStoreTypeList() {
+    getStoreType() {
       // 先授权
       getTicketFun().then(() => {
         if (localStorage.getItem('storeType') == '2') {
@@ -1344,85 +1484,6 @@ export default {
             .catch((err) => {
               console.log(err);
             });
-          // let loading1 = this.$toast.loading({
-          //   duration: 0,
-          //   message: "定位中...",
-          //   forbidClick: true,
-          // });
-          // let url = window.location.href;
-          // // let url = "https://ssbsfatest.nipponpaint.com.cn/mobile" + window.location.href.split("/mobile")[1]
-          // let that = this;
-          // let qiyeData;
-          // const instance = axios.create();
-          // instance.defaults.headers.common["userId"] = localStorage.getItem("loginName");
-          // instance
-          //   .get(process.env.VUE_APP_BASE_API + "mobile/wx/ticket", {
-          //     params: {
-          //       url: url,
-          //     },
-          //   })
-          //   .then((response) => {
-          //     if (response.status == 200) {
-          //       this.cont = 6;
-          //       var flat = true;
-          //       var times = setInterval(() => {
-          //         this.cont--;
-          //         if (this.cont == "0") {
-          //           if (flat) {
-          //             loading1.clear();
-          //             clearInterval(times);
-          //             that.$dialog
-          //               .alert({
-          //                 message: "定位失败,请开启企微定位权限",
-          //               })
-          //               .then(() => {
-          //                 this.$router.go(-1);
-          //               });
-          //           } else {
-          //             clearInterval(times);
-          //           }
-          //         }
-          //       }, 1000);
-          //       qiyeData = response.data.data;
-          //       that.wx.config({
-          //         beta: true,
-          //         debug: false,
-          //         appId: qiyeData.appId,
-          //         timestamp: qiyeData.timestamp,
-          //         nonceStr: qiyeData.nonceStr,
-          //         signature: qiyeData.signature,
-          //         jsApiList: ["ready", "getLocation"],
-          //       });
-          //       that.wx.ready(function () {
-          //         that.wx.getLocation({
-          //           type: "gcj02",
-          //           success: function (res) {
-          //             flat = false;
-          //             loading1.clear();
-          //             var location = that.CJ02BD(res.latitude, res.longitude);
-          //             that.lat = location.lat;
-          //             that.lon = location.lon;
-          //             that.myLat = location.lat;
-          //             that.myLon = location.lon;
-          //             that.list.lon = location.lon;
-          //             that.list.lat = location.lat;
-          //           },
-          //           fail: function () {
-          //             loading1.clear();
-          //             that.$dialog.alert({
-          //               title: "系统提示",
-          //               message: "GPS未开启",
-          //             });
-          //           },
-          //         });
-          //       });
-          //       that.wx.error(function (res) {
-          //         this.$toast.fail("定位失败");
-          //       });
-          //     } else {
-          //       this.$toast.fail("接口异常");
-          //     }
-          //   });
         } else {
           this.$toast.fail(res.msg);
         }
@@ -1610,6 +1671,10 @@ export default {
     btnClick() {
       this.helpPageFlag = false;
     },
+    // 退回原因查看详情
+    examineDetail() {
+      this.rejectMsgShow = true;
+    },
   },
 };
 </script>
@@ -1632,7 +1697,7 @@ export default {
 .helpPageMask {
   width: 100%;
   height: 100%;
-  background: rgba($color: #747474, $alpha: 0.8);
+  background: rgba(116, 116, 116, 0.8);
   position: fixed;
   z-index: 100000;
   top: 0;
@@ -1643,11 +1708,102 @@ export default {
   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: 90px;
+    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;
+      }
+    }
+  }
+}
+.orderList {
+  .orderItem {
+    .orderTitle {
+      padding: 5px 0;
+      font-size: 16px;
+      font-weight: 600;
+      color: #000;
+      &::before {
+        content: '';
+        width: 8px;
+        height: 8px;
+        background: red;
+        border-radius: 50%;
+      }
+    }
+  }
+}
 </style>
 <style lang="scss">
 .searchDiv {
   .van-search {
-    // background: #fff;
+    /* // background: #fff; */
   }
   .van-search__action {
     font-size: 14px;