lsw 1 year ago
parent
commit
09e754d705

+ 14 - 5
admin-ui/src/assets/styles/extend.scss

@@ -335,12 +335,21 @@
   color: #919191;
   color: #919191;
   font-size: 13px;
   font-size: 13px;
 }
 }
-.cg{
-  margin-bottom: 15px
+.cg {
+  margin-bottom: 15px;
 }
 }
-.yzm{
-  color:#1890ff;
+.yzm {
+  color: #1890ff;
 }
 }
-.el-icon-warning{
+.el-icon-warning {
   padding-left: 3px;
   padding-left: 3px;
 }
 }
+.opp {
+  padding: 5px 5px 10px 5px;
+  color: #919191;
+  font-size: 14px;
+}
+.pon {
+  color: #1890ff;
+  cursor: pointer;
+}

+ 34 - 0
admin-ui/src/components/preview.vue

@@ -0,0 +1,34 @@
+<template>
+  <div>
+    <span @click="preview()" class="pre">点击查看</span>
+    <el-image v-if="value" ref="preview" class="hideImgDiv" :src="baseUrl + value" :preview-src-list="[baseUrl + value]"></el-image>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    value: {
+      type: String,
+      default: {}
+    }
+  },
+  data() {
+    return {};
+  },
+  methods: {
+    preview() {
+      this.$refs.preview.clickHandler();
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.hideImgDiv {
+  display: none!important;
+}
+.pre {
+  color: #1890ff;
+  cursor: pointer;
+}
+</style>

+ 2 - 10
admin-ui/src/main.js

@@ -48,12 +48,8 @@ import file from '@/components/file'; //文件上传
 import editor from '@/components/editor'; //富文本
 import editor from '@/components/editor'; //富文本
 import images from '@/components/images'; //图片上传
 import images from '@/components/images'; //图片上传
 import imagePreview from '@/components/imagePreview'; //图片预览
 import imagePreview from '@/components/imagePreview'; //图片预览
-import imageBoxs from '@/components/imageBoxs'; //箱号图片预览
+import preview from '@/components/preview'; //图片预览
 import util from '@/utils/util.js' //工具类
 import util from '@/utils/util.js' //工具类
-import dtree from '@/components/dtree'; //通用树
-import dselect from '@/components/dselect'; //通用树
-import placeSelect from '@/components/placeSelect'; //场所选择
-import channelSelect from '@/components/channelSelect'; //通道选择
 // 全局方法挂载
 // 全局方法挂载
 Vue.prototype.getDicts = getDicts
 Vue.prototype.getDicts = getDicts
 Vue.prototype.getConfigKey = getConfigKey
 Vue.prototype.getConfigKey = getConfigKey
@@ -82,16 +78,12 @@ Vue.component('Pagination', Pagination)
 Vue.component('RightToolbar', RightToolbar)
 Vue.component('RightToolbar', RightToolbar)
 Vue.component('FileUpload', FileUpload)
 Vue.component('FileUpload', FileUpload)
 Vue.component('ImageUpload', ImageUpload)
 Vue.component('ImageUpload', ImageUpload)
-Vue.component('imageBoxs', imageBoxs)
 Vue.component('cropper', cropper)
 Vue.component('cropper', cropper)
 Vue.component('editor', editor)
 Vue.component('editor', editor)
 Vue.component('file', file)
 Vue.component('file', file)
 Vue.component('images', images)
 Vue.component('images', images)
 Vue.component('imagePreview', imagePreview)
 Vue.component('imagePreview', imagePreview)
-Vue.component('dtree', dtree)
-Vue.component('dselect', dselect)
-Vue.component('placeSelect', placeSelect)
-Vue.component('channelSelect', channelSelect)
+Vue.component('preview', preview)
 Vue.use(directive)
 Vue.use(directive)
 Vue.use(plugins)
 Vue.use(plugins)
 Vue.use(VueMeta)
 Vue.use(VueMeta)

+ 1 - 7
admin-ui/src/views/work/company/detail.vue

@@ -88,12 +88,6 @@ export default {
       });
       });
     }
     }
   },
   },
