ct před 2 týdny
rodič
revize
36a2ac50d3

+ 7 - 7
src/api/hisStore/shippingTemplates.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 查询运费模板列表
 export function listShippingTemplates(query) {
   return request({
-    url: '/store/shippingTemplates/list',
+    url: '/store/store/shippingTemplates/list',
     method: 'get',
     params: query
   })
@@ -12,7 +12,7 @@ export function listShippingTemplates(query) {
 // 查询运费模板详细
 export function getShippingTemplates(shippingId) {
   return request({
-    url: '/store/shippingTemplates/' + shippingId,
+    url: '/store/store/shippingTemplates/' + shippingId,
     method: 'get'
   })
 }
@@ -20,7 +20,7 @@ export function getShippingTemplates(shippingId) {
 // 新增运费模板
 export function addShippingTemplates(data) {
   return request({
-    url: '/store/shippingTemplates',
+    url: '/store/store/shippingTemplates',
     method: 'post',
     data: data
   })
@@ -29,7 +29,7 @@ export function addShippingTemplates(data) {
 // 修改运费模板
 export function updateShippingTemplates(data) {
   return request({
-    url: '/store/shippingTemplates',
+    url: '/store/store/shippingTemplates',
     method: 'put',
     data: data
   })
@@ -38,7 +38,7 @@ export function updateShippingTemplates(data) {
 // 删除运费模板
 export function delShippingTemplates(shippingId) {
   return request({
-    url: '/store/shippingTemplates/' + shippingId,
+    url: '/store/store/shippingTemplates/' + shippingId,
     method: 'delete'
   })
 }
@@ -46,14 +46,14 @@ export function delShippingTemplates(shippingId) {
 // 导出运费模板
 export function exportShippingTemplates(query) {
   return request({
-    url: '/store/shippingTemplates/export',
+    url: '/store/store/shippingTemplates/export',
     method: 'get',
     params: query
   })
 }
 export function getAllShippingTemplates() {
   return request({
-    url: '/store/shippingTemplates/getAllList',
+    url: '/store/store/shippingTemplates/getAllList',
     method: 'get'
   })
 }

+ 68 - 0
src/api/hisStore/store.js

@@ -0,0 +1,68 @@
+import request from '@/utils/request'
+
+// 查询店铺管理列表
+export function listStore(query) {
+  return request({
+    url: '/store/store/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询店铺管理详细
+export function getStore(storeId) {
+  return request({
+    url: '/store/store/' + storeId,
+    method: 'get'
+  })
+}
+
+
+// 新增店铺管理
+export function addStore(data) {
+  return request({
+    url: '/his/store',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改店铺管理
+export function updateStore(data) {
+  return request({
+    url: '/his/store',
+    method: 'put',
+    data: data
+  })
+}
+// 修改店铺管理
+export function audit(data) {
+  return request({
+    url: '/store/store/audit',
+    method: 'put',
+    data: data
+  })
+}
+// 删除店铺管理
+export function delStore(storeId) {
+  return request({
+    url: '/store/store/' + storeId,
+    method: 'delete'
+  })
+}
+
+// 导出店铺管理
+export function exportStore(query) {
+  return request({
+    url: '/store/store/export',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getAllStore() {
+  return request({
+    url: '/store/store/storeList',
+    method: 'get'
+  })
+}

+ 11 - 11
src/api/hisStore/storeProduct.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 查询商品列表
 export function listStoreProduct(query) {
   return request({
-    url: '/store/storeProduct/list',
+    url: '/store/store/storeProduct/list',
     method: 'get',
     params: query
   })
@@ -11,7 +11,7 @@ export function listStoreProduct(query) {
 
 export function batchModify(param) {
   return request({
-    url: '/store/storeProduct/batchModify',
+    url: '/store/store/storeProduct/batchModify',
     method: 'post',
     data: param
   })
@@ -20,7 +20,7 @@ export function batchModify(param) {
 // 查询商品详细
 export function getStoreProduct(productId) {
   return request({
-    url: '/store/storeProduct/' + productId,
+    url: '/store/store/storeProduct/' + productId,
     method: 'get'
   })
 }
@@ -28,7 +28,7 @@ export function getStoreProduct(productId) {
 
 export function addOrEdit(data) {
   return request({
-    url: '/store/storeProduct/addOrEdit',
+    url: '/store/store/storeProduct/addOrEdit',
     method: 'post',
     data: data
   })
@@ -36,7 +36,7 @@ export function addOrEdit(data) {
 
 export function importTemplate() {
   return request({
-    url: '/store/storeProduct/importTemplate',
+    url: '/store/store/storeProduct/importTemplate',
     method: 'get'
   })
 }
@@ -45,7 +45,7 @@ export function importTemplate() {
 // 删除商品
 export function delStoreProduct(productId) {
   return request({
-    url: '/store/storeProduct/' + productId,
+    url: '/store/store/storeProduct/' + productId,
     method: 'delete'
   })
 }
@@ -53,7 +53,7 @@ export function delStoreProduct(productId) {
 // 导出商品
 export function exportStoreProduct(query) {
   return request({
-    url: '/store/storeProduct/export',
+    url: '/store/store/storeProduct/export',
     method: 'get',
     params: query
   })
@@ -61,7 +61,7 @@ export function exportStoreProduct(query) {
 
 export function genFormatAttr(productId,json) {
   return request({
-    url: '/store/storeProduct/genFormatAttr/'+productId,
+    url: '/store/store/storeProduct/genFormatAttr/'+productId,
     method: 'post',
     data: json
   })
@@ -70,7 +70,7 @@ export function genFormatAttr(productId,json) {
 
 export function getStoreProductAttrValueList(query) {
   return request({
-    url: '/store/storeProduct/getStoreProductAttrValueList',
+    url: '/store/store/storeProduct/getStoreProductAttrValueList',
     method: 'get',
     params: query
   })
@@ -79,7 +79,7 @@ export function getStoreProductAttrValueList(query) {
 
 export function getStoreTuiProductAttrValueList(query) {
   return request({
-    url: '/store/storeProduct/getStoreTuiProductAttrValueList',
+    url: '/store/store/storeProduct/getStoreTuiProductAttrValueList',
     method: 'get',
     params: query
   })
@@ -87,7 +87,7 @@ export function getStoreTuiProductAttrValueList(query) {
 
 export function productBySearCh(query) {
   return request({
-    url: '/store/storeProduct/listBySearch',
+    url: '/store/store/storeProduct/listBySearch',
     method: 'get',
     params: query
   })

+ 7 - 7
src/api/hisStore/storeProductCategory.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 查询商品分类列表
 export function listStoreProductCategory(query) {
   return request({
-    url: '/store/storeProductCategory/list',
+    url: '/store/store/storeProductCategory/list',
     method: 'get',
     params: query
   })
@@ -12,7 +12,7 @@ export function listStoreProductCategory(query) {
 // 查询商品分类详细
 export function getStoreProductCategory(cateId) {
   return request({
-    url: '/store/storeProductCategory/' + cateId,
+    url: '/store/store/storeProductCategory/' + cateId,
     method: 'get'
   })
 }
@@ -20,7 +20,7 @@ export function getStoreProductCategory(cateId) {
 // 新增商品分类
 export function addStoreProductCategory(data) {
   return request({
-    url: '/store/storeProductCategory',
+    url: '/store/store/storeProductCategory',
     method: 'post',
     data: data
   })
@@ -29,7 +29,7 @@ export function addStoreProductCategory(data) {
 // 修改商品分类
 export function updateStoreProductCategory(data) {
   return request({
-    url: '/store/storeProductCategory',
+    url: '/store/store/storeProductCategory',
     method: 'put',
     data: data
   })
@@ -38,7 +38,7 @@ export function updateStoreProductCategory(data) {
 // 删除商品分类
 export function delStoreProductCategory(cateId) {
   return request({
-    url: '/store/storeProductCategory/' + cateId,
+    url: '/store/store/storeProductCategory/' + cateId,
     method: 'delete'
   })
 }
@@ -46,14 +46,14 @@ export function delStoreProductCategory(cateId) {
 // 导出商品分类
 export function exportStoreProductCategory(query) {
   return request({
-    url: '/store/storeProductCategory/export',
+    url: '/store/store/storeProductCategory/export',
     method: 'get',
     params: query
   })
 }
 export function getAllStoreProductCategory() {
   return request({
-    url: '/store/storeProductCategory/getAllList' ,
+    url: '/store/store/storeProductCategory/getAllList' ,
     method: 'get'
   })
 }

+ 7 - 7
src/api/hisStore/storeProductRule.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 查询商品规则值(规格)列表
 export function listStoreProductRule(query) {
   return request({
-    url: '/store/storeProductRule/list',
+    url: '/store/store/storeProductRule/list',
     method: 'get',
     params: query
   })
@@ -12,7 +12,7 @@ export function listStoreProductRule(query) {
 // 查询商品规则值(规格)详细
 export function getStoreProductRule(id) {
   return request({
-    url: '/store/storeProductRule/' + id,
+    url: '/store/store/storeProductRule/' + id,
     method: 'get'
   })
 }
@@ -20,7 +20,7 @@ export function getStoreProductRule(id) {
 // 新增商品规则值(规格)
 export function addStoreProductRule(data) {
   return request({
-    url: '/store/storeProductRule',
+    url: '/store/store/storeProductRule',
     method: 'post',
     data: data
   })
@@ -29,7 +29,7 @@ export function addStoreProductRule(data) {
 // 修改商品规则值(规格)
 export function updateStoreProductRule(data) {
   return request({
-    url: '/store/storeProductRule',
+    url: '/store/store/storeProductRule',
     method: 'put',
     data: data
   })
@@ -38,7 +38,7 @@ export function updateStoreProductRule(data) {
 // 删除商品规则值(规格)
 export function delStoreProductRule(id) {
   return request({
-    url: '/store/storeProductRule/' + id,
+    url: '/store/store/storeProductRule/' + id,
     method: 'delete'
   })
 }
@@ -46,7 +46,7 @@ export function delStoreProductRule(id) {
 // 导出商品规则值(规格)
 export function exportStoreProductRule(query) {
   return request({
-    url: '/store/storeProductRule/export',
+    url: '/store/store/storeProductRule/export',
     method: 'get',
     params: query
   })
@@ -55,7 +55,7 @@ export function exportStoreProductRule(query) {
 
 export function getAllStoreProductRule() {
   return request({
-    url: '/store/storeProductRule/getAllList',
+    url: '/store/store/storeProductRule/getAllList',
     method: 'get'
   })
 }

+ 441 - 0
src/views/hisStore/store/audit.vue

@@ -0,0 +1,441 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="店铺名称" prop="storeName">
+        <el-input
+          v-model="queryParams.storeName"
+          placeholder="请输入店铺名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="地址" prop="address">
+        <el-input
+          v-model="queryParams.address"
+          placeholder="请输入地址"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="店铺电话" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入店铺电话"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="登录帐号" prop="account">
+        <el-input
+          v-model="queryParams.account"
+          placeholder="请输入登录帐号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['his:store:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+    <el-tabs type="card" v-model="queryParams.isAudit" @tab-click="handleClickX">
+      <el-tab-pane v-for="(item,index) in isAuditOptions" :label="item.dictLabel" :name="item.dictValue"></el-tab-pane>
+    </el-tabs>
+    <el-table v-loading="loading" border :data="storeList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="店铺id" align="center" prop="storeId" width="120px"/>
+      <el-table-column label="店铺名称" align="center" prop="storeName" width="120px"/>
+      <el-table-column label="店铺LOGO" align="center" prop="logoUrl" width="100px">
+          <template slot-scope="scope">
+             <el-popover
+               placement="right"
+               title=""
+               trigger="hover">
+               <img slot="reference" :src="scope.row.logoUrl" width="80px">
+               <img :src="scope.row.logoUrl" style="max-width: 150px;">
+             </el-popover>
+          </template>
+      </el-table-column>
+      <el-table-column label="地址" align="center" prop="address" width="200px"/>
+      <el-table-column label="店铺电话" align="center" prop="phone" width="120px"/>
+      <el-table-column label="资质证书" align="center" prop="licenseImages" width="100px">
+        <template slot-scope="scope">
+                <el-popover
+                  placement="right"
+                  title=""
+                  trigger="hover">
+                  <img slot="reference" :src="scope.row.licenseImages" width="80px">
+                  <img :src="scope.row.licenseImages" style="max-width: 150px;">
+                </el-popover>
+              </template>
+      </el-table-column>
+      <el-table-column label="审核状态" align="center" prop="isAudit">
+        <template slot-scope="scope">
+          <dict-tag :options="isAuditOptions" :value="scope.row.isAudit"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品总数" align="center" prop="productCount" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="statusOptions" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="销量" align="center" prop="salesCount" />
+      <el-table-column label="余额" align="center" prop="balance" />
+      <el-table-column label="累计金额" align="center" prop="totalMoney" />
+
+      <el-table-column label="登录帐号" align="center" prop="account" width="150px" />
+        <el-table-column label="创建时间" align="center" prop="createTime"  width="150px"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="130px">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.isAudit==0"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['his:store:audit']"
+          >审核</el-button>
+           <el-button
+                      size="mini"
+                      type="text"
+                      @click="handledetails(scope.row)"
+           >详情
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+
+      <el-drawer
+            :with-header="false"
+            size="75%"
+             :title="show.title" :visible.sync="show.open">
+         <storeDetails  ref="Details" />
+       </el-drawer>
+
+
+  </div>
+</template>
+
+<script>
+import { audit,listStore, getStore, delStore, addStore, updateStore, exportStore } from "@/api/hisStore/store";
+import storeDetails from '../../components/his/storeDetails.vue';
+import {getCitys} from "@/api/store/city";
+export default {
+  name: "adutstore",
+  components: { storeDetails },
+  data() {
+    return {
+      show:{
+              title:"店铺详情",
+              open:false,
+            },
+
+      citys:[],
+      licenseuploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
+            uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
+            baseUrl: process.env.VUE_APP_BASE_API,
+      shippingTypeOptions: [{
+        "label": "配送",
+        "value": "1"
+      }, {
+        "label": "自提",
+        "value": "2"
+      }, {
+        "label": "配送自提",
+        "value": "3"
+      }],
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 店铺管理表格数据
+      storeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 状态字典
+      statusOptions: [],
+      // 审核状态字典
+      isAuditOptions: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        storeName: null,
+        address: null,
+        phone: null,
+        status: null,
+        isAudit: 0,
+        account: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        storeName: [
+         { required: true, message: "店铺名称不能为空", trigger: "blur" }
+       ],
+       logoUrl: [
+         { required: true, message: "店铺LOGO不能为空", trigger: "blur" }
+       ],
+       cityIds: [
+         { required: true, message: "所属城市不能为空", trigger: "blur" }
+       ],
+      address: [
+        { required: true, message: "地址不能为空", trigger: "blur" }
+      ],
+      licenseImages: [
+        { required: true, message: "资质证书不能为空", trigger: "blur" }
+      ],
+      shippingType: [
+        { required: true, message: "配送方式不能为空", trigger: "blur" }
+      ],
+      phone: [
+        { required: true, message: "店铺电话不能为空", trigger: "blur" }
+      ],
+      }
+    };
+  },
+  created() {
+      this.getCitys();
+    this.getList();
+    this.getDicts("sys_company_status").then(response => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("sys_company_isaudit").then(response => {
+      this.isAuditOptions = response.data;
+    });
+  },
+  methods: {
+
+
+    handleUpdate(row){
+        var that=this;
+        var the=null;
+         this.$confirm('是否确认审核?', "审核", {
+           distinguishCancelAndClose: true,
+           confirmButtonText: "确定",
+           cancelButtonText: "驳回",
+           type: "warning"
+         }).then(function() {
+           var data={
+          storeId:row.storeId,
+          isAudit:1
+              }
+           return audit(data);
+         }).then(() => {
+           this.msgSuccess("操作成功");
+              this.getList();
+         }).catch(function(action) {
+           if (action === 'cancel') {
+           var data={
+           storeId:row.storeId,
+           isAudit:-1
+               }
+          the='cancel';
+            return audit(data);
+            }
+         }).then(() => {
+           if(the==='cancel'){
+             this.msgSuccess("操作成功");
+                this.getList();
+           }
+
+         });
+},
+    handledetails(row){
+            this.show.open=true;
+            setTimeout(() => {
+                 this.$refs.Details.getDetails(row.storeId);
+            }, 1);
+        },
+
+    handleCityChange(value) {
+          var nodes=this.$refs.citySelect.getCheckedNodes();
+          this.form.address=nodes[0].pathLabels[0]+nodes[0].pathLabels[1]+nodes[0].pathLabels[2];
+          this.form.cityIds=value.toString();
+        },
+        getCitys(){
+            getCitys().then(res => {
+              this.loading = false;
+              this.citys=res.data;
+            })
+        },
+
+    licensehandleAvatarSuccess(res, file) {
+        if(res.code==200){
+          this.form.licenseImages=res.url;
+          this.$forceUpdate()
+        }
+        else{
+          this.msgError(res.msg);
+        }
+    },
+    handleAvatarSuccess(res, file) {
+            if(res.code==200){
+              this.form.logoUrl=res.url;
+              this.$forceUpdate()
+            }
+            else{
+              this.msgError(res.msg);
+            }
+      },
+    beforeAvatarUpload(file) {
+          const isLt1M = file.size / 1024 / 1024 < 1;
+          if (!isLt1M) {
+            this.$message.error('上传图片大小不能超过 1MB!');
+          }
+          return   isLt1M;
+        },
+    handleClickX(){
+        this.getList()
+    },
+    /** 查询店铺管理列表 */
+    getList() {
+      this.loading = true;
+      listStore(this.queryParams).then(response => {
+        this.storeList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        storeId: null,
+        cityIds: null,
+        storeName: null,
+        descs: null,
+        logoUrl: null,
+        address: null,
+        lng: null,
+        lat: null,
+        phone: null,
+        licenseImages: null,
+        productCount: null,
+        status: 0,
+        createTime: null,
+        updateTime: null,
+        salesCount: null,
+        balance: null,
+        totalMoney: null,
+        isAudit: 0,
+        account: null,
+        password: null,
+        shippingType: ["1"]
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.storeId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+
+
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有店铺管理数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportStore(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>
+<style>
+
+    .avatar-uploader .el-upload {
+       border: 1px dashed #d9d9d9;
+       border-radius: 6px;
+       cursor: pointer;
+       position: relative;
+       overflow: hidden;
+     }
+     .avatar-uploader .el-upload:hover {
+       border-color: #409EFF;
+     }
+
+     .avatar-uploader-icon {
+       font-size: 28px;
+       color: #8c939d;
+       width: 150px;
+       height: 150px;
+       line-height: 150px;
+       text-align: center;
+     }
+</style>

+ 701 - 0
src/views/hisStore/store/index.vue

@@ -0,0 +1,701 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="店铺名称" prop="storeName">
+        <el-input
+          v-model="queryParams.storeName"
+          placeholder="请输入店铺名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="地址" prop="address">
+        <el-input
+          v-model="queryParams.address"
+          placeholder="请输入地址"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="店铺电话" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入店铺电话"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="审核状态" prop="isAudit">
+        <el-select v-model="queryParams.isAudit" placeholder="请选择审核状态" clearable size="small">
+          <el-option
+            v-for="dict in isAuditOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="登录帐号" prop="account">
+        <el-input
+          v-model="queryParams.account"
+          placeholder="请输入登录帐号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['his:store:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['his:store:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['his:store:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['his:store:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" border :data="storeList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="店铺id" align="center" prop="storeId" width="120px"/>
+      <el-table-column label="店铺名称" align="center" prop="storeName" width="120px"/>
+      <el-table-column label="机构全称" align="center" prop="fullName" width="120px"/>
+      <el-table-column label="店铺LOGO" align="center" prop="logoUrl" width="100px">
+          <template slot-scope="scope">
+             <el-popover
+               placement="right"
+               title=""
+               trigger="hover">
+               <img slot="reference" :src="scope.row.logoUrl" width="80px">
+               <img :src="scope.row.logoUrl" style="max-width: 150px;">
+             </el-popover>
+          </template>
+      </el-table-column>
+      <el-table-column label="地址" align="center" prop="address" width="200px"/>
+      <el-table-column label="店铺电话" align="center" prop="phone" width="120px"/>
+      <el-table-column label="资质证书" align="center" prop="licenseImages" width="100px">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover">
+            <img slot="reference" :src="scope.row.licenseImages" width="80px">
+            <img :src="scope.row.licenseImages" style="max-width: 150px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="审核状态" align="center" prop="isAudit">
+        <template slot-scope="scope">
+          <dict-tag :options="isAuditOptions" :value="scope.row.isAudit"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品总数" align="center" prop="productCount" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="statusOptions" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="销量" align="center" prop="salesCount" />
+      <el-table-column label="余额" align="center" prop="balance" />
+      <el-table-column label="累计金额" align="center" prop="totalMoney" />
+      <el-table-column label="登录帐号" align="center" prop="account" width="150px" />
+      <el-table-column label="创建时间" align="center" prop="createTime"  width="150px"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150px">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['his:store:edit']"
+          >修改</el-button>
+           <el-button
+             size="mini"
+               type="text"
+               @click="handledetails(scope.row)"
+             >详情
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['his:store:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 添加或修改店铺管理对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="12">
+              <el-form-item label="店铺名称" prop="storeName">
+                <el-input v-model="form.storeName" placeholder="请输入店铺名称" />
+              </el-form-item>
+          </el-col>
+          <el-col :span="12">
+              <el-form-item label="店铺电话" prop="phone">
+                <el-input v-model="form.phone" placeholder="请输入店铺电话" />
+              </el-form-item>
+          </el-col>
+        </el-row>
+              <el-form-item label="机构全称" prop="fullName">
+                <el-input v-model="form.fullName" placeholder="请输入机构全称" />
+              </el-form-item>
+        <el-row>
+            <el-col :span="12">
+              <el-form-item label="店铺LOGO" prop="logoUrl">
+               <el-upload
+                 v-model="form.logoUrl"
+                 class="avatar-uploader"
+                 :action="uploadUrl"
+                 :show-file-list="false"
+                 :on-success="handleAvatarSuccess"
+                 :before-upload="beforeAvatarUpload">
+                 <img v-if="form.logoUrl" :src="form.logoUrl" class="avatar" width="200px">
+                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+               </el-upload>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+        	</el-col>
+        </el-row>
+        <el-form-item label="资质证书" prop="licenseImages">
+          <el-upload
+            v-model="form.licenseImages"
+            class="avatar-uploader"
+            :action="licenseuploadUrl"
+            :show-file-list="false"
+            :on-success="licensehandleAvatarSuccess"
+            :before-upload="beforeAvatarUpload">
+            <img v-if="form.licenseImages" :src="form.licenseImages" class="avatar" width="200px">
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>          
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="店铺介绍" prop="descs" >
+          <el-input v-model="form.descs" placeholder="请输入店铺介绍" type="textarea"/>
+        </el-form-item>
+         <el-row>
+          <el-col :span="12">
+            <el-form-item label="所属城市" prop="cityIds">
+            <el-cascader
+              ref="citySelect"
+              v-model="form.cityIds"
+              :options="citys"
+              @change="handleCityChange">
+              </el-cascader>        
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+              <el-form-item label="地址" prop="address">
+                <el-input v-model="form.address" placeholder="请输入地址" />
+              </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="退货地址" prop="refundAddress">
+          <el-input v-model="form.refundAddress" placeholder="请输入退货地址" />
+        </el-form-item>
+        <el-row>
+          <el-col :span="12">
+          <el-form-item label="退货电话" prop="refundPhone">
+            <el-input v-model="form.refundPhone" placeholder="请输入退货电话" />
+          </el-form-item>
+          </el-col>
+           <el-col :span="12">
+            <el-form-item label="退货收货人" prop="refundConsignee">
+              <el-input v-model="form.refundConsignee" placeholder="请输入退货收货人" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="寄件人电话" prop="sendPhone">
+          <el-input v-model="form.sendPhone" placeholder="请输入寄件人电话" />
+        </el-form-item>
+          <el-row>
+          <el-col :span="12">
+            <el-form-item label="商品总数" prop="productCount">
+               <el-input-number v-model="form.productCount"  :min="0" label="描述文字"></el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="销量" prop="salesCount">
+               <el-input-number v-model="form.salesCount"  :min="0" label="描述文字"></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="累计金额" prop="totalMoney">
+                 <el-input-number v-model="form.totalMoney" :precision="2" :step="0.1"></el-input-number>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+             <!-- <el-form-item label="分佣比例%" prop="shippingType">
+                    <el-input-number v-model="form.brokerageRate" :min="0" :max="100"></el-input-number>
+               </el-form-item> -->
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="状态">
+                <el-radio-group v-model="form.status">
+                  <el-radio
+                    v-for="dict in statusOptions"
+                    :key="dict.dictValue"
+                    :label="parseInt(dict.dictValue)"
+                  >{{dict.dictLabel}}</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="分佣方式" prop="brokerageType" >
+                 <el-radio v-model="form.brokerageType" label="1">每盒</el-radio>
+                 <el-radio v-model="form.brokerageType" label="2">总价</el-radio>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-form-item label="配送方式" prop="shippingType">
+                <el-checkbox-group v-model="form.shippingType" size="medium">
+                 <el-checkbox v-for="(item, index) in shippingTypeOptions" :key="index" :label="item.value"
+                            :disabled="item.disabled">{{item.label}}</el-checkbox>
+                 </el-checkbox-group>
+           </el-form-item>
+
+           <el-form-item label="发货方式" prop="deliveryType">
+                 <el-radio-group v-model="form.deliveryType">
+                          <el-radio :label="item.dictValue" v-for="item in deliveryTypeOptions" >{{item.dictLabel}}</el-radio>
+                 </el-radio-group>
+            </el-form-item>
+
+          <el-form-item label="登录帐号" prop="account" v-if="title != '修改店铺管理'">
+            <el-input v-model="form.account" placeholder="请输入登录帐号" />
+          </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+      <el-drawer
+            :with-header="false"
+            size="75%"
+             :title="show.title" :visible.sync="show.open">
+         <storeDetails  ref="Details" />
+       </el-drawer>
+
+
+  </div>
+</template>
+
+<script>
+import { listStore, getStore, delStore, addStore, updateStore, exportStore } from "@/api/hisStore/store";
+import storeDetails from '../../components/his/storeDetails.vue';
+import {getCitys} from "@/api/store/city";
+export default {
+  name: "Store",
+  components: { storeDetails },
+  data() {
+    return {
+      show:{
+              title:"店铺详情",
+              open:false,
+            },
+shippingType:[],
+      citys:[],
+      licenseuploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
+            uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
+            baseUrl: process.env.VUE_APP_BASE_API,
+      shippingTypeOptions: [{
+        "label": "配送",
+        "value": "1"
+      }, {
+        "label": "自提",
+        "value": "2"
+      }, {
+        "label": "配送自提",
+        "value": "3"
+      }],
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 店铺管理表格数据
+      storeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 状态字典
+      statusOptions: [],
+      // 审核状态字典
+      isAuditOptions: [],
+      deliveryTypeOptions: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        storeName: null,
+        address: null,
+        phone: null,
+        status: null,
+        isAudit: null,
+        account: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        storeName: [
+         { required: true, message: "店铺名称不能为空", trigger: "blur" }
+       ],
+       logoUrl: [
+         { required: true, message: "店铺LOGO不能为空", trigger: "blur" }
+       ],
+       cityIds: [
+         { required: true, message: "所属城市不能为空", trigger: "blur" }
+       ],
+      address: [
+        { required: true, message: "地址不能为空", trigger: "blur" }
+      ],
+      licenseImages: [
+        { required: true, message: "资质证书不能为空", trigger: "blur" }
+      ],
+      shippingType: [
+        { required: true, message: "配送方式不能为空", trigger: "blur" }
+      ],
+      account: [
+        { required: true, message: "登录账号不能为空", trigger: "blur" }
+      ],
+      brokerageType: [
+        { required: true, message: "分佣方式不能为空", trigger: "blur" }
+      ],
+      refundPhone: [
+        { required: true, message: "退货电话不能为空", trigger: "blur" }
+      ],
+      refundAddress: [
+        { required: true, message: "退货地址不能为空", trigger: "blur" }
+      ],
+      refundConsignee: [
+        { required: true, message: "退货收货人不能为空", trigger: "blur" }
+      ],
+      deliveryType: [
+        { required: true, message: "发货方式不能为空", trigger: "blur" }
+      ],
+      sendPhone: [
+        { required: true, message: "寄件人电话不能为空", trigger: "blur" },
+      ],
+      phone:  [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
+        ],
+
+      password: [
+        { required: true, message: "新密码不能为空", trigger: "blur" },
+        { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" }
+      ],
+      }
+    };
+  },
+  created() {
+      this.getCitys();
+    this.getList();
+    this.getDicts("sys_company_status").then(response => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("sys_company_isaudit").then(response => {
+      this.isAuditOptions = response.data;
+    });
+    this.getDicts("sys_store_delivery_type").then(response => {
+      this.deliveryTypeOptions = response.data;
+    });
+  },
+  methods: {
+
+    handledetails(row){
+            this.show.open=true;
+            setTimeout(() => {
+                 this.$refs.Details.getDetails(row.storeId);
+            }, 1);
+        },
+
+    handleCityChange(value) {
+          var nodes=this.$refs.citySelect.getCheckedNodes();
+          this.form.address=nodes[0].pathLabels[0]+nodes[0].pathLabels[1]+nodes[0].pathLabels[2];
+          this.form.cityIds=value.toString();
+        },
+        getCitys(){
+            getCitys().then(res => {
+              this.loading = false;
+              this.citys=res.data;
+            })
+        },
+
+    licensehandleAvatarSuccess(res, file) {
+        if(res.code==200){
+          this.form.licenseImages=res.url;
+          this.$forceUpdate()
+        }
+        else{
+          this.msgError(res.msg);
+        }
+    },
+        handleAvatarSuccess(res, file) {
+            if(res.code==200){
+              this.form.logoUrl=res.url;
+              this.$forceUpdate()
+            }
+            else{
+              this.msgError(res.msg);
+            }
+        },
+        beforeAvatarUpload(file) {
+          const isLt1M = file.size / 1024 / 1024 < 1;
+          if (!isLt1M) {
+            this.$message.error('上传图片大小不能超过 1MB!');
+          }
+          return   isLt1M;
+        },
+
+
+    /** 查询店铺管理列表 */
+    getList() {
+      this.loading = true;
+      listStore(this.queryParams).then(response => {
+        this.storeList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        storeId: null,
+        cityIds: null,
+        storeName: null,
+        descs: null,
+        logoUrl: null,
+        address: null,
+        lng: null,
+        lat: null,
+        phone: null,
+        licenseImages: null,
+        productCount: null,
+        status: 0,
+        createTime: null,
+        updateTime: null,
+        salesCount: null,
+        balance: null,
+        totalMoney: null,
+        isAudit: 0,
+        account: null,
+        password: null,
+        shippingType: ["1"],
+        brokerageType:"1",
+        brokerageRate:0,
+        fullName:null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.storeId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加店铺管理";
+
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const storeId = row.storeId || this.ids
+      getStore(storeId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改店铺管理";
+        var str=this.form.shippingType
+        this.form.shippingType=str.split(",")
+        this.form.cityIds=((this.form.cityIds).split(",")).map(Number)
+        if(this.form.brokerageType!=null ){
+          this.form.brokerageType=JSON.stringify(this.form.brokerageType)
+        }
+        if(this.form.deliveryType!=null ){
+          this.form.deliveryType=JSON.stringify(this.form.deliveryType)
+        }
+
+
+
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+
+
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.cityIds=(this.form.cityIds).toString()
+          this.form.shippingType=(this.form.shippingType).toString()
+          if (this.form.storeId != null) {
+            updateStore(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addStore(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const storeIds = row.storeId || this.ids;
+      this.$confirm('是否确认删除店铺管理编号为"' + storeIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delStore(storeIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有店铺管理数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportStore(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>
+<style>
+
+    .avatar-uploader .el-upload {
+       border: 1px dashed #d9d9d9;
+       border-radius: 6px;
+       cursor: pointer;
+       position: relative;
+       overflow: hidden;
+     }
+     .avatar-uploader .el-upload:hover {
+       border-color: #409EFF;
+     }
+
+     .avatar-uploader-icon {
+       font-size: 28px;
+       color: #8c939d;
+       width: 150px;
+       height: 150px;
+       line-height: 150px;
+       text-align: center;
+     }
+</style>

+ 432 - 67
src/views/hisStore/storeProduct/index.vue

@@ -5,7 +5,17 @@
       <el-form-item label="商品分类" prop="cateId">
          <treeselect  v-model="queryParams.cateId"  style="width:205.4px" :options="categoryOptions" :normalizer="normalizer" placeholder="请选择分类" />
       </el-form-item>
-
+      
+      <el-form-item label="所属店铺" prop="storeId" >
+       <el-select v-model="queryParams.storeId"  placeholder="所属店铺" clearable size="small" filterable>
+          <el-option
+            v-for="dict in storeOptions"
+            :key="dict.storeId"
+            :label="dict.storeName"
+            :value="dict.storeId"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="商品名称" prop="productName">
         <el-input
           v-model="queryParams.productName"
@@ -57,7 +67,6 @@
               />
         </el-select>
       </el-form-item> -->
-
       <el-form-item>
         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -79,7 +88,7 @@
           type="success"
           icon="el-icon-edit"
           size="mini"
-          :disabled="multiple"
+          :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['store:storeProduct:edit']"
         >修改</el-button>
@@ -136,6 +145,7 @@
           </el-popover>
         </template>
       </el-table-column>
+      <el-table-column label="店铺名称" show-overflow-tooltip align="center" prop="storeName" />
       <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
       <el-table-column label="分类" align="center" prop="cateName" />
       <el-table-column label="所属公司" align="center" prop="companyName" />
@@ -219,22 +229,7 @@
     </el-dialog>
 
     <!-- 添加或修改商品对话框 -->
-    <el-dialog :title="title" v-if="open" :fullscreen="isFullscreen" :visible.sync="open" width="1000px" append-to-body :show-close="false">
-      <template v-slot:title>
-        <div style="display: flex; justify-content: space-between; align-items: center;">
-          <span>{{ title }}</span>
-          <div>
-            <!-- 全屏按钮 -->
-            <el-button type="text" @click="handleFullScreen" size="middle">
-              <i class="el-icon-full-screen"></i>
-            </el-button>
-            <!--关闭按钮-->
-            <el-button type="text" @click="open = false">
-              <i class="el-icon-close"></i>
-            </el-button>
-          </div>
-        </div>
-      </template>
+    <el-dialog :title="title" v-if="open" :visible.sync="open" width="100%" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row >
           <el-col :span="12">
@@ -259,8 +254,8 @@
               <el-input v-model="form.unitName" placeholder="请输入单位名" />
             </el-form-item>
           </el-col>
-
         </el-row>
+
         <el-row>
           <el-col :span="24">
             <el-form-item label="商品简介" prop="productInfo">
@@ -271,22 +266,6 @@
         <el-form-item label="商品图片" prop="image">
           <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150" />
         </el-form-item>
-<!--        <el-form-item label="商品视频" prop="video">
-          <div>
-            <el-upload
-              ref="upload"
-              class="upload-demo"
-              :action="uploadUrl"
-              :on-success="handleSuccess"
-              :before-upload="beforeUpload"
-              :limit="1"
-              :accept="videoAccept"
-            >
-              <el-button size="small" type="primary">点击上传视频</el-button>
-            </el-upload>
-            <video v-if="form.video" :src="form.video" controls style="max-width: 300px; max-height: 300px; margin-top: 10px"></video>
-          </div>
-        </el-form-item>-->
         <el-form-item label="轮播图" prop="sliderImage">
           <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
         </el-form-item>
@@ -300,7 +279,7 @@
             </el-form-item>
           </el-col>
            <!-- 多规格添加-->
-          <el-col :span="24" v-if="form.specType === 1" class="noForm" >
+          <el-col :span="24" v-if="form.specType === 1" class="noForm">
            <el-col :span="24">
               <el-form-item label="选择规格:" prop="">
                 <div  class="acea-row row-middle">
@@ -311,7 +290,6 @@
                 </div>
               </el-form-item>
             </el-col>
-
             <el-col :span="24">
               <el-form-item v-if="attrs!=null&&attrs.length!==0">
                 <div  v-for="(item, index) in attrs" :key="index">
@@ -328,8 +306,7 @@
                 </div>
               </el-form-item>
             </el-col>
-
-             <el-col :span="24" v-if="createBnt">
+            <el-col :span="24" v-if="createBnt">
               <el-form-item>
                 <el-button type="primary" size="small" icon="md-add" @click="addBtn" class="mr15">添加新规格</el-button>
                 <el-button type="success" size="small"  @click="generate">立即生成</el-button>
@@ -356,40 +333,71 @@
               <!-- 多规格表格-->
               <el-col :span="24">
                 <el-form-item label="商品属性:" class="labeltop">
-
-                  <el-table :data="manyFormValidate" size="small" style="width: 90%;" border>
+                  <el-table :data="manyFormValidate" size="small" style="width: 90%;">
                     <el-table-column type="myindex" v-for="(item,index) in form.header" :key="index"  :width="item.minWidth" :label="item.title" :property="item.slot" align="center">
                       <template slot-scope="scope">
                         <div v-if="scope.column.property == 'image'" align="center">
                           <single-img v-model="scope.row[scope.column.property]" type="image" :num="1" :width="60" :height="60" />
                         </div>
+                        <div v-else-if="scope.column.property == 'storeId'" align="center">
+                          <el-tag prop="storeId" v-for="(item, index) in storeOptions"    v-if="scope.row[scope.column.property]==item.storeId">{{item.storeName}}</el-tag>
+                        </div>
                         <div v-else-if="scope.column.property.indexOf('value') != -1" align="center">
                          {{ scope.row[scope.column.property] }}
                         </div>
                         <div v-else-if="scope.column.property == 'action'" align="center" >
                           <a @click="delAttrTable(scope.$index)" align="center">删除</a>
                         </div>
+
+                        <!-- <div v-else-if="scope.column.property == 'storeId'" align="center" >
+                         <el-select v-model="scope.row.storeId" disabled clearable size="small" filterable>
+                            <el-option
+                              v-for="dict in storeOptions"
+                              :key="dict.dictValue"
+                              :label="dict.dictLabel"
+                              :value="dict.dictValue"
+                            />
+                          </el-select>
+                        </div> -->
+
                         <div v-else align="center">
                           <el-input  v-model="scope.row[scope.column.property]" align="center" />
                         </div>
                       </template>
                     </el-table-column>
                   </el-table>
-
                 </el-form-item>
               </el-col>
             </el-col>
           </el-col>
 
           <!-- 单规格表格-->
-          <el-col :xl="23" :lg="24" :md="24" :sm="24" :xs="24" v-if="form.specType === 0" style="">
+          <el-col :xl="23" :lg="24" :md="24" :sm="24" :xs="24" v-if="form.specType === 0">
             <el-form-item >
-              <el-table :data="oneFormValidate"  size="small" border>
+              <el-table border :data="oneFormValidate"  size="mini">
                 <el-table-column prop="image" label="图片" align="center">
                   <template slot-scope="scope">
                     <single-img v-model="scope.row.image" type="image" :num="1" :width="60" :height="60" />
                   </template>
                 </el-table-column>
+                
+                <el-table-column prop="storeId" label="所属店铺" align="center" width="120">
+                  <template slot-scope="scope">
+                    <el-tag prop="storeId" v-for="(item, index) in storeOptions"    v-if="scope.row.storeId==item.storeId">{{item.storeName}}</el-tag>
+                  </template>
+                </el-table-column>
+
+                <!-- <el-table-column prop="erpSkuName" label="erp-sku名称" width="150px" align="center">
+                  <template slot-scope="scope">
+                    <el-input type="text" v-model="scope.row.erpSkuName"/>
+                  </template>
+                </el-table-column> -->
+                <el-table-column prop="erpCode" label="erp编号" width="130px" align="center">
+                  <template slot-scope="scope">
+                    <el-input type="text" v-model="scope.row.erpCode"/>
+                  </template>
+                </el-table-column>
+
                 <el-table-column prop="price" label="售价" align="center">
                   <template slot-scope="scope">
                     <el-input type="text" v-model="scope.row.price"/>
@@ -469,6 +477,16 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-form-item label="所属店铺" prop="storeId">
+          <el-select v-model="storeIds"  multiple placeholder="请选择" clearable size="small" style="width: 100%;">
+            <el-option
+              v-for="dict in storeOptions"
+              :key="dict.storeId"
+              :label="dict.storeName"
+              :value="dict.storeId"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="商品详情" prop="description">
            <editor ref="myeditor"   @on-text-change="updateText" />
         </el-form-item>
@@ -631,6 +649,7 @@ import {
 import { getAllStoreProductCategory } from "@/api/hisStore/storeProductCategory";
 import { getAllStoreProductRule } from "@/api/hisStore/storeProductRule";
 import { getAllShippingTemplates } from "@/api/hisStore/shippingTemplates";
+import { getAllStore } from "@/api/hisStore/store";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -652,7 +671,57 @@ export default {
     },
     photoArr: function(val) {
       this.form.sliderImage = val.join(',')
+    },
+    storeIds(newVal) {
+      if (newVal.length > 0&&this.form.specType===0) {
+        // 如果oneFormValidate的第一行没有绑定storeId,且已有数据
+        if (this.hasData(this.oneFormValidate[0])) {
+          // 将第一行的storeId绑定为第一个选择的storeId
+          this.oneFormValidate[0].storeId = newVal[0];
+        }
+
+        // 处理其他选中的storeId
+        for (let i = 1; i < newVal.length; i++) {
+          if (this.oneFormValidate[i]) {
+            // 如果有对应的行,更新storeId
+            this.oneFormValidate[i].storeId = newVal[i];
+          } else {
+            // 如果没有对应的行,复制第一行并替换storeId
+            this.oneFormValidate.push({
+              ...this.oneFormValidate[0],  // 复制第一行的所有数据
+              storeId: newVal[i]  // 更换storeId
+            });
+          }
+        }
+        // 如果storeIds减少了,删除多余的行
+        if (newVal.length < this.oneFormValidate.length) {
+          this.oneFormValidate.splice(newVal.length);
+        }
+      }
+      if (newVal.length > 0 && this.form.specType === 1) {
+        if (this.originalElements.length === 0) {
+          // 在第一次操作时,保存初始的manyFormValidate内容
+          this.originalElements = [...this.manyFormValidate];
+        }
+
+        // 清空manyFormValidate,以便重新填充
+        this.manyFormValidate = [];
+
+        // 根据当前storeIds重新生成manyFormValidate
+        newVal.forEach(storeId => {
+          this.originalElements.forEach(element => {
+            this.manyFormValidate.push({
+              ...element,
+              storeId,  // 为每个复制的元素绑定不同的storeId
+            });
+          });
+        });
+      } else if (newVal.length === 0) {
+        // 如果没有选择任何storeId,则重置manyFormValidate为原始内容
+        this.manyFormValidate = [...this.originalElements];
+      }
     }
+
   },
   data() {
     return {
@@ -673,7 +742,25 @@ export default {
         // 上传的地址
         url: process.env.VUE_APP_BASE_API + "/store/storeProduct/importData"
       },
+      originalElements: [], // 用于存储原始的元素
+      //根据名字或者单号搜索获取erpSku列表
+      erpSkuList: [],
+      erpSkuStockList: [],
+      // 是否显示Erp-sku弹出层
+      erpSkuOpen:false,
+      // 是否显示Erp-库存弹出层
+      erpSkuStockOpen:false,
+      // 用于存储当前选中的部分数据
+      selectedErpSkuRow:null,
+      storeIds:[],
+      proData:null,
+      //用于存储选择的多规格的那个行数
+      selectedErpSkuRowManyForm:{
+        indexId:null,
+      },
+      storeOptions:[],
       productTuiCateOptions:[],
+      erpSkuStatusOptions:[],
       showIput: false,
       createBnt:true,
       // 规格数据
@@ -693,7 +780,11 @@ export default {
       // 单规格表格data
       oneFormValidate: [
         {
+          storeId:null,
+          id:'',
           image: '',
+          erpCode:'',
+          erpSkuName:'',
           price: 0,
           cost: 0,
           agentPrice: 0,
@@ -720,10 +811,12 @@ export default {
       companyOptions:[],
       // 遮罩层
       loading: true,
+      erpSkuLoading: true,
+      erpSkuStockLoading: true,
       // 选中数组
       ids: [],
       // 非单个禁用
-      single: false,
+      single: true,
       // 非多个禁用
       multiple: true,
       // 显示搜索条件
@@ -731,13 +824,19 @@ export default {
       isFullscreen: false,
       // 总条数
       total: 0,
+      //erpSku总条数
+      erpSkuTotal:0,
+
+      //erpSkuStock总条数
+      erpSkuStockTotal:0,
+
       // 商品表格数据
       storeProductList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
       open: false,
-
+      pageSizes: [10, 20, 30, 50,100,500 ],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -748,6 +847,21 @@ export default {
         barCode:null,
         companyIds: null
       },
+
+      // 查询参数
+      queryParamsErpSku: {
+        pageNum: 1,
+        pageSize: 10,
+        erpCode: null,
+        erpSkuName: null,
+      },
+          // 查询参数
+      queryParamsErpStockSku: {
+        pageNum: 1,
+        pageSize: 10,
+        erpCode: null,
+        erpSkuName: null,
+      },
       // 表单参数
       form: {},
       // 表单校验
@@ -791,6 +905,21 @@ export default {
         companyIds: [
           { required: true, message: "销售公司不能为空", trigger: "blur" }
         ],
+
+        usageMethod: [
+          { required: true, message: "使用方法不能为空", trigger: "blur" }
+        ],
+        dosaNum: [
+          { required: true, message: "每次用药数量不能为空", trigger: "blur" }
+        ],
+        dosaUnit: [
+          { required: true, message: "每次用药单位不能为空", trigger: "blur" }
+        ],
+        frequency: [
+          { required: true, message: "用药频次不能为空", trigger: "blur" }
+        ],
+
+
       }
     };
   },
@@ -804,7 +933,6 @@ export default {
       this.isHotOptions = response.data;
       this.isGoodOptions=response.data;
       this.isDisplayOptions=response.data;
-      console.log(response.data)
     });
     this.getDicts("store_product_type").then((response) => {
       this.productTypeOptions = response.data;
@@ -812,6 +940,9 @@ export default {
     this.getDicts("store_product_is_show").then((response) => {
       this.isShowOptions = response.data;
     });
+    this.getDicts("sys_erp_sku_status").then((response) => {
+      this.erpSkuStatusOptions = response.data;
+    });
     getAllShippingTemplates().then(response => {
       this.templateList =response.data;
     });
@@ -823,6 +954,7 @@ export default {
     });
     this.getTreeselect();
     this.getList();
+    this.getStoreList();
   },
   methods: {
     cancel1(){
@@ -898,6 +1030,15 @@ export default {
         this.download(response.msg);
       });
     },
+    hasData(row) {
+      // 判断某行是否有数据(除了storeId以外的字段)
+      return Object.keys(row).some(key => key !== 'storeId' && row[key] !== '' && row[key] !== 0);
+    },
+    getStoreList() {
+      getAllStore().then(response => {
+        this.storeOptions = response.data;
+      });
+    },
     // 删除表格中的属性
     delAttrTable (index) {
       this.manyFormValidate.splice(index, 1);
@@ -909,7 +1050,7 @@ export default {
     },
     //生成SKU
     generate () {
-      genFormatAttr(this.form.productId, { attrs: this.attrs }).then(res => {
+      genFormatAttr(this.form.productId, { attrs: JSON.stringify(this.attrs) ,stores:this.storeIds }).then(res => {
         if(this.form.specType === 0){
             this.oneFormValidate = res.value;
             this.form.header = res.header;
@@ -1046,15 +1187,140 @@ export default {
         this.loading = false;
       });
     },
+
+     /** 查询erpSku库存列表 */
+    getErpSkuStock(){
+      this.erpSkuStockLoading=true;
+      getERPSkuStockList(this.queryParamsErpStockSku).then(response => {
+         this.erpSkuStockList = response.data.Rows;
+         this.erpSkuStockTotal = response.data.Total;
+         this.erpSkuStockLoading = false;
+      })
+    },
+
+    //搜索Erp-Sku商品库存信息
+    searchFormErpSkuStock(){
+      this.queryParamsErpStockSku.pageNum=1;
+      this.getErpSkuStock();
+    },
+
+
+    /** 查询erpSku列表 */
+    getErpSku(){
+      this.erpSkuLoading=true;
+      getERPSkuList(this.queryParamsErpSku).then(response => {
+        this.erpSkuList = response.data.Rows;
+        this.erpSkuTotal = response.data.Total;
+        this.erpSkuLoading = false;
+      })
+    },
+
+    //搜索Erp-Sku商品信息
+    searchFormErpSku(){
+      this.queryParamsErpSku.pageNum=1;
+      this.getErpSku();
+    },
+
+     //换绑
+    changeErpSku(erpCode,index){
+      this.queryParamsErpSku.erpCode=erpCode;
+      if (this.form.specType==0){
+        this.erpSkuOpen = true;
+        this.title="绑定Erp-Sku商品编码";
+        this.getErpSku();
+      }else {
+        this.selectedErpSkuRowManyForm.indexId=index;
+        this.erpSkuOpen = true;
+        this.title="绑定Erp-Sku商品编码";
+        this.getErpSku();
+      }
+
+    },
+
+     //同步库存
+    changeErpSkuStock(erpCode){
+        //this.queryParamsErpSku.pageNum=1;
+        this.erpSkuStockOpen=true;
+        this.title="绑定Erp-Sku商品库存";
+        this.queryParamsErpStockSku.erpCode=erpCode;
+        this.getErpSkuStock();
+    },
+
+
+
     // 取消按钮
     cancel() {
       this.open = false;
       this.reset();
     },
+    // 取消Erp-Sku按钮
+    erpSkuCancel(){
+      this.erpSkuOpen = false;
+    },
+    //换绑操作
+    erpSkuConfirmBind() {
+      if(this.selectedErpSkuRow==null){
+          this.$message({
+            type: 'error',
+            message: '请选择erp商品'
+          });
+         return;
+      }
+      //延时一点点,防止第一次点击过快时 选择未赋值上
+      setTimeout(() => {
+        this.$confirm(`确定要将\n\r商品编码/货号:${this.selectedErpSkuRow.wareid}\n\r品名:${this.selectedErpSkuRow.warename}\n\r绑定到当前商品吗?`, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+          center: true  // 居中显示
+        }).then(() => {
+          // 用户点击确定后的逻辑
+          this.erpSkuHandleBind();
+        }).catch(() => {
+          // 用户点击取消后的逻辑
+          this.$message({
+            type: 'info',
+            message: '已取消换绑操作'
+          });
+        });
+
+      }, 200);
+
+    },
+
+    erpSkuHandleBind() {
+      if (this.form.specType==0){
+        this.oneFormValidate[0].erpCode=this.selectedErpSkuRow.wareid
+        this.oneFormValidate[0].erpSkuName=this.selectedErpSkuRow.warename
+        this.oneFormValidate[0].stock=this.selectedErpSkuRow.ku
+        // 操作完成后,可以给用户一个提示
+        this.$message.success('当前已替换,请在修改页面确认后生效!');
+        this.erpSkuOpen=false
+      }else if (this.form.specType==1) {
+        this.manyFormValidate[this.selectedErpSkuRowManyForm.indexId].erpCode=this.selectedErpSkuRow.wareid
+        this.manyFormValidate[this.selectedErpSkuRowManyForm.indexId].erpSkuName=this.selectedErpSkuRow.warename
+        this.manyFormValidate[this.selectedErpSkuRowManyForm.indexId].stock=this.selectedErpSkuRow.ku
+        this.$message.success('当前已替换,请在修改页面确认后生效!');
+        this.erpSkuOpen=false
+      }
+
+    },
+
+    //取消Erp-Sku搜索
+    erpSkuCancelSearch(){
+      this.queryParamsErpSku.pageNum=1;
+      this.queryParamsErpSku.pageSize=10;
+      this.queryParamsErpSku.erpCode=null;
+      this.queryParamsErpSku.erpSkuName=null;
+      this.selectedErpSkuRow.wareid=null;
+      this.selectedErpSkuRow.warename=null;
+      this.getErpSku();
+    },
     // 表单重置
     reset() {
       this.form = {
         productId: 0,
+        storeId:null,
         image: null,
         video: null,
         sliderImage: null,
@@ -1096,11 +1362,18 @@ export default {
         prescribeFactory: null,
         prescribeName: null,
         isDisplay:"1",
-        companyIds:[]
+        companyIds:[],
+        isShowDetails:"1",
+        usageMethod:"",
+        dosaNum:null,
+        dosaUnit:"",
+        frequency:"",
+        icdName:""
       };
       this.resetForm("form");
       this.oneFormValidate = [
         {
+          id:'',
           image: '',
           price: 0,
           agentPrice: 0,
@@ -1108,6 +1381,8 @@ export default {
           otPrice: 0,
           stock: 0,
           barCode: '',
+          erpCode:'',
+          erpSkuName:'',
           weight: 0,
           volume: 0,
           integral: 0,
@@ -1136,6 +1411,35 @@ export default {
       this.single = selection.length!==1
       this.multiple = !selection.length
     },
+
+    getRowKeys(row) {
+      // 返回每行的唯一键,通常是ID
+      return row.wareid;
+    },
+    handleSelect(selection, row) {
+      // 当用户选择一行时,取消选择其他行
+      if (selection.length > 0 && this.selectedErpSkuRow !== row) {
+          this.$refs.erpTable.clearSelection();
+          this.$refs.erpTable.toggleRowSelection(row, true);
+          this.selectedErpSkuRow = row;
+      }
+    },
+
+    //Erp-sku绑定选择
+    handleSelectionChangeErpSku(selection){
+      console.log("qxj handleSelectionChangeErpSku:"+JSON.stringify(selection));
+      if (selection.length > 0) {
+         const row=selection[0];
+         this.selectedErpSkuRow = row;
+         //选择的数据存起来
+        //  this.selectedErpSkuRow.wareid=row.wareid
+        //  this.selectedErpSkuRow.warename=row.warename
+        //  this.selectedErpSkuRow.ku=row.ku
+      } else {
+          this.selectedErpSkuRow = null;
+      }
+    },
+
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
@@ -1158,29 +1462,70 @@ export default {
       this.reset();
       const productId = row.productId || this.ids
       getStoreProduct(productId).then(response => {
+        this.proData=response;
         this.form = response.data;
-        this.form.isShow = response.data.isShow.toString();
-        this.form.isHot = response.data.isHot.toString();
-        this.form.isGood = response.data.isGood.toString();
-        this.form.isBest = response.data.isBest.toString();
-        this.form.isNew = response.data.isNew.toString();
-        this.form.productType = response.data.productType.toString();
-        this.form.isDisplay = response.data.isDisplay.toString();
+        if( response.data.isShow){
+          this.form.isShow = response.data.isShow.toString();
+        } else {
+          this.form.isShow = null
+        }
+        if( response.data.isHot){
+          this.form.isHot = response.data.isHot.toString();
+        } else {
+          this.form.isHot = null
+        }
+        if( response.data.isGood){
+          this.form.isGood = response.data.isGood.toString();
+        } else {
+          this.form.isGood = null
+        }
+        if( response.data.isBest){
+          this.form.isBest = response.data.isBest.toString();
+        } else {
+          this.form.isBest = null
+        }
+        if( response.data.isNew){
+          this.form.isNew = response.data.isNew.toString();
+        } else {
+          this.form.isNew = null
+        }
+        if( response.data.productType){
+          this.form.productType = response.data.productType.toString();
+        } else {
+          this.form.productType = null
+        }
+        if( response.data.isDisplay){
+          this.form.isDisplay = response.data.isDisplay.toString();
+        } else {
+          this.form.isDisplay = null
+        }
+        if( response.data.isShowDetails){
+          this.form.isShowDetails = response.data.isShowDetails.toString();
+        } else {
+          this.form.isShowDetails = null
+        }
+        
         if(this.form.tuiCateId!=null){
           this.form.tuiCateId = response.data.tuiCateId.toString();
         }
-        //组装attrs数据
-        if(response.attrs!=null){
-          this.attrs=[];
-          response.attrs.forEach(function (item, index) {
-             var data={value:item.attrName,detail:item.attrValues.split(',')}
-             that.attrs.push(data);
-          });
+        this.storeIds=[];
+        if(this.form.storeId!=null){
+           let storeIds=this.form.storeId.split(",");
+           console.log("qxj storeIds:"+storeIds);
+           storeIds.forEach(item => {
+               this.storeIds.push(parseInt(item));
+           });
         }
-        // 组装companyIds
-        if (response.data.companyIds != null && response.data.companyIds != undefined && response.data.companyIds.length > 0) {
-          this.form.companyIds = response.data.companyIds.split(',').map(Number);
+       this.attrs=[];
+        //组装attrs数据
+        if(this.proData.attrs!=null){
+            this.proData.attrs.forEach(function (item, index) {
+              var data={value:item.attrName,detail:item.attrValues.split(',')}
+              that.attrs.push(data);
+            });
+
         }
+
         setTimeout(() => {
           that.generate();
         }, 200);
@@ -1190,13 +1535,17 @@ export default {
           that.createBnt = true;
           that.oneFormValidate = [
             {
+              id:'',
               image: '',
               price: 0,
+              productId:'',
               agentPrice: 0,
               cost: 0,
               otPrice: 0,
               stock: 0,
               barCode: '',
+              erpCode:'',
+              erpSkuName:'',
               weight: 0,
               volume: 0,
               integral: 0,
@@ -1238,6 +1587,9 @@ export default {
           if(this.form.specType === 1 && this.manyFormValidate.length===0){
             return this.$message.warning('请点击生成规格!');
           }
+          if(this.storeIds.length>0){
+            this.form.storeId=this.storeIds.join(",");
+          }
           // 组装companyIds
           if (this.form.companyIds != null && this.form.companyIds != undefined) {
             this.form.companyIds = this.form.companyIds.join(',');
@@ -1252,6 +1604,7 @@ export default {
         }
       });
     },
+
     /** 删除按钮操作 */
     handleDelete(row) {
       const productIds = row.productId || this.ids;
@@ -1282,3 +1635,15 @@ export default {
   }
 };
 </script>
+
+<style lang="scss" scoped>
+  /deep/.pagination-container{
+       margin-bottom: 30px;
+       margin-top: 15px;
+  }
+  ::v-deep {
+    .el-dialog:not(.is-fullscreen) {
+      margin-top:0 !important;
+    }
+  }
+</style>