Browse Source

1、团购时间限制修改
2、订单打印调整

billisme 3 năm trước cách đây
mục cha
commit
61b6b16ea6

+ 135 - 0
src/components/order-pdf-generate/index.vue

@@ -0,0 +1,135 @@
+<template>
+  <el-dialog
+    title="生成打印PDF"
+    :modal="false"
+    top="200px"
+    :close-on-click-modal="false"
+    :visible.sync="visible"
+  >
+    <el-form
+      :model="dataForm"
+      ref="dataForm"
+      label-width="80px"
+    >
+      <el-form-item label="打印渠道" prop="printChannel">
+        <el-select v-model="dataForm.printChannel" clearable filterable @change="handlePrintChannelChange">
+          <el-option key="GSART" label="广森数码" value="GSART"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="打印产品" prop="prodType">
+        <el-select v-model="dataForm.prodType" clearable filterable @change="handleProdTypeChange">
+          <el-option v-for="(node, index) in prodTypeList"
+                     :key="node.prodType"
+                     :label="node.prodName"
+                     :value="node.prodType">
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <span slot="footer">
+      <el-button type="info" @click="visible = false">{{$t("crud.filter.cancelBtn")}}</el-button>
+      <el-button :loading="generatePdfLoading" type="primary" @click="dataFormSubmit">{{$t("crud.filter.submitBtn")}}</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      visible: false,
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      dataForm: {
+        orderNumber: null,
+        printChannel: "GSART",
+        shopId: null,
+        prodType: null,
+        thirdSkuId: null,
+      },
+      dataRule: {
+      },
+      isTrue: false,
+      errorInfo: '',
+      dataListLoading: false,
+      thirdSkuIdList: [],
+      prodTypeList: [],
+      dataList: [],
+      generatePdfLoading: false,
+      resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
+    }
+  },
+  methods: {
+    // 获取数据列表
+    init (data) {
+      let printOrder = Object.assign({}, data)
+      this.visible = true
+      this.dataForm.shopId = printOrder.shopId
+      this.dataForm.orderNumber = printOrder.orderNumber
+      this.dataListLoading = false;
+      this.$http({
+        url: this.$http.adornUrl(`/prod/thirdPrintSku/list/${this.dataForm.printChannel}`),
+        method: 'get',
+        params: this.$http.adornParams()
+      }).then(({ data }) => {
+        this.dataList = data;
+        this.handlePrintChannelChange(this.dataForm.printChannel);
+      })
+    },
+    /**
+     *  生成作品打印PDF
+     */
+    generatePrintPdf () {
+
+    },
+    // 确定事件
+    dataFormSubmit () {
+      this.generatePdfLoading = true;
+      this.$http({
+        url: this.$http.adornUrl('/order/thirdPrintOrder/generatePrintPdf'),
+        method: 'post',
+        data: this.$http.adornData(this.dataForm),
+      }).then(({ data }) => {
+        if(data.status === "success"){
+          this.generatePdfLoading = false;
+          window.open(this.resourcesUrl + data.result.worksUrl);
+        }else{
+          this.generatePdfLoading = false;
+          this.$message({
+            message: data.msg,
+            type: 'error'
+          })
+        }
+      })
+    },
+    handlePrintChannelChange(val){
+      let tempProdTypeList = [];
+      tempProdTypeList = this.dataList.filter(item =>{
+          return item.printChannel === val
+        });
+       let temp = [];
+       this.prodTypeList = tempProdTypeList.filter(item => {
+         if(temp.indexOf(item.prodType) == -1){
+           temp.push(item.prodType);
+           return item;
+         }
+       });
+    },
+    handleProdTypeChange(val){
+      this.thirdSkuIdList = this.dataList.filter(item =>{
+        return item.printChannel === this.dataForm.printChannel && item.prodType === val;
+      });
+    }
+  }
+}
+</script>
+<style scoped>
+.prods-select-body {
+  height: auto;
+  overflow: auto;
+  border-top: 1px solid #eeeeee;
+  border-right: 1px solid #eeeeee;
+  border-bottom: 1px solid #eeeeee;
+}
+</style>

+ 3 - 3
src/views/modules/group/groupActivity-add-or-update.vue