-  methods: {
-    submitForm() {
-      this.$refs['form'].validate((valid) => {
-        if (valid) {}
-      });
-    }
-  }
+  methods: {}
 };
 };
 </script>
 </script>

+ 3 - 3
admin-ui/src/views/work/money/index.vue

@@ -24,7 +24,7 @@
 
 
 <script>
 <script>
 import out_edit from './out/edit.vue';
 import out_edit from './out/edit.vue';
-import out_list from './out/index.vue';
+import out_list from './out/record.vue';
 import recharge_edit from './recharge/edit.vue';
 import recharge_edit from './recharge/edit.vue';
 import recharge_list from './recharge/record.vue';
 import recharge_list from './recharge/record.vue';
 import qr from '@/components/qr';
 import qr from '@/components/qr';
@@ -63,10 +63,10 @@ export default {
         this.iframe({ obj: recharge_edit, param: {}, title: '充值申请', width: '40%', height: '65%' });
         this.iframe({ obj: recharge_edit, param: {}, title: '充值申请', width: '40%', height: '65%' });
       }
       }
       if (tag == 'recharge_list') {
       if (tag == 'recharge_list') {
-        this.iframe({ obj: recharge_list, param: {}, title: '充值明细', width: '75%', height: '70%' });
+        this.iframe({ obj: recharge_list, param: {}, title: '充值明细', width: '72%', height: '70%' });
       }
       }
       if (tag == 'out_list') {
       if (tag == 'out_list') {
-        this.iframe({ obj: out_list, param: {}, title: '提现明细', width: '70%', height: '70%' });
+        this.iframe({ obj: out_list, param: {}, title: '提现明细', width: '72%', height: '70%' });
       }
       }
     }
     }
   }
   }

+ 11 - 8
admin-ui/src/views/work/money/out/audit.vue

@@ -1,11 +1,10 @@
 <template>
 <template>
   <div class="cmain">
   <div class="cmain">
     <div class="bos">
     <div class="bos">
-      <div class="lab">
-        <div class="bsg"></div>
-        <div class="tit">提现账户信息</div>
-      </div>
       <el-form ref="company" :model="company" label-width="100px">
       <el-form ref="company" :model="company" label-width="100px">
+        <el-form-item label="申请企业">
+          <span class="pon" @click="info()">{{ company.companyName }}</span>
+        </el-form-item>
         <el-form-item label="开户银行">
         <el-form-item label="开户银行">
           <el-input v-model="company.bankName" disabled />
           <el-input v-model="company.bankName" disabled />
         </el-form-item>
         </el-form-item>
@@ -26,13 +25,14 @@
     </div>
     </div>
     <div class="mfooter" v-if="!param.detail">
     <div class="mfooter" v-if="!param.detail">
       <el-button type="primary" @click="submitForm(1)">确 认</el-button>
       <el-button type="primary" @click="submitForm(1)">确 认</el-button>
-      <el-button type="danger" @click="submitForm(2)">无 效</el-button>
+      <el-button type="danger" @click="submitForm(2)">不通过</el-button>
       <el-button @click="$layer.close(layerid)">取 消</el-button>
       <el-button @click="$layer.close(layerid)">取 消</el-button>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
