Forráskód Böngészése

优惠券、、、、修改订单

YY 2 éve
szülő
commit
f0c5300127

+ 6 - 0
src/router/module/system.js

@@ -53,4 +53,10 @@ export default [
     meta: { title: '平台管理-优惠券管理' },
     component: () => import(/* webpackChunkName: "system_goodsTags" */ '@/views/system/coupon/index.vue'),
   },
+  {
+    path: '/system/coupon/detail',
+    name: 'system_coupon_detail',
+    meta: { title: '平台管理-优惠券管理-维护信息' },
+    component: () => import(/* webpackChunkName: "system_coupon_detail" */ '@/views/system/coupon/detail.vue'),
+  },
 ];

+ 17 - 21
src/views/selfShop/sales/index.vue

@@ -1,22 +1,25 @@
 <template>
   <div id="card-1">
     <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col :span="24" class="one"> <span>售后管理</span> </el-col>
+        <el-col :span="24" class="two">
           <search-1 :form="searchForm" :statusList="statusList" :typeList="typeList" @onSubmit="search" @toReset="toClose"> </search-1>
         </el-col>
-        <data-table
-          :select="true"
-          :selected="selected"
-          @handleSelect="handleSelect"
-          :fields="fields"
-          :opera="opera"
-          @query="search"
-          :data="list"
-          :total="total"
-          @exam="toExam"
-        >
-        </data-table>
+        <el-col :span="24" class="four">
+          <data-table
+            :select="true"
+            :selected="selected"
+            @handleSelect="handleSelect"
+            :fields="fields"
+            :opera="opera"
+            @query="search"
+            :data="list"
+            :total="total"
+            @exam="toExam"
+          >
+          </data-table>
+        </el-col>
       </el-col>
     </el-row>
   </div>
