Browse Source

页面提交

jiandexin1 1 year ago
parent
commit
9bd349b781
2 changed files with 1098 additions and 0 deletions
  1. 330 0
      src/views/store/storeappoint.vue
  2. 768 0
      src/views/store/storegoods.vue

+ 330 - 0
src/views/store/storeappoint.vue

@@ -0,0 +1,330 @@
+
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="primary"
+                   size="small"
+                   plain
+                   v-if="permission.appoint_delete"
+                   @click="handleDelete">确认发货
+        </el-button>
+      </template>
+      <template slot-scope="scope" slot="menu">
+        <el-button type="text"
+                   size="small"
+                   @click="goodsListView(scope.row.arrivalCode)">查看商品列表</el-button>
+      </template>
+    </avue-crud>
+    <!--  商品列表dialog  -->
+    <el-dialog title="商品列表"
+               append-to-body
+               :visible.sync="goodsBox"
+               :before-close="handleClose"
+               width="50%"
+               heigh="30%">
+      <avue-crud :option="appointGoodsOption"
+                 :table-loading="goodsLoading"
+                 :data="appointGoodsData"
+                 :page.sync="goodsPage"
+                 ref="grouponCrud"
+                 @on-load="goodsOnLoad">
+      </avue-crud>
+    </el-dialog>
+  </basic-container>
+
+</template>
+
+<script>
+  import {getList, getDetail, add, update, shipments, goodsList} from "@/api/distribution/appoint";
+  import {mapGetters} from "vuex";
+  import {appointGoodsOption} from "../../option/mall/appointGoodsOption"
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        goodsBox: false,
+        goodsLoading: false,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        arrivalCode: '',
+        appointGoodsData: [],
+        goodsPage: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        appointGoodsOption,
+        option: {
+          selectable:(row,index)=>{
+            return row.state === 0;
+          },
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          delBtn: false,
+          selection: true,
+          searchSpan: 5,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "供应商名称",
+              labelWidth: 130,
+              prop: "storeName",
+              rules: [{
+                required: true,
+                message: "请输入供应商名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "自提点名称",
+              labelWidth: 130,
+              prop: "takeName",
+              rules: [{
+                required: true,
+                message: "请输入自提点名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "自提点联系电话",
+              labelWidth: 130,
+              prop: "takeTel",
+              rules: [{
+                required: true,
+                message: "自提点联系电话",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "履约单状态",
+              labelWidth: 130,
+              prop: "state",
+              searchLabelWidth: 130,
+              type: "select",
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=appoint_state",
+              props: {
+                label: "dictValue",
+                value: "dictKey"
+              },
+              dataType: "number",
+              search: true,
+              hide: false,
+              display: true,
+              rules: [{
+                required: true,
+                message: "选择状态",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "团购标题",
+              labelWidth: 130,
+              prop: "grouponName",
+              rules: [{
+                required: true,
+                message: "请输入团购标题",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "团购结束时间",
+              labelWidth: 130,
+              prop: "grouponEndTime",
+              rules: [{
+                required: true,
+                message: "请输入团购结束时间",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.appoint_add, false),
+          viewBtn: this.vaildData(this.permission.appoint_view, false),
+          delBtn: this.vaildData(this.permission.appoint_delete, false),
+          editBtn: this.vaildData(this.permission.appoint_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择的履约单进行发货么?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return shipments(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      },
+
+      goodsListView(arrivalCode) {
+        this.arrivalCode = arrivalCode;
+        this.goodsOnLoad(this.goodsPage)
+        this.goodsBox = true;
+      },
+      handleClose() {
+        this.goodsBox = false;
+      },
+      goodsOnLoad(page){
+        console.log(this.arrivalCode, '------arrivalCode---------');
+        this.goodsLoading = true;
+        goodsList(page.currentPage, page.pageSize, this.arrivalCode).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.appointGoodsData = data.records;
+          this.goodsLoading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 768 - 0
src/views/store/storegoods.vue

@@ -0,0 +1,768 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               :upload-error="uploadError"
+               :upload-after="uploadAfter"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-click="handleRowClick"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+
+
+      <template slot="isSale" slot-scope="scope" >
+        <el-tag v-if="scope.row.$isSale === '上架'" type="success">{{scope.row.$isSale}}</el-tag>
+        <el-tag v-if="scope.row.$isSale === '下架'" type="danger">{{scope.row.$isSale}}</el-tag>
+      </template>
+
+      <template slot="auditStatus" slot-scope="scope" >
+        <el-tag v-if="scope.row.auditStatus === 0">{{scope.row.$auditStatus}}</el-tag>
+        <el-tag v-else-if="scope.row.auditStatus === 1" type="success">{{scope.row.$auditStatus}}</el-tag>
+        <el-tag v-else-if="scope.row.auditStatus === 2"type="danger">{{scope.row.$auditStatus}}</el-tag>
+      </template>
+
+      <template slot-scope="scope" slot="menu">
+        <el-button v-if="scope.row.isSale == 1"
+            type="text"
+            size="small"
+            @click="modifyGoodsState(scope.row.id, 0)"
+        >下架</el-button>
+        <el-button v-if="scope.row.isSale == 0"
+            type="text"
+            size="small"
+            @click="modifyGoodsState(scope.row.id, 1)"
+        >上架
+        </el-button>
+        <el-button v-if="scope.row.auditStatus == 0"
+                   type="text"
+                   size="small"
+                   @click="openAuditBox(scope.row.id)"
+        >审核</el-button>
+      </template>
+
+    </avue-crud>
+
+    <el-dialog title="商品审核" @close="refreshChange"
+               append-to-body
+               :visible.sync="auditBox"
+               :before-close="handleClose"
+               width="600px"
+               heigh="40%">
+      <el-form :model="auditForm" label-width="80px">
+        <el-form-item label="审核意见:">
+          <el-select v-model="auditForm.auditStatus" placeholder="请选择">
+            <el-option
+                v-for="item in auditList"
+                :key="item.value"
+                :label="item.name"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="驳回描述:" v-if="auditForm.auditStatus == 2">
+          <el-input type="textarea" v-model="auditForm.remark" :autosize="{ minRows: 3, maxRows: 5}"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="handleClose">取 消</el-button>
+        <el-button type="primary" @click="auditGoods()">确 定</el-button>
+      </div>
+    </el-dialog>
+  </basic-container>
+</template>
+
+
+<script>
+  import {getList, getDetail, add, update, remove, modifyState, audit} from "@/api/mall/goodsinfo";
+  import {mapGetters} from "vuex";
+  import {getByParentId} from "../../api/mall/categoryinfo";
+
+  export default {
+
+    data() {
+      var validatePass = (rule, value, callback) => {
+        if (value>=10 || value <=0) {
+          callback(new Error('非法的折扣'));
+        } else {
+          callback();
+        }
+      }
+      return {
+        option:  {
+          height: 'auto',
+          calcHeight: 30,
+          border: true,
+          index: false,
+          viewBtn: true,
+          delBtn:false,
+          editBtn: true,
+          // selection: true,
+          dialogClickModal: false,
+          labelWidth: 150,
+          searchIcon: true,
+          searchIndex: 3,
+          column: [
+            {
+              label: "商品编号",
+              search: true,
+              prop: "id",
+              overHidden: true,
+              addDisplay: false,
+              editDisplay: false,
+              editDisabled: true,
+              width: 160
+            },
+            {
+              label: "商品封面",
+              width: 80,
+              prop: "goodsCover",
+              addDisplay: false,
+              viewDisplay: false,
+              editDisplay: false,
+              type: 'img',
+            },
+            {
+              label: "商品名称",
+              prop: "goodsName",
+              search: true,
+              width: 280,
+              overHidden: true,
+              rules: [{
+                required: true,
+                message: "请输入商品名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "规格",
+              prop: "goodsSpec",
+              editDisplay: false,
+              rules: [{
+                required: true,
+                message: "请输入规格",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "供应商",
+              prop: "supplierId",
+              editDisplay: true,
+              viewDisplay: false,
+              remote: true,
+              hide: true,
+              type: "select",
+              dicUrl: "/api/mall/store/list?name={{key}}&state=1&auditState=1&size=30",
+              props: {
+                label: "name",
+                value: "id"
+              },
+              dicFormatter: function (res) {
+                return res.data.records;
+              },
+              rules: [{
+                required: true,
+                message: "请选择供应商",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "供应商",
+              prop: "supplierName",
+              search: true,
+              addDisplay: false,
+              editDisplay: false,
+            },
+            {
+              label: "品牌",
+              prop: "brandDesc",
+              hide: true,
+              addDisplay: false,
+              viewDisplay: false,
+              editDisplay: false,
+            },
+            {
+              label: "分类",
+              prop: "categoryIdArr",
+              hide: true,
+              search: true,
+              lazy: true,
+              rules: [{
+                required: true,
+                message: "请选择分类",
+                trigger: "blur"
+              }],
+              type: "cascader",
+              filterable: true,
+              checkStrictly: true,
+              lazyLoad(node, resolve) {
+                let parentId;
+                let stop_level = 2;
+                let level = node.level;
+                let list = [];
+
+                if (node.level === 0) {
+                  parentId = 0;
+                  getByParentId(0).then((res) => {
+                    list = res.data.data;
+                    list = (list || []).map(ele => {
+                      return Object.assign(ele, {
+                        leaf: level >= stop_level
+                      })
+                    })
+                    resolve(list)
+                  })
+                } else {
+                  parentId = node.data.id;
+                  getByParentId(node.data.id).then((res) => {
+                    list = res.data.data;
+                    list = (list || []).map(ele => {
+                      return Object.assign(ele, {
+                        leaf: level >= stop_level
+                      })
+                    })
+                    resolve(list)
+                  })
+                }
+              },
+              props: {
+                label: "title",
+                value: "key"
+              },
+            },
+            {
+              label: "品牌",
+              prop: "brandId",
+              hide: true,
+              search: true,
+              rules: [{
+                required: true,
+                message: "请选择品牌",
+                trigger: "blur"
+              }],
+              type: "select",
+              remote: true,
+              dicUrl: "/api/mall/brandsinfo/getByName?brandName={{key}}",
+              props: {
+                label: "brandName",
+                value: "id"
+              },
+              dataType: "string",
+            },
+            {
+              label: "折扣",
+              prop: "discount",
+              hide: true,
+              precision: 2,
+              type: "number",
+              rules: [{
+                required: true,
+                message: "请输入折扣",
+                trigger: "blur"
+              },{ validator: validatePass, trigger: 'blur' }],
+            },
+            {
+              label: "价格",
+              prop: "salePrice",
+              precision: 2,
+              type: "number",
+              formatter:(val,value)=>{
+                return Number(value).toFixed(2);
+              },
+              rules: [{
+                required: true,
+                message: "请输入销售价",
+                trigger: "blur"
+              }],
+            },
+            {
+              label: "状态",
+              prop: "isSale",
+              search: true,
+              slot:true,
+              rules: [{
+                required: true,
+                message: "请输入是否上架",
+                trigger: "blur"
+              }],
+              type: "select",
+              dicUrl: "/api/blade-system/dict-biz/getEnumDict?enumName=GoodsStateEnum",
+              props: {
+                label: "name",
+                value: "value"
+              },
+              dataType: "number",
+            },
+            {
+              label: "审核状态",
+              prop: "auditStatus",
+              search: true,
+              slot:true,
+              type: "select",
+              dicUrl: "/api/blade-system/dict-biz/getEnumDict?enumName=AuditStatusEnum",
+              props: {
+                label: "name",
+                value: "value"
+              },
+              dataType: "number",
+            },
+            {
+              label: "上架时间",
+              prop: "saleTime",
+              hide: true,
+              addDisplay: false,
+              viewDisplay: false,
+              editDisplay: false,
+              editDisabled: true,
+            },
+            {
+              label: "总库存",
+              prop: "totalStock",
+              type: "number",
+              hide: true,
+              min: 1,
+              rules: [
+                {required: true, message: "请输入总库存", trigger: "blur"},
+              ]
+            },
+            {
+              label: "总销量",
+              prop: "totalSales",
+              hide: true,
+              addDisplay: false,
+              editDisplay: false,
+            },
+            {
+              label: "总浏览量",
+              prop: "totalViews",
+              hide: true,
+              addDisplay: false,
+              editDisplay: false,
+            },
+            {
+              label: "单位",
+              prop: "unit",
+              hide: true,
+              rules: [{
+                required: true,
+                message: "请选择单位",
+                trigger: "blur"
+              }],
+              type: "select",
+              remote: true,
+              dicUrl: "/api/mall/unit/all-list",
+              props: {
+                label: "name",
+                value: "id"
+              },
+              dataType: "string",
+            },
+            {
+              label: "产地",
+              prop: "origin",
+              hide: true,
+            },
+            {
+              label: "创建时间",
+              prop: "createTime",
+              hide: true,
+              addDisplay: false,
+              editDisplay: false,
+              editDisabled: false,
+            },
+            {
+              label: '商品封面',
+              prop: 'uploadCover',
+              type: 'upload',
+              listType: 'picture-img',
+              loadText: '上传中,请稍等',
+              accept: 'image/png, image/jpeg',
+              fileSize: 1024,
+              tip: '只能上传jpg/png文件,且不超过1M',
+              span: 24,
+              hide: true,
+              propsHttp: {
+                res: 'data',
+                url: 'link',
+              },
+              action: "/api/blade-resource/oss/endpoint/put-file-attach"
+            },
+            {
+              label: '商品轮播图',
+              prop: 'slideshowList',
+              type: 'upload',
+              dataType: 'array',
+              listType: 'picture-card',
+              loadText: '上传中,请稍等',
+              accept: 'image/png, image/jpeg',
+              fileSize: 1024,
+              tip: '只能上传jpg/png文件,且不超过1M',
+              span: 24,
+              hide: true,
+              propsHttp: {
+                res: 'data',
+                url: 'link',
+              },
+              action: "/api/blade-resource/oss/endpoint/put-file-attach"
+            },
+            {
+              label: '图文详情',
+              prop: 'detailImgUrlList',
+              type: 'upload',
+              dataType: 'array',
+              listType: 'picture-card',
+              loadText: '上传中,请稍等',
+              accept: 'image/png, image/jpeg',
+              fileSize: 2048,
+              tip: '只能上传jpg/png文件,且不超过2M',
+              limit: 25,
+              span: 24,
+              hide: true,
+              propsHttp: {
+                res: 'data',
+                url: 'link',
+              },
+              action: "/api/blade-resource/oss/endpoint/put-file-attach"
+            },
+          ]
+        },
+        range: {
+          from: '',
+          to: ''
+        },
+        categoryData: [],
+        props: {
+          label: "title",
+          value: "key"
+        },
+        categoryIdArr: [],
+        auditBox: false,
+        auditForm: {
+          auditStatus: '',
+          id: '',
+          remark: ''
+        },
+        form: {
+
+        },
+        goodsParamForm: {},
+        goodsSpecForm: {},
+        scForm: {},
+        query: {},
+        goodsParamQuery: {},
+        viewSpecQuery: {},
+        loading: true,
+        paramLoading: true,
+        box: false,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        data: [],
+        goodsParamData: [],
+        viewSpecData: [],
+        scData: [],
+
+        viewDialog: false,
+        auditList: [
+          {name: '通过', value: 1},{name: '驳回', value: 2}
+        ]
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.goodsinfo_add, false),
+          viewBtn: this.vaildData(this.permission.goodsinfo_view, false),
+          delBtn: this.vaildData(this.permission.goodsinfo_delete, false),
+          editBtn: this.vaildData(this.permission.goodsinfo_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      },
+      specIds() {
+        let ids = [];
+        this.specSelectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      viewDialogShow(row) {
+        this.viewDialog = true;
+        this.demoModelSrc = `${this.demoModelSrcYuan}?aa=${JSON.stringify(row)}`
+
+      },
+      rowSave(row, done, loading) {
+        row.goodsCategoryId = row.categoryIdArr.join("-");
+        if (row.promotionRateRange == '') {
+          delete row.promotionRateRange;
+        }
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        row.goodsCategoryId = row.categoryIdArr.join("-") + "-";
+        if (row.promotionRateRange == '') {
+          delete row.promotionRateRange;
+        }
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+            this.form.uploadCover = res.data.data.goodsCover;
+            this.form.goodsVideo = res.data.data.videoUrl;
+            this.form.slideshowList = res.data.data.slideshowList;
+            this.form.detailImgUrlList = res.data.data.detailImgUrlList;
+            this.form.categoryIdArr = this.form.goodsCategoryId.split("-");
+          });
+          console.log(this.form.goodsCategoryId.split("-"));
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.range = {
+          from: '',
+            to: ''
+        };
+        this.activityDate = '';
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        if (this.query.categoryIdArr) {
+          this.query.goodsCategoryId = this.query.categoryIdArr.join("-");
+          this.query.categoryIdArr = null;
+        }
+        this.query.activityDate = this.activityDate;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      },
+      uploadError(error, column) {
+        this.$message.success('上传失败:' + error)
+        console.log(error, column)
+      },
+      uploadAfter(res, done, loading,column) {
+        console.log(res,column)
+        if(column.prop == "uploadCover") {
+          this.form.goodsCover = res.link;
+        }
+        if (column.prop == "goodsVideo") {
+          this.form.videoUrl = res.link;
+        }
+        done()
+      },
+      paramConfig(row) {
+        this.box = true;
+        this.goodsParamQuery.goodsId = row.id;
+        this.onLoadParam();
+      },
+
+      handleRowClick(row, event, column, loading) {
+        if (event.label == '是否上架') {
+          const param = {id:row.id, isSale:row.saleSwitch ? 1 : 0}
+          update(param).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: row.saleSwitch ? "上架成功" : "下架成功"
+            });
+          }, error => {
+            loading();
+            console.log(error);
+          });
+        }
+      },
+
+      handleClose() {
+        this.categoryIdArr = [];
+        this.auditBox = false;
+        this.auditForm = {
+          auditStatus: '',
+              id: '',
+              remark: ''
+        };
+      },
+      modifyGoodsStateBatch(state) {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定修改数据?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            const loading = this.$loading({
+              lock: true,
+              text: '修改中,请稍等...',
+              spinner: 'el-icon-loading',
+              background: 'rgba(0, 0, 0, 0.7)'
+            });
+            modifyState(this.ids, state).then(() => {
+              loading.close();
+              this.onLoad(this.page, this.query);
+              this.$message({
+                type: "success",
+                message: "操作成功!"
+              });
+              this.selectionClear()
+            });
+          })
+      },
+      modifyGoodsState(id, state) {
+        let title = state === 0 ? '确定下架?' : '确定上架?';
+        this.$confirm(title, {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          const loading = this.$loading({
+            lock: true,
+            text: '修改中,请稍等...',
+            spinner: 'el-icon-loading',
+            background: 'rgba(0, 0, 0, 0.7)'
+          });
+          modifyState(id, state).then(() => {
+            loading.close();
+            this.onLoad(this.page, this.query);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.selectionClear()
+          });
+        })
+      },
+      openAuditBox(id) {
+        this.auditBox = true;
+        this.auditForm.id = id;
+      },
+      auditGoods() {
+        audit(this.auditForm).then(() => {
+          this.auditBox = false;
+          this.onLoad(this.page, this.query);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>