Pārlūkot izejas kodu

京东订单excel导入

cz 2 gadi atpakaļ
vecāks
revīzija
427703bef0

+ 38 - 0
src/api/order-management/afterSales/index.js

@@ -55,3 +55,41 @@ export function afterSalesFollow(data = {}) {
   })
 }
 
+
+// 售后列表 新
+export function afterSalesListV2(data = {}) {
+  return request({
+    url: '/api/victoriatourist/afterSalesInfo/page',
+    method: 'post',
+    data: data,
+  })
+}
+
+
+
+// 添加新
+export function afterSalesAddV2(data = {}) {
+  return request({
+    url: '/api/victoriatourist/afterSalesInfo/add',
+    method: 'post',
+    data: data,
+  })
+}
+
+//跟进新
+export function afterSalesFollowV2(data = {}) {
+  return request({
+    url: '/api/victoriatourist/afterSalesFollow/add',
+    method: 'post',
+    data: data,
+  })
+}
+
+//跟进记录
+export function followRecords(data = {}) {
+  return request({
+    url: '/api/victoriatourist/afterSalesFollow/lists',
+    method: 'post',
+    data: data,
+  })
+}

+ 1 - 1
src/router/page/index.js

@@ -536,7 +536,7 @@ export default [{
     redirect: '/inbound-outbound/transfer/JDtransfer',
     children: [{
       path: 'JDtransfer',
-      name: '京东订单调仓',
+      name: '京东订单接收',
       component: () => import( /* webpackChunkName: "page" */ '@/views/inbound-outbound/transfer/JDtransfer'),
       props: true,
     }, ],

+ 58 - 28
src/views/order-management/afterSales/addAfterSales.vue

@@ -11,13 +11,12 @@
         <div v-if="isAdd">
           <el-row>
             <el-col :span="8">
-              <el-form-item label="客户名称" prop="customerInfoId">
+              <el-form-item label="客户名称" prop="customerId">
                 <el-select
-                  v-model="form.customerInfoId"
+                  v-model="form.customerId"
                   :disabled="!isAdd"
                   placeholder="请选择"
                   style="width: 100%"
-                  @change="handleCustomerChange"
                 >
                   <el-option
                     v-for="item in customerSelectList"
@@ -155,9 +154,9 @@
               </el-form-item>
             </el-row>
           </el-form-item>
-          <el-form-item label="售后原因" prop="remarkOne">
+          <el-form-item label="售后原因" prop="cause">
             <el-input
-              v-model="form.remarkOne"
+              v-model="form.cause"
               placeholder="请输入"
               type="textarea"
               :rows="3"
@@ -212,10 +211,31 @@
             >
           </el-form-item>
           <el-form-item>
-            <el-table :data="form.productList">
+            <el-table :data="form.afterSalesDetailsList">
               <el-table-column label="产品名称" prop="productName" />
-              <el-table-column label="产品编号" prop="applicationTime" />
-              <el-table-column label="数量" prop="spareParts" />
+              <el-table-column label="产品编号" prop="productCode" />
+              <el-table-column label="数量" prop="quantity">
+                <template slot-scope="scope">
+                  <el-form-item
+                    :prop="
+                      'afterSalesDetailsList.' + scope.$index + '.quantity'
+                    "
+                    :rules="formRules.quantity"
+                    :inline-message="true"
+                    label-width="0"
+                  >
+                    <el-input-number
+                      v-model="scope.row.quantity"
+                      :controls="false"
+                      :min="1"
+                      style="width: 100%"
+                      placeholder="请输入"
+                      size="mini"
+                    >
+                    </el-input-number>
+                  </el-form-item>
+                </template>
+              </el-table-column>
             </el-table>
           </el-form-item>
         </div>
@@ -298,7 +318,7 @@ export default {
       provinceData: [],
       cityData: [],
       formRules: {
-        customerInfoId: [
+        customerId: [
           {
             required: true,
             message: "请选择客户",
@@ -326,7 +346,13 @@ export default {
             trigger: "change",
           },
         ],
-
+        quantity: [
+          {
+            required: true,
+            message: "请输入数量",
+            trigger: "blur",
+          },
+        ],
         remark: [
           {
             required: true,
@@ -369,7 +395,13 @@ export default {
       selectOrderId: "",
     };
   },
-  created() {},
+  created() {
+    getRegionData({ parentId: "", type: "1" }).then((res) => {
+      this.countryData = res.data.data;
+      this.countryChange("China");
+    });
+  },
+
   mounted() {
     if (this.form.orderInfoId) {
       this.selectOrderId = this.form.orderInfoId;
@@ -380,8 +412,8 @@ export default {
       this.$refs.form.validate((valid) => {
         if (valid) {
           if (this.isAdd) {
-            if (!this.form.productList.length > 0) {
-              this.msgInfo("请添加售后明细!");
+            if (!this.form.afterSalesDetailsList.length > 0) {
+              return this.msgInfo("请添加售后明细!");
             }
           }
           this.loading = true;
@@ -402,34 +434,32 @@ export default {
     handleCancel() {
       this.$emit("cancel");
     },
-    handleCustomerChange(val) {
-      this.loading = true;
-      getOrderCode({ customerInfoId: val }).then((res) => {
-        this.orderList = res.data.data;
-        this.loading = false;
-      });
-    },
+    // handleCustomerChange(val) {
+    //   this.loading = true;
+    //   getOrderCode({ customerId: val }).then((res) => {
+    //     this.orderList = res.data.data;
+    //     this.loading = false;
+    //   });
+    // },
     handleOrderChange(val) {
       this.selectOrderId = val;
     },
     handleSelect(row) {
-      const flag = this.form.productList.some(
-        (x) => x.jdBackProductId === row.id
+      const flag = this.form.afterSalesDetailsList.some(
+        (x) => x.productId === row.id
       );
       if (flag) return this.msgInfo("该产品已经选择");
       const product = {
-        classifyName: row.classifyName || "",
         productCode: row.code,
         productName: row.name,
-        jdBackProductId: row.id,
-        shipmentQuantity: "",
-        id: "",
+        productId: row.id,
+        quantity: "",
       };
-      this.form.productList.push(product);
+      this.form.afterSalesDetailsList.push(product);
       this.msgSuccess("选择成功");
     },
     deleteRow(index) {
-      this.form.productList.splice(index, 1);
+      this.form.afterSalesDetailsList.splice(index, 1);
       this.msgSuccess("删除成功");
     },
   },

+ 45 - 35
src/views/order-management/afterSales/index.vue

@@ -42,7 +42,7 @@ export default {
         pageSize: 10,
         keyword: "",
         type: "",
-        afterSalesStatus: "",
+        status: "",
       },
       selectConfig: [
         {
@@ -52,7 +52,7 @@ export default {
         },
         {
           label: "状态",
-          prop: "afterSalesStatus",
+          prop: "status",
           data: [],
         },
       ],
@@ -63,11 +63,17 @@ export default {
       open: false,
       form: {
         id: "",
-        type: "",
-        remark: "",
+        customerId: "",
+        countryId: "",
+        provinceId: "",
+        cityId: "",
+        detailedAddress: "",
+        cause: "",
+        afterSalesDetailsList: [],
       },
       isAdd: false,
       openOne: false,
+      recordsList: [],
     };
   },
   created() {
@@ -102,14 +108,14 @@ export default {
   methods: {
     getList() {
       this.loading = true;
-      API.afterSalesList(this.queryParams).then(
+      API.afterSalesListV2(this.queryParams).then(
         (res) => {
           this.tableList = res.data.data.records;
           this.total = res.data.data.total;
           this.loading = false;
         },
         (err) => {
-          console.log("afterSalesList: " + err);
+          console.log("afterSalesListV2: " + err);
           this.loading = false;
         }
       );
@@ -122,9 +128,13 @@ export default {
       this.isAdd = true;
       this.form = {
         id: "",
-        type: "",
-        remark: "",
-        productList: [],
+        customerId: "",
+        countryId: "",
+        provinceId: "",
+        cityId: "",
+        detailedAddress: "",
+        cause: "",
+        afterSalesDetailsList: [],
       };
       this.open = true;
     },
@@ -135,20 +145,15 @@ export default {
       this.titleText = "跟进";
       this.isAdd = false;
       this.form = {
-        customerInfoId: row.customerInfoId,
-        id: row.code,
-        type: String(row.type),
-        remarkOne: row.remark,
-        orderInfoId: row.id,
+        afterSalesInfoId: row.id,
         afterSalesStatus: "",
         remark: "",
       };
-
       this.open = true;
     },
     handleSubmit() {
       if (this.isAdd) {
-        API.afterSalesAdd(this.form).then(
+        API.afterSalesAddV2(this.form).then(
           () => {
             this.msgSuccess("添加成功");
             this.$refs.addAfterSales.loading = false;
@@ -156,16 +161,12 @@ export default {
             this.getList();
           },
           (err) => {
-            console.log("afterSalesAdd: " + err);
+            console.log("afterSalesAddV2: " + err);
             this.$refs.addAfterSales.loading = false;
           }
         );
       } else {
-        delete this.form.customerInfoId;
-        delete this.form.remarkOne;
-        delete this.form.id;
-        delete this.form.type;
-        API.afterSalesFollow(this.form).then(
+        API.afterSalesFollowV2(this.form).then(
           () => {
             this.msgSuccess("操作成功");
             this.$refs.addAfterSales.loading = false;
@@ -173,7 +174,7 @@ export default {
             this.getList();
           },
           (err) => {
-            console.log("afterSalesFollow: " + err);
+            console.log("afterSalesFollowV2: " + err);
             this.$refs.addAfterSales.loading = false;
           }
         );
@@ -187,8 +188,16 @@ export default {
         </div>
       );
     },
-    lookRecords() {
-      this.openOne = true;
+    lookRecords(row) {
+      this.msgSuccess("数据请求中,请稍后!");
+      API.followRecords({ id: row.id }).then((res) => {
+        this.recordsList = res.data.data;
+        if (this.recordsList.length > 0) {
+          this.openOne = true;
+        } else {
+          this.msgInfo("未有跟进记录!");
+        }
+      });
     },
   },
 };
@@ -228,7 +237,7 @@ export default {
           </template>
         </el-table-column> -->
         <el-table-column label="客户名称" align="left" prop="customerName" />
-        <el-table-column label="售货原因" align="left" prop="" />
+        <el-table-column label="售货原因" align="left" prop="cause" />
         <!-- <el-table-column
           label="订单金额"
           align="left"
@@ -257,9 +266,7 @@ export default {
         <el-table-column
           label="状态"
           align="left"
-          :formatter="
-            (row) => dictDataEcho(row.afterSalesStatus, afterSalesStatusList)
-          "
+          :formatter="(row) => dictDataEcho(row.status, afterSalesStatusList)"
         />
         <!-- <el-table-column
           label="订单状态"
@@ -272,7 +279,10 @@ export default {
             <el-button type="text" @click="lookRecords(scope.row)"
               >跟进记录
             </el-button>
-            <el-button type="text" @click="handleFollow(scope.row)"
+            <el-button
+              type="text"
+              v-if="scope.row.status !== 6"
+              @click="handleFollow(scope.row)"
               >跟进
             </el-button>
           </template>
@@ -313,12 +323,12 @@ export default {
       width="30%"
       top="100px"
     >
-      <div v-for="item in 3" :key="item" class="record-item">
+      <div v-for="item in recordsList" :key="item.id" class="record-item">
         <div class="head">
-          <span class="time"> 跟进时间:{{}} </span>
-          <span class="name"> 张三 </span>
+          <span class="time"> 跟进时间:{{ item.createTime }} </span>
+          <span class="name"> {{ item.purchaseName }} </span>
         </div>
-        <div class="body">跟进记录</div>
+        <div class="body">{{ item.remark }}</div>
       </div>
     </el-dialog>
   </div>
@@ -348,7 +358,7 @@ export default {
     display: flex;
     span {
       font-size: 12px;
-      color: #c3bdbd;
+      color: #8f8b8b;
     }
     .time {
       flex: 1;

+ 59 - 5
src/views/order-management/order/JDorder.vue

@@ -9,6 +9,7 @@ import addOrder from "./addOrder.vue";
 import OrderDetails from "@/components/order/details.vue";
 
 import * as API from "@/api/order-management/order/JDorder.js";
+import { getToken } from "@/util/auth";
 
 export default {
   components: {
@@ -20,6 +21,10 @@ export default {
   },
   data() {
     return {
+      uploadHeader: {
+        Authorization: "Basic c2FiZXI6c2FiZXJfc2VjcmV0",
+        "Blade-Auth": "bearer " + getToken(),
+      },
       orderStatusList: [],
       btnForm: {
         otherButton: {
@@ -84,6 +89,9 @@ export default {
       },
       detailsDialog: false,
       selectOrderId: "",
+      openExcel: false,
+      excelForm: {},
+      excelLoading: false,
     };
   },
   created() {
@@ -179,16 +187,28 @@ export default {
       );
     },
     excelImport() {
-      API.excelImportList({ businessType: 1, beginTime: "", endTime: "" }).then(
-        (res) => {
-          console.log(res, "aaaa");
-        }
-      );
+      this.openExcel = true;
     },
     handleLookDetails(row) {
       this.selectOrderId = row.id;
       this.detailsDialog = true;
     },
+    handleProgress() {
+      this.excelLoading = true;
+    },
+    handleError(err) {
+      this.msgInfo(`未找到对应产品 , 请重试`);
+      this.openExcel = false;
+      this.excelLoading = false;
+    },
+    handleSuccess() {
+      this.msgSuccess("导入成功! ");
+      setTimeout(() => {
+        this.excelLoading = false;
+        this.openExcel = false;
+        this.getList();
+      }, 300);
+    },
   },
 };
 </script>
@@ -301,6 +321,40 @@ export default {
     >
       <OrderDetails :orderId="selectOrderId"></OrderDetails>
     </el-dialog>
+
+    <el-dialog
+      title="Excel导入"
+      :visible.sync="openExcel"
+      v-if="openExcel"
+      width="40%"
+      top="20vh"
+      v-loading="excelLoading"
+      element-loading-text="文件导入中,请稍后!"
+      element-loading-spinner="el-icon-loading"
+      element-loading-background="rgba(0, 0, 0, 0.2)"
+    >
+      <el-form
+        label-position="right"
+        :model="excelForm"
+        ref="excelForm"
+        label-width="80px"
+      >
+        <el-form-item label="Excel">
+          <el-upload
+            action="/api/victoriatourist/orderJd/excelImport"
+            :data="excelForm"
+            :headers="uploadHeader"
+            :on-success="handleSuccess"
+            :on-progress="handleProgress"
+            :show-file-list="false"
+            :on-error="handleError"
+            accept=".xlsx"
+          >
+            <el-button size="small" type="primary">点击导入</el-button>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 

+ 4 - 1
src/views/product-material/warehouse/index.vue

@@ -77,6 +77,8 @@ import addWarehouse from "./addWarehouse.vue";
 
 import * as API from "@/api/product-material/warehouse/index.js";
 import { customerList } from "@/api/product-material/customer/index.js";
+import { getListByRole } from "@/api/system/common.js";
+import { mapGetters } from "vuex";
 
 export default {
   components: {
@@ -128,6 +130,7 @@ export default {
       },
     };
   },
+  computed: mapGetters(["userInfo"]),
   created() {
     const businessDictData = JSON.parse(
       window.localStorage.getItem("businessDict")
@@ -139,7 +142,7 @@ export default {
       label: item.dictValue,
       value: item.dictKey,
     }));
-    API.getListByRole({ roleId: "1620698154897735682" }).then((res) => {
+    getListByRole({ roleId: this.userInfo.role_id }).then((res) => {
       this.customerSelectList = res.data.data;
     });
     this.getList();