浏览代码

平台管理-店铺账号+修改返回按钮样式

YY 2 年之前
父节点
当前提交
677f226894

+ 6 - 0
src/layout/data/menu.js

@@ -32,6 +32,12 @@ export const adminMenu = [
         name: '商品评价',
         index: '2-3',
       },
+      {
+        icon: 'icon-rencai',
+        path: '/platmanag/storeAcc',
+        name: '店铺账号',
+        index: '2-4',
+      },
     ],
   },
   {

+ 19 - 6
src/router/module/platmanag.js

@@ -3,36 +3,49 @@ export default [
     path: '/platmanag/goodsTags',
     name: 'platmanag_goodsTags',
     meta: { title: '平台管理-商品标签设置' },
-    component: () => import(/* webpackChunkName: "platmanag_goodsTags" */ '@/views/platmanag/goodsTags/index.vue'),
+    component: () => import('@/views/platmanag/goodsTags/index.vue'),
   },
   {
     path: '/platmanag/order',
     name: 'platmanag_order',
     meta: { title: '平台管理-平台订单管理' },
-    component: () => import(/* webpackChunkName: "platmanag_goodsTags" */ '@/views/platmanag/order/index.vue'),
+    component: () => import('@/views/platmanag/order/index.vue'),
   },
   {
     path: '/platmanag/order/detail_order',
     name: 'platmanag_order_detail_order',
     meta: { title: '平台管理-订单管理-详细信息' },
-    component: () => import(/* webpackChunkName: "platmanag_order_detail_order" */ '@/views/platmanag/order/detail_order.vue'),
+    component: () => import('@/views/platmanag/order/detail_order.vue'),
   },
   {
     path: '/platmanag/order/detail_orderDetail',
     name: 'platmanag_order_detail_orderDetail',
     meta: { title: '平台管理-订单管理-详细信息' },
-    component: () => import(/* webpackChunkName: "platmanag_order_detail_orderDetail" */ '@/views/platmanag/order/detail_orderDetail.vue'),
+    component: () => import('@/views/platmanag/order/detail_orderDetail.vue'),
   },
   {
     path: '/platmanag/goodsRate',
     name: 'platmanag_goodsRate',
     meta: { title: '平台管理-商品评价' },
-    component: () => import(/* webpackChunkName: "platmanag_goodsRate" */ '@/views/platmanag/goodsRate/index.vue'),
+    component: () => import('@/views/platmanag/goodsRate/index.vue'),
   },
   {
     path: '/platmanag/goodsRate/detail',
     name: 'platmanag_goodsRate_details',
     meta: { title: '平台管理-商品评价' },
-    component: () => import(/* webpackChunkName: "platmanag_goodsRate_detail" */ '@/views/platmanag/goodsRate/detail.vue'),
+    component: () => import('@/views/platmanag/goodsRate/detail.vue'),
+  },
+
+  {
+    path: '/platmanag/storeAcc',
+    name: 'platmanag_storeAcc',
+    meta: { title: '平台管理-店铺账号' },
+    component: () => import('@/views/platmanag/storeAcc/index.vue'),
+  },
+  {
+    path: '/platmanag/storeAcc/detail',
+    name: 'platmanag_storeAcc_detail',
+    meta: { title: '平台管理-店铺账号-账号管理' },
+    component: () => import('@/views/platmanag/storeAcc/detail.vue'),
   },
 ];

+ 2 - 2
src/views/dev/dict/data.vue

@@ -3,7 +3,7 @@
     <template v-if="view === 'list'">
       <el-row>
         <el-col :span="24" style="padding: 10px">
-          <el-button icon="el-icon-back" size="mini" @click="toBackIndex()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBackIndex()">返回</el-button>
         </el-col>
       </el-row>
       <data-search :fields="searchFields" v-model="searchInfo" @query="search">
@@ -17,7 +17,7 @@
     <template v-else>
       <el-row>
         <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" @click="toBack()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
         </el-col>
         <el-col :span="24">
           <data-form :span="12" :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">

+ 1 - 1
src/views/dev/dict/index.vue

@@ -16,7 +16,7 @@
     <template v-else>
       <el-row>
         <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" @click="toBack()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
         </el-col>
         <el-col :span="24">
           <data-form :span="12" :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">

+ 1 - 1
src/views/platSettings/service/index.vue

@@ -7,7 +7,7 @@
     <template v-else>
       <el-row>
         <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" @click="toBack()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
         </el-col>
         <el-col :span="24">
           <data-form :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave"> </data-form>

+ 2 - 2
src/views/platmanag/goodsTags/index.vue

@@ -4,7 +4,7 @@
       <el-row>
         <el-col :span="24" class="btn" v-if="levelList.length > 0">
           <el-col :span="2">
-            <el-button icon="el-icon-back" size="mini" type="primary" @click="backLevel()">返回</el-button>
+            <el-button size="mini" type="primary" @click="backLevel()">返回</el-button>
           </el-col>
           <el-col :span="20">
             <el-breadcrumb separator-class="el-icon-arrow-right">
