瀏覽代碼

feat: bi支持,代用户下单和我的订单支持默认打开弹窗并带入参数

cuiyalong 2 月之前
父節點
當前提交
f795a8dede

+ 21 - 0
src/views/create-order/components/create.vue

@@ -34,6 +34,7 @@ import OtherInfoModule from './otherInfoModule.vue'
 import ContractInfoModule from './contractInfoModule.vue'
 import { mapState, mapGetters, mapActions } from 'vuex'
 import { pageFormState } from '@/views/create-order/mixins'
+import { defaultPageFormValue } from '@/views/create-order/data/interface'
 
 // 添加产品流程
 // 1. var.js中productKeyMap新增分类,并在productGroupKeyMap添加到分组中
@@ -69,6 +70,10 @@ export default {
       type: String,
       default: '',
     },
+    defaultValue: {
+      type: Object,
+      default: () => {}
+    }
   },
   computed: {
     ...mapState({
@@ -79,13 +84,29 @@ export default {
       return !this.orderMoney0Type
     },
   },
+  watch: {
+    defaultValue: {
+      immediate: false,
+      handler(val) {
+        this.setDefaultFormData(val)
+      }
+    }
+  },
   created() {
     // 此处已在app.vue中调用
     // this.$store.dispatch('order/getConfigWithReq')
     this.$store.dispatch('order/resetPageInfo')
+    this.setDefaultFormData(this.defaultValue)
   },
   methods: {
     ...mapActions('order', ['createOrder', 'resetPageInfo']),
+    setDefaultFormData(val = {}) {
+      if (val) {
+        for (const key in val) {
+          this.setPageFormData(key, val[key] || defaultPageFormValue[key])
+        }
+      }
+    },
     async validate() {
       const refsArr = this.getFormRefs()
       const asyncArr = refsArr.map(r => r?.validate())

+ 27 - 1
src/views/create-order/order-list.vue

@@ -168,8 +168,9 @@
           width="90%"
           destroy-on-close
           :close-on-click-modal="false"
+          @close="onCreateModelClose"
           :visible.sync="dialogVisible">
-        <CreateOrder ref="creatOrderRef" type="create"/>
+        <CreateOrder ref="creatOrderRef" type="create" :defaultValue="defaultCreateValue" />
         <div class="button-group" slot="footer">
           <el-button size="medium" class="submit-button submit" type="primary" :loading="dialogSubmitLoading" @click="doCloseCreateModel('submit')">提交</el-button>
           <el-button size="medium" class="submit-button stash" type="primary" plain :loading="dialogSubmitLoading" @click="doCloseCreateModel('stash')">暂存</el-button>
@@ -199,6 +200,7 @@ export default {
   created() {
     this.$store.dispatch('order/getSelectOptions')
     this.$store.dispatch('order/getProductList')
+    this.getQueryParams()
   },
   data () {
     return {
@@ -214,6 +216,7 @@ export default {
         sort_classify: -1,
         sort_type: -1,
       },
+      defaultCreateValue: {},
       formFilter: {
         searchContent: '',
         course_status: [],
@@ -865,9 +868,32 @@ export default {
     doCreateQrcode () {
       this.scanCodeVote(1)
     },
+    getQueryParams () {
+      const { query } = this.$route
+      if (query) {
+        if (query.auto_show_create_dialog) {
+          this.doCreateOrder()
+        }
+        this.setDefaultValueToCreateOrderDialog({
+          userTel: query.user_tel,
+          companyName: query.company_name,
+          username: query.username,
+        })
+        if (query.title_text) {
+          document.title = query.title_text
+        }
+      }
+      console.log(query)
+    },
+    setDefaultValueToCreateOrderDialog(form) {
+      this.defaultCreateValue = form
+    },
     doCreateOrder () {
       this.dialogVisible = true
     },
+    onCreateModelClose() {
+      this.defaultCreateValue = {}
+    },
     doCloseCreateModel(type = 'close') {
       switch (type) {
         case 'close':

+ 8 - 0
src/views/order/components/helpOrder.vue

@@ -400,6 +400,14 @@ export default {
     fixedNum(val) {
       return val ? Number(parseFloat(val * 100).toFixed(0)) : 0
     },
+    setDefaultPhone(v) {
+      this.others.phone = v
+      this.querySearch(v, t => {
+        if (t.length > 0) {
+          this.checkVipPhone(v)
+        }
+      })
+    }
   },
 
 }

+ 17 - 2
src/views/order/helpUserOrders.vue

@@ -223,10 +223,22 @@ export default {
     },
     mounted(){
         this.debonceFunc=this.VueDebounce(this.copyLink_, 300)
+        this.getQueryParams()
     },
     methods: {
-        doTest (t) {
-          console.log(t)
+        getQueryParams () {
+            const { query } = this.$route
+            if (query) {
+                if (query.auto_show_create_dialog) {
+                    this.otherCreated()
+                }
+                if (query.account_tel) {
+                    this.otherModelSetPhone(query.account_tel)
+                }
+                if (query.title_text) {
+                    document.title = query.title_text
+                }
+            }
         },
         formatPayload (payload) {
           let params = {
@@ -288,6 +300,9 @@ export default {
         otherCreated() {//弹框
             this.$refs.otherModel.oShow = true
         },
+        otherModelSetPhone(t) {//弹框
+            this.$refs.otherModel.setDefaultPhone(t)
+        },
         screened() {
             this.flag = !this.flag
             if (this.flag) {