@@ -76,13 +79,6 @@ export default {
   methods: {
     ...dictData({ dictQuery: 'query' }),
     ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
-    computedNeedPay(details) {
-      let total = 0;
-      for (const key in details) {
-        total += details[key];
-      }
-      return _.floor(total, 2);
-    },
     // 查询
     async search({ skip = 0, limit = 10, ...info } = {}) {
       let condition = _.cloneDeep(this.searchForm);

+ 330 - 0
src/views/system/coupon/detail.vue

@@ -0,0 +1,330 @@
+<template>
+  <div id="form-1">
+    <el-row>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col class="top-btn">
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
+        </el-col>
+        <el-col :span="12">
+          <el-form :model="form" :rules="rules" ref="form" label-width="180px">
+            <el-col :span="24">
+              <el-form-item label="发行方" prop="issue">
+                <el-select v-model="form.issue" clearable filterable placeholder="请选择发行方" size="small" style="width: 100%">
+                  <el-option v-for="i in issueList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="店铺" prop="shop">
+                <el-select
+                  v-model="form.shop"
+                  filterable
+                  remote
+                  reserve-keyword
+                  placeholder="请输入店铺名称"
+                  :remote-method="querySearch"
+                  :loading="loading"
+                  @change="handleSelect"
+                >
+                  <el-option v-for="item in shopList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="优惠券名称" prop="name">
+                <el-input v-model="form.name" placeholder="请输入优惠券名称" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="优惠券数量" prop="num">
+                <el-input v-model="form.num" placeholder="请输入优惠券数量" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="是否使用" prop="status">
+                <el-select v-model="form.status" clearable filterable placeholder="请选择是否使用" size="small" style="width: 100%">
+                  <el-option v-for="i in statusList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <!-- 减免方式 -->
+            <el-col :span="24">
+              <el-form-item label="减免方式" prop="discount_type">
+                <el-select v-model="form.discount_type" clearable filterable placeholder="请选择减免方式" size="small" style="width: 100%">
+                  <el-option v-for="i in discount_typeList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.discount_type == 'min' && form.discount_type">
+              <el-form-item label="订单最低消费金额" prop="limit">
+                <el-input v-model="form.limit" placeholder="请输入订单最低消费金额" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.discount_type == 'min' && form.discount_type">
+              <el-form-item label="满足条件后优惠的金额" prop="min">
+                <el-input v-model="form.min" placeholder="请输入满足条件后优惠的金额" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.discount_type == 'discount' && form.discount_type">
+              <el-form-item label="订单最低消费金额" prop="limit">
+                <el-input v-model="form.limit" placeholder="请输入订单最低消费金额" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.discount_type == 'discount' && form.discount_type">
+              <el-form-item label="几折" prop="min">
+                <el-input v-model="form.min" placeholder="请输入X折的X" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.discount_type == 'discount' && form.discount_type">
+              <el-form-item label="折扣减免的最大金额" prop="discount_type_max">
+                <el-input v-model="form.discount_type_max" placeholder="请输入折扣减免的最大金额" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <!-- 使用限制 -->
+            <el-col :span="24">
+              <el-form-item label="使用限制" prop="use_limit">
+                <el-select v-model="form.use_limit" clearable filterable placeholder="请选择使用限制" size="small" style="width: 100%">
+                  <el-option v-for="i in use_limitList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.use_limit == 'tags' && form.use_limit">
+              <el-form-item label="商品类型" prop="tags">
+                <el-cascader
+                  v-model="form.tags"
+                  :options="tagsList"
+                  :props="props"
+                  clearable
+                  filterable
+                  placeholder="请选择商品类型"
+                  :show-all-levels="false"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <!-- 领取限制 -->
+            <el-col :span="24">
+              <el-form-item label="领取限制" prop="get_limit">
+                <el-select v-model="form.get_limit" clearable filterable placeholder="请选择领取限制" size="small" style="width: 100%">
+                  <el-option v-for="i in get_limitList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.get_limit == 'max' && form.get_limit">
+              <el-form-item label="每人领取最大限制" prop="get_limit_max">
+                <el-input v-model="form.get_limit_max" placeholder="请输入每人领取最大限制" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <!-- 失效方式 -->
+            <el-col :span="24">
+              <el-form-item label="失效方式" prop="expire_type">
+                <el-select v-model="form.expire_type" clearable filterable placeholder="请选择失效方式" size="small" style="width: 100%">
+                  <el-option v-for="i in expire_typeList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.expire_type == 'fixed' && form.expire_type">
+              <el-form-item label="失效配置" prop="time">
+                <el-date-picker
+                  v-model="form.time"
+                  type="datetimerange"
+                  range-separator="至"
+                  start-placeholder="生效开始日期"
+                  end-placeholder="生效结束日期"
+                  format="yyyy-MM-dd HH:mm:ss"
+                  value-format="yyyy-MM-dd HH:mm:ss"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.expire_type == 'days' && form.expire_type">
+              <el-form-item label="失效配置" prop="days">
+                <el-input v-model="form.days" placeholder="请输入生效几天后过期" type="number" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" class="btn">
+              <el-button type="primary" size="mini" @click="onSubmit('form')">提交</el-button>
+              <el-button type="danger" size="mini" @click="toBack()">取消</el-button>
+            </el-col>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+const moment = require('moment');
+import { mapState, mapGetters, createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('coupon');
+const { mapActions: dictData } = createNamespacedHelpers('dictData');
+const { mapActions: goodsTags } = createNamespacedHelpers('goodsTags');
+const { mapActions: shop } = createNamespacedHelpers('shop');
+export default {
+  name: 'form-1',
+  props: {},
+  components: {},
+  data: function () {
+    return {
+      form: {},
+      rules: {
+        issue: [{ required: true, message: '请选择发行方', trigger: 'change' }],
+      },
+      // 发行方
+      issueList: [],
+      // 失效方式
+      expire_typeList: [],
+      // 减免方式
+      discount_typeList: [],
+      // 领取限制
+      get_limitList: [],
+      // 使用限制
+      use_limitList: [],
+      // 商品类型
+      tagsList: [],
+      props: { multiple: true, label: 'label', value: 'code' },
+      // 是否使用
+      statusList: [],
+      // 商铺
+      shopList: [],
+      loading: false,
+    };
+  },
+  async created() {
+    await this.searchOther();
+    await this.search();
+  },
+  methods: {
+    ...dictData({ dictQuery: 'query' }),
+    ...goodsTags(['tree']),
+    ...shop({ shopQuery: 'fetch' }),
+    ...mapActions(['fetch', 'create', 'update']),
+    // 查询
+    async search() {
+      if (this.id) {
+        let res = await this.fetch(this.id);
+        if (this.$checkRes(res)) {
+          let data = res.data;
+          if (data.get_limit_config.max) data.get_limit_max = data.get_limit_config.max;
+          if (data.discount_config.max) data.discount_type_max = data.discount_config.max;
+          if (data.discount_config.limit) data.limit = data.discount_config.limit;
+          if (data.discount_config.min) data.min = data.discount_config.min;
+          if (data.use_limit_config.tags) data.tags = data.use_limit_config.tags;
+          if (data.expire_config.fixed[0]) data.time = data.expire_config.fixed[0];
+          if (data.expire_config.days) data.days = data.expire_config.days;
+          if (data.shop) {
+            let res = await this.shopQuery(data.shop);
+            if (this.$checkRes(res)) {
+              data.shop = res.data.name;
+            }
+          }
+          this.$set(this, `form`, data);
+        }
+      } else {
+        this.$set(this, `form`, {});
+      }
+    },
+    // 店铺名称远程查询
+    async querySearch(value) {
+      this.loading = true;
+      let res = await this.shopQuery({ name: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'shopList', res.data);
+      }
+      this.loading = false;
+    },
+    handleSelect(value) {
+      this.$set(this.form, `shop`, value);
+    },
+    // 提交
+    onSubmit(formName) {
+      this.$refs[formName].validate(async (valid) => {
+        if (valid) {
+          let data = this.form;
+          let discount_config = { limit: data.limit, min: data.min, max: data.discount_type_max }; //减免配置
+          let use_limit_config = { tags: data.tags }; //使用配置
+          let get_limit_config = { max: data.get_limit_max }; //领取配置
+          let expire_config = { fixed: [data.time], days: data.days }; //失效配置
+          data = { ...data, discount_config, use_limit_config, get_limit_config, expire_config };
+          let res;
+          if (data._id) res = await this.update(data);
+          else res = await this.create(data);
+          if (this.$checkRes(res, '维护信息成功', `${res.errmsg}`)) this.toBack();
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    // 查询其他信息
+    async searchOther() {
+      let res;
+      // 发行方
+      res = await this.dictQuery({ code: 'coupon_issue', value: '0' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `issueList`, res.data);
+      }
+      // 失效方式
+      res = await this.dictQuery({ code: 'coupon_expire_type' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `expire_typeList`, res.data);
+      }
+      // 减免方式
+      res = await this.dictQuery({ code: 'coupon_discount_type' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `discount_typeList`, res.data);
+      }
+      // 使用限制
+      res = await this.dictQuery({ code: 'coupon_use_limit' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `use_limitList`, res.data);
+      }
+      // 领取限制
+      res = await this.dictQuery({ code: 'coupon_get_limit' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `get_limitList`, res.data);
+      }
+      // 商品类型
+      res = await this.tree();
+      if (this.$checkRes(res)) this.$set(this, `tagsList`, res.data);
+      // 使用状态
+      res = await this.dictQuery({ code: 'use' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `statusList`, res.data);
+      }
+    },
+    // 返回
+    toBack() {
+      window.history.go('-1');
+    },
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaform() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .one {
+    font-size: 20px;
+    margin: 10px 0 0 20%;
+    padding: 5px;
+  }
+  .btn {
+    text-align: center;
+  }
+}
+</style>

+ 139 - 64
src/views/system/coupon/index.vue

@@ -1,96 +1,171 @@
 <template>
-  <div id="index">
-    <template v-if="view === 'list'">
-      <data-search :fields="searchFields" v-model="searchInfo" @query="search">
-        <template #status>
-          <el-option v-for="i in statusList" :key="i.model" :label="i.label" :value="i.value"></el-option>
-        </template>
-      </data-search>
-      <data-btn :fields="btnFields" @add="toAdd" />
-      <data-table ref="dataTable" :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @query="search">
-        <template #code="{ row, item }">
-          <el-link type="primary" @click="toData(row)">{{ row[item.model] }}</el-link>
-        </template>
-      </data-table>
-    </template>
-    <template v-else>
-      <el-row>
-        <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" @click="toBack()">返回</el-button>
+  <div id="card-1">
+    <el-row>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col :span="24" class="one"> <span>优惠券管理</span> </el-col>
+        <el-col :span="24" class="two">
+          <search-1 :form="searchForm" :statusList="statusList" @onSubmit="search" @toReset="toClose"></search-1>
         </el-col>
-        <el-col :span="24">
-          <data-form :span="12" :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">
-            <template #status>
-              <el-option v-for="i in statusList" :key="i.model" :label="i.label" :value="i.value"></el-option>
-            </template>
-          </data-form>
+        <el-col :span="24" class="thr">
+          <el-button type="primary" size="mini" @click="toAdd()">新增</el-button>
         </el-col>
-      </el-row>
-    </template>
+        <el-col :span="24" class="four">
+          <data-table
+            :select="true"
+            :selected="selected"
+            @handleSelect="handleSelect"
+            :fields="fields"
+            :opera="opera"
+            @query="search"
+            :data="list"
+            :total="total"
+            @edit="toEdit"
+            @del="toDel"
+          >
+          </data-table>
+        </el-col>
+      </el-col>
+    </el-row>
   </div>
 </template>
 
 <script>
 const _ = require('lodash');
-import methodUtil from '@/util/opera';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('coupon');
 const { mapActions: dictData } = createNamespacedHelpers('dictData');
+
 export default {
-  name: 'index',
+  name: 'card-1',
   props: {},
-  components: {},
+  components: { search1: () => import('./parts/search-1.vue') },
   data: function () {
+    const that = this;
     return {
-      view: 'list',
-      fields: [
-        { label: '显示名称', model: 'label' },
-        { label: '标签编码', model: 'code', custom: true },
-        { label: '状态', model: 'status', format: (i) => (i === '0' ? '使用中' : '已禁用') },
-      ],
-      opera: [
-        { label: '修改', method: 'edit' },
-        { label: '删除', method: 'delete', confirm: true, type: 'danger' },
-      ],
+      searchForm: {},
       list: [],
       total: 0,
-      limit: 20,
-      btnFields: [{ label: '添加', method: 'add' }],
-      defaultSearch: {},
-      searchInfo: {},
-      searchFields: [
-        { label: '显示名称', model: 'label' },
-        { label: '标签编码', model: 'code' },
-        { label: '状态', model: 'status', type: 'select' },
+      opera: [
+        { label: '修改', method: 'edit' },
+        { label: '删除', method: 'del', confirm: true, type: 'danger' },
       ],
-      infoFields: [
-        { label: '显示名称', model: 'label' },
-        { label: '标签编码', model: 'code' },
-        { label: '状态', model: 'status', type: 'select' },
+      fields: [
+        {
+          label: '发行方',
+          model: 'issue',
+          format: (i) => {
+            let data = that.issueList.find((f) => f.value == i);
+            if (data) return data.label;
+            else return '暂无';
+          },
+        },
+        { label: '商铺', model: 'shop.name' },
+        { label: '优惠券名称', model: 'name' },
+        { label: '优惠券数量', model: 'num' },
+        {
+          label: '是否使用',
+          model: 'status',
+          format: (i) => {
+            let data = that.statusList.find((f) => f.value == i);
+            if (data) return data.label;
+            else return '暂无';
+          },
+        },
       ],
-      rules: {},
-      form: {},
+      // 多选值
+      selected: [],
+      // 发行方
+      issueList: [],
+      // 是否使用
       statusList: [],
-
-      levelList: [],
     };
   },
-  computed: {
-    ...mapState(['user']),
-  },
-  created() {
-    this.searchOthers();
-    this.search();
+  async created() {
+    await this.search();
+    await this.searchOther();
   },
   methods: {
+    ...dictData({ dictQuery: 'query' }),
     ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
-    ...dictData({ getDict: 'query' }),
-    ..._.cloneDeep(methodUtil),
+    // 查询
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let condition = _.cloneDeep(this.searchForm);
+      let res = await this.query({ skip, limit, ...condition, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'list', res.data);
+        this.$set(this, 'total', res.total);
+      }
+    },
+    // 新增
+    toAdd() {
+      this.$router.push({ path: '/system/coupon/detail' });
+    },
+    // 修改
+    async toEdit({ data }) {
+      this.$router.push({ path: '/system/coupon/detail', query: { id: data.id } });
+    },
+    async toDel({ data }) {
+      let res = await this.delete(data._id);
+      if (this.$checkRes(res)) {
+        this.$message({ type: `success`, message: `刪除信息成功` });
+        this.search();
+      }
+    },
+    toClose() {
+      this.searchForm = {};
+      this.search();
+    },
+    // 多选
+    handleSelect(data) {
+      this.$emit('handleSelect');
+    },
+    // 查询其他信息
+    async searchOther() {
+      let res;
+      // 发行方
+      res = await this.dictQuery({ code: 'coupon_issue', value: '0' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `issueList`, res.data);
+      }
+      // 使用状态
+      res = await this.dictQuery({ code: 'use' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `statusList`, res.data);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user']),
   },
   metaInfo() {
     return { title: this.$route.meta.title };
   },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.main {
+  .one {
+    margin: 0 0 10px 0;
+
+    span:nth-child(1) {
+      font-size: 20px;
+      font-weight: 700;
+      margin-right: 10px;
+    }
+  }
+  .two {
+    margin: 0 0 10px 0;
+  }
+  .thr {
+    margin: 0 0 10px 0;
+  }
+}
+</style>

+ 67 - 0
src/views/system/coupon/parts/search-1.vue

@@ -0,0 +1,67 @@
+<template>
+  <div id="search-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-form :model="form" ref="form" label-width="130px">
+          <el-col :span="6">
+            <el-form-item label="是否使用" prop="status">
+              <el-select v-model="form.status" clearable filterable placeholder="请选择" style="width: 100%" size="small">
+                <el-option v-for="i in statusList" :key="i.label" :label="i.label" :value="i.value"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="btn">
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="onSubmit('form')">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="toReset('form')">重置</el-button>
+          </el-col>
+        </el-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'search-1',
+  props: { form: { type: Object }, statusList: { type: Array } },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    onSubmit() {
+      this.$emit('onSubmit');
+    },
+    toReset(formName) {
+      this.$refs[formName].resetFields();
+      this.$emit('toReset');
+    },
+  },
+  computed: {},
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .btn {
+    text-align: right;
+  }
+  /deep/.el-form-item {
+    float: left;
+    width: 100%;
+    margin: 0 0 10px 0;
+  }
+}
+</style>

+ 1 - 10
src/views/system/order/parts/card-1.vue

@@ -3,16 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="one">
-          <search-1
-            :form="searchForm"
-            :statusList="statusList"
-            @onSubmit="search"
-            @querySearch="querySearch"
-            @toReset="toClose"
-            :total="total"
-            :shopList="shopList"
-          >
-          </search-1>
+          <search-1 :form="searchForm" @onSubmit="search" @querySearch="querySearch" @toReset="toClose" :shopList="shopList"> </search-1>
         </el-col>
         <data-table
           :select="true"

+ 12 - 2
src/views/system/order/parts/card-2.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="one">
-          <search-1 :form="searchForm" :statusList="statusList" @onSubmit="search" @toReset="toClose" :total="total"></search-1>
+          <search-1 :form="searchForm" @onSubmit="search" @querySearch="querySearch" @toReset="toClose" :shopList="shopList"> </search-1>
         </el-col>
         <data-table
           :select="true"
@@ -27,7 +27,7 @@ const _ = require('lodash');
 
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('orderDetail');
-
+const { mapActions: shop } = createNamespacedHelpers('shop');
 export default {
   name: 'card-1',
   props: { statusList: { type: Array } },
@@ -51,12 +51,15 @@ export default {
       ],
       // 多选值
       selected: [],
+      shopList: [],
     };
   },
   async created() {
     await this.search();
   },
   methods: {
+    ...shop({ shopQuery: 'query' }),
+
     ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
     computedNeedPay(details) {
       let total = 0;
@@ -91,6 +94,13 @@ export default {
     handleSelect(data) {
       this.$emit('handleSelect');
     },
+    // 店铺名称远程查询
+    async querySearch(value) {
+      let res = await this.shopQuery({ name: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'shopList', res.data);
+      }
+    },
   },
   computed: {
     ...mapState(['user']),

+ 12 - 2
src/views/system/order/parts/card-3.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="one">
-          <search-1 :form="searchForm" :statusList="statusList" @onSubmit="search" @toReset="toClose" :total="total"></search-1>
+          <search-1 :form="searchForm" @onSubmit="search" @querySearch="querySearch" @toReset="toClose" :shopList="shopList"> </search-1>
         </el-col>
         <data-table
           :select="true"
@@ -27,7 +27,7 @@ const _ = require('lodash');
 
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('orderDetail');
-
+const { mapActions: shop } = createNamespacedHelpers('shop');
 export default {
   name: 'card-1',
   props: { statusList: { type: Array } },
@@ -51,12 +51,15 @@ export default {
       ],
       // 多选值
       selected: [],
+      shopList: [],
     };
   },
   async created() {
     await this.search();
   },
   methods: {
+    ...shop({ shopQuery: 'query' }),
+
     ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
     computedNeedPay(details) {
       let total = 0;
@@ -91,6 +94,13 @@ export default {
     handleSelect(data) {
       this.$emit('handleSelect');
     },
+    // 店铺名称远程查询
+    async querySearch(value) {
+      let res = await this.shopQuery({ name: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'shopList', res.data);
+      }
+    },
   },
   computed: {
     ...mapState(['user']),

+ 12 - 2
src/views/system/order/parts/card-4.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="one">
-          <search-1 :form="searchForm" :statusList="statusList" @onSubmit="search" @toReset="toClose" :total="total"></search-1>
+          <search-1 :form="searchForm" @onSubmit="search" @querySearch="querySearch" @toReset="toClose" :shopList="shopList"> </search-1>
         </el-col>
         <data-table
           :select="true"
@@ -27,7 +27,7 @@ const _ = require('lodash');
 
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('orderDetail');
-
+const { mapActions: shop } = createNamespacedHelpers('shop');
 export default {
   name: 'card-1',
   props: { statusList: { type: Array } },
@@ -51,12 +51,15 @@ export default {
       ],
       // 多选值
       selected: [],
+      shopList: [],
     };
   },
   async created() {
     await this.search();
   },
   methods: {
+    ...shop({ shopQuery: 'query' }),
+
     ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
     computedNeedPay(details) {
       let total = 0;
@@ -91,6 +94,13 @@ export default {
     handleSelect(data) {
       this.$emit('handleSelect');
     },
+    // 店铺名称远程查询
+    async querySearch(value) {
+      let res = await this.shopQuery({ name: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'shopList', res.data);
+      }
+    },
   },
   computed: {
     ...mapState(['user']),

+ 1 - 1
src/views/system/order/parts/search-1.vue

@@ -51,7 +51,7 @@
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'search-1',
-  props: { form: { type: Object }, statusList: { type: Array }, shopList: { type: Array } },
+  props: { form: { type: Object }, shopList: { type: Array } },
   components: {},
   data: function () {
     return {