zhengjinyi il y a 1 an
Parent
commit
1e0fbffae9

+ 2 - 2
src/layout/components/Sidebar/Logo.vue

@@ -47,7 +47,7 @@ export default {
   width: 100%;
   height: 50px;
   line-height: 50px;
-  background: #2b2f3a;
+  background: #FFFFFF;
   text-align: center;
   overflow: hidden;
 
@@ -65,7 +65,7 @@ export default {
     & .sidebar-title {
       display: inline-block;
       margin: 0;
-      color: #fff;
+      color: #999999;
       font-weight: 600;
       line-height: 50px;
       font-size: 14px;

+ 1 - 1
src/router/index.js

@@ -82,7 +82,7 @@ export const constantRoutes = [
         path: 'dashboard',
         component: () => import('@/views/dashboard/index'),
         name: 'Dashboard',
-        meta: { title: '首页', icon: 'el-icon-s-home', noCache: true, affix: true }
+        meta: { title: '系统首页', icon: 'el-icon-s-home', noCache: true, affix: true }
       }
     ]
   }

+ 18 - 18
src/router/modules/other.js

@@ -9,24 +9,24 @@ const otherRouter = {
   meta: { title: '其他设置', icon: 'el-icon-setting' },
   alwaysShow: true,
   children: [
-    {
-      path: 'about',
-      name: 'About',
-      component: () => import('@/views/other/about'),
-      meta: { title: '关于我们', icon: 'el-icon-info' }
-    },
-    {
-      path: 'after',
-      name: 'After',
-      component: () => import('@/views/other/after'),
-      meta: { title: '售后无忧', icon: 'el-icon-shopping-bag-2' }
-    },
-    {
-      path: 'notes',
-      name: 'Notes',
-      component: () => import('@/views/other/notes'),
-      meta: { title: '购物须知', icon: 'el-icon-shopping-cart-full' }
-    },
+    // {
+    //   path: 'about',
+    //   name: 'About',
+    //   component: () => import('@/views/other/about'),
+    //   meta: { title: '关于我们', icon: 'el-icon-info' }
+    // },
+    // {
+    //   path: 'after',
+    //   name: 'After',
+    //   component: () => import('@/views/other/after'),
+    //   meta: { title: '售后无忧', icon: 'el-icon-shopping-bag-2' }
+    // },
+    // {
+    //   path: 'notes',
+    //   name: 'Notes',
+    //   component: () => import('@/views/other/notes'),
+    //   meta: { title: '购物须知', icon: 'el-icon-shopping-cart-full' }
+    // },
     {
       path: 'password',
       name: 'Password',

+ 8 - 0
src/styles/index.scss

@@ -239,3 +239,11 @@ input[type="number"]{
 .el-span-danger{
   color: #F56C6C;
 }
+.uploader-tips{
+  position: absolute;
+  bottom: -32px;
+  left: 0;
+  line-height: 28px;
+  color: red;
+  margin: 0;
+}

+ 4 - 25
src/views/campaign/activity-edit.vue

@@ -60,7 +60,7 @@
       <!-- 一张宣传图 -->
       <template v-if="form.activeType === 2">
         <div v-for="(activ,index) in form.images" :key="index" class="form-cell">
-          <el-form-item label="宣传图:" prop="image" :rules="rules.image">
+          <el-form-item label="宣传图:" prop="image" :rules="rules.image" style="margin-bottom: 40px;">
             <div class="form-el-upload">
               <upload-image
                 :limit="1"
@@ -70,7 +70,7 @@
                 @success="uploadSuccess"
                 @remove="handleRemove"
               />
-              <p style="margin: 0;line-height: 28px;font-size: 14px;color: red;">注:请尽量上传700*1000(px)尺寸的图片。</p>
+              <p class="uploader-tips">注:请尽量上传700*1000(px)尺寸的图片。</p>
             </div>
           </el-form-item>
           <!-- 商品列表 -->
@@ -118,7 +118,7 @@
           <el-form-item label="标题:" :prop="`images.${index}.topic`" :rules="rules.topic1">
             <el-input v-model="activ.topic" placeholder="请输入宣传图标题" maxlength="30" style="width: 200px;" />
           </el-form-item>
-          <el-form-item label="宣传图:" prop="image" :rules="rules.image">
+          <el-form-item label="宣传图:" prop="image" :rules="rules.image" style="margin-bottom: 40px;">
             <div class="form-el-upload">
               <upload-image
                 :limit="1"
@@ -128,7 +128,7 @@
                 @success="uploadSuccess1"
                 @remove="handleRemove1"
               />
-              <p style="margin: 0;line-height: 28px;font-size: 14px;color: red;">注:请尽量上传700*360(px)尺寸的图片。</p>
+              <p class="uploader-tips">注:请尽量上传700*360(px)尺寸的图片。</p>
             </div>
           </el-form-item>
           <!-- 商品列表 -->
@@ -424,30 +424,9 @@ export default {
   .avatar-uploader .el-upload:hover {
     border-color: #409EFF;
   }
-  .avatar-uploader-icon {
-    font-size: 28px;
-    color: #8c939d;
-    width: 148px;
-    height: 148px;
-    line-height: 148px;
-    text-align: center;
-  }
-  .avatar {
-    width: 148px;
-    height: 148px;
-    display: block;
-  }
-  .avatar img {
-    width: 148px;
-    height: 148px;
-    display: block;
-  }
   .el-form-item__label{
       text-align: right !important;
   }
-  .form-el-upload{
-    width: 150px;
-  }
   .el-upload__tip{
     line-height: 20px;
     color: red;

+ 2 - 3
src/views/campaign/activity-list.vue

@@ -16,7 +16,6 @@
           v-model="listQuery.topic"
           placeholder="请输入活动主题"
           clearable
-          @input="e => (listQuery.topic= checkedInput(e,1))"
           @keyup.enter.native="getList"
           @clear="getList"
         />
@@ -25,8 +24,8 @@
         <span>状态:</span>
         <el-select v-model="listQuery.enabledStatus" style="width:120px;" clearable @change="getList">
           <el-option value="" label="所有" />
-          <el-option :value="0" label="已上线" />
-          <el-option :value="1" label="已下线" />
+          <el-option :value="1" label="已上线" />
+          <el-option :value="0" label="已下线" />
         </el-select>
       </div>
       <div class="filter-control">

+ 9 - 26
src/views/campaign/banner-edit.vue

@@ -4,8 +4,8 @@
       <el-form-item label="主题:" prop="bannerName" :rules="rules.bannerName">
         <el-input v-model="form.bannerName" placeholder="请输入活动主题" style="width: 250px;" />
       </el-form-item>
-      <el-form-item label="轮播图:" prop="bannerImage" :rules="rules.bannerImage">
-        <div class="form-el-upload">
+      <el-form-item label="轮播图:" prop="bannerImage" :rules="rules.bannerImage" style="margin-bottom: 40px;">
+        <div class="form-el-upload" style="width: 350px;height: 170px;">
           <el-upload
             class="avatar-uploader"
             :action="actionUrl"
@@ -14,12 +14,12 @@
             :on-success="handleSuccess"
             :before-upload="beforeUpload"
           >
-            <div v-loading="loadImgLoading" class="avatar">
-              <img v-if="form.bannerImage" :src="form.bannerImage" @error="reloadImage" @load="loadSucess">
-              <i v-else class="el-icon-plus avatar-uploader-icon" />
+            <div v-loading="loadImgLoading" class="avatar" style="width: 350px;height: 170px;display: block;">
+              <img v-if="form.bannerImage" :src="form.bannerImage" style="width: 350px;height: 170px;display: block;" @error="reloadImage" @load="loadSucess">
+              <i v-else class="el-icon-plus avatar-uploader-icon" style="width: 350px;height: 170px;line-height: 170px;" />
             </div>
           </el-upload>
-          <p style="margin: 0;line-height: 28px;font-size: 14px;color: red;">注:请尽量上传700*340(px)尺寸的图片。</p>
+          <p class="uploader-tips">注:请尽量上传700*340(px)尺寸的图片。</p>
         </div>
       </el-form-item>
       <el-form-item label="排序:" prop="sort" :rules="rules.sort">
@@ -291,30 +291,13 @@ export default {
   .avatar-uploader .el-upload:hover {
     border-color: #409EFF;
   }
-  .avatar-uploader-icon {
-    font-size: 28px;
-    color: #8c939d;
-    width: 350px;
-    height: 170px;
-    line-height: 170px;
-    text-align: center;
-  }
-  .avatar {
-    width: 350px;
-    height: 170px;
-    display: block;
-  }
-  .avatar img {
-    width: 350px;
-    height: 170px;
-    display: block;
+  .avatar-uploader-icon{
+    font-size: 30px;
+    color: #999999;
   }
   .el-form-item__label{
       text-align: right !important;
   }
-  .form-el-upload{
-    width: 350px;
-  }
   .el-upload__tip{
     line-height: 20px;
     color: red;

+ 18 - 28
src/views/campaign/category-edit.vue

@@ -4,8 +4,8 @@
       <el-form-item label="主题:" prop="topic" :rules="rules.topic">
         <el-input v-model="form.topic" placeholder="请输入菜单名,5字以内" maxlength="5" style="width: 250px;" />
       </el-form-item>
-      <el-form-item label="图标:" prop="image" :rules="rules.image">
-        <div class="form-el-upload">
+      <el-form-item label="图标:" prop="image" :rules="rules.image" style="margin-bottom: 40px;">
+        <div class="form-el-upload" style="width: 148px;height: 148px;">
           <el-upload
             class="avatar-uploader"
             :action="actionUrl"
@@ -14,12 +14,12 @@
             :on-success="handleSuccess"
             :before-upload="beforeUpload"
           >
-            <div v-loading="loadImgLoading" class="avatar">
-              <img v-if="form.image" :src="form.image" @error="reloadImage" @load="loadSucess">
-              <i v-else class="el-icon-plus avatar-uploader-icon" />
+            <div v-loading="loadImgLoading" class="avatar" style="width: 148px;height: 148px;display: block;">
+              <img v-if="form.image" :src="form.image" style="width: 148px;height: 148px;display: block;" @error="reloadImage" @load="loadSucess">
+              <i v-else class="el-icon-plus avatar-uploader-icon" style="width: 148px;height: 148px;line-height: 148px;" />
             </div>
           </el-upload>
-          <p style="margin: 0;line-height: 28px;font-size: 14px;color: red;">注:请尽量上传100*100(px)尺寸的图片。</p>
+          <p class="uploader-tips">注:请尽量上传100*100(px)尺寸的图片。</p>
         </div>
       </el-form-item>
       <el-form-item label="排序:" prop="sort" :rules="rules.sort">
@@ -172,8 +172,15 @@ export default {
     },
     async formMenu(id) {
       // 获取菜单详情
-      const res = await formMenu(id)
-      this.form = { ...this.form, ...res.data }
+      try {
+        const res = await formMenu(id)
+        this.form = { ...this.form, ...res.data }
+        if (res.data.jumpType === 2) {
+          this.form.products = []
+        }
+      } catch (error) {
+        console.log('error', error)
+      }
     },
     // 显示选择商品弹窗
     handleDialogVisible() {
@@ -281,30 +288,13 @@ export default {
   .avatar-uploader .el-upload:hover {
     border-color: #409EFF;
   }
-  .avatar-uploader-icon {
-    font-size: 28px;
-    color: #8c939d;
-    width: 148px;
-    height: 148px;
-    line-height: 148px;
-    text-align: center;
-  }
-  .avatar {
-    width: 148px;
-    height: 148px;
-    display: block;
-  }
-  .avatar img {
-    width: 148px;
-    height: 148px;
-    display: block;
+  .avatar-uploader-icon{
+    font-size: 30px;
+    color: #999999;
   }
   .el-form-item__label{
       text-align: right !important;
   }
-  .form-el-upload{
-    width: 150px;
-  }
   .el-upload__tip{
     line-height: 20px;
     color: red;

+ 1 - 1
src/views/campaign/components/banner/index.vue

@@ -13,7 +13,7 @@
       </div>
       <div class="filter-control">
         <span>状态:</span>
-        <el-select v-model="listQuery.status" style="width:120px;" clearable @change="getList">
+        <el-select v-model="listQuery.enabledStatus" style="width:120px;" clearable @change="getList">
           <el-option value="" label="所有" />
           <el-option :value="1" label="已上线" />
           <el-option :value="0" label="已下线" />

+ 3 - 3
src/views/campaign/components/good-dialog.vue

@@ -51,8 +51,8 @@
     <!-- 页码 -->
     <pagination
       :total="total"
-      :page-sizes="[20]"
-      :page-size="20"
+      :page-sizes="[10]"
+      :page-size="10"
       :page.sync="listQuery.index"
       :limit.sync="listQuery.pageSize"
       @pagination="getList"
@@ -84,7 +84,7 @@ export default {
         validFlag: 1,
         index: 1,
         organizeId: this.$store.getters.organizeId,
-        pageSize: 20
+        pageSize: 10
 
       },
       list: [],

+ 3 - 3
src/views/campaign/components/good-multi-dialog.vue

@@ -51,8 +51,8 @@
     <!-- 页码 -->
     <pagination
       :total="total"
-      :page-sizes="[20]"
-      :page-size="20"
+      :page-sizes="[10]"
+      :page-size="10"
       :page.sync="listQuery.index"
       :limit.sync="listQuery.pageSize"
       @pagination="getList"
@@ -84,7 +84,7 @@ export default {
         validFlag: 1,
         index: 1,
         organizeId: this.$store.getters.organizeId,
-        pageSize: 20
+        pageSize: 10
       },
       list: [],
       total: 0,

+ 4 - 5
src/views/campaign/components/special/index.vue

@@ -4,20 +4,19 @@
       <div class="filter-control">
         <span>主题:</span>
         <el-input
-          v-model="listQuery.productId"
+          v-model="listQuery.topic"
           placeholder="主题名称"
           clearable
-          @input="e => (listQuery.topic= checkedInput(e,1))"
           @keyup.enter.native="getList"
           @clear="getList"
         />
       </div>
       <div class="filter-control">
         <span>状态:</span>
-        <el-select v-model="listQuery.status" style="width:120px;" clearable @change="getList">
+        <el-select v-model="listQuery.enabledStatus" style="width:120px;" clearable @change="getList">
           <el-option value="" label="请选择" />
-          <el-option :value="0" label="已上线" />
-          <el-option :value="1" label="已下线" />
+          <el-option :value="1" label="已上线" />
+          <el-option :value="0" label="已下线" />
         </el-select>
       </div>
       <div class="filter-control">

+ 19 - 29
src/views/campaign/special-edit.vue

@@ -4,8 +4,8 @@
       <el-form-item label="主题:" prop="topic" :rules="rules.topic">
         <el-input v-model="form.topic" placeholder="请输入专题主题" style="width: 250px;" />
       </el-form-item>
-      <el-form-item label="专题图片:" prop="image" :rules="rules.image">
-        <div class="form-el-upload">
+      <el-form-item label="专题图片:" prop="image" :rules="rules.image" style="margin-bottom: 40px;">
+        <div class="form-el-upload" style="width: 170px;height: 90px;">
           <el-upload
             class="avatar-uploader"
             :action="actionUrl"
@@ -14,12 +14,12 @@
             :on-success="handleSuccess"
             :before-upload="beforeUpload"
           >
-            <div v-loading="loadImgLoading" class="avatar">
-              <img v-if="form.image" :src="form.image" @error="reloadImage" @load="loadSucess">
-              <i v-else class="el-icon-plus avatar-uploader-icon" />
+            <div v-loading="loadImgLoading" class="avatar" style="width: 170px;height: 90px;display: block;">
+              <img v-if="form.image" :src="form.image" style="width: 170px;height: 90px;display: block;" @error="reloadImage" @load="loadSucess">
+              <i v-else class="el-icon-plus avatar-uploader-icon" style="width: 170px;height: 90px;line-height: 90px;" />
             </div>
           </el-upload>
-          <p style="margin: 0;line-height: 24px;font-size: 14px;color: red;">注:请尽量上传170*90(px)尺寸的图片。</p>
+          <p class="uploader-tips">注:请尽量上传170*90(px)尺寸的图片。</p>
         </div>
       </el-form-item>
       <el-form-item label="状态:" prop="enabledStatus" :rules="rules.enabledStatus">
@@ -167,9 +167,16 @@ export default {
       this.activityList = [...this.activityList, ...res.data.results]
     },
     async formTheme(id) {
-      // 获取轮播图详情
-      const res = await formTheme(id)
-      this.form = { ...this.form, ...res.data }
+      // 获取专题详情
+      try {
+        const res = await formTheme(id)
+        this.form = { ...this.form, ...res.data }
+        if (res.data.jumpType === 2) {
+          this.form.products = []
+        }
+      } catch (error) {
+        console.log('error', error)
+      }
     },
     // 显示选择商品弹窗
     handleDialogVisible() {
@@ -277,30 +284,13 @@ export default {
   .avatar-uploader .el-upload:hover {
     border-color: #409EFF;
   }
-  .avatar-uploader-icon {
-    font-size: 28px;
-    color: #8c939d;
-    width: 170px !important;
-    height: 90px !important;
-    line-height: 90px;
-    text-align: center;
-  }
-  .avatar {
-    width: 170px !important;
-    height: 90px !important;
-    display: block;
-  }
-  .avatar img {
-    width: 170px !important;
-    height: 90px !important;
-    display: block;
+  .avatar-uploader-icon{
+    font-size: 30px;
+    color: #999999;
   }
   .el-form-item__label{
       text-align: right !important;
   }
-  .form-el-upload{
-    width: 170px !important;
-  }
   .el-upload__tip{
     line-height: 20px;
     color: red;

+ 2 - 2
src/views/club/details.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container clearfix" style=" width: 700px;">
     <el-form ref="dataForm" :model="form" label-position="left" label-width="130px">
-      <el-form-item label="门店名称:" prop="name" style="width: 500px;text-align: right;">
+      <el-form-item label="机构名称:" prop="name" style="width: 500px;text-align: right;">
         <el-input v-model="form.name" :disabled="true" type="text" />
       </el-form-item>
       <el-form-item label="联系人:" prop="linkMan" style="width: 500px; text-align: right;">
@@ -10,7 +10,7 @@
       <el-form-item label="手机号:" prop="contractMobile" style="width: 500px; text-align: right;">
         <el-input v-model="form.contractMobile" :disabled="true" />
       </el-form-item>
-      <el-form-item label="门店地址:" prop="address" style="width: 500px; text-align: right;float:left;">
+      <el-form-item label="机构地址:" prop="address" style="width: 500px; text-align: right;float:left;">
         <el-input v-model="form.address" :disabled="true" />
       </el-form-item>
       <el-form-item label="营业执照编号:" prop="socialCreditCode" style="width: 500px; text-align: right;float:left;">

+ 196 - 256
src/views/dashboard/admin/index.vue

@@ -1,292 +1,232 @@
 <template>
-  <div v-loading="listLoading" class="dashboard-editor-container">
-    <el-row :gutter="22" style="min-height: calc(100vh - 84px);">
-      <el-col :xs="24" :sm="24" :lg="12">
-        <div class="chart-wrapper">
-          <div class="chart-title">
-            <span>收款金额(元)</span>
-            <div style="float: right;">
-              <el-date-picker
-                v-model="Receivable.startTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                style="width: 150px;"
-              />
-              至
-              <el-date-picker
-                v-model="Receivable.endTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                style="width: 150px;"
-                @blur="handleGetReceivable"
-              />
-            </div>
-          </div>
-          <div class="chartText">
-            <p>应收金额</p>
-            <p class="money">¥{{ payTotalFee | toThousandFloatFilter }}</p>
-          </div>
-          <raddar-chart v-if="isRequest" :receivab="ReceivableData" />
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="12">
-        <div class="chart-wrapper">
-          <div class="chart-title">
-            <span>订单数量(个)</span>
-            <div style="float: right;">
-              <el-date-picker
-                v-model="Order.startTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                style="width: 150px;"
-              />
-              至
-              <el-date-picker
-                v-model="Order.endTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                style="width: 150px;"
-                @blur="handleGetHomepageOrder"
-              />
-            </div>
-          </div>
-          <div class="chartText">
-            <p>全部订单</p>
-            <p class="money">{{ count }}个</p>
-          </div>
-          <pie-chart v-if="isOrderRequest" :order-data="OrderData" />
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="12">
-        <div class="chart-wrapper">
-          <div class="chart-title">
-            <span>销售额趋势</span>
-          </div>
-          <bar-chart v-if="isSaleRequest" :paytotalfee-data="payTotalFeeData" :month-data="monthData" />
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="12">
-        <div class="chart-wrapper">
-          <div class="chart-title">
-            <span>热销商品</span>
-            <div style="float: right;">
-              <el-date-picker
-                v-model="Commodity.startTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                style="width: 150px;"
-              />
-              至
-              <el-date-picker
-                v-model="Commodity.endTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                style="width: 150px;"
-                @blur="handleGetHomepageCommodity"
-              />
-            </div>
-          </div>
-          <hot-goods v-if="isGoodRequest" :goodslist-data="goodsList" />
-        </div>
-      </el-col>
-    </el-row>
+  <div class="app-container">
+    <el-card ref="print" class="box-card" style="margin: 0 auto;">
+      <h1 class="home-title" style="text-align: center;">欢迎访问丽格集采联盟后台系统</h1>
+    </el-card>
   </div>
 </template>
 
 <script>
-import RaddarChart from './components/RaddarChart'
-import PieChart from './components/PieChart'
-import BarChart from './components/BarChart'
-import HotGoods from './components/HotGoods'
-import { getReceivable, getHomepageOrder, getHomepageSale, getHomepageCommodity } from '@/api/home'
+import { getPayDetails, getReceiptTypeList, subPayApply, subPayCheck } from '@/api/finance'
 export default {
-  name: 'Admin',
-  components: {
-    RaddarChart,
-    PieChart,
-    BarChart,
-    HotGoods
+  name: 'PaymentDetails',
+  filters: {
+    statusFilter(status) {
+      const map = {
+        0: '待审核',
+        1: '审核通过',
+        2: '审核不通过'
+      }
+      return map[status]
+    },
+    receiptStatusFilter(status) {
+      const map = {
+        1: '待收款',
+        2: '部分收款',
+        3: '已收款'
+      }
+      return map[status]
+    },
+    payStatusFilter(status) {
+      const map = {
+        1: '待付款',
+        2: '部分付款',
+        3: '已付款'
+      }
+      return map[status]
+    }
   },
   data() {
     return {
-      listLoading: true,
-      isRequest: false,
-      isOrderRequest: false,
-      isSaleRequest: false,
-      isGoodRequest: false,
-      ReceivableData: [],
-      OrderData: [],
-      payTotalFeeData: [],
-      monthData: [],
-      goodsList: [],
-      Receivable: {
-        startTime: this.getCurrentMonthFirst(),
-        endTime: this.getCurrentMonthLast(),
-        organizeId: this.$store.getters.organizeId
-      },
-      Order: {
-        startTime: this.getCurrentMonthFirst(),
-        endTime: this.getCurrentMonthLast(),
-        organizeId: this.$store.getters.organizeId
+      printObj: {
+        id: 'printBox', // 局部打印的<div> Id
+        popTitle: '', // 打印配置页上方标题
+        extraHead: '', // 最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
+        preview: '', // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
+        previewTitle: '', // 打印预览的标题(开启预览模式后出现),
+        previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
+        zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
+        previewBeforeOpenCallback() {}, // 预览窗口打开之前的callback(开启预览模式调用)
+        previewOpenCallback() {}, // 预览窗口打开之后的callback(开启预览模式调用)
+        beforeEntryIframe() {
+          const cells = document.querySelectorAll('.cell')
+          const tableNode = document.querySelectorAll('.el-table__header,.el-table__body')
+          // el-table 打印不全的问题
+          for (let j = 0; j < tableNode.length; j++) {
+            const tableItem = tableNode[j]
+            tableItem.style.width = '100%'
+            const child = tableItem.childNodes
+            for (let i = 0; i < child.length; i++) {
+              const element = child[i]
+              if (element.localName === 'colgroup') {
+                element.innerHTML = ''
+              }
+            }
+          }
+          // el-table 格子里面打印超过格子的问题
+          for (let i = 0; i < cells.length; i++) {
+            const cell = cells[i]
+            cell.style.width = '100%'
+            cell.removeAttribute('style')
+          }
+        },
+        openCallback() {
+
+        }, // 调用打印之后的回调事件
+        closeCallback() {}, // 关闭打印的回调事件(无法确定点击的是确认还是取消)
+        url: '',
+        standard: '',
+        extraCss: '',
+        loading: false
       },
-      Commodity: {
-        startTime: this.getCurrentMonthFirst(),
-        endTime: this.getCurrentMonthLast(),
-        organizeId: this.$store.getters.organizeId
+      payRepacts: {},
+      receiptTypeList: [],
+      detailsType: '',
+      dialogVisible: false,
+      checkParams: {
+        id: 0,
+        passCode: 1,
+        payType: ''
+
       },
-      count: 0,
-      payTotalFee: ''
+      rules: {
+        reason: [{ required: true, message: '请填写不通过原因', trigger: 'blur' }]
+      }
     }
   },
   computed: {
-    organizeId() {
-      return this.$store.getters.organizeId
+    payShopId: function() {
+      return this.$route.query.payShopId * 1
+    },
+    disabled() {
+      return !this.checkParams.reason
     }
   },
   created() {
-    this.fetchData()
+    if (this.$route.query.type) {
+      this.detailsType = this.$route.query.type
+    }
+    this.getPayDetails()
+    this.getReceiptTypeList()
   },
   methods: {
-    fetchData() {
-      this.listLoading = true
-      this.handleGetReceivable()
-      this.handleGetHomepageOrder()
-      this.handleGetHomepageSale()
-      this.handleGetHomepageCommodity()
-      setTimeout(function() {
-        this.listLoading = false
-      }, 5000)
-    },
-    handleGetReceivable() {
-      getReceivable(this.Receivable).then(response => {
-        this.isRequest = true
-        this.payTotalFee = response.data.payTotalFee
-        const receob = { name: '已收金额', value: response.data.amountReceived }
-        const receob1 = { name: '未收金额', value: response.data.uncollected }
-        this.ReceivableData = [receob, receob1]
-        this.listLoading = false
-      })
-    },
-    handleGetHomepageOrder() {
-      getHomepageOrder(this.Order).then(response => {
-        this.isOrderRequest = true
-        this.count = response.data.count
-        const order = { name: '已收款订单', value: response.data.received }
-        const order1 = { name: '未收款订单', value: response.data.uncollected }
-        const order2 = { name: '部分收款订单', value: response.data.portion }
-        this.OrderData = [order, order1, order2]
-        this.listLoading = false
-      })
+    // 付款单详情
+    async getPayDetails() {
+      try {
+        const res = await getPayDetails(this.payShopId)
+        console.log('res', res)
+        this.payRepacts = res.data
+      } catch (error) {
+        console.log('error', error)
+      }
     },
-    handleGetHomepageSale() {
-      getHomepageSale({ organizeId: this.$store.getters.organizeId }).then(response => {
-        this.isSaleRequest = true
-        this.monthData = response.data.month
-        this.payTotalFeeData = response.data.payTotalFee
-        this.listLoading = false
-      })
+    // 获取收款账号列表
+    async getReceiptTypeList() {
+      const res = await getReceiptTypeList()
+      this.receiptTypeList = res.data
+      this.checkParams.payType = res.data[0].id
     },
-    handleGetHomepageCommodity() {
-      getHomepageCommodity(this.Commodity).then(response => {
-        this.isGoodRequest = true
-        this.goodsList = response.data
-        this.listLoading = false
+    payTypeFilters(value) {
+      // 收款账号
+      let valueText = ''
+      this.receiptTypeList.forEach(type => {
+        if (value === type.id) { valueText = type.name } else { valueText = '---' }
       })
+      console.log('valueText', valueText)
+      return valueText
     },
-    numFormat(num) {
-      var c = (num.toString().indexOf('.') !== -1) ? num.toLocaleString() : num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
-      return c
+    hanldeConfirm() {
+      // 保存编辑
+      this.payRepacts.operateMode = 1
+      this.subPayApply(this.payRepacts)
     },
-    getCurrentMonthFirst() {
-      var date = new Date()
-      date.setDate(1)
-      var month = parseInt(date.getMonth() + 1)
-      var day = date.getDate()
-      if (month < 10) {
-        month = '0' + month
+    async subPayApply(params) {
+      // 执行保存
+      try {
+        await subPayApply(params)
+        this.$message.success('提交成功')
+        this.backToList()
+      } catch (error) {
+        console.log('error', error)
       }
-      if (day < 10) {
-        day = '0' + day
-      }
-      const startTime = date.getFullYear() + '-' + month + '-' + day
-      return startTime
     },
-    getCurrentMonthLast() {
-      var date = new Date()
-      var currentMonth = date.getMonth()
-      var nextMonth = ++currentMonth
-      var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1)
-      var oneDay = 1000 * 60 * 60 * 24
-      var lastTime = new Date(nextMonthFirstDay - oneDay)
-      var month = parseInt(lastTime.getMonth() + 1)
-      var day = lastTime.getDate()
-      if (month < 10) {
-        month = '0' + month
+    handlePayCheck(type) {
+      // 审核
+      if (type === 1) {
+        this.checkParams.reason = ''
       }
-      if (day < 10) {
-        day = '0' + day
+      this.checkParams.id = this.payRepacts.payShopId
+      this.checkParams.passCode = type
+      this.subPayCheck(this.checkParams)
+    },
+    async subPayCheck(params) {
+      // 执行审核
+      try {
+        await subPayCheck(params)
+        this.$message.success('审核成功')
+        this.checkParams.reason = ''
+        this.backToList()
+      } catch (error) {
+        console.log('error', error)
       }
-      return date.getFullYear() + '-' + month + '-' + day
+    },
+    backToList() {
+      this.$store.dispatch('tagsView/delView', this.$route).then(() => {
+        this.$nextTick(() => {
+          this.$router.replace({
+            path: '/finance/payment-list'
+          })
+        })
+      })
     }
   }
 }
 </script>
 
-<style lang="scss" scoped >
-.dashboard-editor-container {
-  padding: 22px;
-  min-height: calc(100vh - 84px);
-  position: relative;
-  .chart-wrapper {
-    background: #fff;
-    padding: 3px 16px 0;
-    margin-bottom: 22px;
-    height: 475px;
-    border-radius: 10px;
-    position: relative;
-    -webkit-box-shadow: 0 1px 3px 0 rgba(0,0,0,0.12), 0 0 3px 0 rgba(0,0,0,0.04);
-    box-shadow: 0 1px 3px 0 rgba(0,0,0,0.12), 0 0 3px 0 rgba(0,0,0,0.04);
-    .chartText{
-      width: 130px;
-      height: 140px;
-      padding-top:30px;
-      font-weight: bold;
-      font-size: 18px;
-      color:#98A0A7;
-      text-align: center;
-      position: absolute;
-      top:0;
-      left:0;
-      right:0;
-      bottom:0;
-      margin:auto;
-      .money{
-        color:#000000;
-      }
-    }
-    .chart-title{
-      height: 48px;
-      line-height: 48px;
-      border-bottom: 1px solid #dfe6ec;
-      span{
-        text-align: left;
-        font-size: 14px;
-        font-weight: bold;
-        color: #000000;
-      }
-    }
+<style scoped>
+  .app-title{
+    line-height: 36px;
+    font-size: 26px;
+    font-weight: bold;
+    color: #409EFF;
+    text-align: center;
+    margin: 0;
   }
-}
-
-@media (max-width:1024px) {
-  .chart-wrapper {
-    padding: 8px;
+  .box-card{
+    margin-top: 20px;
+    font-size: 14px;
+  }
+  .box-row{
+    padding: 10px 0;
+  }
+  .box-row .dropdown{
+    margin-top: -10px;
+  }
+  .refund-item{
+    padding: 10px 0;
+  }
+  .order-item{
+    background:#f7f7f7;
+    margin-bottom: 20px;
+    padding: 10px 15px;
+    border-radius: 5px;
+  }
+  .product-row{
+    padding: 10px 0;
+    background: #EBEEF5;
+    border-top: 1px dashed #DCDFE6;
+  }
+  .op-item{
+    padding: 5px 0;
+  }
+  .el-span-warning{
+    color: #E6A23C;
+  }
+  .el-span-success{
+    color: #67C23A;
+  }
+  .el-span-danger{
+    color: #F56C6C;
   }
-}
 </style>
+

+ 292 - 0
src/views/dashboard/admin/index1.vue

@@ -0,0 +1,292 @@
+<template>
+  <div v-loading="listLoading" class="dashboard-editor-container">
+    <el-row :gutter="22" style="min-height: calc(100vh - 84px);">
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="chart-wrapper">
+          <div class="chart-title">
+            <span>收款金额(元)</span>
+            <div style="float: right;">
+              <el-date-picker
+                v-model="Receivable.startTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期"
+                style="width: 150px;"
+              />
+              至
+              <el-date-picker
+                v-model="Receivable.endTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期"
+                style="width: 150px;"
+                @blur="handleGetReceivable"
+              />
+            </div>
+          </div>
+          <div class="chartText">
+            <p>应收金额</p>
+            <p class="money">¥{{ payTotalFee | toThousandFloatFilter }}</p>
+          </div>
+          <raddar-chart v-if="isRequest" :receivab="ReceivableData" />
+        </div>
+      </el-col>
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="chart-wrapper">
+          <div class="chart-title">
+            <span>订单数量(个)</span>
+            <div style="float: right;">
+              <el-date-picker
+                v-model="Order.startTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期"
+                style="width: 150px;"
+              />
+              至
+              <el-date-picker
+                v-model="Order.endTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期"
+                style="width: 150px;"
+                @blur="handleGetHomepageOrder"
+              />
+            </div>
+          </div>
+          <div class="chartText">
+            <p>全部订单</p>
+            <p class="money">{{ count }}个</p>
+          </div>
+          <pie-chart v-if="isOrderRequest" :order-data="OrderData" />
+        </div>
+      </el-col>
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="chart-wrapper">
+          <div class="chart-title">
+            <span>销售额趋势</span>
+          </div>
+          <bar-chart v-if="isSaleRequest" :paytotalfee-data="payTotalFeeData" :month-data="monthData" />
+        </div>
+      </el-col>
+      <el-col :xs="24" :sm="24" :lg="12">
+        <div class="chart-wrapper">
+          <div class="chart-title">
+            <span>热销商品</span>
+            <div style="float: right;">
+              <el-date-picker
+                v-model="Commodity.startTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期"
+                style="width: 150px;"
+              />
+              至
+              <el-date-picker
+                v-model="Commodity.endTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="选择日期"
+                style="width: 150px;"
+                @blur="handleGetHomepageCommodity"
+              />
+            </div>
+          </div>
+          <hot-goods v-if="isGoodRequest" :goodslist-data="goodsList" />
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import RaddarChart from './components/RaddarChart'
+import PieChart from './components/PieChart'
+import BarChart from './components/BarChart'
+import HotGoods from './components/HotGoods'
+import { getReceivable, getHomepageOrder, getHomepageSale, getHomepageCommodity } from '@/api/home'
+export default {
+  name: 'Admin',
+  components: {
+    RaddarChart,
+    PieChart,
+    BarChart,
+    HotGoods
+  },
+  data() {
+    return {
+      listLoading: true,
+      isRequest: false,
+      isOrderRequest: false,
+      isSaleRequest: false,
+      isGoodRequest: false,
+      ReceivableData: [],
+      OrderData: [],
+      payTotalFeeData: [],
+      monthData: [],
+      goodsList: [],
+      Receivable: {
+        startTime: this.getCurrentMonthFirst(),
+        endTime: this.getCurrentMonthLast(),
+        organizeId: this.$store.getters.organizeId
+      },
+      Order: {
+        startTime: this.getCurrentMonthFirst(),
+        endTime: this.getCurrentMonthLast(),
+        organizeId: this.$store.getters.organizeId
+      },
+      Commodity: {
+        startTime: this.getCurrentMonthFirst(),
+        endTime: this.getCurrentMonthLast(),
+        organizeId: this.$store.getters.organizeId
+      },
+      count: 0,
+      payTotalFee: ''
+    }
+  },
+  computed: {
+    organizeId() {
+      return this.$store.getters.organizeId
+    }
+  },
+  created() {
+    this.fetchData()
+  },
+  methods: {
+    fetchData() {
+      this.listLoading = true
+      this.handleGetReceivable()
+      this.handleGetHomepageOrder()
+      this.handleGetHomepageSale()
+      this.handleGetHomepageCommodity()
+      setTimeout(function() {
+        this.listLoading = false
+      }, 5000)
+    },
+    handleGetReceivable() {
+      getReceivable(this.Receivable).then(response => {
+        this.isRequest = true
+        this.payTotalFee = response.data.payTotalFee
+        const receob = { name: '已收金额', value: response.data.amountReceived }
+        const receob1 = { name: '未收金额', value: response.data.uncollected }
+        this.ReceivableData = [receob, receob1]
+        this.listLoading = false
+      })
+    },
+    handleGetHomepageOrder() {
+      getHomepageOrder(this.Order).then(response => {
+        this.isOrderRequest = true
+        this.count = response.data.count
+        const order = { name: '已收款订单', value: response.data.received }
+        const order1 = { name: '未收款订单', value: response.data.uncollected }
+        const order2 = { name: '部分收款订单', value: response.data.portion }
+        this.OrderData = [order, order1, order2]
+        this.listLoading = false
+      })
+    },
+    handleGetHomepageSale() {
+      getHomepageSale({ organizeId: this.$store.getters.organizeId }).then(response => {
+        this.isSaleRequest = true
+        this.monthData = response.data.month
+        this.payTotalFeeData = response.data.payTotalFee
+        this.listLoading = false
+      })
+    },
+    handleGetHomepageCommodity() {
+      getHomepageCommodity(this.Commodity).then(response => {
+        this.isGoodRequest = true
+        this.goodsList = response.data
+        this.listLoading = false
+      })
+    },
+    numFormat(num) {
+      var c = (num.toString().indexOf('.') !== -1) ? num.toLocaleString() : num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
+      return c
+    },
+    getCurrentMonthFirst() {
+      var date = new Date()
+      date.setDate(1)
+      var month = parseInt(date.getMonth() + 1)
+      var day = date.getDate()
+      if (month < 10) {
+        month = '0' + month
+      }
+      if (day < 10) {
+        day = '0' + day
+      }
+      const startTime = date.getFullYear() + '-' + month + '-' + day
+      return startTime
+    },
+    getCurrentMonthLast() {
+      var date = new Date()
+      var currentMonth = date.getMonth()
+      var nextMonth = ++currentMonth
+      var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1)
+      var oneDay = 1000 * 60 * 60 * 24
+      var lastTime = new Date(nextMonthFirstDay - oneDay)
+      var month = parseInt(lastTime.getMonth() + 1)
+      var day = lastTime.getDate()
+      if (month < 10) {
+        month = '0' + month
+      }
+      if (day < 10) {
+        day = '0' + day
+      }
+      return date.getFullYear() + '-' + month + '-' + day
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped >
+.dashboard-editor-container {
+  padding: 22px;
+  min-height: calc(100vh - 84px);
+  position: relative;
+  .chart-wrapper {
+    background: #fff;
+    padding: 3px 16px 0;
+    margin-bottom: 22px;
+    height: 475px;
+    border-radius: 10px;
+    position: relative;
+    -webkit-box-shadow: 0 1px 3px 0 rgba(0,0,0,0.12), 0 0 3px 0 rgba(0,0,0,0.04);
+    box-shadow: 0 1px 3px 0 rgba(0,0,0,0.12), 0 0 3px 0 rgba(0,0,0,0.04);
+    .chartText{
+      width: 130px;
+      height: 140px;
+      padding-top:30px;
+      font-weight: bold;
+      font-size: 18px;
+      color:#98A0A7;
+      text-align: center;
+      position: absolute;
+      top:0;
+      left:0;
+      right:0;
+      bottom:0;
+      margin:auto;
+      .money{
+        color:#000000;
+      }
+    }
+    .chart-title{
+      height: 48px;
+      line-height: 48px;
+      border-bottom: 1px solid #dfe6ec;
+      span{
+        text-align: left;
+        font-size: 14px;
+        font-weight: bold;
+        color: #000000;
+      }
+    }
+  }
+}
+
+@media (max-width:1024px) {
+  .chart-wrapper {
+    padding: 8px;
+  }
+}
+</style>

+ 9 - 9
src/views/finance/payfinance-remit-record.vue

@@ -56,24 +56,24 @@
             <el-col :span="4"><b>退款金额:</b> {{ dataOrder.order.returnValue | amountfilters }}</el-col>
           </el-row>
           <h1 class="refund-item-title">收款记录</h1>
-          <el-table :data="dataOrder.payList" border fit highlight-current-row :header-cell-style="{background:'#e9f3f7',color:'#606266'}">
+          <el-table :data="dataOrder.receiptList" border fit highlight-current-row :header-cell-style="{background:'#e9f3f7',color:'#606266'}">
             <el-table-column label="序号" align="center" width="50">
               <template slot-scope="scope">{{ scope.$index + 1 }}</template>
             </el-table-column>
             <el-table-column label="收款ID" align="center" prop="receiptId" />
-            <el-table-column label="收款方式" align="center" prop="returnNum" />
-            <el-table-column label="收款金额" align="center" prop="price" />
-            <el-table-column label="收款时间" align="center" prop="verifyTimes" />
+            <el-table-column label="收款方式" align="center" prop="bankNameType" />
+            <el-table-column label="收款金额" align="center" prop="receiptAmount" />
+            <el-table-column label="收款时间" align="center" prop="receiptTime" />
           </el-table>
           <h1 class="refund-item-title">付款记录</h1>
-          <el-table :data="dataOrder.receiptList" border fit highlight-current-row :header-cell-style="{background:'#e9f3f7',color:'#606266'}">
+          <el-table :data="dataOrder.payList" border fit highlight-current-row :header-cell-style="{background:'#e9f3f7',color:'#606266'}">
             <el-table-column label="序号" align="center" width="50">
               <template slot-scope="scope">{{ scope.$index + 1 }}</template>
             </el-table-column>
-            <el-table-column label="付款单ID" align="center" prop="unit" />
-            <el-table-column label="付款方式" align="center" prop="returnNum" />
-            <el-table-column label="付款金额" align="center" prop="price" />
-            <el-table-column label="付款时间" align="center" prop="verifyTimes" />
+            <el-table-column label="付款单ID" align="center" prop="payShopId" />
+            <el-table-column label="付款方式" align="center" prop="bankNameType" />
+            <el-table-column label="付款金额" align="center" prop="payAmount" />
+            <el-table-column label="付款时间" align="center" prop="payTime" />
           </el-table>
         </div>
       </el-card>

+ 3 - 3
src/views/floor/components/good-multi-dialog.vue

@@ -51,8 +51,8 @@
     <!-- 页码 -->
     <pagination
       :total="total"
-      :page-sizes="[20]"
-      :page-size="20"
+      :page-sizes="[10]"
+      :page-size="10"
       :page.sync="listQuery.index"
       :limit.sync="listQuery.pageSize"
       @pagination="getList"
@@ -84,7 +84,7 @@ export default {
         validFlag: 1,
         index: 1,
         organizeId: this.$store.getters.organizeId,
-        pageSize: 20
+        pageSize: 10
       },
       list: [],
       total: 0,

+ 7 - 4
src/views/goods/components/price-edit.vue

@@ -19,9 +19,9 @@
         <div class="text" v-text="product.shopName" />
       </el-form-item>
       <el-form-item label="商品状态:" prop="validFlag">
-        <el-select v-model="formData.validFlag" placeholder="请选择">
-          <el-option label="已上架" value="1" />
-          <el-option label="已下架" value="2" />
+        <el-select v-model="formData.validFlag" placeholder="请选择" @change="handleChange($event)">
+          <el-option label="已上架" :value="1" />
+          <el-option label="已下架" :value="2" />
         </el-select>
       </el-form-item>
       <el-form-item label="商品规格:" prop="skus">
@@ -112,6 +112,9 @@ export default {
     }
   },
   methods: {
+    handleChange(value) {
+      console.log('value', value)
+    },
     handleSave() {
       // 保存商品
       this.$refs['dataForm'].validate((valid) => {
@@ -122,7 +125,7 @@ export default {
     },
     async saveGoods() {
       try {
-        await saveGoods(this.postData)
+        await saveGoods(this.formData)
         this.$message.success('操作成功')
         this.$parent.getList()
         this.dialogFormVisible = false

+ 2 - 10
src/views/order/refund-detail.vue

@@ -154,10 +154,6 @@
         <div class="refund-item">
           <h1 class="refund-item-title">审核信息</h1>
           <el-row :gutter="24" class="box-row">
-            <el-col :span="5">
-              <b>审核人:</b>
-              {{ cmReturnedPurchase.reviewUserName ? cmReturnedPurchase.reviewUserName :'无' }}
-            </el-col>
             <el-col :span="6">
               <b>审核时间:</b>
               {{ cmReturnedPurchase.confirmReturnTime ? cmReturnedPurchase.confirmReturnTime :'--' }}
@@ -173,10 +169,6 @@
         <div class="refund-item">
           <h1 class="refund-item-title">申请信息</h1>
           <el-row :gutter="24" class="box-row">
-            <el-col :span="5">
-              <b>申请人:</b>
-              {{ cmReturnedPurchase.applicationUserName ? cmReturnedPurchase.applicationUserName :'无' }}
-            </el-col>
             <el-col :span="6">
               <b>申请时间:</b>
               {{ cmReturnedPurchase.returnTime ? cmReturnedPurchase.returnTime :'--' }}
@@ -273,8 +265,8 @@ export default {
     async getRefundDetail() {
       try {
         const res = await getRefundDetail(this.$route.query.id)
-        this.orderData = res.data.order
-        this.cmReturnedPurchaseList = res.data.cmReturnedPurchaseList
+        this.orderData = res.data
+        this.cmReturnedPurchaseList.push(res.data.cmReturnedPurchase)
         this.cmReturnedPurchase = res.data.cmReturnedPurchase
       } catch (error) {
         console.log('error', error)