Pārlūkot izejas kodu

Merge branch 'pengyouhao_dev'

pengyh 1 gadu atpakaļ
vecāks
revīzija
3d65864eac

+ 73 - 0
src/api/commodityManagement.js

@@ -0,0 +1,73 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+export function esGoodsList(data) {
+  return request({
+    url: `/es/goods/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function esGoodsListExport(data, name) {
+  return postBlob({
+    url: '/es/goods/list/export',
+    data,
+    name
+  })
+}
+
+export function esGoodsUpdate(data) {
+  return request({
+    url: '/es/goods/update',
+    method: 'post',
+    data: data
+  })
+}
+
+export function esGoodsDetail(params) {
+  return request({
+    url: '/es/goods/detail',
+    method: 'post',
+    params
+  })
+}
+
+export function esGoodsDel(params) {
+  return request({
+    url: '/es/goods/del',
+    method: 'post',
+    params
+  })
+}
+
+export function esGoodsCopy(params) {
+  return request({
+    url: '/es/goods/copy',
+    method: 'post',
+    params
+  })
+}
+
+export function esGoodsBatchUpdateStatus(params) {
+  return request({
+    url: '/es/goods/batch/update/status',
+    method: 'post',
+    params
+  })
+}
+
+export function esGoodsTop(params) {
+  return request({
+    url: '/es/goods/top',
+    method: 'post',
+    params
+  })
+}
+
+export function esGoodsReply(params) {
+  return request({
+    url: '/es/goods/reply',
+    method: 'post',
+    params
+  })
+}

+ 17 - 0
src/api/orderManagement.js

@@ -0,0 +1,17 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+export function esOrderList(params) {
+  return request({
+    url: '/esOrder/list',
+    method: 'post',
+    params
+  })
+}
+
+export function esOrderAdd(data) {
+  return request({
+    url: '/esOrder/add',
+    method: 'post',
+    data
+  })
+}

+ 28 - 0
src/api/secondHandMallHome.js

@@ -0,0 +1,28 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取概况
+export function getInfo(params) {
+  return request({
+    url: '/es/count/info',
+    method: 'get',
+    params
+  })
+}
+
+// 交易概述
+export function getOrder(params) {
+  return request({
+    url: '/es/count/order',
+    method: 'get',
+    params
+  })
+}
+
+// 商品销量排行
+export function getGoodsRank(params) {
+  return request({
+    url: '/es/count/goods/rank',
+    method: 'get',
+    params
+  })
+}

+ 9 - 0
src/api/setting.js

@@ -335,6 +335,15 @@ export function getGoodsList(params) {
   })
 }
 
+// 获取二手商品列表
+export function getUsedGoodsList(data) {
+  return request({
+    url: '/es/goods/list',
+    method: 'post',
+    data
+  })
+}
+
 // 批量删除轮播图
 export function batchDeleteBanner(params) {
   return request({

+ 7 - 5
src/layout/components/Navbar.vue

@@ -64,7 +64,7 @@
             <el-radio-group size="small" v-model="messageType" @change="getList">
               <el-badge :is-dot="isDot1" class="item">
                 <el-radio-button
-                  :label="['WBI', 'WBK', 'CRE_ORDER', 'SEND_MALL', 'RP_MALL', 'CR_SALES', 'ENGIN_PAY_ORDER']">系统消息</el-radio-button>
+                  :label="['WBI', 'WBK', 'CRE_ORDER', 'SEND_MALL', 'RP_MALL', 'CR_SALES', 'ENGIN_PAY_ORDER','CR_ES_SALES']">系统消息</el-radio-button>
               </el-badge>
               <el-badge :is-dot="isDot2" class="item">
                 <el-radio-button :label="['NOTICE']">平台公告</el-radio-button>
@@ -218,7 +218,7 @@ export default {
       isShow: false,
       isOpen: true,
       checked: false,
-      messageType: ['WBI', 'WBK', 'CRE_ORDER', 'SEND_MALL', 'RP_MALL', 'CR_SALES', 'ENGIN_PAY_ORDER'],
+      messageType: ['WBI', 'WBK', 'CRE_ORDER', 'SEND_MALL', 'RP_MALL', 'CR_SALES', 'ENGIN_PAY_ORDER','CR_ES_SALES'],
       messageData: [],
       dateType: '',
       readFlag: '',
@@ -273,7 +273,8 @@ export default {
           SEND_MALL: '商城订单发货',
           RP_MALL: '商城订单维权',
           CR_SALES: '订单支付成功',
-		  ENGIN_PAY_ORDER: '工程收款单'
+		  ENGIN_PAY_ORDER: '工程收款单',
+		  CR_ES_SALES: '二手商品订单'
         }
         return MAP[val]
       }
@@ -288,7 +289,8 @@ export default {
           SEND_MALL: 'order_detail',
           RP_MALL: 'order_refund_detail',
           CR_SALES: (paidType == 'M' ? 'auxiliarySalesOrder' : paidType == 'P' ? 'attachmentSalesOrder' : paidType == 'YB' ? 'orderSettleManag' : paidType == 'MALL' ? 'order_detail' : ''),
-		  ENGIN_PAY_ORDER: 'projectCollectionManagement'
+		  ENGIN_PAY_ORDER: 'projectCollectionManagement',
+		  CR_ES_SALES: 'orderManagement'
         }
         return MAP[val]
       }
@@ -376,7 +378,7 @@ export default {
               message: that.$createElement(
                 'div',
                 {
-                  style: 'cursor: pointer;',
+                  style: 'cursor: pointer;text-align: left;',
                   on: {
                     click: that.toDetail.bind(
                       that,

+ 1 - 1
src/views/mallManagement/activityOrder/detail.vue

@@ -11,7 +11,7 @@
 					<el-row :gutter="20" justify="start">
 						<el-col :span="6">
 							<el-form-item label="所属商户" :required="true" >
-								<el-input type="text" :value="companyName" disabled></el-input>
+								<el-input type="text" :value="formData.companyWechatName?formData.companyWechatName:companyName" disabled></el-input>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6" style="height: 51px;">

+ 18 - 6
src/views/mallManagement/configCenter/slideshowConfig/index.vue

@@ -97,6 +97,7 @@ import {
   getBannerDetail,
   deleteBanner,
   getGoodsList,
+	getUsedGoodsList,
   batchDeleteBanner
 } from '@/api/setting'
 import ImageUpload from '@/components/file-upload'
@@ -522,19 +523,30 @@ export default {
 		selGoods(row) {
 		  this.innerVisible = false
 		  this.search = ''
-		  this.formData.goodsId = row.goodsId
+		  this.formData.goodsId = this.formData.port == 'ESHOP'?row.id:row.goodsId
 		  this.formData.goodsName = row.goodsName
 		},
 		showGoodsList() {
 		  let params = {
 		    goodsName: this.search,
 		    pageNum: this.innerCurrentPage,
-		    pageSize: this.innerPageSize
+		    pageSize: this.innerPageSize,
 		  };
-		  getGoodsList(params).then(res => {
-		    this.goodsList = res.data.records;
-		    this.innerListTotal = res.data.total;
-		  })
+			if(this.formData.port == 'ESHOP'){
+				getUsedGoodsList({
+					pageNum: this.innerCurrentPage,
+					pageSize: this.innerPageSize,
+					params:  [{param: "a.goods_name", compare: "like", value: this.search}, {param: "a.status", compare: "=", value: "ON"}]
+				}).then(res => {
+					this.goodsList = res.data.records;
+					this.innerListTotal = res.data.total;
+				})
+			}else{
+				getGoodsList(params).then(res => {
+				  this.goodsList = res.data.records;
+				  this.innerListTotal = res.data.total;
+				})
+			}
 		},
 		// 更改内嵌每页数量
 		innerHandleSizeChange(val) {

+ 289 - 0
src/views/mallManagement/secondHandMall/classifiedManagement/index.vue

@@ -0,0 +1,289 @@
+<template>
+	<zj-tab-page ref="tabPage" :defaultActives="[{ key: 'list', label: $route.meta.title+'-列表', essential: true }]">
+		<template slot-scope="{activeKey, data}">
+			<div v-if="activeKey == 'list'" class="app-container">
+				<div class="btn-group clearfix">
+				  <div class="fl">
+				    <el-button v-if="$restrict('add')" size="small" type="primary" icon="el-icon-plus" @click="addOrEditParent('add1')">添加分类</el-button>
+				  </div>
+				  <div class="fr">
+				    <el-input placeholder="请输入分类名称进行搜索" v-model="screenForm.keyword" size="small" style="width: 240px;" clearable>
+				      <el-button slot="append" icon="el-icon-search" size="small" @click="getListByScreen"></el-button>
+				    </el-input>
+				  </div>
+				</div>
+				
+				<div class="table">
+				  <el-table :data="dataList" row-key="categoryId" border default-expand-all :tree-props="{children: 'children'}">
+					  <el-table-column align="center" prop="companyName" label="所属商户" min-width="120"></el-table-column>
+				    <el-table-column prop="name" label="分类名称" min-width="150"></el-table-column>
+				    <el-table-column align="center" label="分类图片" prop="imgUrl" width="80">
+				      <template slot-scope="scope">
+				        <el-image style="width: 40px; height: 40px; display: block; margin: 0 auto;" :src="scope.row.imgUrl" :preview-src-list="[scope.row.imgUrl]" fit="cover">
+				          <div slot="error" style="height: 100%;font-size: 40px;">
+				            <i class="el-icon-picture-outline"></i>
+				          </div>
+				        </el-image>
+				      </template>
+				    </el-table-column>
+					<el-table-column align="center" label="状态" class-name="status-col">
+					  <template slot-scope="scope">
+					    <el-tag :type="scope.row.status ? 'success':'danger'">{{ scope.row.status ? '启用':'禁用' }}</el-tag>
+					  </template>
+					</el-table-column>
+				    <el-table-column align="center" prop="sortNum" label="排序"></el-table-column>
+					<el-table-column align="center" prop="createBy" label="创建人"></el-table-column>
+					<el-table-column align="center" prop="createTime" label="创建时间"></el-table-column>
+					<el-table-column align="center" prop="updateBy" label="修改人"></el-table-column>
+					<el-table-column align="center" prop="updateTime" label="修改时间"></el-table-column>
+				    <el-table-column align="right" label="操作" width="150" fixed="right">
+				      <template slot-scope="scope">
+				        <el-button type="primary" size="mini" icon="el-icon-edit" v-if="scope.row.level == 1 && $restrict('edit')" @click="addOrEditParent('edit1', scope.row.categoryId)"></el-button>
+				        <el-popconfirm v-if="$restrict('del')" style="margin-left: 10px;" title="确定删除吗?" @confirm="handleDelete(scope.row.categoryId)" >
+				          <el-button slot="reference" size="mini" icon="el-icon-delete"></el-button>
+				        </el-popconfirm>
+				      </template>
+				    </el-table-column>
+				  </el-table>
+				</div>
+			</div>
+			<!-- 新增编辑 一级分类 -->
+			<div v-if="addParentFormVisible" class="app-container">
+				<el-form ref="addParentForm" :model="addParentForm" :rules="addParentFormRules" label-position="left" label-width="100px">
+					<el-row :gutter="20">
+						<el-col :span="6">
+							<el-form-item label="分类名称" prop="oneClassify">
+							  <el-input type="text" placeholder="请输入分类名称" v-model="addParentForm.oneClassify" maxlength="10" show-word-limit style="width: 250px;"></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="6">
+							<el-form-item label="状态" prop="status" class="is-required">
+							  <el-radio-group v-model="addParentForm.status">
+							    <el-radio :label="true">启用</el-radio>
+							    <el-radio :label="false">禁用</el-radio>
+							  </el-radio-group>
+							</el-form-item>
+						</el-col>
+						<el-col :span="6">
+							<el-form-item label="排序" prop="sort">
+							  <el-input placeholder="请输入排序" v-model.number="addParentForm.sort" style="width: 250px;"></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="24">
+							<el-form-item label="分类图片" prop="imgUrl">
+<!-- 							  <el-upload
+							    class="avatar-uploader"
+							    style="height:122px"
+							    :action="baseURL + 'common/upload'"
+							    :headers="myHeaders"
+							    :show-file-list="false"
+							    :on-success="uploadSuccess"
+							    :before-upload="beforeUpload">
+							    <img v-if="addParentForm.imgUrl" :src="addParentForm.imgUrl" class="avatar">
+							    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+							  </el-upload> -->
+								<ImageUpload :fileList="addParentForm.imgUrl" :limit="1" :isEdit="true" />
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<div slot="footer" class="dialog-footer">
+				  <el-button @click="data.removeTab()">取 消</el-button>
+				  <el-button type="primary" @click="submitAddParentForm(data.removeTab)">确 定</el-button>
+				</div>
+			</div>
+		</template>
+	</zj-tab-page>
+</template>
+
+<script>
+import { getToken } from '@/utils/auth'
+import { getClassifyList, addClassify, editClassify, deleteClassify, getClassifyDetail } from '@/api/goods'
+import { ORDER_MAIN_TYPE } from "@/utils/select_data";
+import { getMainList } from "@/api/workOrder/settlementStandardInstall";
+	import ImageUpload from '@/components/file-upload'
+
+export default {
+	components: {
+		ImageUpload
+	},
+  data() {
+    return {
+      baseURL: process.env.VUE_APP_BASE_API,
+      myHeaders: {'x-token': getToken()},
+
+      dataList: [], // 列表数据
+      listLoading: true, // 列表加载loading
+      screenForm: { // 筛选表单数据
+        keyword: '', // 关键词
+      },
+
+      editParentId:  null,
+      addParentFormType: 'add1',
+      addParentFormVisible: false,
+      addParentForm: {
+        oneClassify: '',
+        twoClassify: '',
+        imgUrl: [],
+        status: true,
+        sort: 0,
+      },
+      addParentFormRules: {
+        oneClassify: [
+          { required: true, message: '请填写分类名称', trigger: 'blur' },
+        ],
+        imgUrl: [
+          { required: true, message: '请上传分类图片', trigger: 'change' }
+        ]
+      },
+
+      classifyList: [],
+		formType: 'add',
+		formVisible: false,
+    }
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+
+    getList() {
+      this.listLoading = true;
+
+      let params = {
+        name: this.screenForm.keyword,
+		type: 5
+      };
+
+      getClassifyList(params).then(res => {
+        this.dataList = res.data;
+      })
+    },
+
+    // 筛选后重新获取列表
+    getListByScreen() {
+      this.currentPage = 1;
+      this.getList();
+    },
+
+    // 打开 新增编辑 一级分类
+    addOrEditParent(type, cid) {
+		this.$refs.tabPage.addTab({
+			// 对应显示的模块
+			activeKey: type,
+			// 唯一标识
+			key: type,
+			// 页签名称
+			label: ({ edit1: "编辑分类", add1: "添加分类" })[type],
+			// 打开时事件
+			triggerEvent: () => {
+				
+				this.$nextTick(()=>{
+					this.formType = type
+					this.formVisible = true
+					this.addParentFormType = type;
+					this.addParentFormVisible = true;
+					if(type == 'edit1'){
+						this.editParentId = cid;
+						getClassifyDetail({categoryId: cid}).then(res => {
+						  this.addParentForm = {
+						    oneClassify: res.data.name,
+						    status: res.data.status,
+						    imgUrl: [{url: res.data.imgUrl}],
+						    sort: res.data.sortNum
+						  }
+						})
+					}
+				})
+			},
+			// 关闭时事件
+			closeEvent: () => {
+				this.cancelAddParentForm()
+			}
+		})
+    },
+
+    // 取消 新增编辑 一级分类
+    cancelAddParentForm(){
+      this.addParentFormVisible = false;
+      this.$refs?.addParentForm?.resetFields();
+    },
+
+    // 提交 一级分类
+    submitAddParentForm(cancel) {
+      this.$refs.addParentForm.validate((valid) => {
+        if (valid) {
+          let params = {
+			type: 5,
+            name: this.addParentForm.oneClassify,
+            imgUrl: this.addParentForm.imgUrl[0].url,
+            status: this.addParentForm.status,
+            sortNum: this.addParentForm.sort,
+          }
+          if(this.addParentFormType == 'edit1') {
+            params.categoryId = this.editParentId;
+            editClassify(params).then(res => {
+				cancel('list')
+              this.cancelAddParentForm();
+              this.getList();
+              this.$successMsg('编辑成功');
+            })
+          }else {
+            addClassify(params).then(res => {
+				cancel('list')
+              this.cancelAddParentForm();
+              this.getList();
+              this.$successMsg('添加成功');
+            })
+          }
+        }
+      })
+    },
+
+    // 操作 - 删除
+    handleDelete(id) {
+      deleteClassify({categoryId: id}).then(res => {
+        this.getList();
+        this.$successMsg();
+      })
+    },
+
+    uploadSuccess(res, file, index) {
+      if (this.addParentFormVisible) {
+        this.addParentForm.imgUrl = res.data.url
+      } else {
+        this.addChildForm.imgUrl = res.data.url
+      }
+    },
+
+    beforeUpload(file) {
+      const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
+      const whiteList = ['jpg', 'jpeg', 'png', 'gif'];
+      if (whiteList.indexOf(fileSuffix) === -1) {
+        this.$errorMsg('只支持上传jpg/jpeg/png/gif文件!');
+        return false;
+      }
+    },
+
+  }
+
+}
+
+</script>
+
+<style scoped lang="scss">
+</style>
+
+<style lang="scss">
+  .el-image-viewer__wrapper .el-icon-circle-close {
+    color: #ffffff !important;
+    font-size: 60px;
+  }
+  .el-table__row.expanded {
+    background: #f5f5f5;
+  }
+
+  th:first-child, th:last-child {
+    text-align: center !important;
+  }
+</style>

+ 547 - 0
src/views/mallManagement/secondHandMall/home/index.vue

@@ -0,0 +1,547 @@
+<template>
+  <div class="dashboard-container">
+
+    <el-row :gutter="10" class="top-container">
+      <el-col :xs="24" :sm="12" :lg="12">
+        <div class="today">今日</div>
+        <div class="today-content">{{ dateFormat }},欢迎登入分销商城后台管理操作系统,累计售出{{ statisticsData.total }}件商品,继续加油</div>
+      </el-col>
+      <el-col :xs="24" :sm="12" :lg="12">
+        <el-row :gutter="20" type="flex" class="right-row" justify="end">
+          <el-col :span="4">
+            <svg-icon icon-class="product1" class-name="icon"/>
+          </el-col>
+          <el-col :span="4">
+            <div class="num">{{ statisticsData.sold }}</div>
+            <div class="name">已售中商品</div>
+          </el-col>
+          <el-col :span="4">
+            <svg-icon icon-class="fahuo1" class-name="icon"/>
+          </el-col>
+          <el-col :span="4">
+            <div class="num">{{ statisticsData.dfh }}</div>
+            <div class="name">待发货订单</div>
+          </el-col>
+          <el-col :span="4">
+            <svg-icon icon-class="refund-order1" class-name="icon"/>
+          </el-col>
+          <el-col :span="4">
+            <div class="num">{{ statisticsData.refund }}</div>
+            <div class="name">维权中订单</div>
+          </el-col>
+          <!-- <el-col :span="3">
+            <svg-icon icon-class="settlement" class-name="icon"/>
+          </el-col>
+          <el-col :span="3">
+            <div class="num">¥{{ statisticsData.orderShareAmount }}</div>
+            <div class="name">待结算金额</div>
+          </el-col> -->
+        </el-row>
+      </el-col>
+    </el-row>
+    
+    <el-row :gutter="20" class="middle-container">
+      <el-col :xs="24" :sm="7" :lg="7">
+        <div class="item">
+          <div class="title">登入用户数</div>
+          <el-row>
+            <el-col :span="5">
+              <svg-icon icon-class="history-user" class-name="icon"/>
+            </el-col>
+            <el-col :span="19" class="right-data">
+              <div class="data">
+                <span>今日访客</span><span style="color: #f4cc4e;">{{ statisticsData.todayVisit }}</span>
+              </div>
+              <div class="progress">
+                <el-progress :percentage="personCountCompute" :show-text="false" :color="'#f4cc4e'"></el-progress>
+              </div>
+              <div class="data">
+                <span>昨天访客</span><span>{{ statisticsData.yestodayVisit }}</span>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+      </el-col>
+      <el-col :xs="24" :sm="7" :lg="7">
+        <div class="item">
+          <div class="title">订单数</div>
+          <el-row>
+            <el-col :span="5">
+              <svg-icon icon-class="order" class-name="icon"/>
+            </el-col>
+            <el-col :span="19" class="right-data">
+              <div class="data">
+                <span>今日订单</span><span style="color: #e6808f;">{{ statisticsData.todayOrder }}</span>
+              </div>
+              <div class="progress">
+                <el-progress :percentage="orderCountCompute" :show-text="false" :color="'#e6808f'"></el-progress>
+              </div>
+              <div class="data">
+                <span>昨天订单</span><span>{{ statisticsData.yestodayOrder }}</span>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+      </el-col>
+      <el-col :xs="20" :sm="7" :lg="7">
+        <div class="item">
+          <div class="title">预估收益</div>
+          <el-row>
+            <el-col :span="5">
+              <svg-icon icon-class="profit1" class-name="icon"/>
+            </el-col>
+            <el-col :span="19" class="right-data">
+              <div class="data">
+                <span>今日收益</span><span style="color: #5f71cf;">{{ statisticsData.todayProfit }}</span>
+              </div>
+              <div class="progress">
+                <el-progress :percentage="profitCompute" :show-text="false" color="'#5f71cf'"></el-progress>
+              </div>
+              <div class="data">
+                <span>昨天收益</span><span>{{ statisticsData.yestodayProfit }}</span>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+      </el-col>
+      <el-col :xs="4" :sm="3" :lg="3">
+        <div class="item last-item">
+          <div class="title">下单转化率</div>
+          <div class="content">
+            <div class="num">{{ statisticsData.orderTax }}%</div>
+            <div class="text">今日转化率</div>
+          </div>
+          
+        </div>
+      </el-col>
+    </el-row>
+
+    <el-row :gutter="20" class="bottom-container">
+      <el-col :xs="24" :sm="14" :lg="14">
+        <div class="content">
+          <div class="tabs-container clearfix">
+           <!-- <div class="fl">
+              <el-radio-group v-model="screenForm.workOrderType" size="small" @change="changeEchartsDateValue">
+                <el-radio-button label="">全部</el-radio-button>
+                <el-radio-button label="INSTALL">产品</el-radio-button>
+                <el-radio-button label="REPAIR">服务</el-radio-button>
+              </el-radio-group>
+            </div> -->
+            <div class="fr">
+              <el-radio-group v-model="screenForm.echartsFlag" size="small" @change="changeEchartsDateValue">
+                <el-radio-button label="1">今日</el-radio-button>
+                <el-radio-button label="2">昨日</el-radio-button>
+                <el-radio-button label="3">最近7日</el-radio-button>
+                <el-radio-button label="4">本月</el-radio-button>
+              </el-radio-group>
+            </div>
+          </div>
+          <div style="padding: 20px;">
+            <el-row style="text-align: center;">
+              <el-col :span="8">
+                <div style="font-size: 20px;font-weight: bold;color: #f65c5c">{{ transaction.orderNum }}</div>
+                <div style="font-size: 12px;padding-top: 10px;">成交量(件)</div>
+              </el-col>
+              <el-col :span="8">
+                <div style="font-size: 20px;font-weight: bold;color: #f65c5c">{{ transaction.amount }}</div>
+                <div style="font-size: 12px;padding-top: 10px;">成交额(元)</div>
+              </el-col>
+              <el-col :span="8">
+                <div style="font-size: 20px;font-weight: bold;color: #f65c5c">{{ transaction.avgAmount }}</div>
+                <div style="font-size: 12px;padding-top: 10px;">人均消费(元)</div>
+              </el-col>
+            </el-row>
+          </div>
+          <div class="table" v-resize="DomResize">
+            <div ref="myChart" :style="{width: '100%', height: '300px'}"></div>
+          </div>
+        </div>
+      </el-col>
+      <el-col :xs="24" :sm="10" :lg="10">
+        <div class="content">
+          <div class="tabs-container clearfix">
+            <div class="fr">
+              <el-radio-group v-model="screenForm.goodsFlag" size="small" @change="changeTableDateValue">
+                <el-radio-button label="1">今日</el-radio-button>
+                <el-radio-button label="2">昨日</el-radio-button>
+                <el-radio-button label="3">最近7日</el-radio-button>
+                <el-radio-button label="4">本月</el-radio-button>
+              </el-radio-group>
+            </div>
+          </div>
+
+          <div class="table">
+            <el-table v-loading="listLoading" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe size="mini" height="400">
+              <el-table-column align="center" label="订单号" prop="esOrderId" width="180">
+				  <template slot-scope="scope"> 
+				  	  <div style="color: #478af3;cursor: pointer;" @click="toOrder(scope.row.esOrderId)">{{scope.row.esOrderId}}</div>
+				  </template>
+			  </el-table-column>
+              <el-table-column align="center" label="商品名称" prop="esGoodsName"></el-table-column>
+              <el-table-column align="center" label="数量" prop="num"></el-table-column>
+              <el-table-column align="center" label="订单状态" prop="status">
+				  <template slot-scope="scope">
+					  {{filterStatus(scope.row.status)}}
+				  </template>
+			  </el-table-column>
+            </el-table>
+			<div class="pagination clearfix">
+				<div class="fr">
+					<el-pagination
+						@current-change="handleCurrentChange"
+						:current-page="pageNum"
+						layout="total, prev, pager, next, jumper"
+						:total="listTotal"
+					></el-pagination>
+				</div>
+			</div>
+          </div>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import { getInfo, getOrder, getGoodsRank  } from '@/api/secondHandMallHome'
+import { dateFormat } from '@/utils/util'
+
+export default {
+  name: 'Dashboard',
+  data() {
+    return {
+      statisticsData: {
+        total: 0,
+        sold: 0,
+        dfh: 0,
+        refund: 0,
+        orderShareAmount: 0,
+        todayVisit: 0,
+        yestodayVisit: 0,
+        todayOrder: 0,
+        yestodayOrder: 0,
+        todayProfit: 0,
+        yestodayProfit: 0,
+        orderTax: 0
+      }, // 统计数据
+      dataList: [], // 列表数据
+      transaction: {
+        amount: 0, // 成交额
+        avgAmount: 0, // 人均消费
+        orderNum: 0, // 成交量
+        countAry: []
+      },
+      listLoading: true, // 列表加载loading
+      chartLoading: true, // 图表加载loading
+      screenForm: {
+        workOrderType: '',
+        echartsFlag : '1',
+        goodsFlag: '1'
+      },
+      existChart: null,
+	  pageNum: 1,
+	  listTotal: 0
+    }
+  },
+  directives: {
+    resize: { // 指令的名称
+      bind(el, binding) { // el为绑定的元素,binding为绑定给指令的对象
+        // console.log(el,"绑定",binding);
+        let width = '', height = '';
+        function isResize() {
+          const style = document.defaultView.getComputedStyle(el);
+          if (width !== style.width || height !== style.height) {
+            binding.value({width:style.width,height:style.height});  // 关键(这传入的是函数,所以执行此函数)
+          }
+          width = style.width;
+          height = style.height;
+        }
+        el.__vueSetInterval__ = setInterval(isResize, 300);
+      },
+      unbind(el) {
+        // console.log(el,"解绑");
+        clearInterval(el.__vueSetInterval__);
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'name'
+    ]),
+    dateFormat() {
+      return dateFormat("YYYY-mm-dd WWW", new Date())
+    },
+    personCountCompute() {
+        if (this.statisticsData.todayVisit >= this.statisticsData.yestodayVisit) {
+          return 100
+        } else {
+          return this.statisticsData.todayVisit / this.statisticsData.yestodayVisit * 100
+        }
+    },
+    orderCountCompute() {
+      if (this.statisticsData.todayOrder >= this.statisticsData.yestodayOrder) {
+        return 100
+      } else {
+        return this.statisticsData.todayOrder / this.statisticsData.yestodayOrder * 100
+      }
+    },
+    profitCompute() {
+      if (this.statisticsData.todayProfit >= this.statisticsData.yestodayProfit) {
+        return 100
+      } else {
+        return this.statisticsData.todayProfit / this.statisticsData.yestodayProfit * 100
+      }
+    },
+	filterStatus(){
+		return function(status){
+			let obj = {
+				SAVE: '买家下单',
+				WAIT: '待确认',
+				PAID: '待发货',
+				SEND: '卖家发货',
+				OVER: '交易完成',
+				TIME_OUT: '超时',
+				CANCEL: '取消',
+				WAIT_REFUND: '售后中',
+				REFUND: '已退'
+			}
+			return obj[status]
+		}
+	}
+  },
+  created() {
+    this.getStatisticsData();
+  },
+  methods: {
+    // 获取统计数据
+    getStatisticsData() {
+      getInfo().then(res => {
+        this.statisticsData = res.data
+      })
+      this.getOrder()
+      this.getGoodsRank()
+    },
+    getOrder() {
+      getOrder({
+        flag: this.screenForm.echartsFlag, 
+        // workOrderType: this.screenForm.workOrderType
+      }).then(res => {
+        this.transaction = res.data
+        this.drawLine()
+      })
+    },
+    getGoodsRank() {
+      this.listLoading = true
+      getGoodsRank({ flag: this.screenForm.goodsFlag,pageNum: this.pageNum,pageSize: 10 }).then(res => {
+        this.dataList = res.data.records
+		this.listTotal = res.data.total
+        this.listLoading = false
+      })
+    },
+	handleCurrentChange(val) {
+		this.pageNum = val;
+		this.getGoodsRank();
+	},
+    // 切换tabs
+    changeEchartsDateValue() {
+      this.getOrder()
+    },
+    changeTableDateValue() {
+      this.getGoodsRank()
+    },
+    DomResize(data){
+      let {width,height} = data;
+      // console.log("width:",width,"height:",height,"   dom尺寸方式改变");
+      if(this.existChart){
+        this.existChart.resize()
+      }
+    },
+    drawLine(){
+      // 基于准备好的dom,初始化echarts实例
+      if (this.existChart) {
+        this.existChart.dispose()
+      }
+      this.existChart = this.$echarts.init(this.$refs.myChart)
+      // 绘制图表
+      this.existChart.setOption({
+        color: ['#80FFA5'],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+            label: {
+              backgroundColor: '#6a7985'
+            }
+          }
+        },
+        grid: {
+          left: '3%',
+          right: '7%',
+          bottom: '3%',
+          containLabel: true
+        },
+        xAxis: [
+          {
+            type: 'category',
+            boundaryGap: false,
+            data: this.screenForm.echartsFlag === '1' || this.screenForm.echartsFlag === '2' ? ['0', '1', '2', '3', '4', '5', '6','7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19','20', '21', '22', '23'] : this.transaction.x
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value'
+          }
+        ],
+        series: [
+          {
+            name: '数量',
+            type: 'line',
+            stack: '数量',
+            smooth: true,
+            lineStyle: {
+              width: 0
+            },
+            showSymbol: false,
+            areaStyle: {
+              opacity: 0.8,
+              color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                offset: 0,
+                color: 'rgba(128, 255, 165)'
+              }, {
+                offset: 1,
+                color: 'rgba(1, 191, 236)'
+              }])
+            },
+            emphasis: {
+              focus: 'series'
+            },
+            data: this.transaction.countAry
+          }
+        ]
+      });
+    },
+	toOrder(orderId){
+		this.$router.push({
+		  name: 'orderManagement',
+		  params: {
+		    pageName: orderId,
+		    pageType: 'detail',
+		    pageCode: orderId
+		  },
+		  query: {
+		    id: orderId,
+		    orderId: orderId
+		  }
+		})
+	}
+  }
+}
+</script>
+<style lang="scss" scoped>
+
+.dashboard {
+  &-container {
+    background: #f5f5f5;
+    padding: 30px;
+    min-height: calc(100vh - 86px);
+    .top-container {
+      .today {
+        font-weight: bold;
+        padding-bottom: 10px;
+      }
+      .today-content {
+        font-size: 14px;
+      }
+      .right-row {
+        .el-col {
+          height: 44px;
+          display: flex;
+          flex-direction: column;
+          align-items: center;
+          justify-content: center;
+          .icon {
+            height: 36px;
+            width: 36px;
+          }
+          .num {
+            font-size: 18px;
+            font-weight: bold;
+            text-align: center;
+          }
+          .name {
+            text-align: center;
+            font-size: 12px;
+            margin-top: 4px;
+          }
+        }
+      }
+    }
+    
+    .middle-container {
+      margin-top: 20px;
+      .item {
+        padding: 15px;
+        background: #ffffff;
+        height: 110px;
+        .title {
+          font-size: 14px;
+          color: #666;
+          margin-bottom: 5px;
+        }
+        .icon {
+          height: 50px;
+          width: 50px;
+          padding-top: 15px;
+        }
+        .right-data {
+          padding: 5px 0 0 10px;
+          .progress {
+            margin: 5px 0;
+          }
+          .data {
+            font-size: 14px;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+          }
+        }
+      }
+      .last-item {
+        .content {
+          display: flex;
+          flex-direction: column;
+          align-items: center;
+          justify-content: center;
+          .num {
+            padding: 10px 0 5px 0;
+            font-size: 24px;
+            font-weight: bold;
+            color: #76b36b;
+          }
+          .text {
+            font-size: 12px;
+          }
+        }
+      }
+    }
+
+    .bottom-container {
+      margin-top: 15px;
+      .content {
+        height: 450px;
+        background: #ffffff;
+        .tabs-container {
+          padding: 10px 10px 0 10px;
+        }
+        .table {
+          margin-top: 10px;
+        }
+      }
+    }
+
+    
+    
+  }
+}
+</style>

+ 382 - 0
src/views/secondHandMall/activistOrder/index.vue

@@ -0,0 +1,382 @@
+<template>
+  <zj-page-container>
+    <zj-page-fill>
+      <zj-tab-page ref="tabPage" :defaultActives="[{ key: 'list', label: $route.meta.title + '-列表', essential: true }]">
+        <template slot-scope="{activeKey, data}">
+          <div :style="{height:activeKey == 'list'?'100%':'0px'}" style="width:100%; height:100%; overflow: hidden;">
+            <div style="width:100%; height:100%;box-sizing: border-box; padding:10px;">
+              <zj-page-container>
+                <div class="screen-container">
+                  <el-form ref="screenForm" :model="screenForm" label-width="70px" size="small" label-position="left">
+                    <el-row :gutter="20">
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="订单号" prop="orderId">
+                          <el-input v-model="screenForm.orderId" placeholder="请输入订单号"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="商品名称" prop="goodsName">
+                          <el-input v-model="screenForm.goodsName" placeholder="请输入商品名称"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="会员昵称" prop="memberName">
+                          <el-input v-model="screenForm.memberName" placeholder="请输入会员昵称"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="手机号" prop="phone">
+                          <el-input v-model="screenForm.phone" placeholder="请输入手机号"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="状态" prop="evaluateStatus">
+                          <el-select v-model="screenForm.evaluateStatus" placeholder="全部">
+                            <el-option label="全部" value=""></el-option>
+                            <el-option label="未评价订单" :value="0"></el-option>
+                            <el-option label="已评价订单" :value="3"></el-option>
+                            <el-option label="差评订单" :value="1"></el-option>
+                            <el-option label="好评订单" :value="2"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="创建时间" prop="createDate" style="height: 33px;">
+                          <el-date-picker v-model="screenForm.createDate" type="datetimerange"
+                            value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期"
+                            end-placeholder="结束日期">
+                          </el-date-picker>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="支付时间" prop="payDate" style="height: 33px;">
+                          <el-date-picker v-model="screenForm.payDate" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"
+                            range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+                          </el-date-picker>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6" class="tr">
+                        <el-form-item label="">
+                          <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
+                          <el-button size="small" @click="resetScreenForm">清空</el-button>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                  </el-form>
+                </div>
+                <div class="tabs-container order-tabs-container clearfix" style="margin: 10px 0!important;">
+                  <div class="fl">
+                    <el-tabs v-model="tabCurrent" type="card" @tab-click="changeTabs" class="fl" size="small" style="margin-right: 10px">
+                      <el-tab-pane label="全部" name="ALL"></el-tab-pane>
+                      <el-tab-pane label="待付款" name="NOPAY"></el-tab-pane>
+                      <el-tab-pane label="待确认" name="DQR"></el-tab-pane>
+                      <el-tab-pane label="待发货" name="DFH"></el-tab-pane>
+                      <el-tab-pane label="已发货" name="YFH"></el-tab-pane>
+                      <el-tab-pane label="已完成" name="OVER"></el-tab-pane>
+                      <el-tab-pane label="退款/取消" name="CLOSE"></el-tab-pane>
+                      <el-tab-pane label="已超时" name="TIMEOUT"></el-tab-pane>
+                    </el-tabs>
+                    <el-button class="fl" type="primary" size="small">新增</el-button>
+                  </div>
+                  <div class="fr">
+                    <el-button size="small" type="primary">导出</el-button>
+                  </div>
+                </div>
+                <zj-page-fill>
+                  <div class="order-main-container">
+                    <!--  -->
+                    <div class="table-top">
+                      <el-row style="width:100%">
+                        <el-col :span="3">
+                          <span class="item product">商品信息</span>
+                        </el-col>
+                        <el-col :span="3" style="text-align: right"><span class="item">单价(元)/数量</span></el-col>
+                        <el-col :span="4" style="text-align: center"><span class="item">买家信息</span></el-col>
+                        <el-col :span="4" style="text-align: center"><span class="item">收货信息</span></el-col>
+                        <el-col :span="4" style="text-align: center"><span class="item">实付金额</span></el-col>
+                        <el-col :span="3" style="text-align: center"><span class="item">订单状态</span></el-col>
+                        <el-col :span="3" style="text-align: center"><span class="item">操作</span></el-col>
+                      </el-row>
+                    </div>
+                    <!--  -->
+                    <div class="order-item" v-for="order in dataList" :key="order.orderId">
+                      <div class="order-top">
+                        <span><b>订单号</b>:{{ order.orderId }}</span>
+                        <span><b>下单时间</b>:{{ order.createTime }}</span>
+                        <el-tag>商城销售</el-tag>
+                        <div class="fr"></div>
+                      </div>
+                      <div class="order-content">
+                        <el-row style="width:100%;">
+                          <el-col :span="6" style="height: 100%;">
+                            <div class="col-item-pro">
+                              <div class="pro-item" v-for="orderItem in order.orderDetails" :key="orderItem.orderDetailId">
+                                <div class="left">
+                                  <div class="image">
+                                    <img :src="orderItem.imgUrl" style="height:80px;width: 80px;">
+                                  </div>
+                                  <div class="main">
+                                    <span><el-tag type="danger" effect="plain" size="mini" style="margin-right: 4px"
+                                        v-if="orderItem.promotionFullPieceId">满件打折</el-tag>{{ orderItem.goodsName }}</span>
+                                    <span class="spec"
+                                      v-if="orderItem.goodsSpecName === '默认' && orderItem.goodsSpecValue === '默认'">默认</span>
+                                    <span class="spec" v-else>{{ orderItem.goodsSpecName }}-{{ orderItem.goodsSpecValue
+                                      }}</span>
+                                  </div>
+                                </div>
+                                <div class="right">
+                                  <span>¥{{ orderItem.price }}</span>
+                                  <span>x{{ orderItem.num }}</span>
+                                </div>
+                              </div>
+                            </div>
+                          </el-col>
+                          <el-col :span="4" style="height: 100%;">
+                            <div class="col-item">
+                              <div>{{ order.userName }}</div>
+                              <div>{{ order.phone }}</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="4" style="height: 100%;">
+                            <div class="col-item">
+                              <div>{{ order.receUserName }}/{{ order.recePhone }}</div>
+                              <div class="ellipsis-2">{{ order.province + order.city + order.area + order.street + order.receAddress + order.houseNo }}</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="4" style="height: 100%;">
+                            <div class="col-item">
+                              <div class="totalprice">¥{{ order.payAmount }}</div>
+                              <div style="font-size: 12px" v-if="order.discountAmount">(<span>-{{ order.discountAmount
+                                  }}</span><span v-if="order.promotionDiscountRate">/{{ order.promotionDiscountRate * 10
+                                  }}折</span>)</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="3" style="height: 100%;">
+                            <div class="col-item">
+                              <div style="display: flex; align-items: center;">
+                                <img src="@/assets/order/CLOSE.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.orderStatus == 'CLOSE'">
+                                <img src="@/assets/order/DFH.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.orderStatus == 'DFH'">
+                                <img src="@/assets/order/NOPAY.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.orderStatus == 'NOPAY'">
+                                <img src="@/assets/order/OVER.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.orderStatus == 'OVER'">
+                                <img src="@/assets/order/TIMEOUT.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.orderStatus == 'TIMEOUT'">
+                                <img src="@/assets/order/YFH.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.orderStatus == 'YFH'">
+                                <span style="margin-left: 4px">{{ order.orderStatus | ORDER_CURRENT_STATUS_FILTER }}</span>
+                              </div>
+                              <div>({{ order.toWorkOrder ? '已派单' : '未派单' }})</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="3" style="height: 100%;">
+                            <div class="col-item">
+                              <div class="operate">
+                                <el-popconfirm title="确定确认订单吗?" @confirm="">
+                                  <el-button slot="reference" type="text" size="small">确认订单</el-button>
+                                </el-popconfirm>
+                              </div>
+                            </div>
+                          </el-col>
+                        </el-row>
+                      </div>
+                    </div>
+                    <div class="no-data" v-if="dataList.length <= 0">暂无订单</div>
+                  </div>
+                </zj-page-fill>
+                <div class="pagination clearfix" style="margin-top:10px;">
+                  <div class="fr">
+                    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                      :current-page="currentPage" :page-sizes="[10, 20, 30, 50]" :page-size="10"
+                      layout="total, sizes, prev, pager, next, jumper" :total="listTotal">
+                    </el-pagination>
+                  </div>
+                </div>
+              </zj-page-container>
+            </div>
+          </div>
+          <!-- 新增 -->
+          <div v-if="activeKey == 'remark'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 确认订单 -->
+          <div v-if="activeKey == 'remark'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 确认收款 -->
+          <div v-if="activeKey == 'materialDetail'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 取消订单 -->
+          <div v-if="activeKey == 'deliverGoods'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 查看物流 -->
+          <div v-if="activeKey == 'editAddress1'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 查看详情 -->
+          <div v-if="activeKey == 'editAddress2'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 退货 -->
+          <div v-if="activeKey == 'editAddress3'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+        </template>
+      </zj-tab-page>
+    </zj-page-fill>
+  </zj-page-container>
+
+</template>
+
+<script>
+import { getList } from "@/api/order";
+import '@/styles/order-list.scss'
+export default {
+  components: {},
+
+  data() {
+    return {
+      screenForm: { // 筛选表单数据
+        orderId: '', // 订单号
+        goodsName: '', // 商品名称
+        memberName: '', // 会员昵称
+        phone: '', // 手机号
+        websitId: '', // 网点名称
+        orderStatus: '', // 状态
+        createDate: '', // 创建时间
+        payDate: '', // 支付时间
+        exchangeCode: '', // 兑换码
+        evaluateStatus: '', // 评价状态
+        sendStatus: '', // 派单异常
+        workerOrderNo: '', // 信息编号
+      },
+      screen_status: [ // 筛选字段 - 状态
+        { label: '待付款', value: 'NOPAY' },
+        { label: '待发货', value: 'DFH' },
+        { label: '已发货', value: 'YFH' },
+        { label: '已完成', value: 'OVER' },
+        { label: '已退款', value: 'CLOSE' }
+      ],
+      tabCurrent: 'ALL',
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+      dataList: [],
+    }
+  },
+  computed: {
+
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    changeTabs(tab, event) {
+      this.screenForm.orderStatus = this.tabCurrent === 'ALL' ? '' : tab.$options.propsData.name
+      this.currentPage = 1;
+      this.getList();
+    },
+    // 获取数据列表
+    getList() {
+      let params = {
+        orderId: this.screenForm.orderId, // 订单号
+        productName: this.screenForm.goodsName, // 商品名称
+        userName: this.screenForm.memberName, // 会员昵称
+        phone: this.screenForm.phone, // 手机号
+        websitId: this.screenForm.websitId,
+        exchangeCode: this.screenForm.exchangeCode,
+        orderStatus: this.screenForm.orderStatus, // 状态
+        startCreateTime: this.screenForm.createDate[0] ? this.screenForm.createDate[0] : null, // 创建时间
+        endCreateTime: this.screenForm.createDate[1] ? this.screenForm.createDate[1] : null, // 创建时间
+        startPayTime: this.screenForm.payDate[0] ? this.screenForm.payDate[0] : null, // 支付时间
+        endPayTime: this.screenForm.payDate[1] ? this.screenForm.payDate[1] : null, // 支付时间
+        isNegative: this.screenForm.evaluateStatus, // 评价状态
+        abnormalDispatch: this.screenForm.sendStatus, // 派单异常
+        workerOrderNo: this.screenForm.workerOrderNo, // 信息编号
+        pageNum: this.currentPage,
+        pageSize: this.pageSize
+      };
+      getList(params).then(res => {
+        res.data.records.forEach(item => {
+          item.selected = false;
+        });
+        this.dataList = res.data.records;
+        this.listTotal = res.data.total;
+      })
+    },
+    openForm(type, order) {
+
+    },
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = 1;
+      this.getList();
+    },
+
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val;
+      this.getList();
+    },
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1;
+      this.getList();
+    },
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.getList();
+    },
+  }
+}
+
+</script>

+ 464 - 0
src/views/secondHandMall/commodityManagement/form.vue

@@ -0,0 +1,464 @@
+<template>
+  <zj-page-container>
+    <zj-page-fill class="neibuview">
+      <zj-form-container ref="formRef" :form-data="formData" :form-rules="formRules">
+        <zj-form-module title="商品详情" :form-data="formData" :form-items="formItems" label-width="80px">
+        </zj-form-module>
+        <zj-form-module title="出售信息" class="my-module" :form-data="formData.order" :form-items="formItems2"
+          label-width="0px"/>
+          <zj-form-module title="查看留言" class="my-module" :form-data="formData.order" :form-items="formItems3"
+          label-width="0px"/>
+      </zj-form-container>
+    </zj-page-fill>
+    <div style="box-sizing: border-box; padding: 10px; text-align: right;">
+      <el-button type="primary" size="small" @click="handleSubmit">保存</el-button>
+      <el-button v-if="formData.id && ~['SALE'].indexOf(formData.status)" type="primary" size="small"
+        @click="copyGoods">克隆商品</el-button>
+      <el-button v-if="formData.id && ~['ON'].indexOf(formData.status)" type="primary" size="small"
+        @click="setStatus('OFF')">下架</el-button>
+      <el-button v-if="formData.id && ~['ON', 'OFF'].indexOf(formData.status)" type="primary" size="small"
+        @click="zhuanxiaoshou">转销售</el-button>
+      <el-button v-if="formData.id && ~['OFF'].indexOf(formData.status)" type="primary" size="small"
+        @click="setStatus('ON')">重新上架</el-button>
+      <el-button size="small" @click="handleClose">取消</el-button>
+    </div>
+  </zj-page-container>
+</template>
+
+<script>
+import ImageUpload from '@/components/Common/image-upload.vue'
+import { esGoodsDetail, esGoodsCopy, esGoodsBatchUpdateStatus, esGoodsReply } from '@/api/commodityManagement'
+export default {
+  components: { ImageUpload },
+  props: {
+    detailId: {
+      type: String,
+      default: ''
+    }
+  },
+  data() {
+    return {
+      formData: {
+        "brand": "",
+        "categoryId": "",
+        "categoryName": "",
+        "companyWechatId": "",
+        "companyWechatName": "",
+        "del": true,
+        "goodsName": "",
+        "goodsNote": "",
+        "imgList": [],
+        "isTop": true,
+        "likeCount": 0,
+        "makeDate": "",
+        "mark": "",
+        "markId": "",
+        "messageList": [],
+        "operateRecordList": [],
+        "power": "",
+        "price": 0,
+        "qty": 0,
+        "queryCount": 0,
+        "remark": "",
+        "sort": 0,
+        "status": "",
+        "topTime": "",
+        "userId": ""
+      },
+      formRules: {},
+      publishStatus: [
+        { label: '下架', value: "OFF" },
+        { label: '上架', value: "ON" },
+        { label: '已卖出', value: "SALE" },
+      ],
+    }
+  },
+  computed: {
+    disabled(){
+      return this.detailId? !~['ON', 'OFF'].indexOf(this.formData?.status) : false
+    },
+    formItems() {
+      return [
+        {
+          name: 'el-input',
+          md: 12,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '商品分类', prop: 'categoryName' }
+        },
+        {
+          name: 'el-radio',
+          options: this.publishStatus,
+          attributes: { disabled: this.disabled },
+          md: 12,
+          formItemAttributes: { label: '发布状态', prop: 'status' }
+        },
+        {
+          name: 'el-input',
+          md: 12,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '商品名称', prop: 'goodsName' }
+        },
+        {
+          name: 'el-input',
+          md: 12,
+          attributes: { disabled: this.disabled, type: 'textarea' },
+          formItemAttributes: { label: '商品描述', prop: 'goodsNote' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '商品价格', prop: 'price' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '上架数量', prop: 'qty' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '商品品牌', prop: 'brand' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '功率(W)', prop: 'power' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '制造日期', prop: 'makeDate' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '联系电话', prop: 'linkPhone' }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: { disabled: true },
+          formItemAttributes: { label: '点赞量', prop: 'likeCount' }
+        },
+        {
+          name: 'slot-component',
+          md: 6,
+          attributes: { disabled: true, placeholder: '' },
+          formItemAttributes: { label: '留言量', prop: '' },
+          render: (h, { props }) => {
+            return (
+              <el-input
+                value={Number(this.formData?.messageList?.length)}
+                disabled={true}
+                size="mini"
+                placeholder=""
+              ></el-input>
+            )
+          },
+        },
+        {
+          name: 'el-radio',
+          options: [
+            { label: '一级能效', value: "一级能效" },
+            { label: '二级能效', value: "二级能效" },
+            { label: '三级能效', value: "三级能效" },
+            { label: '四级能效', value: "四级能效" },
+            { label: '五级能效', value: "五级能效" },
+          ],
+          md: 24,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '能效标识', prop: 'mark' }
+        },
+        {
+          name: 'slot-component',
+          md: 24,
+          attributes: { disabled: this.disabled },
+          formItemAttributes: { label: '商品图片', prop: 'imgList' },
+          render: (h, { props }) => {
+            return (<div>
+              <ImageUpload file-list={this.formData.imgList} limit={this.formData?.imgList?.length + 1} isEdit={false} />
+            </div>)
+          }
+        },
+      ]
+    },
+    formItems2() {
+      return [{
+        name: 'slot-component',
+        md: 24,
+        attributes: { disabled: this.disabled },
+        formItemAttributes: { label: '', prop: '', 'label-width': '0px' },
+        render: (h, { props }) => {
+          var { formData } = props
+          console.log(formData, 999)
+          return (<div>
+            <el-row gutter={10}>
+              <el-col xs={24} sm={24} md={8} lg={8} xl={8}>
+                <div class='info'>
+                  <div class='info_title'>上架人信息</div>
+                  <div class='info_bottom'>
+                    <div class='info_bottom_lt'>
+                      <el-image
+                        style='width: 40px; height: 40px'
+                        src={this.$imageUrl + this.formData?.order?.buyerUserPic}
+                      >
+                      </el-image>
+                    </div>
+                    <div class='info_bottom_rt'>
+                      <div>微信昵称:{formData.userName}</div>
+                      <div>微信手机号:{formData.phone}</div>
+                      <div>发布时间:{formData.goodsCreateTime}</div>
+                    </div>
+                  </div>
+                </div>
+              </el-col>
+              <el-col xs={24} sm={24} md={8} lg={8} xl={8}>
+                <div class='info'>
+                  <div class='info_title'>买家信息</div>
+                    <div class='info_bottom'>
+                      <div class='info_bottom_lt'>
+                        <el-image
+                          style='width: 40px; height: 40px'
+                          src={this.$imageUrl + this?.formData?.userPic}
+                        >
+                        </el-image>
+                      </div>
+                      <div class='info_bottom_rt'>
+                        <div>微信昵称:{formData.buyerUserName}</div>
+                        <div>微信手机号:{formData.buyerUserPhone}</div>
+                        <div>收货人信息:{formData.consigneeName}</div>
+                        <div>收货人地址:{formData.address}</div>
+                        <div>支付方式:{formData.payType === 'WECHAT' ? '微信支付' : ''}</div>
+                      </div>
+                    </div>
+                </div>
+              </el-col>
+              <el-col xs={24} sm={24} md={8} lg={8} xl={8}>
+                <div class='info'>
+                  <div class='info_title'>物流信息</div>
+                  <div class='info_bottom'>
+                    <div class='info_bottom_rt'>
+                      <div>
+                        <el-radio-group value={formData.logisticsType}>
+                          <el-radio label='SELF'>自提</el-radio>
+                          <el-radio label='DELIVERY'>物流</el-radio>
+                        </el-radio-group>
+                      </div>
+                      <div>快递单号:{formData.logisticsNum}</div>
+                      <div>快递公司:{formData.logisticsName}</div>
+                      <el-button type='primary' size='small' onClick={() => { }}
+                      >查看物流
+                      </el-button>
+                    </div>
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>)
+        }
+      }]
+    },
+    formItems3() {
+      return [{
+        name: 'slot-component',
+        md: 24,
+        attributes: { disabled: this.disabled },
+        formItemAttributes: { label: '', prop: 'messageList', 'label-width': '0px' },
+        render: (h, { props }) => {
+          var { formData } = props
+          return <div>
+            <zj-table
+              columns={[
+                {
+                  columnAttributes: {
+                    label: '留言人名称',
+                    prop: 'createBy'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '留言内容',
+                    prop: 'content'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '留言时间',
+                    prop: 'createTime'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '回复人名称',
+                    prop: 'replyBy'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '回复内容',
+                    prop: 'replyContent'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '回复时间',
+                    prop: 'replyTime'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '操作',
+                  },
+                  render: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">
+                      <el-button type="text" onClick={() => {this.msgSend(row)}}>回复</el-button>
+                    </div>
+                  }
+                }
+              ]}
+              tableData={this.formData.messageList}>
+            </zj-table>
+          </div>
+        }
+      }]
+    },
+  },
+  watch: {
+    detailId: {
+      handler(newVal, oldVal) {
+        if (!newVal) {
+          return
+        }
+        esGoodsDetail({ id: newVal }).then(res => {
+          console.log(res.data)
+          this.formData = {
+            ...res.data,
+            imgList: res.data.imgList.map(item => {
+              return {
+                ...item,
+                imgUrl: item.imgUrl
+              }
+            })
+          }
+        })
+      },
+      deep: true,
+      immediate: true,
+    }
+  },
+  methods: {
+    msgSend(row){
+      this.$prompt('留言回复', '回复', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        inputType: "textarea"
+      }).then(({ value }) => {
+        if(value){
+          esGoodsReply({
+            id:this.detailId,
+            messageId:row.id,
+            content:value
+          }).then(res => {
+            this.$message({ type: 'success', message: `设置成功!` })
+            esGoodsDetail({ id: this.detailId }).then(res2 => {
+              this.formData = {
+                ...res2.data,
+                imgList: res2.data.imgList.map(item => {
+                  return {
+                    ...item,
+                    imgUrl: item.imgUrl
+                  }
+                })
+              }
+            })
+          })
+        }
+      })
+    },
+    copyGoods() {
+      esGoodsCopy({ id: this.detailId.id }).then(res => {
+        this.$message({ type: 'success', message: `克隆成功!` })
+        this.handleClose()
+      })
+    },
+    setStatus(status){
+      esGoodsBatchUpdateStatus({ ids: this.detailId.id,status:status }).then(res => {
+        this.$message({ type: 'success', message: `设置成功!` })
+        this.handleClose()
+      })
+    },
+    zhuanxiaoshou(){
+      
+    },
+    handleSubmit() {
+
+    },
+    handleClose() {
+      this.$emit('back')
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+.info {
+  .info_title {
+    font-size: 16px;
+    font-weight: 700;
+  }
+
+  .info_bottom {
+    display: flex;
+    margin: 10px 0;
+
+    .info_bottom_lt {
+      width: 40px;
+      height: 40px;
+    }
+
+    .info_bottom_rt {
+      padding: 0 0 0 10px;
+      line-height: 30px;
+
+      .photoPZ {
+        display: inline-block;
+        vertical-align: text-top;
+      }
+    }
+  }
+}
+</style>
+<style lang="scss" scoped>
+.neibuview {
+  box-sizing: border-box;
+  padding-left: 16px;
+
+  ::v-deep &>.zj-page-fill-scroll {
+    box-sizing: border-box;
+    padding-right: 16px;
+
+    &>div:nth-child(1) {
+      margin-top: 20px;
+    }
+  }
+}
+
+.header1style {
+  text-align: right;
+  font-size: 12px;
+  color: red;
+  line-height: 18px;
+}
+
+.my-module {
+  ::v-deep .el-form-item__content {
+    margin-left: 12px !important;
+  }
+}
+</style>

+ 185 - 0
src/views/secondHandMall/commodityManagement/index.vue

@@ -0,0 +1,185 @@
+<template>
+  <template-page ref="pageRef" :get-list="getList" :export-list="exportList" :column-parsing="columnParsing"
+    :more-parameters="moreParameters" :operation="operation()" :operation-column-width="240" :replace-or-not-map="false"
+    :optionsEvensGroup="optionsEvensGroup" :tableAttributes="tableAttributes" :tableEvents="tableEvents">
+    <div class="cartographer_big">
+      <el-dialog title="编辑" width="100%" :modal="false" :visible.sync="visible" :before-close="handleClose">
+        <Form v-if="visible" :detail-id="detailId" @back="handleClose" />
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import operation_mixin from '@/components/template/operation_mixin.js'
+import Form from './form.vue'
+import { esGoodsList, esGoodsListExport, esGoodsDel, esGoodsTop, esGoodsBatchUpdateStatus } from '@/api/commodityManagement'
+export default {
+  components: { TemplatePage, Form },
+  mixins: [import_mixin, operation_mixin],
+  props: {},
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            this.optionsEvensAuth('batchListing', {
+              click: () => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.warning('请勾选')
+                  return
+                }
+                esGoodsBatchUpdateStatus({
+                  ids:this.recordSelected.map(item=>item.id).join(","),
+                  status:"ON"
+                }).then(res => {
+                  this.$message({ type: 'success', message: `设置成功!` })
+                  this.$refs.pageRef.refreshList()
+                })
+              }
+            })
+          ],
+          [
+            this.optionsEvensAuth('batchDelist', {
+              click: () => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.warning('请勾选')
+                  return
+                }
+                esGoodsBatchUpdateStatus({
+                  ids:this.recordSelected.map(item=>item.id).join(","),
+                  status:"OFF"
+                }).then(res => {
+                  this.$message({ type: 'success', message: `设置成功!` })
+                  this.$refs.pageRef.refreshList()
+                })
+              }
+            })
+          ]
+        ]
+      ],
+      visible: false,
+      detailId: '',
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true,
+        selectable: this.selectable
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  computed: {
+    moreParameters() {
+      return [
+        {
+          name: '状态',
+          key: 'orderType',
+          value: '',
+          conditions: [
+            {
+              label: `全部`,
+              value: ''
+            },
+            {
+              label: `上架`,
+              value: 'ON'
+            },
+            {
+              label: `下架`,
+              value: 'OFF'
+            },
+            {
+              label: `已卖出`,
+              value: 'SALE'
+            }
+          ]
+        }
+      ]
+    }
+  },
+  methods: {
+    selectable(row, index) {
+      return ["ON", "OFF"].includes(Object.entries(row.selectMapData.status).find(([key, val]) => val == row.status)?.[0])
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 列表请求函数
+    getList(p, cb) {
+      if (p.orderType) {
+        p.params.push({ param: 'a.status', compare: '=', value: p.orderType })
+      }
+      cb && cb(p)
+      return esGoodsList(p)
+    },
+    // 列表导出函数
+    exportList: esGoodsListExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    operation() {
+      return this.operationBtn({
+        edit: {
+          click: ({ row, index, column }) => {
+            this.detailId = row.id
+            this.visible = true
+          }
+        },
+        del: {
+          prompt: "是否确定删除?",
+          conditions: ({ row, index, column }) => {
+            return row.status == "SALE"
+          },
+          click: ({ row, index, column }) => {
+            esGoodsDel({ id: row.id }).then(res => {
+              this.$message({ type: 'success', message: `删除成功!` })
+              this.$refs.pageRef.refreshList()
+            })
+          }
+        },
+        topFix: {
+          prompt: "是否确定置顶?",
+          conditions: ({ row, index, column }) => {
+            return !row.isTop
+          },
+          click: ({ row, index, column }) => {
+            esGoodsTop({ id: row.id, isTop: true }).then(res => {
+              this.$message({ type: 'success', message: `设置成功!` })
+              this.$refs.pageRef.refreshList()
+            })
+          }
+        },
+        unTopFix: {
+          prompt: "是否确定取消置顶?",
+          conditions: ({ row, index, column }) => {
+            return row.isTop
+          },
+          click: ({ row, index, column }) => {
+            esGoodsTop({ id: row.id, isTop: false }).then(res => {
+              this.$message({ type: 'success', message: `设置成功!` })
+              this.$refs.pageRef.refreshList()
+            })
+          }
+        }
+      })
+    },
+    handleClose() {
+      this.detailId = ''
+      this.visible = false
+      this.$refs.pageRef.refreshList()
+    }
+  }
+}
+</script>
+
+<style scoped></style>

+ 282 - 0
src/views/secondHandMall/orderManagement/add.vue

@@ -0,0 +1,282 @@
+<template>
+  <zj-form-container ref="formRef" :form-data="formData" :form-attributes="{ size: 'mini' }">
+    <zj-form-module title="客户信息" label-width="100px" :form-data="formData" :form-items="formItems" />
+    <zj-form-module title="商品信息" label-width="100px" :form-data="formData" :form-items="formItems2" />
+  </zj-form-container>
+</template>
+
+<script>
+import getLbsAmapRegion from "./getLbsAmapRegion.js"
+import ImageUpload from '@/components/file-upload'
+import editTable from '@/components/template/editTable.js'
+export default {
+  components: {ImageUpload},
+  mixins: [getLbsAmapRegion, editTable],
+  data(){
+    return {
+      formData: {
+        imgSrc: [],
+        promotionQuestionnaireQrcodes: []
+      }
+    }
+  },
+  computed: {
+    formItems(){
+      return [{
+        name: 'el-input',
+        md: 6,
+        attributes: { disabled: false },
+        formItemAttributes: { label: '商品分类', prop: 'categoryName' }
+      },{
+        name: 'el-input',
+        md: 6,
+        attributes: { disabled: false },
+        formItemAttributes: { label: '商品分类', prop: 'categoryName' }
+      },{
+        name: 'el-radio',
+        options: [
+          { label: '一级能效', value: "一级能效" },
+          { label: '二级能效', value: "二级能效" },
+        ],
+        md: 6,
+        attributes: { disabled: this.disabled },
+        formItemAttributes: { label: '能效标识', prop: 'mark' }
+      },{
+        name: 'el-radio',
+        options: [
+          { label: '一级能效', value: "一级能效" },
+          { label: '五级能效', value: "五级能效" },
+        ],
+        md: 6,
+        attributes: { disabled: this.disabled },
+        formItemAttributes: { label: '能效标识', prop: 'mark' }
+      },...this.amapRegion,{
+        name: 'el-input',
+        md: 24,
+        attributes: { disabled: false, type:"textarea" },
+        formItemAttributes: { label: '备注', prop: 'categoryName' }
+      },{
+        md: 24,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '附件',
+          prop: 'imgSrc',
+          rules: []
+        },
+        render: (h, { props, onInput }) => {
+          return (
+            <ImageUpload fileList={this.formData.imgSrc} limit={100}/>
+          )
+        }
+      }]
+    },
+    formItems2(){
+      return [{
+          name: 'slot-component',
+          md: 24,
+          formItemAttributes: {
+            label: '',
+            'label-width': '0px',
+            prop: 'promotionQuestionnaireQrcodes',
+            rules: []
+          },
+          render: (h, { props, onInput }) => {
+            var { value } = props
+            return this.convertTableJson(
+              value,
+              [
+                {
+                  columnAttributes: {
+                    label: '商品分类',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '商品名称',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '单位',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '上架数量',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '订单数量',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '商品价格',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '金额',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '商品品牌',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '功率(W)',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '制造日期',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '能效标识',
+                    prop: 'websitName'
+                  }
+                },
+              ],
+              {
+                isEdit: true,
+                isAdd: true,
+                isDel: true
+              },
+              {
+                add: () => {
+                  this.formData.promotionQuestionnaireQrcodes.push({
+                    websitName: '',
+                    qrcode: ''
+                  })
+                  this.isEditTableIndex = this.formData.promotionQuestionnaireQrcodes.length - 1
+                },
+                // verify: ({ row, column, index }, isEditTableIndex) => {
+                //   return new Promise(r => {
+                //     if (isEditTableIndex > -1) {
+                //       r(true)
+                //     } else {
+                //       r(true)
+                //     }
+                //   })
+                // },
+              }
+            )
+          }
+        }]
+    }
+  },
+  methods: {
+    
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 242 - 0
src/views/secondHandMall/orderManagement/getLbsAmapRegion.js

@@ -0,0 +1,242 @@
+import { lbsAmapRegion } from '@/api/common.js'
+import geographicalPosi from '@/components/geographicalPosi/index.vue'
+export default {
+  data() {
+    return {
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      streetList: [],
+    }
+  },
+  computed: {
+    amapRegion() {
+      return [
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '客户地址', //省
+            prop: 'provinceId',
+            rules: [],
+            errLabel: '省'
+          },
+          options: this.provinceList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取省名称
+              this.formData.province = this.provinceList.find(item => item.id === val)?.name || ''
+              // 清除市区街道以及详细地址数据
+              this.delDataK(1)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.cityList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 5,
+          formItemAttributes: {
+            'label-width': '0px',
+            label: '', //市
+            prop: 'cityId',
+            rules: [],
+            errLabel: '市'
+          },
+          options: this.cityList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取市名称
+              this.formData.city = this.cityList.find(item => item.id === val).name
+              // 清除区街道以及详细地址数据
+              this.delDataK(2)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.areaList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 5,
+          formItemAttributes: {
+            'label-width': '0px',
+            label: '', //区
+            prop: 'areaId',
+            rules: [],
+            errLabel: '区'
+          },
+          options: this.areaList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取区名称
+              this.formData.area = this.areaList.find(item => item.id === val).name
+              // 清除街道以及详细地址数据
+              this.delDataK(3)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.streetList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            'label-width': '0px',
+            label: '', //街道
+            prop: 'streetId',
+            rules: [],
+            errLabel: '街道'
+          },
+          options: this.streetList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取街道名称
+              this.formData.street = this.streetList.find(item => item.id === val).name
+              // 清除详细地址数据
+              this.delDataK(4)
+            }
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 2,
+          formItemAttributes: {
+            'label-width': '0px',
+            prop: '',
+          },
+          render: (h, { props }) => {
+            return (
+              <geographicalPosi
+                disabled={false}
+                formData={this.formData}
+                onSelectPosi={data => {
+                  // 获取经纬度
+                  this.formData.lng = data.center[0]
+                  this.formData.lat = data.center[1]
+                  // 获取定位的省市区街道
+                  var { province, city, district, township } = data.data.addressComponent
+                  // 获取选中省名称id
+                  var { id, name } = this.provinceList.find(item => item.name === province)
+                  this.formData.provinceId = id
+                  this.formData.province = name
+                  // 请求市选项
+                  lbsAmapRegion({ pid: this.formData.provinceId }).then(res => {
+                    // 赋值市选项
+                    this.cityList = res.data
+                    // 获取选中市名称id
+                    var { id, name } = res.data.find(item => item.name === city)
+                    this.formData.cityId = id
+                    this.formData.city = name
+                    // 请求区选项
+                    lbsAmapRegion({ pid: this.formData.cityId }).then(res => {
+                      // 赋值区选项
+                      this.areaList = res.data
+                      // 获取选中区名称id
+                      var { id, name } = res.data.find(item => item.name === district)
+                      this.formData.areaId = id
+                      this.formData.area = name
+                      // 请求街道选项
+                      lbsAmapRegion({ pid: this.formData.areaId }).then(res => {
+                        // 赋值街道选项
+                        this.streetList = res.data
+                        // 获取选中街道名称id
+                        var { id, name } = res.data.find(item => item.name === township)
+                        this.formData.streetId = id
+                        this.formData.street = name
+                        // 赋值GPS详细地址
+                        this.formData.gpsAddress = data.name
+                        if (!this.formData.address) {
+                          this.formData.address = data.name
+                        }
+                      })
+                    })
+                  })
+                }}
+              />
+            )
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          formItemAttributes: { label: '', prop: 'address', rules: [] },
+          attributes: { disabled: false, placeholder: '详细地址' }
+        },
+      ]
+    }
+  },
+  created(){
+    this.getinitlbslist()
+  },
+  methods: {
+    getinitlbslist() {
+      // 初始化请求省市区街道下拉选项数据
+      lbsAmapRegion({ pid: 0 }).then(res => {
+        this.provinceList = res.data
+        // 创建工单时获取ip地址定位赋值
+        if (!this.id && !!~[1, 2, 3].indexOf(this?.workOrderType) && this.$IpAdd.province) {
+          var item = this.provinceList.find(item => item.name === this.$IpAdd.province)
+          if (item) {
+            this.formData.provinceId = item.id
+            this.formData.province = item.name
+          }
+        }
+        if (this.formData.provinceId) {
+          lbsAmapRegion({ pid: this.formData.provinceId }).then(res => {
+            this.cityList = res.data
+            // 创建工单时获取ip地址定位赋值
+            if (!this.id && this.$IpAdd.city) {
+              var item2 = this.cityList.find(item => item.name === this.$IpAdd.city)
+              if (item2) {
+                this.formData.cityId = item2.id
+                this.formData.city = item2.name
+              }
+            }
+            if (this.formData.cityId) {
+              lbsAmapRegion({ pid: this.formData.cityId }).then(res => {
+                this.areaList = res.data
+              })
+            }
+            if (this.formData.areaId) {
+              lbsAmapRegion({ pid: this.formData.areaId }).then(res => {
+                this.streetList = res.data
+              })
+            }
+          })
+        }
+      })
+    },
+    delDataK(num) {
+      if (num <= 1) {
+        // 删除市
+        this.formData.cityId = ''
+        this.formData.city = ''
+        // 删除市选项
+        this.cityList = []
+      }
+      if (num <= 2) {
+        // 删除区
+        this.formData.areaId = ''
+        this.formData.area = ''
+        // 删除区选项
+        this.areaList = []
+      }
+      if (num <= 3) {
+        // 删除街道
+        this.formData.streetId = ''
+        this.formData.street = ''
+        // 删除街道选项
+        this.streetList = []
+      }
+      // 删除gps地址
+      this.formData.gpsAddress = ''
+    }
+  }
+}

+ 396 - 0
src/views/secondHandMall/orderManagement/index.vue

@@ -0,0 +1,396 @@
+<template>
+  <zj-page-container>
+    <zj-page-fill>
+      <zj-tab-page ref="tabPage" :defaultActives="[{ key: 'list', label: $route.meta.title + '-列表', essential: true }]">
+        <template slot-scope="{activeKey, data}">
+          <div :style="{height:activeKey == 'list'?'100%':'0px'}" style="width:100%; height:100%; overflow: hidden;">
+            <div style="width:100%; height:100%;box-sizing: border-box; padding:10px;">
+              <zj-page-container>
+                <div class="screen-container">
+                  <el-form ref="screenForm" :model="screenForm" label-width="70px" size="small" label-position="left">
+                    <el-row :gutter="20">
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="订单号" prop="orderId">
+                          <el-input v-model="screenForm.orderId" placeholder="请输入订单号"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="商品名称" prop="esGoodsName">
+                          <el-input v-model="screenForm.esGoodsName" placeholder="请输入商品名称"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="会员昵称" prop="userName">
+                          <el-input v-model="screenForm.userName" placeholder="请输入会员昵称"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="手机号" prop="userMobile">
+                          <el-input v-model="screenForm.userMobile" placeholder="请输入手机号"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="状态" prop="evaluateStatus">
+                          <el-select v-model="screenForm.evaluateStatus" placeholder="全部">
+                            <el-option label="全部" value=""></el-option>
+                            <el-option label="未评价订单" :value="0"></el-option>
+                            <el-option label="已评价订单" :value="3"></el-option>
+                            <el-option label="差评订单" :value="1"></el-option>
+                            <el-option label="好评订单" :value="2"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="创建时间" prop="createDate" style="height: 33px;">
+                          <el-date-picker v-model="screenForm.createDate" type="datetimerange"
+                            value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期"
+                            end-placeholder="结束日期">
+                          </el-date-picker>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6">
+                        <el-form-item label="支付时间" prop="payDate" style="height: 33px;">
+                          <el-date-picker v-model="screenForm.payDate" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"
+                            range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+                          </el-date-picker>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :xs="24" :sm="12" :lg="6" class="tr">
+                        <el-form-item label="">
+                          <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
+                          <el-button size="small" @click="resetScreenForm">清空</el-button>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                  </el-form>
+                </div>
+                <div class="tabs-container order-tabs-container clearfix" style="margin: 10px 0!important;">
+                  <div class="fl">
+                    <el-tabs v-model="tabCurrent" type="card" @tab-click="changeTabs" class="fl" size="small" style="margin-right: 10px">
+                      <el-tab-pane label="全部" name="ALL"></el-tab-pane>
+                      <el-tab-pane label="待付款" name="NOPAY"></el-tab-pane>
+                      <el-tab-pane label="待确认" name="DQR"></el-tab-pane>
+                      <el-tab-pane label="待发货" name="DFH"></el-tab-pane>
+                      <el-tab-pane label="已发货" name="YFH"></el-tab-pane>
+                      <el-tab-pane label="已完成" name="OVER"></el-tab-pane>
+                      <el-tab-pane label="退款/取消" name="CLOSE"></el-tab-pane>
+                      <el-tab-pane label="已超时" name="TIMEOUT"></el-tab-pane>
+                    </el-tabs>
+                    <el-button class="fl" type="primary" size="small" @click="add">新增</el-button>
+                  </div>
+                  <div class="fr">
+                    <el-button size="small" type="primary">导出</el-button>
+                  </div>
+                </div>
+                <zj-page-fill>
+                  <div class="order-main-container">
+                    <!--  -->
+                    <div class="table-top">
+                      <el-row style="width:100%">
+                        <el-col :span="3">
+                          <span class="item product">商品信息</span>
+                        </el-col>
+                        <el-col :span="3" style="text-align: right"><span class="item">单价(元)/数量</span></el-col>
+                        <el-col :span="4" style="text-align: center"><span class="item">买家信息</span></el-col>
+                        <el-col :span="4" style="text-align: center"><span class="item">收货信息</span></el-col>
+                        <el-col :span="4" style="text-align: center"><span class="item">实付金额</span></el-col>
+                        <el-col :span="3" style="text-align: center"><span class="item">订单状态</span></el-col>
+                        <el-col :span="3" style="text-align: center"><span class="item">操作</span></el-col>
+                      </el-row>
+                    </div>
+                    <!--  -->
+                    <div class="order-item" v-for="order in dataList" :key="order.orderId">
+                      <div class="order-top">
+                        <span><b>订单号</b>:{{ order.orderId }}</span>
+                        <span><b>下单时间</b>:{{ order.createTime }}</span>
+                        <el-tag>商城销售</el-tag>
+                        <div class="fr"></div>
+                      </div>
+                      <div class="order-content">
+                        <el-row style="width:100%;">
+                          <el-col :span="6" style="height: 100%;">
+                            <div class="col-item-pro">
+                              <div class="pro-item" v-for="orderItem in order.orderDetails" :key="orderItem.orderDetailId">
+                                <div class="left">
+                                  <div class="image">
+                                    <img :src="orderItem.imgUrl" style="height:80px;width: 80px;">
+                                  </div>
+                                  <div class="main">
+                                    <span><el-tag type="danger" effect="plain" size="mini" style="margin-right: 4px"
+                                        v-if="orderItem.promotionFullPieceId">满件打折</el-tag>{{ orderItem.esGoodsName }}</span>
+                                    <span class="spec"
+                                      v-if="orderItem.goodsSpecName === '默认' && orderItem.goodsSpecValue === '默认'">默认</span>
+                                    <span class="spec" v-else>{{ orderItem.goodsSpecName }}-{{ orderItem.goodsSpecValue
+                                      }}</span>
+                                  </div>
+                                </div>
+                                <div class="right">
+                                  <span>¥{{ orderItem.price }}</span>
+                                  <span>x{{ orderItem.num }}</span>
+                                </div>
+                              </div>
+                            </div>
+                          </el-col>
+                          <el-col :span="4" style="height: 100%;">
+                            <div class="col-item">
+                              <div>{{ order.userName }}</div>
+                              <div>{{ order.userMobile }}</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="4" style="height: 100%;">
+                            <div class="col-item">
+                              <div>{{ order.receUserName }}/{{ order.recePhone }}</div>
+                              <div class="ellipsis-2">{{ order.province + order.city + order.area + order.street + order.receAddress + order.houseNo }}</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="4" style="height: 100%;">
+                            <div class="col-item">
+                              <div class="totalprice">¥{{ order.payAmount }}</div>
+                              <div style="font-size: 12px" v-if="order.discountAmount">(<span>-{{ order.discountAmount
+                                  }}</span><span v-if="order.promotionDiscountRate">/{{ order.promotionDiscountRate * 10
+                                  }}折</span>)</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="3" style="height: 100%;">
+                            <div class="col-item">
+                              <div style="display: flex; align-items: center;">
+                                <img src="@/assets/order/CLOSE.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.status == 'CLOSE'">
+                                <img src="@/assets/order/DFH.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.status == 'DFH'">
+                                <img src="@/assets/order/NOPAY.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.status == 'NOPAY'">
+                                <img src="@/assets/order/OVER.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.status == 'OVER'">
+                                <img src="@/assets/order/TIMEOUT.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.status == 'TIMEOUT'">
+                                <img src="@/assets/order/YFH.png" style="width: 16px; flex-shrink: 0;"
+                                  v-if="order.status == 'YFH'">
+                                <span style="margin-left: 4px">{{ order.status | ORDER_CURRENT_STATUS_FILTER }}</span>
+                              </div>
+                              <div>({{ order.toWorkOrder ? '已派单' : '未派单' }})</div>
+                            </div>
+                          </el-col>
+                          <el-col :span="3" style="height: 100%;">
+                            <div class="col-item">
+                              <div class="operate">
+                                <el-popconfirm title="确定确认订单吗?" @confirm="">
+                                  <el-button slot="reference" type="text" size="small">确认订单</el-button>
+                                </el-popconfirm>
+                              </div>
+                            </div>
+                          </el-col>
+                        </el-row>
+                      </div>
+                    </div>
+                    <div class="no-data" v-if="dataList.length <= 0">暂无订单</div>
+                  </div>
+                </zj-page-fill>
+                <div class="pagination clearfix" style="margin-top:10px;">
+                  <div class="fr">
+                    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                      :current-page="currentPage" :page-sizes="[10, 20, 30, 50]" :page-size="10"
+                      layout="total, sizes, prev, pager, next, jumper" :total="listTotal">
+                    </el-pagination>
+                  </div>
+                </div>
+              </zj-page-container>
+            </div>
+          </div>
+          <!-- 新增 -->
+          <div v-if="activeKey == 'add'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                  <add/>
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 确认订单 -->
+          <div v-if="activeKey == 'remark'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 确认收款 -->
+          <div v-if="activeKey == 'materialDetail'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 取消订单 -->
+          <div v-if="activeKey == 'deliverGoods'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 查看物流 -->
+          <div v-if="activeKey == 'editAddress1'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 查看详情 -->
+          <div v-if="activeKey == 'editAddress2'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+          <!-- 退货 -->
+          <div v-if="activeKey == 'editAddress3'" style="width:100%;height:100%;">
+            <zj-page-container>
+              <zj-page-fill>
+                <div style="box-sizing: border-box; padding:10px;">
+                
+                </div>
+              </zj-page-fill>
+            </zj-page-container>
+          </div>
+        </template>
+      </zj-tab-page>
+    </zj-page-fill>
+  </zj-page-container>
+
+</template>
+
+<script>
+import { esOrderList } from "@/api/orderManagement";
+import add from "./add.vue"
+import '@/styles/order-list.scss'
+export default {
+  components: {add},
+
+  data() {
+    return {
+      screenForm: { // 筛选表单数据
+        orderId: '', // 订单号
+        esGoodsName: '', // 商品名称
+        userName: '', // 会员昵称
+        userMobile: '', // 手机号
+        websitId: '', // 网点名称
+        status: '', // 状态
+        createDate: '', // 创建时间
+        payDate: '', // 支付时间
+        exchangeCode: '', // 兑换码
+        evaluateStatus: '', // 评价状态
+        sendStatus: '', // 派单异常
+        workerOrderNo: '', // 信息编号
+      },
+      screen_status: [ // 筛选字段 - 状态
+        { label: '待付款', value: 'NOPAY' },
+        { label: '待发货', value: 'DFH' },
+        { label: '已发货', value: 'YFH' },
+        { label: '已完成', value: 'OVER' },
+        { label: '已退款', value: 'CLOSE' }
+      ],
+      tabCurrent: 'ALL',
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+      dataList: [],
+    }
+  },
+  computed: {
+
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    add(){
+      this.$refs.tabPage.addTab({
+        // 对应显示的模块
+        activeKey: "add",
+        // 唯一标识
+        key: "add",
+        // 页签名称
+        label: "新增订单",
+        // 打开时事件
+        triggerEvent: () => {
+        
+        },
+        // 关闭时事件
+        closeEvent: () => {
+          
+        }
+      })
+    },
+    changeTabs(tab, event) {
+      this.screenForm.status = this.tabCurrent === 'ALL' ? '' : tab.$options.propsData.name
+      this.currentPage = 1;
+      this.getList();
+    },
+    // 获取数据列表
+    getList() {
+      let params = {
+        orderId: this.screenForm.orderId, // 订单号
+        esGoodsName: this.screenForm.esGoodsName, // 商品名称
+        userName: this.screenForm.userName, // 会员昵称
+        userMobile: this.screenForm.userMobile, // 手机号
+        status: this.screenForm.status, // 状态
+        startCreateTime: this.screenForm.createDate[0] ? this.screenForm.createDate[0] : null, // 创建时间
+        endCreateTime: this.screenForm.createDate[1] ? this.screenForm.createDate[1] : null, // 创建时间
+        startPayTime: this.screenForm.payDate[0] ? this.screenForm.payDate[0] : null, // 支付时间
+        endPayTime: this.screenForm.payDate[1] ? this.screenForm.payDate[1] : null, // 支付时间
+        pageNum: this.currentPage,
+        pageSize: this.pageSize
+      };
+      esOrderList(params).then(res => {
+        res.data.records.forEach(item => {
+          item.selected = false;
+        });
+        this.dataList = res.data.records;
+        this.listTotal = res.data.total;
+      })
+    },
+    openForm(type, order) {
+
+    },
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = 1;
+      this.getList();
+    },
+
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val;
+      this.getList();
+    },
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1;
+      this.getList();
+    },
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields();
+      this.currentPage = 1;
+      this.getList();
+    },
+  }
+}
+
+</script>

+ 87 - 0
src/views/setting/agreement/index.vue

@@ -5,6 +5,7 @@
       <el-tab-pane label="隐私声明" name="second"></el-tab-pane>
       <el-tab-pane label="服务协议" name="third"></el-tab-pane>
       <el-tab-pane label="以旧换新协议" name="fourth"></el-tab-pane>
+			<el-tab-pane label="二手商城购买须知" name="fiveth"></el-tab-pane>
     </el-tabs>
 
     <el-form v-show="activeName=='first'" ref="mainForm" label-width="80px" label-position="top">
@@ -106,6 +107,31 @@
 		    </el-row>
 		  </el-form-item>
 		</el-form>
+		
+		<el-form v-show="activeName=='fiveth'" ref="mainForm" label-width="80px" label-position="top">
+		  <el-form-item label="" prop="content5">
+		    <el-upload
+		      ref="imageListUpload5"
+		      class="avatar-uploader5"
+		      :action="baseURL + 'common/upload'"
+		      :headers="myHeaders"
+		      multiple
+		      name="file"
+		      :show-file-list="false"
+		      :on-success="uploadSuccess5"
+		      :on-error="uploadError5"
+		      :before-upload="beforeUpload5">
+		    </el-upload>
+		    <!--富文本编辑器组件-->
+		    <el-row v-loading="quillImgLoading5">
+		      <quill-editor
+		        v-model="mainForm.content5"
+		        ref="myQuillEditor5"
+		        :options="editorOption5">
+		      </quill-editor>
+		    </el-row>
+		  </el-form-item>
+		</el-form>
 
     <div class="page-footer">
       <div class="footer" :class="classObj">
@@ -155,6 +181,7 @@ export default {
       mainForm: {
         content1: '',
         content2: '',
+				content5: ''
       },
 
       quillImgLoading1: false, // 富文本上传图片loading
@@ -240,6 +267,27 @@ export default {
         }
       },
       editorImages4: [],
+			
+			quillImgLoading5: false, // 富文本上传图片loading
+			editorOption5: { // 富文本配置
+			  placeholder: '请输入公共内容',
+			  theme: 'snow',
+			  modules: {
+			    toolbar: {
+			      container: toolbarOptions,
+			      handlers: {
+			        'image': function (value) {
+			          if (value) {
+			            document.querySelector('.avatar-uploader5 input').click()
+			          } else {
+			            this.quill.format('image', false);
+			          }
+			        }
+			      }
+			    }
+			  }
+			},
+			editorImages5: [],
 
       formLoading: false,
     }
@@ -269,6 +317,7 @@ export default {
           content2: res.data.privacyStatementContent,
 		      content3: res.data.serviceContent,
 		      content4: res.data.tradeContent,
+					content5: res.data.esShopBuyRemarkContent,
         }
       })
     },
@@ -281,6 +330,7 @@ export default {
         privacyStatementContent: this.mainForm.content2,
 		    serviceContent: this.mainForm.content3,
         tradeContent: this.mainForm.content4,
+				esShopBuyRemarkContent: this.mainForm.content5,
       }).then(res => {
         this.formLoading = false;
         this.$successMsg('编辑成功');
@@ -448,6 +498,43 @@ export default {
       this.quillImgLoading4 = false;
       this.$errorMsg('图片插入失败');
     },
+		
+		// ----------
+		// 富文本图片上传前
+		beforeUpload5() {
+		  this.quillImgLoading5 = true;
+		},
+		
+		// 富文本图片上传成功
+		uploadSuccess5(res, file, fileList) {
+		  fileList.forEach(item => {
+		    if(this.editorImages5.indexOf(item.response.data.url) < 0) {
+		      this.editorImages5.push(item.response.data.url);
+		    }
+		  })
+		  this.showImage5()
+		  this.quillImgLoading5 = false;
+		},
+		
+		showImage5() {
+		  let quill = this.$refs.myQuillEditor5.quill;
+		  this.editorImages5.forEach(item => {
+		    // 获取光标所在位置
+		    let length = quill.getSelection().index;
+		    quill.insertEmbed(length, 'image', item);
+		    // this.$refs.imageListUpload2.clearFiles()
+		    // 调整光标到最后
+		    quill.setSelection(length + 1);
+		  })
+		  this.editorImages5 = [];
+		  this.$refs.imageListUpload5.clearFiles();
+		},
+		
+		// 富文本图片上传失败
+		uploadError5() {
+		  this.quillImgLoading5 = false;
+		  this.$errorMsg('图片插入失败');
+		},
   }
 }
 </script>

+ 23 - 23
src/views/userManagement/masterManagement/index.vue

@@ -36,7 +36,7 @@
       </div>
       <div v-if="~['examine', 'detail'].indexOf(activeKey)" style="box-sizing: border-box;padding: 16px;">
         <zj-form-container ref="formRef" :form-data="formData" :styleSwitch="false">
-          <zj-form-module :title="data.label" label-width="110px" :showPackUp="false" :form-data="formData"
+          <zj-form-module :title="data.label" label-width="170px" :showPackUp="false" :form-data="formData"
             :form-items="[...formItems,...imageList]">
           </zj-form-module>
         </zj-form-container>
@@ -206,27 +206,27 @@ export default {
           rules: []
         }
       },
-			// {
-			// 	md: 6,
-			// 	isShow: true,
-			// 	name: 'slot-component',
-			// 	attributes: {},
-			// 	formItemAttributes: {
-			// 		label: '二手商城发布',
-			// 		prop: 'isEs',
-			// 		rules: [...required]
-			// 	},
-			// 	render: (h, { props, onInput }) => {
-			// 		var { value } = props
-			// 		return (
-			// 			<el-radio-group v-model={this.formData.isEs}>
-			// 				<el-radio label={true}>是</el-radio>
-			// 				<el-radio label={false}>否</el-radio>
-			// 			</el-radio-group>
-			// 		)
-			// 	}
-			// }, 
-			{
+	  {
+	  	md: 6,
+	  	isShow: true,
+	  	name: 'slot-component',
+	  	attributes: {},
+	  	formItemAttributes: {
+	  		label: '是否允许二手商城发布',
+	  		prop: 'isEs',
+	  		rules: [...required]
+	  	},
+	  	render: (h, { props, onInput }) => {
+	  		var { value } = props
+	  		return (
+	  			<el-radio-group v-model={this.formData.isEs}>
+	  				<el-radio label={true}>是</el-radio>
+	  				<el-radio label={false}>否</el-radio>
+	  			</el-radio-group>
+	  		)
+	  	}
+	  }, 
+	  {
         md: 24,
         isShow: true,
         name: 'el-input',
@@ -469,7 +469,7 @@ export default {
 				  userId: this.formData.userId,
 				  websitId: this.formData.websitId,
 				  bankAccount: this.formData.bankAccount,
-					// isEs: this.formData.isEs,
+					isEs: this.formData.isEs,
 				  idCard: this.formData.idCard,
 				  idCardImg: this.formData.idCardImg[0].url,
 				  name: this.formData.nickName