소스 검색

颜选美学

zhengjinyi 1 년 전
부모
커밋
65bd1e56a7

+ 2 - 2
.env.development

@@ -2,10 +2,10 @@
 ENV = 'development'
 
 # base api
-# VUE_APP_BASE_API = 'http://192.168.2.67:18015'
+VUE_APP_BASE_API = 'http://192.168.2.67:18015'
 # VUE_APP_BASE_API = 'http://localhost:18015'
 # VUE_APP_BASE_API = 'http://192.168.2.102:18015'
-VUE_APP_BASE_API = 'https://mapi-b.caimei365.com'
+# VUE_APP_BASE_API = 'https://mapi-b.caimei365.com'
 # 图片上传,索引更新等
 VUE_APP_CORE_API = 'https://core-b.caimei365.com'
 

+ 127 - 0
src/api/stricts/active/active.js

@@ -0,0 +1,127 @@
+import request from '@/utils/request'
+
+/**
+ * 颜选美学小程序商城活动列表
+ * @param {*} name,
+ * @param {*} status,
+ * @param {*} activityStatus,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductActive(params) {
+  return request({
+    url: '/HeHe/product/active',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序限时特价列表
+ * @param {*} name,
+ * @param {*} status 状态:1待上架,2已上架,3已下架,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeDiscount(params) {
+  return request({
+    url: '/HeHe/discount/activity',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序分享减免活动列表
+ * @param {*} name,
+ * @param {*} status 状态:1待上架,2已上架,3已下架,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeReduction(params) {
+  return request({
+    url: '/HeHe/reduction/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序首内部优惠
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeInsideDiscount(params) {
+  return request({
+    url: '/HeHe/inside/discount',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序商品分类管理
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductBigType(params) {
+  return request({
+    url: '/HeHe/product/bigType',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序商品管理列表
+ * @param {*} productId 商品id,
+ * @param {*} name 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} validFlag 上架状态:1上架,2下架,
+ * @param {*} includedTax 是否含税 0不含税,1含税,
+ * @param {*} invoiceType 发票类型(基于是否含税基础) 1增值税专用发票,2增值税普通发票, 3不能开票,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductList(params) {
+  return request({
+    url: '/HeHe/product/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序拼团商品列表
+ * @param {*} id 商品id,
+ * @param {*} productName 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} status 上架状态:1上架,0下架,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeCollageProduct(params) {
+  return request({
+    url: '/HeHe/collage/product',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序拼团记录列表
+ * @param {*} id 商品id,
+ * @param {*} productName 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} status 拼团状态:1拼团中,2已拼团,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeCollageRecord(params) {
+  return request({
+    url: '/HeHe/collage/record',
+    method: 'get',
+    params
+  })
+}

+ 73 - 0
src/api/stricts/mall/mall.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+/**
+ * 颜选美学小程序商城首页导航
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeHomeTypeList(params) {
+  return request({
+    url: '/HeHe/homeType/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序首页轮播图
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeHomeImage(params) {
+  return request({
+    url: '/HeHe/image/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序首页楼层
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductFloor(params) {
+  return request({
+    url: '/HeHe/product/floor',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序商品分类管理
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductBigType(params) {
+  return request({
+    url: '/HeHe/product/bigType',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序商品管理列表
+ * @param {*} productId 商品id,
+ * @param {*} name 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} validFlag 上架状态:1上架,2下架,
+ * @param {*} includedTax 是否含税 0不含税,1含税,
+ * @param {*} invoiceType 发票类型(基于是否含税基础) 1增值税专用发票,2增值税普通发票, 3不能开票,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductList(params) {
+  return request({
+    url: '/HeHe/product/list',
+    method: 'get',
+    params
+  })
+}

+ 136 - 0
src/api/stricts/order/order.js

@@ -0,0 +1,136 @@
+import request from '@/utils/request'
+
+/**
+ * 颜选美学小程序订单列表
+    orderId: '',
+    orderNo: '', //  订单编号
+    buyer: '', //  买家
+    receiver: '', //  收货人
+    productName: '', //  商品名称
+    status: '', // 订单状态 0待确认,11待收待发,12待收部发,13待收全发,21部收待发,22部收部发,23部收全发,1已收待发,32已收部发,33已收全发,4交易完成,5订单完成,6已关闭,7交易全退
+    receiptStatus: '', //  收款状态 1待收款、2部分收款、3已收款
+    collageStatus: '', //  拼团状态 1拼团中 2已拼成
+    sendOutStatus: '', //  发货状态:1待发货、2部分发货、3已发货
+    payStatus: '', //  付款状态:1待付款、2部分付款、3已付款
+    refundType: '', //  退款状态:0无退款,1有退款
+    userId: '', //  分销者
+    startTime: '',
+    endTime: ''
+ * @returns
+ */
+export function getHeHeOrderList(params) {
+  return request({
+    url: '/HeHe/order/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序限时特价列表
+ * @param {*} name,
+ * @param {*} status 状态:1待上架,2已上架,3已下架,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeDiscount(params) {
+  return request({
+    url: '/HeHe/discount/activity',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序分享减免活动列表
+ * @param {*} name,
+ * @param {*} status 状态:1待上架,2已上架,3已下架,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeReduction(params) {
+  return request({
+    url: '/HeHe/reduction/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序首内部优惠
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeInsideDiscount(params) {
+  return request({
+    url: '/HeHe/inside/discount',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序商品分类管理
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductBigType(params) {
+  return request({
+    url: '/HeHe/product/bigType',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序商品管理列表
+ * @param {*} productId 商品id,
+ * @param {*} name 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} validFlag 上架状态:1上架,2下架,
+ * @param {*} includedTax 是否含税 0不含税,1含税,
+ * @param {*} invoiceType 发票类型(基于是否含税基础) 1增值税专用发票,2增值税普通发票, 3不能开票,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeProductList(params) {
+  return request({
+    url: '/HeHe/product/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序拼团商品列表
+ * @param {*} id 商品id,
+ * @param {*} productName 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} status 上架状态:1上架,0下架,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeCollageProduct(params) {
+  return request({
+    url: '/HeHe/collage/product',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序拼团记录列表
+ * @param {*} id 商品id,
+ * @param {*} productName 商品名称,
+ * @param {*} shopName 供应商名称,
+ * @param {*} status 拼团状态:1拼团中,2已拼团,
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeCollageRecord(params) {
+  return request({
+    url: '/HeHe/collage/record',
+    method: 'get',
+    params
+  })
+}

+ 33 - 0
src/api/stricts/user/user.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+/**
+ * 颜选美学小程序用户列表
+ * @param {*} mobile 手机号
+ * @param {*} nickName 姓名
+ * @param {*} userIdentity 用户身份
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeUserList(params) {
+  return request({
+    url: '/HeHe/user/list',
+    method: 'get',
+    params
+  })
+}
+/**
+ * 颜选美学小程序分销者列表
+ * @param {*} mobile 手机号
+ * @param {*} name 姓名
+ * @param {*} pageNum,
+ * @param {*} pageSize
+ * @returns
+ */
+export function getHeHeSalesList(params) {
+  return request({
+    url: '/HeHe/sales/list',
+    method: 'get',
+    params
+  })
+}

+ 42 - 7
src/filters/index.js

@@ -36,12 +36,12 @@ export function timeAgo(time) {
  */
 export function numberFormatter(num, digits) {
   const si = [
-    { value: 1E18, symbol: 'E' },
-    { value: 1E15, symbol: 'P' },
-    { value: 1E12, symbol: 'T' },
-    { value: 1E9, symbol: 'G' },
-    { value: 1E6, symbol: 'M' },
-    { value: 1E3, symbol: 'k' }
+    { value: 1e18, symbol: 'E' },
+    { value: 1e15, symbol: 'P' },
+    { value: 1e12, symbol: 'T' },
+    { value: 1e9, symbol: 'G' },
+    { value: 1e6, symbol: 'M' },
+    { value: 1e3, symbol: 'k' }
   ]
   for (let i = 0; i < si.length; i++) {
     if (num >= si[i].value) {
@@ -56,7 +56,7 @@ export function numberFormatter(num, digits) {
  * @param {number} num
  */
 export function toThousandFilter(num) {
-  return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
+  return (+num || 0).toString().replace(/^-?\d+/g, (m) => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
 }
 
 /**
@@ -66,3 +66,38 @@ export function toThousandFilter(num) {
 export function uppercaseFirst(string) {
   return string.charAt(0).toUpperCase() + string.slice(1)
 }
+/**
+ * 处理金额
+ * @param {String} string
+ */
+export function amountfilters(value) {
+  // 处理金额
+  if (value) {
+    return Number(value).toFixed(2)
+  } else {
+    return '0.00'
+  }
+}
+/**
+ * 订单状态
+ * @param {String} string
+ */
+export function orderStatusFilter(status) {
+  const map = {
+    0: '待确认',
+    2: '交易完成',
+    4: '已关闭',
+    5: '交易全退',
+    6: '交易全退',
+    11: '待付款待发货',
+    12: '待付款部分发货',
+    13: '待付款已发货',
+    21: '部分付款待发货',
+    22: '部分付款部分发货',
+    23: '部分付款已发货',
+    31: '已付款待发货',
+    32: '已付款部分发货',
+    33: '已付款已发货'
+  }
+  return map[status]
+}

+ 78 - 148
src/views/stricts/activitys/internal-list.vue

@@ -3,10 +3,10 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>标题:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.title"
+          placeholder="标题"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
@@ -16,54 +16,70 @@
         <span>状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="启用" />
+          <el-option :value="2" label="停用" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加内部优惠 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
       <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+        <template slot-scope="scope">{{ scope.$index + 1 }}</template>
+      </el-table-column>
+      <el-table-column prop="title" label="标题" align="center" width="200">
+        <template slot-scope="{ row }">
+          {{ row.title ? row.title : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="discount" label="折扣率" align="center">
+        <template slot-scope="{ row }">
+          <span>{{ row.discount ? row.discount : '0' }}%</span>
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="status" label="小程序状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
+          <el-tag v-if="row.status === 1" type="success" size="small">已启用</el-tag>
+          <el-tag v-else type="info" size="small">已停用</el-tag>
+          <el-button
+            v-if="row.status === 2"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
             启用
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
             停用
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
-        <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
-        </template>
-      </el-table-column>
       <el-table-column prop="addTime" label="创建时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +87,27 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeInsideDiscount"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeInsideDiscount } from '@/api/stricts/active/active'
 export default {
-  name: 'GenreList',
+  name: 'InternalList',
   filters: {},
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        status: '',
+        title: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +116,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeInsideDiscount()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeInsideDiscount() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeInsideDiscount(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +134,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +147,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 109 - 148
src/views/stricts/activitys/list.vue

@@ -3,67 +3,104 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>活动名称:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.name"
+          placeholder="活动名称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>状态:</span>
+        <span>小程序状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="未开始" />
+          <el-option :value="2" label="进行中" />
+          <el-option :value="3" label="已结束" />
+        </el-select>
+      </div>
+      <div class="filter-control">
+        <span>状态:</span>
+        <el-select v-model="listQuery.activityStatus" style="width: 120px" clearable @change="getList">
+          <el-option value="" label="请选择" />
+          <el-option :value="1" label="已启用" />
+          <el-option :value="2" label="已停用" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加活动 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="name" label="活动名称" align="center" width="200">
+        <template slot-scope="{ row }">
+          {{ row.name ? row.name : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="status" label="小程序状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
+          <el-tag v-if="row.status === 1" type="success" size="small">已启用</el-tag>
+          <el-tag v-else type="info" size="small">已停用</el-tag>
+          <el-button
+            v-if="row.status === 2"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
             启用
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
             停用
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="status" label="小程序状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <el-tag v-if="row.status === 1" type="warning" size="small">未开始</el-tag>
+          <el-tag v-if="row.status === 2" type="success" size="small">进行中</el-tag>
+          <el-tag v-if="row.status === 3" type="info" size="small">已结束</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column prop="beginTime" label="开始时间" align="center">
+        <template slot-scope="{ row }">
+          {{ row.beginTime ? row.beginTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="endTime" label="结束时间" align="center">
+        <template slot-scope="{ row }">
+          {{ row.endTime ? row.endTime : '---' }}
         </template>
       </el-table-column>
       <el-table-column prop="addTime" label="创建时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            商品列表
+          </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +108,37 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeProductActive"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeProductActive } from '@/api/stricts/active/active'
 export default {
-  name: 'GenreList',
-  filters: {},
+  name: 'ActivitysList',
+  filters: {
+    activityStatusFilters(value) {
+      const map = {
+        1: '未开始',
+        2: '进行中',
+        3: '已结束'
+      }
+      return map[value]
+    }
+  },
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        status: '',
+        name: '',
+        activityStatus: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +147,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeProductActive()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeProductActive() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeProductActive(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +165,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +178,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 107 - 148
src/views/stricts/activitys/shares.vue

@@ -3,10 +3,10 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>活动名称:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.name"
+          placeholder="活动名称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
@@ -16,54 +16,90 @@
         <span>状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="待上架" />
+          <el-option :value="2" label="已上架" />
+          <el-option :value="3" label="已下架" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加减免活动 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
       <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+        <template slot-scope="scope">{{ scope.$index + 1 }}</template>
+      </el-table-column>
+      <el-table-column prop="name" label="活动名称" align="center" width="200">
+        <template slot-scope="{ row }">
+          {{ row.name ? row.name : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="name" label="减免条件" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
+          <span>满 {{ row.touchPrice | amountfilters }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="name" label="减免金额" align="center" width="200">
+        <template slot-scope="{ row }">
+          {{ row.reducedAmount | amountfilters }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="status" label="小程序状态" align="center" width="200">
+        <template slot-scope="{ row }">
+          <el-tag v-if="row.status === 1" type="warning" size="small">待上架</el-tag>
+          <el-tag v-if="row.status === 2" type="success" size="small">已上架</el-tag>
+          <el-tag v-if="row.status === 3" type="info" size="small">已下架</el-tag>
+          <el-button
+            v-if="row.status === 3"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            上架
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            下架
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="startTime" label="上架时间" align="center">
+        <template slot-scope="{ row }">
+          {{ row.startTime ? row.startTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="endTime" label="下架时间" align="center">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          {{ row.endTime ? row.endTime : '---' }}
         </template>
       </el-table-column>
       <el-table-column prop="addTime" label="创建时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center" width="280">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            商品列表
+          </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +107,36 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeReduction"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeReduction } from '@/api/stricts/active/active'
 export default {
-  name: 'GenreList',
-  filters: {},
+  name: 'ActivitysSharesList',
+  filters: {
+    activityStatusFilters(value) {
+      const map = {
+        1: '未开始',
+        2: '进行中',
+        3: '已结束'
+      }
+      return map[value]
+    }
+  },
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        status: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +145,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeReduction()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeReduction() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeReduction(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +163,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +176,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 97 - 148
src/views/stricts/activitys/specials.vue

@@ -3,10 +3,10 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>活动名称:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.name"
+          placeholder="活动名称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
@@ -16,54 +16,80 @@
         <span>状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="待上架" />
+          <el-option :value="2" label="已上架" />
+          <el-option :value="3" label="已下架" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加限时活动 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
       <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+        <template slot-scope="scope">{{ scope.$index + 1 }}</template>
+      </el-table-column>
+      <el-table-column prop="name" label="活动名称" align="center" width="200">
+        <template slot-scope="{ row }">
+          {{ row.name ? row.name : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="status" label="小程序状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
+          <el-tag v-if="row.status === 1" type="warning" size="small">待上架</el-tag>
+          <el-tag v-if="row.status === 2" type="success" size="small">已上架</el-tag>
+          <el-tag v-if="row.status === 3" type="info" size="small">已下架</el-tag>
+          <el-button
+            v-if="row.status === 3"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            上架
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            下架
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="onlineTime" label="上架时间" align="center">
+        <template slot-scope="{ row }">
+          {{ row.onlineTime ? row.onlineTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="offlineTime" label="下架时间" align="center">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          {{ row.offlineTime ? row.offlineTime : '---' }}
         </template>
       </el-table-column>
       <el-table-column prop="addTime" label="创建时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            商品列表
+          </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +97,36 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeDiscount"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeDiscount } from '@/api/stricts/active/active'
 export default {
-  name: 'GenreList',
-  filters: {},
+  name: 'ActivitysSpecialsList',
+  filters: {
+    activityStatusFilters(value) {
+      const map = {
+        1: '未开始',
+        2: '进行中',
+        3: '已结束'
+      }
+      return map[value]
+    }
+  },
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        status: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +135,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeDiscount()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeDiscount() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeDiscount(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +153,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +166,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 90 - 206
src/views/stricts/banners/list.vue

@@ -3,117 +3,92 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>ID:</span>
+        <span>主题:</span>
         <el-input
-          v-model="listQuery.reportId"
-          style="width: 120px"
-          placeholder="ID"
+          v-model="listQuery.topic"
+          placeholder="主题"
           clearable
-          @input="(e) => (listQuery.reportId = checkedInput(e))"
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>商品名称:</span>
-        <el-input
-          v-model="listQuery.productName"
-          placeholder="商品名称"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>机构名称:</span>
-        <el-input
-          v-model="listQuery.clubName"
-          placeholder="机构名称"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>报备人:</span>
-        <el-input
-          v-model="listQuery.reportName"
-          style="width: 120px"
-          placeholder="报备人"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>审核状态:</span>
+        <span>状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="待审核" />
-          <el-option :value="2" label="审核通过" />
-          <el-option :value="3" label="审核未通过" />
+          <el-option :value="1" label="启用" />
+          <el-option :value="2" label="停用" />
         </el-select>
       </div>
-      <div class="filter-control">
-        <span>提交时间:</span>
-        <el-date-picker
-          v-model="time"
-          type="daterange"
-          unlink-panels
-          value-format="yyyy-MM-dd"
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :picker-options="pickerOptions"
-          @change="getList"
-        />
-      </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
+        <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加轮播图 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="650">
-      <el-table-column prop="reportId" label="ID" align="center" width="50" />
-      <el-table-column prop="mainImage" label="商品图片" align="center" width="100">
-        <template v-if="row.mainImage" slot-scope="{ row }">
-          <el-popover placement="top-start" title="" width="180" trigger="hover">
-            <img :src="row.mainImage" alt="" style="width: 100px; height: 100px" />
-            <img slot="reference" :src="row.mainImage" alt="" style="width: 50px; height: 50px" />
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="topic" label="主题" align="center">
+        <template slot-scope="{ row }">
+          {{ row.topic ? row.topic : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="image" label="轮播图" align="center">
+        <template v-if="row.image" slot-scope="{ row }">
+          <el-popover placement="top-start" title="" width="400" trigger="hover">
+            <img :src="row.image" alt="" style="width: 400px; height: 120px" />
+            <img slot="reference" :src="row.image" alt="" style="width: 120px; height: 40px" />
           </el-popover>
         </template>
+        <template v-else>
+          <span>---</span>
+        </template>
       </el-table-column>
-      <el-table-column prop="productName" label="商品名称" align="center" width="200" />
-      <el-table-column prop="clubName" label="机构名称" align="center" width="180" />
-      <el-table-column prop="reportName" label="报备人" align="center" width="120" />
-      <el-table-column prop="reportText" label="报备事由" align="center" />
-      <el-table-column prop="addTime" label="创建时间" align="center" width="100">
+      <el-table-column prop="status" label="状态" align="center" width="200">
         <template slot-scope="{ row }">
-          {{ row.addTime ? row.addTime : '---' }}
+          <el-tag v-if="row.status === 2" type="info" size="small">已停用</el-tag>
+          <el-tag v-else type="success" size="small">已启用</el-tag>
+          <el-button
+            v-if="row.status === 2"
+            type="primary"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            启用
+          </el-button>
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            停用
+          </el-button>
         </template>
       </el-table-column>
-      <el-table-column prop="status" label="审核状态" align="center" width="100">
+      <el-table-column prop="sort" label="排序" width="80" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 1" type="warning" size="small">待审核</el-tag>
-          <el-tag v-else-if="row.status === 2" type="success" size="small">已审核</el-tag>
-          <el-tag v-else type="danger" size="small">审核未通过</el-tag>
+          <el-input v-model="row.sort" maxlength="4" minlength="1" @blur="consultSort(row)" />
         </template>
       </el-table-column>
-      <el-table-column prop="auditName" label="审核人" align="center" width="120" />
-      <el-table-column prop="auditTime" label="审核时间" align="center" width="100">
+      <el-table-column prop="addTime" label="添加时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.auditTime ? row.auditTime : '---' }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" width="220">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleExamine(row)"> 审核 </el-button>
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(row)"> 查看 </el-button>
-          <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -121,70 +96,27 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="getReportList"
+      @pagination="getHeHeHomeImage"
     />
-    <el-dialog title="审核" :visible.sync="dialogFormVisible" width="440px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right">
-        <el-form-item label="状态:" prop="status">
-          <el-select v-model="form.status" placeholder="请选择">
-            <el-option label="请选择" value="" />
-            <el-option label="审核通过" :value="2" />
-            <el-option label="审核不通过" :value="3" />
-          </el-select>
-        </el-form-item>
-        <el-form-item prop="auditText">
-          <el-input
-            v-model="form.auditText"
-            type="textarea"
-            placeholder="请填写备注,200字以内"
-            maxlength="200"
-            :autosize="{ minRows: 5, maxRows: 5 }"
-          />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleReportCount">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getReportList, reportCount, deleteReport } from '@/api/user/consult/consult'
-import pickerOptions from '@/utils/time-picker.js'
-const defaultListQuery = {
-  reportId: '', // 报备Id
-  productName: '', // 咨询商品名称
-  clubName: '', // 机构名称
-  reportName: '', // 报备人
-  status: '', // 状态 1.已审核 2.待审核 3.审核未通过
-  startAddTime: '', // 开始时间
-  endAddTime: '', // 结束时间
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeHomeImage } from '@/api/stricts/mall/mall'
 export default {
-  name: 'ReportList',
+  name: 'BannersList',
   filters: {},
   data() {
     return {
       isLoading: true,
-      pickerOptions,
-      time: '',
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        reportId: '',
-        status: '',
-        auditText: ''
+      listQuery: {
+        mobile: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        status: [{ required: true, message: '请选择审核状态', trigger: 'blur' }],
-        auditText: [{ required: true, message: '请填写备注', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -195,23 +127,15 @@ export default {
   methods: {
     // 获取行为记录列表
     getList() {
-      this.listQuery.pageNum = 1
       this.list = []
-      if (this.time && this.time.length > 0) {
-        this.listQuery.startAddTime = this.time[0]
-        this.listQuery.endAddTime = this.time[1]
-      } else {
-        this.listQuery.startAddTime = ''
-        this.listQuery.endAddTime = ''
-      }
-      this.getReportList()
+      this.listQuery.pageNum = 1
+      this.getHeHeHomeImage()
     },
-
-    // 获取关键词列表
-    async getReportList() {
+    // 获取首页导航列表
+    async getHeHeHomeImage() {
       try {
         this.isLoading = true
-        const res = await getReportList(this.listQuery)
+        const res = await getHeHeHomeImage(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -219,74 +143,34 @@ export default {
         console.log(error)
       }
     },
-    // 审核报备
-    handleExamine(row) {
-      this.form.reportId = row.reportId
-      this.dialogFormVisible = true
-    },
-    // 确定审核
-    async handleReportCount() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.reportCount(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 调用审核报备
-    async reportCount(params) {
-      await reportCount(params)
-      this.$message.success('审核成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该报备吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteReport(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除报备
-    async deleteReport(row) {
+    // 菜单排序
+    async consultSort(row) {
       try {
-        await deleteReport(row.reportId)
-        this.$message.success('操作成功')
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
       }
-    },
-    // 机构跳转
-    handleClubHrefLink(row) {
-      return (
-        process.env.VUE_APP_ADMIN_URL +
-        `/a/user/jumpLink/toOldAdmin?type=1&clubId=${row.clubId}&clubName=${row.corporateName}`
-      )
-    },
-    // 查看详情
-    handleRecordDetail(row) {
-      this.$router.push({
-        path: '/user/consult/detail',
-        query: { reportId: row.reportId }
-      })
-    },
-    checkedInput(event) {
-      const pattern = /[^0-9.]/g
-      return event.replace(pattern, '')
     }
   }
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 80 - 149
src/views/stricts/categorys/list.vue

@@ -3,10 +3,10 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类名称:</span>
+        <span>一级分类名称:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类名称"
+          v-model="listQuery.name"
+          placeholder="一级分类名称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
@@ -14,56 +14,73 @@
       </div>
       <div class="filter-control">
         <span>状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-select v-model="listQuery.crmValidFlag" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="已上架" />
+          <el-option :value="0" label="已下架" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
         <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加一级分类 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="name" label="分类名称" align="center" width="200">
+        <template slot-scope="{ row }">
+          {{ row.name ? row.name : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="crmValidFlag" label="状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
+          <el-tag v-if="row.crmValidFlag === 1" type="success" size="small">已上架</el-tag>
+          <el-tag v-else type="info" size="small">已下架</el-tag>
+          <el-button
+            v-if="row.crmValidFlag === 0"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            上架
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            下架
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="sortIndex" label="排序" width="100" align="center">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <el-input v-model="row.sortIndex" maxlength="4" minlength="1" @blur="consultSort(row)" />
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column prop="addTime" label="添加时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            二级分类
+          </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +88,27 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeProductBigType"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeProductBigType } from '@/api/stricts/mall/mall'
 export default {
-  name: 'GenreList',
+  name: 'CategorysList',
   filters: {},
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        crmValidFlag: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +117,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeProductBigType()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeProductBigType() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeProductBigType(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +135,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +148,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 81 - 159
src/views/stricts/floors/list.vue

@@ -3,67 +3,75 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
-        <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
-          <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
-        </el-select>
-      </div>
-      <div class="filter-control">
-        <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
         <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加楼层 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="id" label="ID" align="center" width="80">
+        <template slot-scope="{ row }">
+          {{ row.id ? row.id : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="title" label="楼层名称" align="center">
+        <template slot-scope="{ row }">
+          {{ row.title ? row.title : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="description" label="楼层描述" align="center">
+        <template slot-scope="{ row }">
+          {{ row.description ? row.description : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="status" label="状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
+          <el-tag v-if="row.status === 2" type="info" size="small">已停用</el-tag>
           <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
+          <el-button
+            v-if="row.status === 2"
+            type="primary"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
             启用
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
             停用
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="sort" label="排序" width="80" align="center">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <el-input v-model="row.sort" maxlength="4" minlength="1" @blur="consultSort(row)" />
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column prop="createDate" label="创建时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.createDate ? row.createDate : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center" width="400">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            内容
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +79,27 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeProductFloor"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeProductFloor } from '@/api/stricts/mall/mall'
 export default {
-  name: 'GenreList',
+  name: 'FloorsList',
   filters: {},
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        mobile: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +108,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeProductFloor()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeProductFloor() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeProductFloor(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +126,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +139,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 123 - 153
src/views/stricts/groups/groups-goods-list.vue

@@ -3,67 +3,110 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>商品ID:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.id"
+          placeholder="商品ID"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>状态:</span>
+        <span>商品名称:</span>
+        <el-input
+          v-model="listQuery.productName"
+          placeholder="商品名称"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>供应商名称:</span>
+        <el-input
+          v-model="listQuery.shopName"
+          placeholder="供应商名称"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>商品状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="上架" />
+          <el-option :value="0" label="下架" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 上线商品 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="id" label="商品Id" align="center" width="80" />
+      <el-table-column prop="productImage" label="商品图片" align="center" width="120">
+        <template v-if="row.productImage" slot-scope="{ row }">
+          <el-popover placement="top-start" title="" width="180" trigger="hover">
+            <img :src="row.productImage" alt="" style="width: 150px; height: 150px" />
+            <img slot="reference" :src="row.productImage" alt="" style="width: 80px; height: 80px" />
+          </el-popover>
+        </template>
+        <template v-else>
+          <span>---</span>
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="productName" label="商品名称" align="center" />
+      <el-table-column prop="shopName" label="供应商名称" align="center" />
+      <el-table-column prop="price" label="拼团价格" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
-          </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
-          </el-button>
+          {{ row.price | amountfilters }}
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="memberNum" label="拼团人数" align="center" />
+      <el-table-column prop="status" label="商品状态" align="center">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <el-tag v-if="row.status === 0" type="info" size="small">已下架</el-tag>
+          <el-tag v-if="row.status === 1" type="success" size="small">已上架</el-tag>
+          <el-button
+            v-if="row.status === 0"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            上架
+          </el-button>
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            下架
+          </el-button>
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column prop="addTime" label="添加时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +114,40 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeCollageProduct"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeCollageProduct } from '@/api/stricts/active/active'
 export default {
-  name: 'GenreList',
-  filters: {},
+  name: 'GroupsGoodsList',
+  filters: {
+    invoiceFilters(value) {
+      const map = {
+        1: '普通发票',
+        2: '增值税发票',
+        3: '不开发票'
+      }
+      return map[value]
+    }
+  },
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        productId: '', // 商品id,
+        name: '', // 商品名称,
+        shopName: '', // / 供应商名称,
+        validFlag: '', // 上架状态:1上架,2下架,
+        includedTax: '', // 是否含税 0不含税,1含税,
+        invoiceType: '', // 发票类型(基于是否含税基础) 1增值税专用发票,2增值税普通发票, 3不能开票,
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +156,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeCollageProduct()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeCollageProduct() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeCollageProduct(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +174,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +187,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 110 - 151
src/views/stricts/groups/list.vue

@@ -3,10 +3,24 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>ID:</span>
+        <el-input v-model="listQuery.id" placeholder="ID" clearable @keyup.enter.native="getList" @clear="getList" />
+      </div>
+      <div class="filter-control">
+        <span>商品名称:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.productName"
+          placeholder="商品名称"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>供应商名称:</span>
+        <el-input
+          v-model="listQuery.shopName"
+          placeholder="供应商名称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
@@ -16,54 +30,83 @@
         <span>状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option :value="1" label="启用" />
+          <el-option :value="2" label="停用" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="id" label="ID" align="center" width="50" />
+      <el-table-column prop="productName" label="商品名称" align="center" />
+      <el-table-column prop="shopName" label="供应商名称" align="center">
+        <template slot-scope="{ row }">
+          {{ row.shopName ? row.shopName : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="price" label="拼团价格" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
-          </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
-          </el-button>
+          {{ row.price | amountfilters }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="memberNum" label="拼团人数" align="center" width="50" />
+      <el-table-column prop="name" label="已拼人数" align="center" width="50">
+        <template slot-scope="{ row }">
+          <span v-if="row.status === 2">{{ row.memberNum }}</span>
+          <span v-else>{{ row.orderIdList.length }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="orderIdList" label="关联订单" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <template v-if="row.orderIdList">
+            <p v-for="item in row.orderIdList" :key="item">
+              {{ item ? item : '---' }}
+            </p>
+          </template>
+          <p v-else>---</p>
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column prop="status" label="拼团状态" align="center" width="100">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          <el-tag v-if="row.status === 1" type="warning" size="small">拼团中</el-tag>
+          <el-tag v-if="row.status === 2" type="success" size="small">已拼成</el-tag>
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column prop="startTime" label="开始时间" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          {{ row.startTime ? row.startTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="endTime" label="结束时间" align="center" width="100">
+        <template slot-scope="{ row }">
+          {{ row.endTime ? row.endTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="completeTime" label="成团时间" align="center" width="100">
+        <template slot-scope="{ row }">
+          {{ row.completeTime ? row.completeTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" align="center">
+        <template slot-scope="{ row }">
+          <el-button
+            v-if="row.status === 1"
+            type="primary"
+            size="mini"
+            style="margin: 2px"
+            @click="handleRecordDetail(3, row)"
+          >
+            一键成团
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            拼团成员
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +114,29 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeCollageRecord"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeCollageRecord } from '@/api/stricts/active/active'
 export default {
-  name: 'GenreList',
+  name: 'GroupsList',
   filters: {},
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        id: '',
+        productName: '',
+        status: '',
+        shopName: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +145,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeCollageRecord()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeCollageRecord() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeCollageRecord(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +163,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +176,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 82 - 162
src/views/stricts/menus/list.vue

@@ -3,67 +3,73 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
-        <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
-          <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
-        </el-select>
-      </div>
-      <div class="filter-control">
-        <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
         <el-button type="primary" @click="getList"> 一键排序 </el-button>
+        <el-button type="primary" @click="getList"> 添加菜单 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="name" label="菜单名称" align="center" width="150">
+        <template slot-scope="{ row }">
+          {{ row.name ? row.name : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="icon" label="图标" align="center" width="80">
+        <template v-if="row.icon" slot-scope="{ row }">
+          <img :src="row.icon" alt="" style="width: 60px; height: 60px" />
+        </template>
+        <template v-else>
+          <span>---</span>
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="status" label="状态" align="center" width="200">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
+          <el-tag v-if="row.status === 2" type="info" size="small">已下架</el-tag>
+          <el-tag v-else type="success" size="small">已上架</el-tag>
+          <el-button
+            v-if="row.status === 2"
+            type="primary"
+            style="margin: 4px"
+            size="mini"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            上架
           </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            下架
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="sort" label="排序" width="80" align="center">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <el-input v-model="row.sort" maxlength="4" minlength="1" @blur="consultSort(row)" />
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column prop="addTime" label="添加时间" align="center">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            商品列表
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +77,27 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeHomeTypeList"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeHomeTypeList } from '@/api/stricts/mall/mall'
 export default {
-  name: 'GenreList',
+  name: 'MenusList',
   filters: {},
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        mobile: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +106,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeHomeTypeList()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeHomeTypeList() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeHomeTypeList(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +124,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +137,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 214 - 0
src/views/stricts/order/components/order-search.vue

@@ -0,0 +1,214 @@
+<template>
+  <div class="filter-container">
+    <div class="filter-control">
+      <span>订单ID:</span>
+      <el-input
+        v-model="listQuery.orderId"
+        placeholder="订单ID"
+        clearable
+        @keyup.enter.native="getList"
+        @clear="getList"
+      />
+    </div>
+    <div class="filter-control">
+      <span>订单编号:</span>
+      <el-input
+        v-model="listQuery.orderId"
+        placeholder="订单编号"
+        clearable
+        @keyup.enter.native="getList"
+        @clear="getList"
+      />
+    </div>
+    <div class="filter-control">
+      <span>商品名称:</span>
+      <el-input
+        v-model="listQuery.orderId"
+        placeholder="商品名称"
+        clearable
+        @keyup.enter.native="getList"
+        @clear="getList"
+      />
+    </div>
+    <div class="filter-control">
+      <span>买家:</span>
+      <el-input
+        v-model="listQuery.orderId"
+        placeholder="买家"
+        clearable
+        @keyup.enter.native="getList"
+        @clear="getList"
+      />
+    </div>
+    <div class="filter-control">
+      <span>收货人:</span>
+      <el-input
+        v-model="listQuery.orderId"
+        placeholder="收货人"
+        clearable
+        @keyup.enter.native="getList"
+        @clear="getList"
+      />
+    </div>
+    <div class="filter-control">
+      <span>订单类型:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="独立订单" />
+        <el-option :value="2" label="拼团订单" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>拼团状态:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="拼团中" />
+        <el-option :value="2" label="已拼成" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>订单状态:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="待确认" />
+        <el-option :value="2" label="交易中" />
+        <el-option :value="2" label="交易完成" />
+        <el-option :value="2" label="订单完成" />
+        <el-option :value="2" label="已关闭" />
+        <el-option :value="2" label="交易全退" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>收款状态:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="待收款" />
+        <el-option :value="2" label="部分收款" />
+        <el-option :value="2" label="已收款" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>发货状态:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="待发货" />
+        <el-option :value="2" label="部分发货" />
+        <el-option :value="2" label="已发货" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>付款状态:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="待付款" />
+        <el-option :value="2" label="部分付款" />
+        <el-option :value="2" label="已付款" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>退款状态:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="无退款" />
+        <el-option :value="2" label="部分退款" />
+        <el-option :value="2" label="已退款" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>待审核退款:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="有" />
+        <el-option :value="2" label="无" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>分销者:</span>
+      <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <el-option value="" label="所有" />
+        <el-option :value="1" label="有" />
+        <el-option :value="2" label="无" />
+      </el-select>
+    </div>
+    <div class="filter-control">
+      <span>下单时间:</span>
+      <el-date-picker
+        v-model="time"
+        type="daterange"
+        unlink-panels
+        value-format="yyyy-MM-dd"
+        range-separator="至"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期"
+        :picker-options="pickerOptions"
+        @change="handleDatePick"
+      />
+    </div>
+    <div class="filter-control">
+      <el-button type="primary" @click="getList"> 查询 </el-button>
+      <el-button type="primary" @click="getList"> 订单导出 </el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import pickerOptions from '@/utils/time-picker.js'
+export default {
+  name: 'OrderSearch',
+  filters: {},
+  data() {
+    return {
+      time: '',
+      pickerOptions,
+      listQuery: {
+        orderId: '',
+        orderNo: '', //  订单编号
+        buyer: '', //  买家
+        receiver: '', //  收货人
+        productName: '', //  商品名称
+        collageFlag: '', // 0独立订单 1拼团订单
+        status: '', // 订单状态 0待确认,11待收待发,12待收部发,13待收全发,21部收待发,22部收部发,23部收全发,1已收待发,32已收部发,33已收全发,4交易完成,5订单完成,6已关闭,7交易全退
+        receiptStatus: '', //  收款状态 1待收款、2部分收款、3已收款
+        collageStatus: '', //  拼团状态 1拼团中 2已拼成
+        sendOutStatus: '', //  发货状态:1待发货、2部分发货、3已发货
+        payStatus: '', //  付款状态:1待付款、2部分付款、3已付款
+        refundType: '', //  退款状态:0无退款,1有退款
+        userId: '', //  分销者
+        startTime: '',
+        endTime: ''
+      }
+    }
+  },
+  computed: {},
+  created() {},
+  methods: {
+    // 选择时间
+    handleDatePick() {
+      if (this.time && this.time.length > 0) {
+        this.listQuery.startTime = this.time[0]
+        this.listQuery.endTime = this.time[1]
+      } else {
+        this.listQuery.startTime = ''
+        this.listQuery.endTime = ''
+      }
+      this.$emit('confirm', this.listQuery)
+    },
+    getList() {
+      this.$emit('confirm', this.listQuery)
+    },
+    checkedInput(event, type) {
+      let pattern = ''
+      switch (type) {
+        case 1:
+          pattern = /[^\d]/g
+          break
+        case 2:
+          pattern = /[^u4E00-u9FA5|d|a-zA-Z|rns,.?!,。?!…—&$=()-+/*{}[]]|s/g
+          break
+      }
+      return event.replace(pattern, '')
+    }
+  }
+}
+</script>
+<style lang="scss" scoped></style>

+ 123 - 169
src/views/stricts/order/list.vue

@@ -1,69 +1,88 @@
 <template>
   <div class="app-container">
     <!-- 顶部操作区域 -->
-    <div class="filter-container">
-      <div class="filter-control">
-        <span>类别名称:</span>
-        <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
-          <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
-        </el-select>
-      </div>
-      <div class="filter-control">
-        <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
-      </div>
-    </div>
+    <order-search v-if="!isLoading" ref="orderSearch" @confirm="handleGetList" />
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="orderId" label="订单ID" align="center" width="100" />
+      <el-table-column prop="collageFlag" label="订单类型" align="center" width="100">
+        <template slot-scope="{ row }">
+          <el-tag v-if="row.collageFlag === 0" type="primary" size="small">独立订单</el-tag>
+          <el-tag v-if="row.collageFlag === 1" type="success" size="small">拼团订单</el-tag>
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="orderNo" label="订单编号" align="center" />
+      <el-table-column prop="buyer" label="买家" align="center" />
+      <el-table-column prop="receiver" label="收货人" align="center" />
+      <el-table-column label="订单状态" align="center" prop="status" width="120">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
-          </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
-          </el-button>
+          <template v-if="['11'].indexOf(row.status) >= 0">
+            <el-tag type="success" size="small">交易中</el-tag>
+          </template>
+          <template v-else>
+            <el-tag :type="row.status * 1 === 6 ? 'info' : ''" size="small">{{
+              row.status | orderStatusFilter
+            }}</el-tag>
+          </template>
+        </template>
+      </el-table-column>
+      <el-table-column label="收款状态" align="center" prop="receiptStatus" width="120">
+        <template slot-scope="{ row }">
+          <el-tag v-if="row.receiptStatus * 1 === 1" type="danger" size="small">待收款</el-tag>
+          <el-tag v-if="row.receiptStatus * 1 === 2" type="warning" size="small">部分收款</el-tag>
+          <el-tag v-if="row.receiptStatus * 1 === 3" type="success" size="small">已收款</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column prop="collageStatus" label="拼团状态" align="center" width="100">
+        <template slot-scope="{ row }">
+          <el-tag v-if="row.collageStatus === 1" type="warning" size="small">拼团中</el-tag>
+          <el-tag v-else-if="row.collageStatus === 2" type="success" size="small">已拼成</el-tag>
+          <span v-else>--</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="付款状态" align="center" prop="receiptStatus" width="120">
+        <template slot-scope="{ row }">
+          <el-tag v-if="row.payStatus * 1 === 1" type="danger" size="small">待付款</el-tag>
+          <el-tag v-if="row.payStatus * 1 === 2" type="warning" size="small">部分付款</el-tag>
+          <el-tag v-if="row.payStatus * 1 === 3" type="success" size="small">已付款</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="发货状态" align="center" prop="sendOutStatus" width="120">
+        <template slot-scope="{ row }">
+          <el-tag v-if="row.sendOutStatus * 1 === 1" type="danger" size="small">待发货</el-tag>
+          <el-tag v-if="row.sendOutStatus * 1 === 2" type="warning" size="small">部分发货</el-tag>
+          <el-tag v-if="row.sendOutStatus * 1 === 3" type="success" size="small">已发货</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column label="退款状态" align="center" prop="refundType" width="120">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <el-tag v-if="row.refundType * 1 === 1" type="info" size="small">部分退款</el-tag>
+          <el-tag v-else-if="row.refundType * 1 === 2" type="info" size="small">全部退款</el-tag>
+          <el-tag v-else type="info" size="small">无退款</el-tag>
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column label="退款状态" align="center" prop="refundType" width="120">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          <el-tag v-if="row.refundType * 1 === 0" type="info" size="small">无退款</el-tag>
+          <el-tag v-else type="info" size="small">有退款</el-tag>
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column label="订单金额" align="center" prop="payTotalFee">
+        <template slot-scope="{ row }"> ¥{{ row.payTotalFee | amountfilters }} </template>
+      </el-table-column>
+      <el-table-column prop="orderTime" label="下单时间" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          {{ row.orderTime ? row.orderTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" align="center">
+        <template slot-scope="{ row }">
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            查看详情
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +90,42 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeOrderList"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeOrderList } from '@/api/stricts/order/order'
+import OrderSearch from './components/order-search'
 export default {
-  name: 'GenreList',
+  name: 'GroupsList',
+  components: { OrderSearch },
   filters: {},
   data() {
     return {
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        orderId: '',
+        orderNo: '', //  订单编号
+        buyer: '', //  买家
+        receiver: '', //  收货人
+        productName: '', //  商品名称
+        collageFlag: '', // 0独立订单 1拼团订单
+        status: '', // 订单状态 0待确认,11待收待发,12待收部发,13待收全发,21部收待发,22部收部发,23部收全发,1已收待发,32已收部发,33已收全发,4交易完成,5订单完成,6已关闭,7交易全退
+        receiptStatus: '', //  收款状态 1待收款、2部分收款、3已收款
+        collageStatus: '', //  拼团状态 1拼团中 2已拼成
+        sendOutStatus: '', //  发货状态:1待发货、2部分发货、3已发货
+        payStatus: '', //  付款状态:1待付款、2部分付款、3已付款
+        refundType: '', //  退款状态:0无退款,1有退款
+        userId: '', //  分销者
+        startTime: '',
+        endTime: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +134,23 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 条件查询
+    handleGetList(data) {
+      this.listQuery = { ...this.listQuery, ...data }
+      console.log('listQuery', this.listQuery)
+      this.getList()
+    },
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeOrderList()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeOrderList() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeOrderList(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +158,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +171,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 150 - 153
src/views/stricts/order/refund-list.vue

@@ -3,67 +3,145 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>类别名称:</span>
+        <span>退款编号:</span>
         <el-input
-          v-model="listQuery.className"
-          placeholder="类别名称"
+          v-model="listQuery.productName"
+          placeholder="退款编号"
           clearable
+          style="width: 180px"
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>状态:</span>
+        <span>订单ID:</span>
+        <el-input
+          v-model="listQuery.shopName"
+          placeholder="订单ID"
+          clearable
+          style="width: 120px"
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>订单编号:</span>
+        <el-input
+          v-model="listQuery.shopName"
+          placeholder="订单编号"
+          clearable
+          style="width: 180px"
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>买家:</span>
+        <el-input
+          v-model="listQuery.shopName"
+          placeholder="买家"
+          clearable
+          style="width: 120px"
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>退款审核状态:</span>
         <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
-          <el-option value="" label="请选择" />
-          <el-option :value="1" label="启用" />
-          <el-option :value="2" label="停用" />
+          <el-option value="" label="所有" />
+          <el-option :value="1" label="待审核" />
+          <el-option :value="2" label="审核通过" />
+          <el-option :value="3" label="审核不通过" />
         </el-select>
       </div>
+      <div class="filter-control">
+        <span>申请时间:</span>
+        <el-date-picker
+          v-model="time"
+          type="daterange"
+          unlink-panels
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          :picker-options="pickerOptions"
+          @change="handleDatePick"
+        />
+      </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="dialogFormVisible = true"> 添加类别 </el-button>
-        <el-button type="primary" @click="getList"> 一键排序 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" :height="tableHeight">
-      <el-table-column label="序号" align="center" width="50">
-        <template slot-scope="scope">
-          {{ scope.$index + 1 }}
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="id" label="ID" align="center" width="50" />
+      <el-table-column prop="productName" label="商品名称" align="center" />
+      <el-table-column prop="shopName" label="供应商名称" align="center">
+        <template slot-scope="{ row }">
+          {{ row.shopName ? row.shopName : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="className" label="咨询类别名称" align="center" />
-      <el-table-column prop="status" label="状态" align="center">
+      <el-table-column prop="price" label="拼团价格" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 2" type="danger" size="small">已停用</el-tag>
-          <el-tag v-else type="success" size="small">已启用</el-tag>
-          <el-button v-if="row.status === 2" type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            启用
-          </el-button>
-          <el-button v-else type="primary" size="mini" @click="handleShangeStatus(row.id, row.status)">
-            停用
-          </el-button>
+          {{ row.price | amountfilters }}
         </template>
       </el-table-column>
-      <el-table-column label="排序" width="80" align="center">
+      <el-table-column prop="memberNum" label="拼团人数" align="center" width="50" />
+      <el-table-column prop="name" label="已拼人数" align="center" width="50">
         <template slot-scope="{ row }">
-          <el-input v-model="row.sortNumber" maxlength="4" minlength="1" @blur="consultSort(row)" />
+          <span v-if="row.status === 2">{{ row.memberNum }}</span>
+          <span v-else>{{ row.orderIdList.length }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="创建时间" align="center">
+      <el-table-column prop="orderIdList" label="关联订单" align="center" width="100">
         <template slot-scope="{ row }">
-          {{ row.createdTime | parseTime }}
+          <template v-if="row.orderIdList">
+            <p v-for="item in row.orderIdList" :key="item">
+              {{ item ? item : '---' }}
+            </p>
+          </template>
+          <p v-else>---</p>
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="200">
+      <el-table-column prop="status" label="小程序状态" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleEdit(row)"> 编辑 </el-button>
-          <!-- <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button> -->
+          <el-tag v-if="row.status === 1" type="warning" size="small">拼团中</el-tag>
+          <el-tag v-if="row.status === 2" type="success" size="small">已拼成</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column prop="startTime" label="开始时间" align="center" width="100">
+        <template slot-scope="{ row }">
+          {{ row.startTime ? row.startTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="endTime" label="结束时间" align="center" width="100">
+        <template slot-scope="{ row }">
+          {{ row.endTime ? row.endTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="completeTime" label="成团时间" align="center" width="100">
+        <template slot-scope="{ row }">
+          {{ row.completeTime ? row.completeTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" align="center">
+        <template slot-scope="{ row }">
+          <el-button
+            v-if="row.status === 1"
+            type="primary"
+            size="mini"
+            style="margin: 2px"
+            @click="handleRecordDetail(3, row)"
+          >
+            一键成团
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            拼团成员
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -71,52 +149,32 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="fetchRecordList"
+      @pagination="getHeHeCollageRecord"
     />
-    <!-- 添加咨询类别 -->
-    <el-dialog title="咨询类别添加" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="120px">
-        <el-form-item label="咨询类别名称:" prop="className">
-          <el-input v-model="form.className" type="text" placeholder="咨询类别名称" maxlength="50" />
-        </el-form-item>
-        <el-form-item label="咨询类别排序:" prop="sortNumber">
-          <el-input v-model="form.sortNumber" type="text" placeholder="咨询类别排序" maxlength="10" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleSaveConsult">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getConsultList, saveConsult, deleteConsult, consultSort } from '@/api/user/consult/consult'
-const defaultListQuery = {
-  className: '', // 类别名称
-  status: '', // 状态 1启用,2停用,默认1
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeCollageRecord } from '@/api/stricts/active/active'
+import pickerOptions from '@/utils/time-picker.js'
 export default {
-  name: 'GenreList',
+  name: 'GroupsList',
   filters: {},
   data() {
     return {
+      time: '',
+      pickerOptions,
       isLoading: true,
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        className: '',
-        sortNumber: ''
+      listQuery: {
+        id: '',
+        productName: '',
+        status: '',
+        shopName: '',
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        className: [{ required: true, message: '请填写咨询类别名称', trigger: 'blur' }],
-        sortNumber: [{ required: true, message: '请填写咨询类别排序', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -125,17 +183,17 @@ export default {
   },
   mounted() {},
   methods: {
-    // 获取咨询类别列表
+    // 获取行为记录列表
     getList() {
+      this.list = []
       this.listQuery.pageNum = 1
-      this.getConsultList()
+      this.getHeHeCollageRecord()
     },
-
-    // 获取咨询类别列表
-    async getConsultList() {
+    // 获取首页导航列表
+    async getHeHeCollageRecord() {
       try {
         this.isLoading = true
-        const res = await getConsultList(this.listQuery)
+        const res = await getHeHeCollageRecord(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -143,88 +201,10 @@ export default {
         console.log(error)
       }
     },
-    // 操作启用停用
-    handleShangeStatus(id, status) {
-      let confirmTxt = ''
-      let paramsStatus
-      if (status === 1) {
-        confirmTxt = '确定停用该类别?'
-        paramsStatus = 2
-      } else {
-        confirmTxt = '确定启用该类别?'
-        paramsStatus = 1
-      }
-      this.$confirm(confirmTxt)
-        .then((_) => {
-          this.getConsultStatus(id, paramsStatus)
-        })
-        .catch(() => {
-          console.log('用户取消操作')
-        })
-    },
-    // 上下线轮播图
-    async getConsultStatus(id, paramsStatus) {
-      try {
-        await saveConsult({ id: id, status: paramsStatus })
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log('error', error)
-      }
-    },
-    // 确认保存类别
-    async handleSaveConsult() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.saveConsult(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 保存咨询类别
-    async saveConsult(params) {
-      await saveConsult(params)
-      this.$message.success('保存成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    // 编辑类别
-    handleEdit(row) {
-      this.form = { ...this.form, ...row }
-      this.dialogFormVisible = true
-    },
-    // 操作删除类别
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该类别吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteConsult(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除类别
-    async deleteConsult(row) {
-      try {
-        await deleteConsult(row.id)
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 咨询类别排序
+    // 菜单排序
     async consultSort(row) {
       try {
-        await consultSort({ id: row.id, sortNumber: row.sortNumber })
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
@@ -234,4 +214,21 @@ export default {
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 132 - 186
src/views/stricts/products/list.vue

@@ -3,13 +3,11 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>ID:</span>
+        <span>商品ID:</span>
         <el-input
-          v-model="listQuery.reportId"
-          style="width: 120px"
-          placeholder="ID"
+          v-model="listQuery.productId"
+          placeholder="商品ID"
           clearable
-          @input="(e) => (listQuery.reportId = checkedInput(e))"
           @keyup.enter.native="getList"
           @clear="getList"
         />
@@ -17,7 +15,7 @@
       <div class="filter-control">
         <span>商品名称:</span>
         <el-input
-          v-model="listQuery.productName"
+          v-model="listQuery.name"
           placeholder="商品名称"
           clearable
           @keyup.enter.native="getList"
@@ -25,95 +23,121 @@
         />
       </div>
       <div class="filter-control">
-        <span>机构名称:</span>
+        <span>供应商名称:</span>
         <el-input
-          v-model="listQuery.clubName"
-          placeholder="机构名称"
+          v-model="listQuery.shopName"
+          placeholder="供应商名称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>报备人:</span>
-        <el-input
-          v-model="listQuery.reportName"
-          style="width: 120px"
-          placeholder="报备人"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
+        <span>商品状态:</span>
+        <el-select v-model="listQuery.validFlag" style="width: 120px" clearable @change="getList">
+          <el-option value="" label="请选择" />
+          <el-option :value="1" label="上架" />
+          <el-option :value="2" label="下架" />
+        </el-select>
       </div>
       <div class="filter-control">
-        <span>审核状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <span>是否含税:</span>
+        <el-select v-model="listQuery.includedTax" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="1" label="待审核" />
-          <el-option :value="2" label="审核通过" />
-          <el-option :value="3" label="审核未通过" />
+          <el-option :value="0" label="不含税" />
+          <el-option :value="1" label="含税" />
         </el-select>
       </div>
       <div class="filter-control">
-        <span>提交时间:</span>
-        <el-date-picker
-          v-model="time"
-          type="daterange"
-          unlink-panels
-          value-format="yyyy-MM-dd"
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :picker-options="pickerOptions"
-          @change="getList"
-        />
+        <span>发票:</span>
+        <el-select v-model="listQuery.invoiceType" style="width: 120px" clearable @change="getList">
+          <el-option value="" label="请选择" />
+          <el-option :value="1" label="增值税专用发票" />
+          <el-option :value="2" label="增值税普通发票" />
+          <el-option :value="3" label="不能开票" />
+        </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
+        <el-button type="primary" @click="getList"> 上线商品 </el-button>
       </div>
     </div>
     <!-- 列表 -->
-    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="650">
-      <el-table-column prop="reportId" label="ID" align="center" width="50" />
-      <el-table-column prop="mainImage" label="商品图片" align="center" width="100">
+    <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
+      <el-table-column prop="productId" label="商品Id" align="center" width="80" />
+      <el-table-column prop="mainImage" label="商品图片" align="center" width="150">
         <template v-if="row.mainImage" slot-scope="{ row }">
           <el-popover placement="top-start" title="" width="180" trigger="hover">
-            <img :src="row.mainImage" alt="" style="width: 100px; height: 100px" />
-            <img slot="reference" :src="row.mainImage" alt="" style="width: 50px; height: 50px" />
+            <img :src="row.mainImage" alt="" style="width: 150px; height: 150px" />
+            <img slot="reference" :src="row.mainImage" alt="" style="width: 80px; height: 80px" />
           </el-popover>
         </template>
+        <template v-else>
+          <span>---</span>
+        </template>
       </el-table-column>
-      <el-table-column prop="productName" label="商品名称" align="center" width="200" />
-      <el-table-column prop="clubName" label="机构名称" align="center" width="180" />
-      <el-table-column prop="reportName" label="报备人" align="center" width="120" />
-      <el-table-column prop="reportText" label="报备事由" align="center" />
-      <el-table-column prop="addTime" label="创建时间" align="center" width="100">
+      <el-table-column prop="name" label="商品名称" align="center" />
+      <el-table-column prop="shopName" label="供应商名称" align="center" />
+      <el-table-column prop="price" label="售价" align="center" width="200">
         <template slot-scope="{ row }">
-          {{ row.addTime ? row.addTime : '---' }}
+          {{ row.price | amountfilters }}
         </template>
       </el-table-column>
-      <el-table-column prop="status" label="审核状态" align="center" width="100">
+      <el-table-column prop="price" label="成本价/比例" align="center" width="100">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 1" type="warning" size="small">待审核</el-tag>
-          <el-tag v-else-if="row.status === 2" type="success" size="small">已审核</el-tag>
-          <el-tag v-else type="danger" size="small">审核未通过</el-tag>
+          <span v-if="row.costType === 1">{{ row.costPrice | amountfilters }}</span>
+          <span v-else>{{ row.shopPercent }}%</span>
         </template>
       </el-table-column>
-      <el-table-column prop="auditName" label="审核人" align="center" width="120" />
-      <el-table-column prop="auditTime" label="审核时间" align="center" width="100">
+      <el-table-column prop="price" label="是否含税" align="center">
         <template slot-scope="{ row }">
-          {{ row.auditTime ? row.auditTime : '---' }}
+          <p>
+            <span>{{ row.includedTax === 0 ? '不含税' : '含税' }}</span>
+            <span>-</span>
+            <span>{{ row.invoiceType | invoiceFilters }}</span>
+          </p>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" width="220">
+      <el-table-column prop="validFlag" label="商品状态" align="center" width="180">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleExamine(row)"> 审核 </el-button>
-          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(row)"> 查看 </el-button>
-          <el-button type="danger" size="mini" style="margin: 2px" @click="handleDelete(row)"> 删除 </el-button>
+          <el-tag v-if="row.validFlag === 2" type="info" size="small">已下架</el-tag>
+          <el-tag v-else type="success" size="small">已上架</el-tag>
+          <el-button
+            v-if="row.validFlag === 2"
+            type="success"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            上架
+          </el-button>
+          <el-button
+            v-else
+            type="warning"
+            size="mini"
+            style="margin: 4px"
+            @click="handleShangeStatus(row.id, row.status)"
+          >
+            下架
+          </el-button>
+        </template>
+      </el-table-column>
+      <el-table-column prop="addTime" label="添加时间" align="center" width="100">
+        <template slot-scope="{ row }">
+          {{ row.addTime ? row.addTime : '---' }}
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" align="center" width="180">
+        <template slot-scope="{ row }">
+          <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <!-- 页码 -->
     <pagination
       :total="total"
@@ -121,70 +145,40 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="getReportList"
+      @pagination="getHeHeProductList"
     />
-    <el-dialog title="审核" :visible.sync="dialogFormVisible" width="440px">
-      <el-form ref="dataForm" :rules="rules" :model="form" label-position="right">
-        <el-form-item label="状态:" prop="status">
-          <el-select v-model="form.status" placeholder="请选择">
-            <el-option label="请选择" value="" />
-            <el-option label="审核通过" :value="2" />
-            <el-option label="审核不通过" :value="3" />
-          </el-select>
-        </el-form-item>
-        <el-form-item prop="auditText">
-          <el-input
-            v-model="form.auditText"
-            type="textarea"
-            placeholder="请填写备注,200字以内"
-            maxlength="200"
-            :autosize="{ minRows: 5, maxRows: 5 }"
-          />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="closeDialog">取消</el-button>
-        <el-button type="primary" @click="handleReportCount">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getReportList, reportCount, deleteReport } from '@/api/user/consult/consult'
-import pickerOptions from '@/utils/time-picker.js'
-const defaultListQuery = {
-  reportId: '', // 报备Id
-  productName: '', // 咨询商品名称
-  clubName: '', // 机构名称
-  reportName: '', // 报备人
-  status: '', // 状态 1.已审核 2.待审核 3.审核未通过
-  startAddTime: '', // 开始时间
-  endAddTime: '', // 结束时间
-  pageNum: 1,
-  pageSize: 20
-}
+import { getHeHeProductList } from '@/api/stricts/mall/mall'
 export default {
-  name: 'ReportList',
-  filters: {},
+  name: 'ProductsList',
+  filters: {
+    invoiceFilters(value) {
+      const map = {
+        1: '普通发票',
+        2: '增值税发票',
+        3: '不开发票'
+      }
+      return map[value]
+    }
+  },
   data() {
     return {
       isLoading: true,
-      pickerOptions,
-      time: '',
-      listQuery: Object.assign({}, defaultListQuery),
-      list: [],
-      total: 0,
-      dialogFormVisible: false,
-      form: {
-        reportId: '',
-        status: '',
-        auditText: ''
+      listQuery: {
+        productId: '', // 商品id,
+        name: '', // 商品名称,
+        shopName: '', // / 供应商名称,
+        validFlag: '', // 上架状态:1上架,2下架,
+        includedTax: '', // 是否含税 0不含税,1含税,
+        invoiceType: '', // 发票类型(基于是否含税基础) 1增值税专用发票,2增值税普通发票, 3不能开票,
+        pageNum: 1,
+        pageSize: 20
       },
-      rules: {
-        status: [{ required: true, message: '请选择审核状态', trigger: 'blur' }],
-        auditText: [{ required: true, message: '请填写备注', trigger: 'blur' }]
-      }
+      list: [],
+      total: 0
     }
   },
   computed: {},
@@ -195,23 +189,15 @@ export default {
   methods: {
     // 获取行为记录列表
     getList() {
-      this.listQuery.pageNum = 1
       this.list = []
-      if (this.time && this.time.length > 0) {
-        this.listQuery.startAddTime = this.time[0]
-        this.listQuery.endAddTime = this.time[1]
-      } else {
-        this.listQuery.startAddTime = ''
-        this.listQuery.endAddTime = ''
-      }
-      this.getReportList()
+      this.listQuery.pageNum = 1
+      this.getHeHeProductList()
     },
-
-    // 获取关键词列表
-    async getReportList() {
+    // 获取首页导航列表
+    async getHeHeProductList() {
       try {
         this.isLoading = true
-        const res = await getReportList(this.listQuery)
+        const res = await getHeHeProductList(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
@@ -219,74 +205,34 @@ export default {
         console.log(error)
       }
     },
-    // 审核报备
-    handleExamine(row) {
-      this.form.reportId = row.reportId
-      this.dialogFormVisible = true
-    },
-    // 确定审核
-    async handleReportCount() {
-      try {
-        await this.$refs.dataForm.validate()
-        this.reportCount(this.form)
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 调用审核报备
-    async reportCount(params) {
-      await reportCount(params)
-      this.$message.success('审核成功')
-      this.closeDialog()
-      this.getList()
-    },
-    // 添加标签取消
-    closeDialog() {
-      this.$refs.dataForm.resetFields()
-      this.dialogFormVisible = false
-    },
-    async handleDelete(row) {
-      try {
-        await this.$confirm('确定删除该报备吗?', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        })
-        this.deleteReport(row)
-      } catch (error) {
-        this.$message.info('已取消删除操作')
-      }
-    },
-    // 调用删除报备
-    async deleteReport(row) {
+    // 菜单排序
+    async consultSort(row) {
       try {
-        await deleteReport(row.reportId)
-        this.$message.success('操作成功')
+        // await consultSort({ id: row.id, sortNumber: row.sortNumber })
         this.getList()
       } catch (error) {
         console.log(error)
       }
-    },
-    // 机构跳转
-    handleClubHrefLink(row) {
-      return (
-        process.env.VUE_APP_ADMIN_URL +
-        `/a/user/jumpLink/toOldAdmin?type=1&clubId=${row.clubId}&clubName=${row.corporateName}`
-      )
-    },
-    // 查看详情
-    handleRecordDetail(row) {
-      this.$router.push({
-        path: '/user/consult/detail',
-        query: { reportId: row.reportId }
-      })
-    },
-    checkedInput(event) {
-      const pattern = /[^0-9.]/g
-      return event.replace(pattern, '')
     }
   }
 }
 </script>
 
-<style></style>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  float: left;
+}
+.uploader-tips {
+  position: absolute;
+  bottom: 0;
+  left: 160px;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}
+</style>

+ 35 - 129
src/views/stricts/retails/list.vue

@@ -3,63 +3,64 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>供应商名称:</span>
+        <span>姓名:</span>
         <el-input
-          v-model="listQuery.shopName"
-          placeholder="供应商名称"
+          v-model="listQuery.name"
+          placeholder="姓名"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>统计状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
-          <el-option value="" label="请选择" />
-          <el-option :value="0" label="统计中" />
-          <el-option :value="1" label="暂停统计" />
-        </el-select>
+        <span>手机号:</span>
+        <el-input
+          v-model="listQuery.mobile"
+          placeholder="手机号"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="shopDialogVisible = true"> 添加供应商 </el-button>
+        <el-button type="primary" @click="getList"> 添加分销者 </el-button>
       </div>
     </div>
     <!-- 列表 -->
     <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
-      <el-table-column prop="shopName" fixed label="供应商名称" align="center" />
-      <el-table-column prop="linkMan" label="联系人" align="center" />
+      <el-table-column prop="name" label="姓名" align="center">
+        <template slot-scope="{ row }">
+          {{ row.name ? row.name : '---' }}
+        </template>
+      </el-table-column>
       <el-table-column prop="mobile" label="手机号" align="center">
         <template slot-scope="{ row }">
           {{ row.mobile ? row.mobile : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="shopStatus" label="供应商状态" align="center">
+      <el-table-column prop="nickName" label="微信昵称" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.shopStatus === 90" type="success" size="small">已上线</el-tag>
+          {{ row.nickName ? row.nickName : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="status" label="统计状态" align="center">
+      <el-table-column prop="openId" label="openID" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 0" type="success" size="small">统计中</el-tag>
-          <el-tag v-if="row.status === 1" type="danger" size="small">暂停统计</el-tag>
+          {{ row.openId ? row.openId : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="添加时间" align="center" width="100">
+      <el-table-column prop="addTime" label="添加时间" align="center">
         <template slot-scope="{ row }">
           {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
       <el-table-column fixed="right" label="操作" align="center" width="400">
         <template slot-scope="{ row }">
-          <el-button type="success" size="mini" style="margin: 4px" @click="handleRecordDetail(1, row)">
-            页面访问统计
-          </el-button>
-          <el-button type="success" size="mini" style="margin: 4px" @click="handleRecordDetail(2, row)">
-            设置统计状态
+          <el-button type="primary" size="mini" style="margin: 4px" @click="handleRecordDetail(3, row)">
+            编辑
           </el-button>
           <el-button type="primary" size="mini" style="margin: 4px" @click="handleRecordDetail(3, row)">
-            相关商品
+            活动商品
           </el-button>
         </template>
       </el-table-column>
@@ -71,53 +72,27 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="getCustomerShopList"
+      @pagination="getHeHeSalesList"
     />
-    <!--  选择供应商弹窗 -->
-    <shop-dialog v-if="shopDialogVisible" ref="shopDialog" @confirm="handleAddShopConfirm" @cancel="handleCancel" />
-    <!-- 设置统计状态 -->
-    <el-dialog title="设置统计状态" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :model="renewCustome" :rules="rules" label-position="right">
-        <el-form-item prop="status">
-          <el-radio v-model="renewCustome.status" :label="0">统计中</el-radio>
-          <el-radio v-model="renewCustome.status" :label="1">暂停统计</el-radio>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogFormVisible = false">取消</el-button>
-        <el-button type="primary" @click="handleConfirm">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getCustomerShopList, saveCustomerShop, renewCustomerShop } from '@/api/user/customer/customer'
-import ShopDialog from './components/shop-dialog'
+import { getHeHeSalesList } from '@/api/stricts/user/user'
 export default {
-  name: 'RecordList',
-  components: { ShopDialog },
+  name: 'RetailsList',
   filters: {},
   data() {
     return {
       isLoading: true,
       listQuery: {
-        shopName: '',
-        status: '',
+        mobile: '',
+        name: '',
         pageNum: 1,
         pageSize: 20
       },
       list: [],
-      total: 0,
-      shopDialogVisible: false,
-      dialogFormVisible: false,
-      renewCustome: {
-        id: '',
-        status: ''
-      },
-      rules: {
-        status: [{ required: true, message: '请设置统计状态', trigger: 'blur' }]
-      }
+      total: 0
     }
   },
   computed: {},
@@ -130,88 +105,19 @@ export default {
     getList() {
       this.list = []
       this.listQuery.pageNum = 1
-      this.getCustomerShopList()
-    },
-    // 确认选择供应商
-    handleAddShopConfirm(data) {
-      console.log('data', data)
-      const shopIds = []
-      data.forEach((ele) => {
-        shopIds.push(ele.shopId)
-      })
-      this.saveCustomerShop({ shopIds: shopIds.join(',') })
+      this.getHeHeSalesList()
     },
-    // 取消选择供应商
-    handleCancel() {
-      this.shopDialogVisible = false
-      this.$refs.shopDialog.visible = false
-    },
-    // 确认设置统计状态
-    handleConfirm() {
-      this.$refs['dataForm'].validate((valid) => {
-        if (valid) {
-          this.renewCustomerShop(this.renewCustome)
-        } else {
-          return false
-        }
-      })
-    },
-    // 获取潜客搜集供应商列表
-    async getCustomerShopList() {
+    // 获取用户列表
+    async getHeHeSalesList() {
       try {
         this.isLoading = true
-        const res = await getCustomerShopList(this.listQuery)
+        const res = await getHeHeSalesList(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
       } catch (error) {
         console.log(error)
       }
-    },
-    // 保存添加统计供应商
-    async saveCustomerShop(params) {
-      try {
-        await saveCustomerShop(params)
-        this.shopDialogVisible = false
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 统计状态
-    async renewCustomerShop(params) {
-      try {
-        await renewCustomerShop(params)
-        this.dialogFormVisible = false
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 查看详情
-    handleRecordDetail(type, row) {
-      switch (type) {
-        case 1: // 页面访问统计
-          this.$router.push({
-            path: '/user/customer/customer-page-list',
-            query: { shopId: row.shopId }
-          })
-          break
-        case 2: // 设计统计状态
-          this.renewCustome.id = row.id
-          this.renewCustome.status = row.status
-          console.log('renewCustome', this.renewCustome)
-          this.dialogFormVisible = true
-          break
-        case 3: // 相关商品
-          this.$router.push({
-            path: '/user/customer/customer-goods-list',
-            query: { id: row.id, shopId: row.shopId, shopName: row.shopName }
-          })
-          break
-      }
     }
   }
 }

+ 39 - 134
src/views/stricts/users/list.vue

@@ -3,64 +3,63 @@
     <!-- 顶部操作区域 -->
     <div class="filter-container">
       <div class="filter-control">
-        <span>供应商名称:</span>
+        <span>微信昵称:</span>
         <el-input
-          v-model="listQuery.shopName"
-          placeholder="供应商名称"
+          v-model="listQuery.nickName"
+          placeholder="微信昵称"
           clearable
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
-        <span>统计状态:</span>
-        <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
+        <span>手机号:</span>
+        <el-input
+          v-model="listQuery.mobile"
+          placeholder="手机号"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span>用户身份:</span>
+        <el-select v-model="listQuery.userIdentity" style="width: 120px" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="0" label="统计中" />
-          <el-option :value="1" label="暂停统计" />
+          <el-option :value="1" label="普通用户" />
+          <el-option :value="2" label="分销者" />
         </el-select>
       </div>
       <div class="filter-control">
         <el-button type="primary" @click="getList"> 查询 </el-button>
-        <el-button type="primary" @click="shopDialogVisible = true"> 添加供应商 </el-button>
       </div>
     </div>
     <!-- 列表 -->
     <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
-      <el-table-column prop="shopName" fixed label="供应商名称" align="center" />
-      <el-table-column prop="linkMan" label="联系人" align="center" />
-      <el-table-column prop="mobile" label="手机号" align="center">
+      <el-table-column prop="nickName" label="微信昵称" align="center">
         <template slot-scope="{ row }">
-          {{ row.mobile ? row.mobile : '---' }}
+          {{ row.nickName ? row.nickName : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="shopStatus" label="供应商状态" align="center">
+      <el-table-column prop="mobile" label="手机号" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.shopStatus === 90" type="success" size="small">已上线</el-tag>
+          {{ row.mobile ? row.mobile : '---' }}
         </template>
       </el-table-column>
-      <el-table-column prop="status" label="统计状态" align="center">
+      <el-table-column prop="userIdentity" label="用户身份" align="center">
         <template slot-scope="{ row }">
-          <el-tag v-if="row.status === 0" type="success" size="small">统计中</el-tag>
-          <el-tag v-if="row.status === 1" type="danger" size="small">暂停统计</el-tag>
+          <el-tag v-if="row.userIdentity === 1" type="success" size="small">普通用户</el-tag>
+          <el-tag v-if="row.userIdentity === 2" type="warning" size="small">分销者</el-tag>
         </template>
       </el-table-column>
-      <el-table-column prop="addTime" label="添加时间" align="center" width="100">
+      <el-table-column prop="openId" label="openID" align="center">
         <template slot-scope="{ row }">
-          {{ row.addTime ? row.addTime : '---' }}
+          {{ row.openId ? row.openId : '---' }}
         </template>
       </el-table-column>
-      <el-table-column fixed="right" label="操作" align="center" width="400">
+      <el-table-column prop="addTime" label="注册时间" align="center">
         <template slot-scope="{ row }">
-          <el-button type="success" size="mini" style="margin: 4px" @click="handleRecordDetail(1, row)">
-            页面访问统计
-          </el-button>
-          <el-button type="success" size="mini" style="margin: 4px" @click="handleRecordDetail(2, row)">
-            设置统计状态
-          </el-button>
-          <el-button type="primary" size="mini" style="margin: 4px" @click="handleRecordDetail(3, row)">
-            相关商品
-          </el-button>
+          {{ row.addTime ? row.addTime : '---' }}
         </template>
       </el-table-column>
     </el-table>
@@ -71,53 +70,28 @@
       :page-size="20"
       :page.sync="listQuery.pageNum"
       :limit.sync="listQuery.pageSize"
-      @pagination="getCustomerShopList"
+      @pagination="getHeHeUserList"
     />
-    <!--  选择供应商弹窗 -->
-    <shop-dialog v-if="shopDialogVisible" ref="shopDialog" @confirm="handleAddShopConfirm" @cancel="handleCancel" />
-    <!-- 设置统计状态 -->
-    <el-dialog title="设置统计状态" :visible.sync="dialogFormVisible" width="500px">
-      <el-form ref="dataForm" :model="renewCustome" :rules="rules" label-position="right">
-        <el-form-item prop="status">
-          <el-radio v-model="renewCustome.status" :label="0">统计中</el-radio>
-          <el-radio v-model="renewCustome.status" :label="1">暂停统计</el-radio>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogFormVisible = false">取消</el-button>
-        <el-button type="primary" @click="handleConfirm">确定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getCustomerShopList, saveCustomerShop, renewCustomerShop } from '@/api/user/customer/customer'
-import ShopDialog from './components/shop-dialog'
+import { getHeHeUserList } from '@/api/stricts/user/user'
 export default {
-  name: 'RecordList',
-  components: { ShopDialog },
+  name: 'UsersList',
   filters: {},
   data() {
     return {
       isLoading: true,
       listQuery: {
-        shopName: '',
-        status: '',
+        mobile: '',
+        nickName: '',
+        userIdentity: '',
         pageNum: 1,
         pageSize: 20
       },
       list: [],
-      total: 0,
-      shopDialogVisible: false,
-      dialogFormVisible: false,
-      renewCustome: {
-        id: '',
-        status: ''
-      },
-      rules: {
-        status: [{ required: true, message: '请设置统计状态', trigger: 'blur' }]
-      }
+      total: 0
     }
   },
   computed: {},
@@ -130,88 +104,19 @@ export default {
     getList() {
       this.list = []
       this.listQuery.pageNum = 1
-      this.getCustomerShopList()
+      this.getHeHeUserList()
     },
-    // 确认选择供应商
-    handleAddShopConfirm(data) {
-      console.log('data', data)
-      const shopIds = []
-      data.forEach((ele) => {
-        shopIds.push(ele.shopId)
-      })
-      this.saveCustomerShop({ shopIds: shopIds.join(',') })
-    },
-    // 取消选择供应商
-    handleCancel() {
-      this.shopDialogVisible = false
-      this.$refs.shopDialog.visible = false
-    },
-    // 确认设置统计状态
-    handleConfirm() {
-      this.$refs['dataForm'].validate((valid) => {
-        if (valid) {
-          this.renewCustomerShop(this.renewCustome)
-        } else {
-          return false
-        }
-      })
-    },
-    // 获取潜客搜集供应商列表
-    async getCustomerShopList() {
+    // 获取用户列表
+    async getHeHeUserList() {
       try {
         this.isLoading = true
-        const res = await getCustomerShopList(this.listQuery)
+        const res = await getHeHeUserList(this.listQuery)
         this.list = res.data.results
         this.total = res.data.totalRecord
         this.isLoading = false
       } catch (error) {
         console.log(error)
       }
-    },
-    // 保存添加统计供应商
-    async saveCustomerShop(params) {
-      try {
-        await saveCustomerShop(params)
-        this.shopDialogVisible = false
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 统计状态
-    async renewCustomerShop(params) {
-      try {
-        await renewCustomerShop(params)
-        this.dialogFormVisible = false
-        this.$message.success('操作成功')
-        this.getList()
-      } catch (error) {
-        console.log(error)
-      }
-    },
-    // 查看详情
-    handleRecordDetail(type, row) {
-      switch (type) {
-        case 1: // 页面访问统计
-          this.$router.push({
-            path: '/user/customer/customer-page-list',
-            query: { shopId: row.shopId }
-          })
-          break
-        case 2: // 设计统计状态
-          this.renewCustome.id = row.id
-          this.renewCustome.status = row.status
-          console.log('renewCustome', this.renewCustome)
-          this.dialogFormVisible = true
-          break
-        case 3: // 相关商品
-          this.$router.push({
-            path: '/user/customer/customer-goods-list',
-            query: { id: row.id, shopId: row.shopId, shopName: row.shopName }
-          })
-          break
-      }
     }
   }
 }