@@ -305,12 +305,12 @@ export default {
       //   callback(new Error(this.$i18n.t('groups.activityTimeTime')))
       // }
       if (this.dataForm.status !== 5 && rule.field === 'endTime' && new Date() > Date.parse(value)) {
-        callback(new Error(this.$i18n.t('groups.endTime')))
+        // callback(new Error(this.$i18n.t('groups.endTime')))
       }
       if (Date.parse(this.dataForm.startTime) >= Date.parse(this.dataForm.endTime)) {
-        callback(new Error(this.$i18n.t('groups.endTimeIsTooSmall')))
+        // callback(new Error(this.$i18n.t('groups.endTimeIsTooSmall')))
       } else if (this.dataForm.status === 1 && this.dataForm.groupActivityId && Date.parse(this.validEndTime) > Date.parse(this.dataForm.endTime)) {
-        callback(new Error(this.$i18n.t('groups.extendedEndTime')))
+        // callback(new Error(this.$i18n.t('groups.extendedEndTime')))
       } else {
         callback()
       }

+ 6 - 3
src/views/modules/group/newGroupActivity.vue

@@ -307,12 +307,15 @@ export default {
       //   callback(new Error(this.$i18n.t('groups.activityTimeTime')))
       // }
       if (this.dataForm.status !== 5 && rule.field === 'endTime' && new Date() > Date.parse(value)) {
-        callback(new Error(this.$i18n.t('groups.endTime')))
+        // callback(new Error(this.$i18n.t('groups.endTime')))
+        callback()
       }
       if (Date.parse(this.dataForm.startTime) >= Date.parse(this.dataForm.endTime)) {
-        callback(new Error(this.$i18n.t('groups.endTimeIsTooSmall')))
+        // callback(new Error(this.$i18n.t('groups.endTimeIsTooSmall')))
+        callback()
       } else if (this.dataForm.status === 1 && this.dataForm.groupActivityId && Date.parse(this.validEndTime) > Date.parse(this.dataForm.endTime)) {
-        callback(new Error(this.$i18n.t('groups.extendedEndTime')))
+        // callback(new Error(this.$i18n.t('groups.extendedEndTime')))
+        callback()
       } else {
         callback()
       }

+ 61 - 1
src/views/modules/order/order.vue

@@ -253,6 +253,13 @@
             >
               待打印
             </li>
+            <li
+                    :class="['nav-item', activeName == 9 ? 'selected' : '']"
+                    data-sts="9"
+                    @click="selectNav($event)"
+            >
+              打印待发货
+            </li>
           </ul>
           <ul class="nav-right"></ul>
         </div>
@@ -876,6 +883,10 @@ export default {
         {
           value: 8,
           label: '待打印'
+        },
+        {
+          value: 9,
+          label: '打印待发货'
         }],
       refund: [{
         value: 0,
@@ -1288,6 +1299,46 @@ export default {
         this.activeName = !this.status ? '0' : this.status + ''
       })
     },
+    getWaitPrintDeliveryPage(page, params, newData = false){
+      this.dataListLoading = true
+      if (newData || !this.theData) {
+        this.theData = {
+          current: page == null ? this.page.currentPage : page.currentPage,
+          size: page == null ? this.page.pageSize : page.pageSize,
+          'orderNumber': this.dataForm.orderNumber,
+          // 'prodName': this.dataForm.prodName,
+          'orderType': this.dataForm.orderType,
+          'orderMold': this.dataForm.orderMold,
+          'payType': this.dataForm.payType,
+          'receiver': this.dataForm.receiver,
+          'mobile': this.dataForm.mobile,
+          'status': this.status,
+          'dvyType': this.dataForm.dvyType,
+          'stationName': this.dataForm.stationName,
+          'refundStatus': this.dataForm.refundStatus,
+          'startTime': this.dateRange === null ? null : this.dateRange[0], // 开始时间
+          'endTime': this.dateRange === null ? null : this.dateRange[1] // 结束时间
+        }
+      } else {
+        this.theData.current = page == null ? this.page.currentPage : page.currentPage
+        this.theData.size = page == null ? this.page.pageSize : page.pageSize
+        this.theData.status = this.status
+      }
+      this.$http({
+        url: this.$http.adornUrl('/order/order/waitPrintDeliveryPage'),
+        method: 'get',
+        params: this.$http.adornParams(
+                Object.assign(this.theData, params
+                ), false
+        )
+      }).then(({ data }) => {
+        this.dataList = data.records
+        this.page.total = data.total
+        this.sts = !this.status ? 0 : this.status
+        this.dataListLoading = false
+        this.activeName = !this.status ? '0' : this.status + ''
+      })
+    },
     // 每页数
     sizeChangeHandle (val) {
       this.page.pageSize = val
@@ -1297,7 +1348,14 @@ export default {
     // 当前页
     currentChangeHandle (val) {
       this.page.currentPage = val
-      this.getDataList(this.page)
+      // this.getDataList(this.page)
+      if(this.status == 8){
+        this.getWaitPrintPage(this.page)
+      }else if(this.status == 9){
+        this.getWaitPrintDeliveryPage(this.page)
+      }else{
+        this.getDataList(this.page)
+      }
     },
 
     /**
@@ -1310,6 +1368,8 @@ export default {
       this.page.currentPage = 1
       if(this.status == 8){
         this.getWaitPrintPage(this.page)
+      }else if(this.status == 9){
+        this.getWaitPrintDeliveryPage(this.page)
       }else{
         this.getDataList(this.page)
       }

+ 22 - 25
src/views/modules/order/orderInfo.vue

@@ -557,7 +557,7 @@
                     <div class="item">
                       <div class="text">PDF文件:</div>
                       <el-link v-if="printOrder.worksUrl != null" type="primary" :underline="false" :href="resourcesUrl + printOrder.worksUrl" target="_blank">查看文件</el-link>
-                      <el-button :loading="generatePdfLoading" v-if="printOrder.worksUrl == null" type="primary" size="mini" @click="generatePrintPdf(dataForm.orderNumber, dataForm.shopId)">生成PDF</el-button>
+                      <el-button :loading="generatePdfLoading" v-if="printOrder.worksUrl == null" type="primary" size="mini" @click="openGeneratePdfDialog">生成PDF</el-button>
                     </div>
                   </el-col>
                 </el-row>
@@ -745,10 +745,14 @@
         @refreshUserRemarkOrder="getDataList"
       ></order-remark-update>
     <!-- 弹窗, 新增 / 修改 -->
+    <order-pdf-generate
+            v-if="orderGeneratePdfVisible"
+            ref="orderPdfGenerate"
+    ></order-pdf-generate>
+    <!-- 弹窗, 新增 / 修改 -->
     <order-print-create
             v-if="orderPrintCreateVisible"
             ref="orderPrintCreate"
-            @refreshUserAddrOrder="getDataList"
     ></order-print-create>
     <order-delivery-update
             v-if="devyVisible"
@@ -764,6 +768,7 @@ import OrderRemarkUpdate from '@/components/order-remark-update'
 import ProdPic from '@/components/prod-pic'
 import OrderCardItem from '@/components/order-card-item'
 import OrderPrintCreate from '@/components/order-print-create'
+import OrderPdfGenerate from '@/components/order-pdf-generate'
 import OrderDeliveryUpdate from './order-delivery-update'
 
 export default {
@@ -803,6 +808,7 @@ export default {
       orderRemarkUpdateVisible: false,
       orderAddrUpdateVisible: false,
       orderPrintCreateVisible: false,
+      orderGeneratePdfVisible: false,
       offsetCount: 0,  // 偏移量
       // 商品列表
       prodList: [],
@@ -815,6 +821,7 @@ export default {
         status:null,
         logisticName: null,
         deliveryCode: null,
+        prodType: null
       },
       selectPrintChannel: null,
       selectPrintSkuId: null,
@@ -822,6 +829,7 @@ export default {
       orderDeliveryLoading: false,
       devyVisible: false,
       orderStatus: 1,
+      prodType: ""
     }
   },
   components: {
@@ -829,8 +837,10 @@ export default {
     OrderRemarkUpdate,
     ProdPic,
     OrderCardItem,
+    OrderPdfGenerate,
     OrderPrintCreate,
-    OrderDeliveryUpdate
+    OrderDeliveryUpdate,
+
   },
   watch: {
     visible: function () {
@@ -928,7 +938,8 @@ export default {
         method: 'post',
         data: this.$http.adornData({
           orderNumber: this.dataForm.orderNumber,
-          shopId: this.dataForm.shopId
+          shopId: this.dataForm.shopId,
+          prodType: this.prodType
         }),
       }).then(({ data }) => {
         if(data.status === "success"){
@@ -944,6 +955,13 @@ export default {
         }
       })
     },
+    openGeneratePdfDialog(){
+      this.orderGeneratePdfVisible = true
+      this.$nextTick(() => {
+        const From = JSON.parse(JSON.stringify(this.printOrder))
+        this.$refs.orderPdfGenerate.init(From)
+      })
+    },
     openPrintOrderDialog(){
       this.orderPrintCreateVisible = true
       this.$nextTick(() => {
@@ -951,27 +969,6 @@ export default {
         this.$refs.orderPrintCreate.init(From)
       })
     },
-    createPrintOrder(){
-      this.$http({
-        url: this.$http.adornUrl('/order/thirdPrintOrder/createOrder'),
-        method: 'post',
-        data: this.$http.adornData({
-          orderNumber: this.dataForm.orderNumber,
-          shopId: this.dataForm.shopId,
-          printChannel: this.selectPrintChannel,
-          thirdSkuId: this.selectPrintSkuId
-        }),
-      }).then(({ data }) => {
-        if(data.status === "success"){
-          window.open(this.resourcesUrl + data.result.worksUrl);
-        }else{
-          this.$message({
-            message: data.msg,
-            type: 'error'
-          })
-        }
-      })
-    },
     openDeliveryDialog(){
       this.devyVisible = true
       this.$nextTick(() => {

+ 9 - 2
src/views/modules/prod/post-product/posting-edit-product.vue

@@ -188,6 +188,13 @@
                 <el-radio :label="1">{{ $t("groups.turnOn") }}</el-radio>
               </el-radio-group>
             </el-form-item>
+          <!-- 是否为定制品 -->
+          <el-form-item v-if="dataForm.prodType !== 5 && dataForm.mold !== 1" label="是否定制">
+            <el-radio-group v-model="dataForm.customized">
+              <el-radio :label="0">定制</el-radio>
+              <el-radio :label="1">非定制</el-radio>
+            </el-radio-group>
+          </el-form-item>
             <!-- 预售发货时间 -->
             <el-form-item
               v-if="dataForm.preSellStatus === 1 && dataForm.prodType !== 5"
@@ -585,8 +592,8 @@ export default {
           //   parameterKeyEn: '',
           //   parameterValueEn: ''
           // }
-        ]
-
+        ],
+        customized: 0
       },
       dataRule: {
         prodNameCn: [