@@ -28,7 +28,7 @@
     <template v-else>
       <el-row>
         <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" type="primary" @click="toBack()">返回</el-button>
+          <el-button size="mini" type="primary" @click="toBack()">返回</el-button>
         </el-col>
         <el-col :span="24">
           <data-form :span="12" :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">

+ 162 - 0
src/views/platmanag/storeAcc/detail.vue

@@ -0,0 +1,162 @@
+<template>
+  <div id="goods">
+    <template v-if="view === 'list'">
+      <el-row>
+        <el-col :span="24" style="padding: 10px">
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
+        </el-col>
+      </el-row>
+      <data-search :fields="searchFields" v-model="searchInfo" @query="search">
+        <template #status>
+          <el-option v-for="i in goodsStatusList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+        </template>
+      </data-search>
+      <data-btn :fields="btnList" @add="toAdd"></data-btn>
+      <data-table ref="dataTable" :fields="fields" :opera="opera" :data="list" :total="total" :limit="limit" @query="search"></data-table>
+    </template>
+    <template v-else>
+      <el-row>
+        <el-col :span="24">
+          <el-button type="primary" size="mini" @click="toBackList()">返回</el-button>
+        </el-col>
+        <el-col :span="24">
+          <data-form :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">
+            <template #tags="{ item }">
+              <el-cascader v-model="form[item.model]" :options="tagsList" :props="props" clearable filterable :show-all-levels="false"></el-cascader>
+            </template>
+            <template #act_tags>
+              <el-option v-for="i in act_tagsList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+            </template>
+            <template #status>
+              <el-option v-for="i in goodsStatusList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+            </template>
+            <template #brief>
+              <editor v-model="form.brief" url="/files/point/goods/upload" />
+            </template>
+          </data-form>
+        </el-col>
+      </el-row>
+    </template>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+import methodsUtil from '@/util/opera';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: { editor: () => import('@/components/editor.vue') },
+  data: function () {
+    return {
+      view: 'list',
+      fields: [
+        { label: '姓名', model: 'name' },
+        { label: '店铺名称', model: 'shop.name' },
+        // { label: '商品分类', model: 'tags', format: (i) => this.getTags(i) },
+        // { label: '活动标签', model: 'act_tags', format: (i) => this.getAct_tags(i) },
+        // { label: '商品状态', model: 'status', format: (i) => this.getStatus(i) },
+      ],
+      opera: [
+        // { label: '修改', method: 'edit' },
+        // { label: '上架', method: 'puton', display: (i) => i.status == '0' },
+        // { label: '下架', method: 'lower', display: (i) => i.status == '1' },
+        // { label: '库存管理', method: 'spec' },
+        // { label: '删除', method: 'delete', confirm: true, type: 'danger' },
+      ],
+      btnList: [{ label: '添加', method: 'add' }],
+      searchFields: [{ label: '名称', model: 'name' }],
+      searchInfo: {},
+      list: [{ name: '222' }],
+      total: 0,
+      limit: 10,
+      // info部分
+      infoFields: [
+        { label: '商品名称', model: 'name' },
+        { label: '商品分类', model: 'tags', custom: true },
+        { label: '活动标签', model: 'act_tags', type: 'selectMany' },
+        { label: '简短简介', model: 'shot_brief', maxLength: 50 },
+        { label: '预计发货时间', model: 'send_time' },
+        { label: '商品状态', model: 'status', type: 'select' },
+        { label: '商品来源', model: 'source' },
+        { label: '网址', model: 'url' },
+        { label: '排序', model: 'sort', type: 'number' },
+        { label: '商品图片', model: 'file', type: 'upload', url: '/files/point/goods/upload' },
+        { label: '商品介绍', model: 'brief', custom: true },
+      ],
+      rules: {},
+      form: {},
+      // 商品分类
+      tagsList: [],
+      props: { multiple: true, label: 'label', value: 'code' },
+      // 活动标签
+      act_tagsList: [],
+      goodsStatusList: [],
+      shop: {},
+    };
+  },
+  created() {
+    this.searchOthers();
+    this.search();
+  },
+  methods: {
+    ...methodsUtil,
+    async search({ skip = 0, limit = this.limit, ...others } = {}) {
+      // let query = { skip, limit, ...others };
+      // if (Object.keys(this.searchInfo).length > 0) query = { ...query, ...this.searchInfo };
+      // const res = await this.getGoods(query);
+      // if (this.$checkRes(res)) {
+      //   this.$set(this, `list`, res.data);
+      //   this.$set(this, `total`, res.total);
+      // }
+    },
+    initAddData() {
+      const obj = {
+        status: '1',
+        shop: _.get(this.shop, '_id'),
+      };
+      this.$set(this, 'form', obj);
+    },
+    async searchOthers() {},
+    // getStatus(data) {
+    //   const res = this.goodsStatusList.find((f) => f.value === data);
+    //   if (res) return res.label;
+    //   return '';
+    // },
+    // getAct_tags(data) {
+    //   const arr = [];
+    //   for (const val of data) {
+    //     const r = this.act_tagsList.find((f) => f.value === val);
+    //     if (r) arr.push(r.label);
+    //   }
+    //   return arr.join(';');
+    // },
+    // getTags(data) {
+    //   let list = this.tagsList;
+    //   const getChildren = (list) =>
+    //     list.map((i) => {
+    //       if (i.children) return getChildren(i.children);
+    //       return i;
+    //     });
+    //   list = _.flattenDeep(getChildren(list));
+    //   const arr = [];
+    //   for (const ts of data) {
+    //     const last = _.last(ts);
+    //     const r = list.find((f) => f.code === last);
+    //     if (r) arr.push(r.label);
+    //   }
+    //   return arr.join(';');
+    // },
+    toBack() {
+      window.history.go('-1');
+    },
+    toBackList() {
+      this.view = 'list';
+      this.form = {};
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 142 - 0
src/views/platmanag/storeAcc/index.vue

@@ -0,0 +1,142 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col :span="24" class="one"> <span>店铺账号</span> </el-col>
+        <el-col :span="24" class="two">
+          <search-1 :form="searchForm" @onSubmit="search" @toReset="toClose"></search-1>
+        </el-col>
+        <el-col :span="24" class="four">
+          <data-table
+            :select="true"
+            :selected="selected"
+            @handleSelect="handleSelect"
+            :fields="fields"
+            :opera="opera"
+            @query="search"
+            :data="list"
+            :total="total"
+            @manage="toManage"
+          >
+          </data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+import { mapState, mapGetters, createNamespacedHelpers } from 'vuex';
+const { mapActions: shop } = createNamespacedHelpers('shop');
+const { mapActions: dictData } = createNamespacedHelpers('dictData');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    search1: () => import('./parts/search-1.vue'),
+  },
+  data: function () {
+    const that = this;
+    return {
+      // 列表
+      opera: [{ label: '账号管理', method: 'manage' }],
+      fields: [
+        { label: '店铺名称', model: 'name' },
+        { label: '店主', model: 'person' },
+        { label: '联系电话', model: 'phone' },
+        { label: '服务评分', model: 'service_score' },
+        { label: '发货评分', model: 'send_score' },
+        { label: '商品评分', model: 'goods_score' },
+        {
+          label: '店铺状态',
+          model: 'status',
+          format: (i) => {
+            let data = that.statusList.find((f) => f.value == i);
+            if (data) return data.label;
+            else return '暂无';
+          },
+        },
+      ],
+      list: [],
+      total: 0,
+      // 查询
+      searchForm: {},
+      // 多选值
+      selected: [],
+      // 店铺状态列表
+      statusList: [],
+    };
+  },
+  async created() {
+    await this.searchOther();
+    await this.search();
+  },
+  methods: {
+    ...dictData({ getDict: 'query' }),
+    ...shop(['query', 'delete', 'fetch', 'update', 'create']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let condition = _.cloneDeep(this.searchForm);
+      let res = await this.query({ skip, limit, ...condition, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'list', res.data);
+        this.$set(this, 'total', res.total);
+      }
+    },
+    // 账号管理
+    async toManage({ data }) {
+      this.$router.push({ path: '/platmanag/storeAcc/detail', query: { id: data.id } });
+    },
+    // 重置
+    toClose() {
+      this.searchForm = {};
+      this.search();
+    },
+    // 多选
+    handleSelect(data) {
+      this.$set(this, `selected`, data);
+    },
+    async searchOther() {
+      let res;
+      // 类型
+      res = await this.getDict({ code: 'shop_status' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `statusList`, res.data);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .one {
+    margin: 0 0 10px 0;
+
+    span:nth-child(1) {
+      font-size: 20px;
+      font-weight: 700;
+      margin-right: 10px;
+    }
+  }
+  .two {
+    margin: 0 0 10px 0;
+  }
+  .thr {
+    margin: 0 0 10px 0;
+  }
+}
+</style>

+ 65 - 0
src/views/platmanag/storeAcc/parts/search-1.vue

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

+ 1 - 1
src/views/selfShop/goods/index.vue

@@ -25,7 +25,7 @@
     <template v-else>
       <el-row>
         <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" @click="toBack()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
         </el-col>
         <el-col :span="24">
           <data-form :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">

+ 2 - 2
src/views/selfShop/goods/spec.vue

@@ -3,7 +3,7 @@
     <template v-if="view === 'list'">
       <el-row>
         <el-col :span="24" style="padding: 10px">
-          <el-button icon="el-icon-back" size="mini" @click="toBack()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
         </el-col>
       </el-row>
       <data-search :fields="searchFields" v-model="searchInfo" @query="search">
@@ -21,7 +21,7 @@
     <template v-else>
       <el-row>
         <el-col :span="24">
-          <el-button icon="el-icon-back" size="mini" @click="toBackList()">返回</el-button>
+          <el-button type="primary" size="mini" @click="toBackList()">返回</el-button>
         </el-col>
         <el-col :span="24">
           <data-form :span="12" :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">