+import company from '@/views/work/company/edit.vue';
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -63,17 +63,20 @@ export default {
     }
     }
   },
   },
   methods: {
   methods: {
+    info() {
+      this.iframe({ obj: company, param: { id: this.form.companyId, detail: true }, title: '企业信息', width: '60%', height: '75%' });
+    },
     submitForm(state) {
     submitForm(state) {
       this.$refs['form'].validate((valid) => {
       this.$refs['form'].validate((valid) => {
         if (valid) {
         if (valid) {
-          this.$prompt(state == 1 ? '确认提现' + this.form.money + '元到 ' + this.company.companyName + ' 银行账户? 该操作不可撤销!' : '确认无效提现', {
+          this.$prompt(state == 1 ? '确认提现' + this.form.money + '元到 ' + this.company.companyName + ' 银行账户? 该操作不可撤销!' : '确认提现失败', {
             type: 'warning',
             type: 'warning',
             showInput: state == 1 ? false : true,
             showInput: state == 1 ? false : true,
             inputType: 'textarea',
             inputType: 'textarea',
-            inputPlaceholder: '无效原因',
+            inputPlaceholder: '输入提现失败原因',
             inputValidator: (value) => {
             inputValidator: (value) => {
               if (!value && state == 2) {
               if (!value && state == 2) {
-                return '请输入无效原因';
+                return '请输入提现失败原因';
               }
               }
             }
             }
           }).then(({ value }) => {
           }).then(({ value }) => {

+ 17 - 26
admin-ui/src/views/work/money/out/record.vue

@@ -6,47 +6,38 @@
       </el-form-item>
       </el-form-item>
       <el-form-item label="提现状态" prop="state">
       <el-form-item label="提现状态" prop="state">
         <el-select v-model="queryParams.state" placeholder="提现状态" clearable style="width: 117px">
         <el-select v-model="queryParams.state" placeholder="提现状态" clearable style="width: 117px">
-          <el-option value="0" label="待确认"></el-option>
-          <el-option value="1" label="已确认"></el-option>
-          <el-option value="2" label="提现无效"></el-option>
+          <el-option value="0" label="待提现"></el-option>
+          <el-option value="1" label="提现成功"></el-option>
+          <el-option value="2" label="提现失败"></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="时间范围">
       <el-form-item label="时间范围">
-        <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+        <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="false"></el-date-picker>
       </el-form-item>
       </el-form-item>
       <el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
       </el-form-item>
+      <el-button type="primary" icon="el-icon-download" @click="handleExport" v-hasPermi="['work:recharge:export']" style="float: right">导出</el-button>
     </el-form>
     </el-form>
-    <el-row :gutter="10" class="mb8">
-      <el-button type="success" icon="el-icon-edit" :disabled="ids.length != 1" @click="op('edit', ids)" v-hasPermi="['work:out:edit']">审核</el-button>
-      <el-button type="danger" icon="el-icon-delete" :disabled="ids.length == 0" @click="del" v-hasPermi="['work:out:remove']">删除{{ ids.length > 0 ? '(' + ids.length + ')' : '' }}</el-button>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-    <el-table :data="response.rows" border @selection-change="selects" height="calc(100vh - 270px)">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="提现企业" align="left" prop="companyName" />
-      <el-table-column label="提现编号" align="center" prop="nums" width="170" />
-      <el-table-column label="提现金额(元)" align="center" prop="money" width="130" />
-      <el-table-column label="提现状态" align="center" width="110">
+    <el-table :data="response.rows" border>
+      <el-table-column type="index" label="序号" align="center" width="80" />
+      <el-table-column label="提现编号" align="center" prop="nums" />
+      <el-table-column label="提现金额(元)" align="center" prop="money" />
+      <el-table-column label="提现状态" align="center" width="130">
         <template slot-scope="scope">
         <template slot-scope="scope">
-          <el-tag type="danger" v-if="scope.row.state == 0">待确认</el-tag>
-          <el-tag type="success" v-if="scope.row.state == 1">已确认</el-tag>
+          <el-tag type="danger" v-if="scope.row.state == 0">待提现</el-tag>
+          <el-tag type="success" v-if="scope.row.state == 1" :title="'提现时间:' + scope.row.updateTime">提现成功</el-tag>
           <el-popover placement="top-start" v-if="scope.row.state == 2" title="原因" width="200" trigger="hover" :content="scope.row.msg">
           <el-popover placement="top-start" v-if="scope.row.state == 2" title="原因" width="200" trigger="hover" :content="scope.row.msg">
-            <el-tag type="danger" slot="reference">提现无效</el-tag>
+            <div slot="reference" :title="'操作时间:' + scope.row.updateTime">
+              <el-tag type="info">提现失败</el-tag>
+              <i class="el-icon-warning"></i>
+            </div>
           </el-popover>
           </el-popover>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column label="申请日期" align="center" prop="createTime" width="170" />
       <el-table-column label="申请人" align="center" prop="opBy" width="130" />
       <el-table-column label="申请人" align="center" prop="opBy" width="130" />
-      <el-table-column label="操作" align="center" width="180">
-        <template slot-scope="scope">
-          <el-button size="mini" type="text" icon="el-icon-view" @click="op('detail', scope.row)" v-hasPermi="['work:out:list']">查看</el-button>
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('edit', scope.row)" v-hasPermi="['work:out:edit']" :disabled="scope.row.state != 0">审核</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-hasPermi="['work:out:remove']">删除</el-button>
-        </template>
-      </el-table-column>
+      <el-table-column label="申请日期" align="center" prop="createTime" />
       <template slot="empty">
       <template slot="empty">
         <el-empty></el-empty>
         <el-empty></el-empty>
       </template>
       </template>

+ 14 - 7
admin-ui/src/views/work/money/recharge/audit.vue

@@ -1,11 +1,10 @@
 <template>
 <template>
   <div class="cmain">
   <div class="cmain">
     <div class="bos">
     <div class="bos">
-      <div class="lab">
-        <div class="bsg"></div>
-        <div class="tit">充值账户信息</div>
-      </div>
       <el-form ref="platform" :model="platform" label-width="120px">
       <el-form ref="platform" :model="platform" label-width="120px">
+        <el-form-item label="申请企业">
+          <span class="pon" @click="info()">{{ param.companyName }}</span>
+        </el-form-item>
         <el-form-item label="服务公司名称">
         <el-form-item label="服务公司名称">
           <el-input v-model="platform.serviceCompany" disabled />
           <el-input v-model="platform.serviceCompany" disabled />
         </el-form-item>
         </el-form-item>
@@ -23,9 +22,13 @@
         <el-form-item label="充值凭证" prop="certificate">
         <el-form-item label="充值凭证" prop="certificate">
           <ImageUpload v-model="form.certificate" :isShowTip="false" :limit="1"></ImageUpload>
           <ImageUpload v-model="form.certificate" :isShowTip="false" :limit="1"></ImageUpload>
         </el-form-item>
         </el-form-item>
+        <div class="opp">
+          <span>操作人:{{ form.updateBy }},</span>
+          <span>操作时间:{{ form.updateTime }}</span>
+        </div>
       </el-form>
       </el-form>
       <el-alert title="充值成功" type="success" show-icon class="cg" v-if="form.state === 1"></el-alert>
       <el-alert title="充值成功" type="success" show-icon class="cg" v-if="form.state === 1"></el-alert>
-      <el-alert :title="'充值失败:' + form.msg" type="error" show-icon class="cg" v-if="form.state === 2"></el-alert>
+      <el-alert title="充值失败" :description="form.msg" type="error" show-icon class="cg" v-if="form.state === 2" :closable="false"></el-alert>
     </div>
     </div>
     <div class="mfooter" v-if="!param.detail">
     <div class="mfooter" v-if="!param.detail">
       <el-button type="primary" @click="submitForm(1)">确 认</el-button>
       <el-button type="primary" @click="submitForm(1)">确 认</el-button>
@@ -36,6 +39,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import company from '@/views/work/company/edit.vue';
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -66,6 +70,9 @@ export default {
     }
     }
   },
   },
   methods: {
   methods: {
+    info() {
+      this.iframe({ obj: company, param: { id: this.form.companyId, detail: true }, title: '企业信息', width: '60%', height: '75%' });
+    },
     submitForm(state) {
     submitForm(state) {
       this.$refs['form'].validate((valid) => {
       this.$refs['form'].validate((valid) => {
         if (valid) {
         if (valid) {
@@ -73,10 +80,10 @@ export default {
             type: 'warning',
             type: 'warning',
             showInput: state == 1 ? false : true,
             showInput: state == 1 ? false : true,
             inputType: 'textarea',
             inputType: 'textarea',
-            inputPlaceholder: '无效原因',
+            inputPlaceholder: '充值失败',
             inputValidator: (value) => {
             inputValidator: (value) => {
               if (!value && state == 2) {
               if (!value && state == 2) {
-                return '请输入无效原因';
+                return '请输入充值失败原因';
               }
               }
             }
             }
           }).then(({ value }) => {
           }).then(({ value }) => {

+ 11 - 6
admin-ui/src/views/work/money/recharge/index.vue

@@ -9,12 +9,12 @@
       </el-form-item>
       </el-form-item>
       <el-form-item label="充值状态" prop="state">
       <el-form-item label="充值状态" prop="state">
         <el-select v-model="queryParams.state" placeholder="充值状态" clearable style="width: 117px">
         <el-select v-model="queryParams.state" placeholder="充值状态" clearable style="width: 117px">
-          <el-option value="0" label="待确认"></el-option>
-          <el-option value="1" label="已确认"></el-option>
+          <el-option value="0" label="待充值"></el-option>
+          <el-option value="1" label="充值成功"></el-option>
           <el-option value="2" label="充值失败"></el-option>
           <el-option value="2" label="充值失败"></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-      <el-form-item label="时间范围">
+      <el-form-item label="申请日期">
         <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
         <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
       </el-form-item>
       </el-form-item>
       <el-form-item>
       <el-form-item>
@@ -24,6 +24,7 @@
     </el-form>
     </el-form>
     <el-row :gutter="10" class="mb8">
     <el-row :gutter="10" class="mb8">
       <el-button type="success" icon="el-icon-edit" :disabled="ids.length != 1" @click="op('edit', ids)" v-hasPermi="['work:recharge:edit']">审核</el-button>
       <el-button type="success" icon="el-icon-edit" :disabled="ids.length != 1" @click="op('edit', ids)" v-hasPermi="['work:recharge:edit']">审核</el-button>
+      <el-button type="primary" icon="el-icon-download" @click="handleExport" v-hasPermi="['work:recharge:export']">导出</el-button>
       <el-button type="danger" icon="el-icon-delete" :disabled="ids.length == 0" @click="del" v-hasPermi="['work:recharge:remove']">删除{{ ids.length > 0 ? '(' + ids.length + ')' : '' }}</el-button>
       <el-button type="danger" icon="el-icon-delete" :disabled="ids.length == 0" @click="del" v-hasPermi="['work:recharge:remove']">删除{{ ids.length > 0 ? '(' + ids.length + ')' : '' }}</el-button>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
@@ -34,8 +35,8 @@
       <el-table-column label="充值金额(元)" align="center" prop="money" width="130" />
       <el-table-column label="充值金额(元)" align="center" prop="money" width="130" />
       <el-table-column label="充值状态" align="center" width="110">
       <el-table-column label="充值状态" align="center" width="110">
         <template slot-scope="scope">
         <template slot-scope="scope">
-          <el-tag type="danger" v-if="scope.row.state == 0">待确认</el-tag>
-          <el-tag type="success" v-if="scope.row.state == 1">已确认</el-tag>
+          <el-tag type="danger" v-if="scope.row.state == 0">待充值</el-tag>
+          <el-tag type="success" v-if="scope.row.state == 1">充值成功</el-tag>
           <el-popover placement="top-start" v-if="scope.row.state == 2" title="原因" width="200" trigger="hover" :content="scope.row.msg">
           <el-popover placement="top-start" v-if="scope.row.state == 2" title="原因" width="200" trigger="hover" :content="scope.row.msg">
             <div slot="reference">
             <div slot="reference">
               <el-tag type="info">充值失败</el-tag>
               <el-tag type="info">充值失败</el-tag>
@@ -109,7 +110,7 @@ export default {
     op(tag, row) {
     op(tag, row) {
       if (tag == 'detail') {
       if (tag == 'detail') {
         const id = row.id || this.ids[0];
         const id = row.id || this.ids[0];
-        this.iframe({ obj: audit, param: { id: id, detail: true }, title: '充值详情', width: '45%', height: '65%' });
+        this.iframe({ obj: audit, param: { id: id, detail: true, companyName: row.companyName }, title: '充值详情', width: '45%', height: '65%' });
       }
       }
       if (tag == 'edit') {
       if (tag == 'edit') {
         const id = row.id || this.ids[0];
         const id = row.id || this.ids[0];
@@ -123,6 +124,10 @@ export default {
           this.getList();
           this.getList();
         });
         });
       });
       });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('/work/recharge/export', { ...this.queryParams }, '充值明细.xlsx');
     }
     }
   }
   }
 };
 };

+ 13 - 10
admin-ui/src/views/work/money/recharge/record.vue

@@ -6,13 +6,13 @@
       </el-form-item>
       </el-form-item>
       <el-form-item label="充值状态" prop="state">
       <el-form-item label="充值状态" prop="state">
         <el-select v-model="queryParams.state" placeholder="充值状态" clearable style="width: 125px">
         <el-select v-model="queryParams.state" placeholder="充值状态" clearable style="width: 125px">
-          <el-option value="0" label="待确认"></el-option>
-          <el-option value="1" label="已确认"></el-option>
-          <el-option value="2" label="充值无效"></el-option>
+          <el-option value="0" label="待充值"></el-option>
+          <el-option value="1" label="充值成功"></el-option>
+          <el-option value="2" label="充值失败"></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-      <el-form-item label="时间范围">
-        <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+      <el-form-item label="申请日期">
+        <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="false"></el-date-picker>
       </el-form-item>
       </el-form-item>
       <el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
@@ -24,18 +24,21 @@
       <el-table-column type="index" label="序号" align="center" width="80" />
       <el-table-column type="index" label="序号" align="center" width="80" />
       <el-table-column label="充值金额(元)" align="center" prop="money" />
       <el-table-column label="充值金额(元)" align="center" prop="money" />
       <el-table-column label="充值编号" align="center" prop="nums" />
       <el-table-column label="充值编号" align="center" prop="nums" />
-      <el-table-column label="充值状态" align="center" width="110">
+      <el-table-column label="充值状态" align="center" width="130">
         <template slot-scope="scope">
         <template slot-scope="scope">
-          <el-tag type="danger" v-if="scope.row.state == 0">待确认</el-tag>
-          <el-tag type="success" v-if="scope.row.state == 1">已确认</el-tag>
+          <el-tag type="danger" v-if="scope.row.state == 0">待充值</el-tag>
+          <el-tag type="success" v-if="scope.row.state == 1" :title="'充值时间:' + scope.row.updateTime">充值成功</el-tag>
           <el-popover placement="top-start" v-if="scope.row.state == 2" title="原因" width="200" trigger="hover" :content="scope.row.msg">
           <el-popover placement="top-start" v-if="scope.row.state == 2" title="原因" width="200" trigger="hover" :content="scope.row.msg">
-            <el-tag type="danger" slot="reference">充值无效</el-tag>
+            <div slot="reference" :title="'操作时间:' + scope.row.updateTime">
+              <el-tag type="info">充值失败</el-tag>
+              <i class="el-icon-warning"></i>
+            </div>
           </el-popover>
           </el-popover>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="充值凭证" align="center">
       <el-table-column label="充值凭证" align="center">
         <template slot-scope="scope">
         <template slot-scope="scope">
-          <span class="cg">点击查看</span>
+          <preview v-model="scope.row.certificate"></preview>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="申请人" align="center" prop="opBy" width="130" />
       <el-table-column label="申请人" align="center" prop="opBy" width="130" />

+ 2 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Company.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.web.work.domain.base.BaseData;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
@@ -17,7 +18,7 @@ import java.util.Date;
 @Data
 @Data
 @TableName(value = "tb_company")
 @TableName(value = "tb_company")
 @Accessors(chain = true)
 @Accessors(chain = true)
-public class Company{
+public class Company extends BaseData {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
     private Long id;
     private Long id;

+ 10 - 11
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/MoneyOut.java

@@ -3,7 +3,10 @@ package com.ruoyi.web.work.domain;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.ruoyi.web.work.domain.base.BaseData;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
@@ -12,6 +15,7 @@ import javax.validation.constraints.DecimalMin;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Date;
+
 /**
 /**
  * @author lsw
  * @author lsw
  * @date 2024-04-18
  * @date 2024-04-18
@@ -19,7 +23,7 @@ import java.util.Date;
 @Data
 @Data
 @TableName(value = "tb_money_out")
 @TableName(value = "tb_money_out")
 @Accessors(chain = true)
 @Accessors(chain = true)
-public class MoneyOut{
+public class MoneyOut extends BaseData {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
     private Long id;
     private Long id;
@@ -44,8 +48,6 @@ public class MoneyOut{
     @ApiModelProperty(value = "充值无效原因")
     @ApiModelProperty(value = "充值无效原因")
     private String msg;
     private String msg;
 
 
-    private String version;
-
     @ApiModelProperty(value = "创建者")
     @ApiModelProperty(value = "创建者")
     private String opBy;
     private String opBy;
 
 
@@ -60,18 +62,15 @@ public class MoneyOut{
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
     private Date updateTime;
 
 
+    //乐观锁
+    @JsonIgnore
+    @Version
+    private Long version;
+
     @ApiModelProperty(value = "企业名称")
     @ApiModelProperty(value = "企业名称")
     @TableField(exist = false)
     @TableField(exist = false)
     private String companyName;
     private String companyName;
 
 
-    //开始日期
-    @TableField(exist = false)
-    private String dateBegin;
-
-    //结束日期
-    @TableField(exist = false)
-    private String dateEnd;
-
     @TableField(exist = false)
     @TableField(exist = false)
     private Company company;
     private Company company;
 }
 }

+ 7 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Recharge.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.Version;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.web.work.domain.base.BaseData;
 import com.ruoyi.web.work.domain.base.BaseData;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -50,15 +51,12 @@ public class Recharge extends BaseData {
     private String certificate;
     private String certificate;
 
 
     @ApiModelProperty(value = "状态:0=正常,1=停用")
     @ApiModelProperty(value = "状态:0=正常,1=停用")
-    @Excel(name = "状态", readConverterExp = "0=待确认,1=已确认,1=无效", sort = 3)
+    @Excel(name = "充值状态", readConverterExp = "0=待充值,1=成功,2=充值失败", sort = 3)
     private Integer state;
     private Integer state;
 
 
     @ApiModelProperty(value = "充值无效原因")
     @ApiModelProperty(value = "充值无效原因")
     private String msg;
     private String msg;
 
 
-    @Version
-    private String version;
-
     @Excel(name = "申请人", sort = 4)
     @Excel(name = "申请人", sort = 4)
     private String opBy;
     private String opBy;
 
 
@@ -74,6 +72,11 @@ public class Recharge extends BaseData {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
     private Date updateTime;
 
 
+    //乐观锁
+    @JsonIgnore
+    @Version
+    private Long version;
+
     @ApiModelProperty(value = "企业名称")
     @ApiModelProperty(value = "企业名称")
     @TableField(exist = false)
     @TableField(exist = false)
     @Excel(name = "企业名称", sort = 0, width = 40)
     @Excel(name = "企业名称", sort = 0, width = 40)

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/base/BaseData.java

@@ -23,5 +23,4 @@ public class BaseData {
     @TableField(exist = false)
     @TableField(exist = false)
     @JsonIgnore
     @JsonIgnore
     private String dateEnd;
     private String dateEnd;
-
 }
 }

+ 11 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/MoneyOutServiceImpl.java

@@ -47,8 +47,11 @@ public class MoneyOutServiceImpl extends ServiceImpl<MoneyOutMapper, MoneyOut> i
         moneyOut.setOpBy(SecurityUtils.getLoginUser().getUser().getNickName());
         moneyOut.setOpBy(SecurityUtils.getLoginUser().getUser().getNickName());
         moneyOut.setNums(StringUtils.generateNumber());
         moneyOut.setNums(StringUtils.generateNumber());
         moneyOut.setState(0);
         moneyOut.setState(0);
-        save(moneyOut);
-        return AjaxResult.success();
+        moneyOut.setVersion(System.currentTimeMillis());
+        if (save(moneyOut)) {
+            return AjaxResult.success();
+        }
+        return AjaxResult.error("提交申请失败,请联系平台");
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -63,7 +66,9 @@ public class MoneyOutServiceImpl extends ServiceImpl<MoneyOutMapper, MoneyOut> i
         }
         }
         moneyOut.setState(dto.getState());
         moneyOut.setState(dto.getState());
         moneyOut.setMsg(dto.getMsg());
         moneyOut.setMsg(dto.getMsg());
-        updateById(moneyOut);
+        if (!updateById(moneyOut)) {
+            throw new ServerException("提现失败,请联系管理员");
+        }
         //审核确认
         //审核确认
         if (moneyOut.getState() == 1) {
         if (moneyOut.getState() == 1) {
             Company company = companyService.getById(moneyOut.getCompanyId());
             Company company = companyService.getById(moneyOut.getCompanyId());
@@ -71,7 +76,9 @@ public class MoneyOutServiceImpl extends ServiceImpl<MoneyOutMapper, MoneyOut> i
                 throw new ServerException("关联企业不存在");
                 throw new ServerException("关联企业不存在");
             }
             }
             company.setMoney(company.getMoney().subtract(moneyOut.getMoney()));
             company.setMoney(company.getMoney().subtract(moneyOut.getMoney()));
-            companyService.updateById(company);
+            if (!companyService.updateById(company)) {
+                throw new ServerException("更新企业余额失败,请联系管理员");
+            }
         }
         }
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }

+ 13 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/RechargeServiceImpl.java

@@ -41,8 +41,12 @@ public class RechargeServiceImpl extends ServiceImpl<RechargeMapper, Recharge> i
         recharge.setUserId(SecurityUtils.getLoginUser().getUser().getUserId());
         recharge.setUserId(SecurityUtils.getLoginUser().getUser().getUserId());
         recharge.setNums(StringUtils.generateNumber());
         recharge.setNums(StringUtils.generateNumber());
         recharge.setState(0);
         recharge.setState(0);
-        save(recharge);
-        return AjaxResult.success();
+        recharge.setVersion(System.currentTimeMillis());
+        if (save(recharge)) {
+            return AjaxResult.success();
+        }
+        return AjaxResult.error("提交申请失败,请联系平台");
+
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -57,15 +61,19 @@ public class RechargeServiceImpl extends ServiceImpl<RechargeMapper, Recharge> i
         }
         }
         recharge.setState(dto.getState());
         recharge.setState(dto.getState());
         recharge.setMsg(dto.getMsg());
         recharge.setMsg(dto.getMsg());
-        updateById(recharge);
-        //审核确认
+        if (!updateById(recharge)) {
+            throw new ServerException("充值失败,请联系管理员");
+        }
+        //审核确认给企业账号充钱
         if (recharge.getState() == 1) {
         if (recharge.getState() == 1) {
             Company company = companyService.getById(recharge.getCompanyId());
             Company company = companyService.getById(recharge.getCompanyId());
             if (company == null) {
             if (company == null) {
                 throw new ServerException("关联企业不存在");
                 throw new ServerException("关联企业不存在");
             }
             }
             company.setMoney(company.getMoney().add(recharge.getMoney()));
             company.setMoney(company.getMoney().add(recharge.getMoney()));
-            companyService.updateById(company);
+            if (!companyService.updateById(company)) {
+                throw new ServerException("更新企业余额失败,请联系管理员");
+            }
         }
         }
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }