Pārlūkot izejas kodu

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_scrm_adminUI

caoliqin 3 dienas atpakaļ
vecāks
revīzija
3426dc5178

+ 31 - 0
.env.prod-bly

@@ -0,0 +1,31 @@
+# 页面标题
+VUE_APP_TITLE = 倍力优会员商城私域平台
+# 公司名称
+VUE_APP_COMPANY_NAME = 倍力优(北京)健康产业科技有限公司
+# ICP备案号
+VUE_APP_ICP_RECORD = 京ICP备18042618号-2
+# ICP网站访问地址
+VUE_APP_ICP_URL =https://beian.miit.gov.cn
+# 网站LOG
+VUE_APP_LOG_URL =@/assets/logo/bly_logo.png
+# 存储桶配置
+VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
+# 存储桶配置
+VUE_APP_OBS_SECRET_ACCESS_KEY = sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
+# 存储桶配置
+VUE_APP_OBS_SERVER = https://obs.cn-north-4.myhuaweicloud.com
+# 存储桶配置
+VUE_APP_OBS_BUCKET = bly-obs2025
+# 存储桶配置
+VUE_APP_COS_BUCKET = beliyo-1323137866
+# 存储桶配置
+VUE_APP_COS_REGION = ap-chongqing
+# 线路一地址
+VUE_APP_VIDEO_LINE_1 = https://blytcpv.ylrzcloud.com
+# 线路二地址
+VUE_APP_VIDEO_LINE_2 = https://blyobs.ylrztop.com
+# 生产环境配置
+ENV = 'production'
+
+#FS管理系统/生产环境
+VUE_APP_BASE_API = '/prod-api'

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "build:prod-jz": "vue-cli-service build --mode prod-jz",
     "build:prod-zkzh": "vue-cli-service build --mode prod-zkzh",
     "build:prod-fby": "vue-cli-service build --mode prod-fby",
+    "build:prod-bly": "vue-cli-service build --mode prod-bly",
     "preview": "node build/index.js --preview",
     "lint": "eslint --ext .js,.vue src",
     "test:unit": "jest --clearCache && vue-cli-service test:unit",

+ 19 - 0
src/api/store/storeOrderAudit.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request'
+
+// 获取审核列表
+export const list = (query) => {
+  return request({
+    url: '/store/storeOrderAudit/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 审核
+export const audit = (data) => {
+  return request({
+    url: '/store/storeOrderAudit/audit',
+    method: 'post',
+    data: data
+  })
+}

BIN
src/assets/logo/bly_logo.png


+ 3 - 3
src/views/course/videoResource/index.vue

@@ -107,7 +107,7 @@
           </a>
         </template>
       </el-table-column>
-      <el-table-column label="CDN" align="center">
+      <!-- <el-table-column label="CDN" align="center">
         <template slot-scope="scope">
           <a
             @click="copy(scope.row.videoUrl)"
@@ -115,7 +115,7 @@
             复制链接
           </a>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="关联题目" align="center">
         <template slot-scope="scope">
           <a
@@ -301,7 +301,7 @@
       class="video-preview-dialog"
       :modal-append-to-body="false"
       :before-close="handleCloseVideoPreview">
-      <video ref="up-video" id="video" width="100%" height="400px" controls :src="videoPreviewUrl" />
+      <video ref="up-video" id="video" width="100%" height="400px" :src="videoPreviewUrl" controls disablepictureinpicture controlsList="nodownload nofullscreen nopictureinpicture" />
     </el-dialog>
 
     <!-- 批量选择视频弹窗 -->

+ 28 - 9
src/views/store/components/productOrder.vue

@@ -164,7 +164,7 @@
           凭证信息
         </span>
       </div>
-      <el-image 
+      <el-image
           v-if="certificates != null"
           :src="certificates"
           :preview-src-list="[certificates]"
@@ -290,7 +290,7 @@
           <el-table-column label="支付时间" align="center" prop="payTime" />
       </el-table>
 
-      
+
       <div style="margin-top: 20px">
         <span class="font-small">操作信息</span>
       </div>
@@ -324,6 +324,23 @@
           <el-table-column label="创建时间" align="center" prop="createTime" />
           <el-table-column label="备注" align="center" prop="remark" />
       </el-table>
+
+        <div style="margin-top: 20px">
+          <span class="font-small">审批信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  :data="auditLogs" border>
+          <el-table-column label="操作时间"  width="160" align="center">
+            <template slot-scope="scope">
+              {{scope.row.createTime}}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{scope.row.content}}
+            </template>
+          </el-table-column>
+        </el-table>
       </el-card>
     </div>
 
@@ -354,7 +371,7 @@
             <el-select filterable style="width: 200px" v-model="editForm.scheduleId" placeholder="请选择档期" clearable size="small" >
               <el-option
                       v-for="item in scheduleOptions"
-                      :key="item.id"  
+                      :key="item.id"
                       :label="item.name"
                       :value="item.id"
                     />
@@ -392,7 +409,7 @@
         <el-form-item label="物流单号" prop="deliveryId"  >
           <el-input v-model="editDyForm.deliveryId" placeholder="请输入物流单号" />
         </el-form-item>
-        
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitEditDyForm">确 定</el-button>
@@ -473,7 +490,7 @@
         </el-row>
       </div>
     </el-dialog>
-    
+
   </div>
 </template>
 
@@ -548,6 +565,7 @@ export default {
       payments:[],
       tuiMoneyLogs:[],
       erpOrder:null,
+      auditLogs: [],
     };
   },
   created() {
@@ -579,13 +597,13 @@ export default {
         const id = this.order.id;
         getStoreOrderAddress(id).then(response =>{
             this.order.userAddress = response.address;
-        }) 
+        })
       },
       handlePhone(){
         const id = this.order.id;
         getStoreOrderPhone(id).then(response =>{
             this.order.userPhone = response.userPhone;
-        }) 
+        })
       },
     showImageDialog() {
       this.dialogVisible = true;
@@ -777,7 +795,7 @@ export default {
         this.editForm.userAddress = this.order.userAddress.toString();
         this.editForm.scheduleId = this.order.scheduleId;
         // this.editForm.extendOrderId = this.order.extendOrderId.toString();
-        
+
     },
     //推送管易按钮
     addErpOrder(){
@@ -810,12 +828,13 @@ export default {
             }
             if(response.order.status != null){
               this.orderStatus = response.order.status;
-            }  
+            }
             this.user = response.user;
             this.logs = response.logs;
             this.items = response.items;
             this.payments=response.payments;
             this.tuiMoneyLogs=response.tuiMoneyLogs;
+            this.auditLogs = response.auditLogs;
         });
      }
   }

+ 254 - 0
src/views/store/storeOrderAudit/index.vue

@@ -0,0 +1,254 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="公司名" prop="companyId">
+        <el-select filterable  v-model="queryParams.companyId" placeholder="请选择公司名"  @change="companyChange" clearable size="small">
+          <el-option
+            v-for="item in companys"
+            :key="item.companyId"
+            :label="item.companyName"
+            :value="item.companyId"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="所属员工" prop="companyUserName">
+        <el-input
+          v-model="queryParams.companyUserName"
+          placeholder="请输入所属员工昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-tabs type="card" v-model="activeName" @tab-click="handleClick">
+      <el-tab-pane label="全部" name="00"></el-tab-pane>
+      <el-tab-pane label="待销售审批" name="0"></el-tab-pane>
+      <el-tab-pane label="销售审批拒绝" name="1"></el-tab-pane>
+      <el-tab-pane label="待总后台审核" name="2"></el-tab-pane>
+      <el-tab-pane label="总后台审核拒绝" name="3"></el-tab-pane>
+      <el-tab-pane label="审核通过" name="4"></el-tab-pane>
+    </el-tabs>
+    <el-table height="500" border v-loading="loading" :data="storeOrderAuditList" :key="tableKey">
+      <el-table-column label="订单号" align="center" prop="orderCode" width="200" />
+      <el-table-column label="所属公司" align="center" prop="companyName" />
+      <el-table-column label="所属员工" align="center" prop="companyUserName" />
+      <el-table-column label="审核状态" align="center" prop="status" >
+        <template slot-scope="scope">
+          <el-tag prop="status" v-for="item in statusOptions"
+                  :type="item.type"
+                  v-if="scope.row.auditStatus === item.dictValue">
+            {{item.dictLabel}}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="销售审核时间" align="center" prop="companyAuditTime" />
+      <el-table-column label="销售审核人" align="center" prop="companyAuditUserName" />
+      <el-table-column label="总后台审核时间" align="center" prop="adminAuditTime" />
+      <el-table-column label="总后台审核人" align="center" prop="adminAuditUserName" />
+      <el-table-column label="被拒原因" align="center" prop="reason" show-overflow-tooltip />
+      <el-table-column label="提交时间" align="center" prop="createTime" />
+      <el-table-column label="操作" fixed="right" align="center" width="80" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-popover
+            v-if="scope.row.auditStatus === 2"
+            placement="right"
+            trigger="click"
+            :ref="'popover_' + scope.row.id">
+            <el-button size="mini" type="success" @click="handlePass(scope.row)">通过</el-button>
+            <el-button size="mini" type="danger" @click="handleAudit(scope.row)">拒绝</el-button>
+            <el-button
+              slot="reference"
+              size="mini"
+              type="text"
+              v-hasPermi="['store:storeOrderAudit:audit']"
+            >审核订单</el-button>
+          </el-popover>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <el-dialog :title="show.title" :visible.sync="show.open" width="500px" append-to-body>
+      <el-form ref="auditForm" :model="auditForm" :rules="auditRules" label-width="80px">
+        <el-form-item label="拒绝原因" prop="reviewContent">
+          <el-input
+            type="textarea"
+            v-model="auditForm.reviewContent"
+            placeholder="请输入拒绝原因"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="handleReject">确定</el-button>
+        <el-button @click="cancelAudit">关闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getCompanyList } from "@/api/company/company";
+import {list, audit} from "@/api/store/storeOrderAudit";
+
+export default {
+  name: "StoreOrderAudit",
+  data() {
+    const statusOptions = [
+      {
+        dictLabel: "待销售审批",
+        dictValue: 0,
+        type: ''
+      },
+      {
+        dictLabel: "销售审批拒绝",
+        dictValue: 1,
+        type: 'danger'
+      },
+      {
+        dictLabel: "待总后台审核",
+        dictValue: 2,
+        type: ''
+      },
+      {
+        dictLabel: "总后台审核拒绝",
+        dictValue: 3,
+        type: 'danger'
+      },
+      {
+        dictLabel: "审核通过",
+        dictValue: 4,
+        type: 'success'
+      }
+    ]
+
+    return {
+      tableKey: 0,
+      showSearch: true,
+      companys: [],
+      total: 0,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        companyId: null,
+        companyUserName: null,
+        auditStatus: null
+      },
+      activeName: '00',
+      loading: false,
+      storeOrderAuditList: [],
+      statusOptions: statusOptions,
+      show: {
+        open: false,
+        title: "审核订单"
+      },
+      auditForm: {
+        auditId: null,
+        reviewType: null,
+        reviewContent: ''
+      },
+      auditRules: {
+        reviewContent: [
+          { required: true, message: "请输入拒绝原因", trigger: "blur" }
+        ]
+      },
+      currentRowId: null,
+    }
+  },
+  created() {
+    this.getCompanyOptions()
+    this.handleQuery()
+  },
+  activated() {
+    this.tableKey = Date.now()
+  },
+  methods: {
+    getCompanyOptions() {
+      getCompanyList().then(response => {
+        this.companys = response.data
+      })
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    getList() {
+      this.loading = true
+      list(this.queryParams).then(response => {
+        const {rows, total} = response
+        this.storeOrderAuditList = rows
+        this.total = total
+        this.loading = false
+      })
+    },
+    handleClick(tab) {
+      this.queryParams.auditStatus = tab.name === '00' ? null : tab.name
+      this.handleQuery()
+    },
+    companyChange(val) {
+      this.queryParams.companyId = val
+    },
+    handleAudit(row) {
+      this.currentRowId = row.id
+      this.auditForm.auditId = row.id;
+      this.auditForm.reviewType = 0;
+      this.show.open = true;
+    },
+    handlePass(row) {
+      this.currentRowId = row.id
+      this.auditForm.auditId = row.id;
+      this.auditForm.reviewType = 1;
+      this.submitAudit();
+    },
+    handleReject() {
+      this.$refs["auditForm"].validate(valid => {
+        if (valid) {
+          this.submitAudit();
+        }
+      });
+    },
+    submitAudit() {
+      audit(this.auditForm).then(response => {
+        const {msg} = response
+        this.msgSuccess(msg);
+        this.show.open = false;
+        this.$refs['popover_' + this.currentRowId].doClose();
+        this.getList();
+        this.resetAuditForm();
+      });
+    },
+    cancelAudit() {
+      this.show.open = false;
+      this.resetAuditForm();
+    },
+    resetAuditForm() {
+      this.auditForm = {
+        auditId: null,
+        reviewType: null,
+        reviewContent: ''
+      };
+      this.$refs["auditForm"]?.resetFields();
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 8 - 0
src/views/system/config/config.vue

@@ -68,6 +68,14 @@
             <el-form-item label="会员海报图片" prop="userPosterImage">
               <ImageUpload v-model="form1.userPosterImage" type="image" :num="10" :width="150" :height="150" :limit="1"/>
             </el-form-item>
+            <el-form-item  label="订单审核" prop="auditSwitch">
+              <el-tooltip class="item" effect="dark" content="订单是否需要审核" placement="top-end">
+                <el-radio-group v-model="form1.auditSwitch">
+                  <el-radio :label="0">关闭</el-radio>
+                  <el-radio :label="1">开启</el-radio>
+                </el-radio-group>
+              </el-tooltip>
+            </el-form-item>
            <div   class="footer">
               <el-button type="primary" @click="submitForm1">提  交</el-button>
             </div>