Przeglądaj źródła

提测第二天修复 -zzx

学习?学个屁 6 miesięcy temu
rodzic
commit
fbeb1d2d63

+ 2 - 3
config/dev.env.js

@@ -4,7 +4,6 @@ const prodEnv = require('./prod.env')
 
 module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
-  BASE_API: '"http://192.168.110.241:9120/zs/channel/admin"'
-  // BASE_API: '"http://192.168.2.21:9120/zs/channel/admin"'
-  // BASE_API: '"http://channel.admin.dev.zonelife.cn/zs/channel/admin"'
+  // BASE_API: '"http://192.168.110.241:9120/zs/channel/admin"'
+  BASE_API: '"http://192.168.2.13:9120/zs/channel/admin"'
 })

+ 38 - 0
package-lock.json

@@ -1493,6 +1493,11 @@
         "pascalcase": "^0.1.1"
       }
     },
+    "base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+    },
     "base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -2537,6 +2542,14 @@
         }
       }
     },
+    "css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
     "css-loader": {
       "version": "0.28.11",
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
@@ -5182,6 +5195,15 @@
         }
       }
     },
+    "html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "requires": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      }
+    },
     "htmlparser2": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
@@ -11744,6 +11766,14 @@
       "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==",
       "dev": true
     },
+    "text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
     "thenify": {
       "version": "3.3.1",
       "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -12458,6 +12488,14 @@
       "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
       "dev": true
     },
+    "utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "requires": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
     "uuid": {
       "version": "3.4.0",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",

+ 1 - 0
package.json

@@ -15,6 +15,7 @@
     "echarts": "^4.2.0-rc.2",
     "element-ui": "^2.3.7",
     "file-saver": "^2.0.5",
+    "html2canvas": "^1.4.1",
     "js-cookie": "^2.2.0",
     "normalize.css": "^8.0.0",
     "nprogress": "^0.2.0",

BIN
src/assets/images/canvasTest.jpg


+ 28 - 30
src/views/distribution/distributionSet/index.vue

@@ -15,7 +15,7 @@
                     <span @click="forbiddenDialogVisible = true">查看说明</span>
                 </div>
                 <el-form-item label="一级返佣比例%:" prop="firstLevel">
-                    <el-input v-model="admin.firstLevel" clearable placeholder="请输入一级返佣比例" type="number"
+                    <el-input v-model="admin.firstLevel" placeholder="请输入一级返佣比例" type="number"
                         style="width: 250px"></el-input>
                 </el-form-item>
                 <el-form-item label="二级返佣比例%:" prop="secondLevel">
@@ -40,20 +40,18 @@
             <div class="text1">1.一级返佣比例,是指一级分销员所获得的返佣比例;二级分佣比例,是指二级分销员所获得的返佣比例。</div>
             <div class="text1">2.计算公式:</div>
             <div class="text2">举例:某电站的计费策略如下图,一级返佣比例为10%,二级返佣比例为90%,某用户在9点开始充电,11点结束,消耗2度电。</div>
-            <div class="text2">只有一级分销员,由一级分销员直接发展的用户。一级分销员的返佣总金额 = 运营服务费/度 × 一级返佣比例/度 × 用户充电度数举例:0.13 × 0.1 × 2 = 0.026
-            </div>
-            <div class="text2">(2)有两级分销员。二级分销员的返佣总金额 = 运营服务费/度 × 一级返佣比例/度 × 二级返佣比例度 × 用户充电度数一级分销员的返佣总金额 = 运营服务费/度 ×
-                一级分佣比例/度 × (1 - 二级返佣比例/度) × 用户充电度数</div>
-            <div class="text2">举例:一级分销员的返佣总金额 = 0.13 × 0.1 × (1 - 0.9)× 2 = 0.0026 元</div>
-            <div class="text3">二级分销员的返佣总金额 = 0.13 × 0.1 × 0.9 × 2 = 0.0234 元 </div>
+            <div class="text2">(1)只有一级分销员,由一级分销员直接发展的用户。一级分销员的返佣总金额 = 订单中服务费金额/元 × 一级返佣比例。</div>
+            <div class="text2">(2)有两级分销员:</div>
+            <div class="text3">二级分销员的返佣总金额 = 订单中的服务费金额/元 × 一级返佣比例 × 二级返佣比例。</div>
+            <div class="text3">一级分销员的返佣总金额 = 订单中的服务费金额/元 × 一级返佣比例 ×(1 - 二级返佣比例/度)。</div>
+            <div class="text2">举例:一级分销员的返佣总金额 = 0.56 × 0.1 ×(1 - 0.9) = 0.0056元。</div>
+            <div class="text3">二级分销员的返佣总金额 = 0.56 × 0.1 × 0.9 = 0.0504 元。</div>
             <div style="margin-top: 20px;">
                 <el-table ref="adminTable" :data="list" border>
-                    <el-table-column label="时间段" align="center" prop="times"></el-table-column>
-                    <el-table-column label="电费(元/度)" align="center" prop="electricity"></el-table-column>
-                    <el-table-column label="结算服务费(元)" align="center" prop="service"></el-table-column>
-                    <el-table-column label="结算费合计(元/度)" align="center" prop="total"></el-table-column>
-                    <el-table-column label="运营服务费(元)" align="center" prop="operate"></el-table-column>
-                    <el-table-column label="销售合计价格(元/度)" align="center" prop="sellTotal"></el-table-column>
+                    <el-table-column label="充电订单编号" align="center" prop="times"></el-table-column>
+                    <el-table-column label="订单金额/元" align="center" prop="electricity"></el-table-column>
+                    <el-table-column label="服务费金额/元" align="center" prop="service"></el-table-column>
+                    <el-table-column label="订单完成时间" align="center" prop="total"></el-table-column>
                 </el-table>
             </div>
         </el-dialog>
@@ -74,23 +72,16 @@ export default {
             forbiddenDialogVisible: false,
             setLoading: false,
             list: [{
-                times: '09:00-12:00',
-                electricity: '0.82',
-                service: '0.24',
-                total: '1.06',
-                operate: '0.13',
-                sellTotal: '1.05'
-            }, {
-                times: '16:00-21:00',
-                electricity: '0.82',
-                service: '0.24',
-                total: '1.06',
-                operate: '0.13',
-                sellTotal: '1.05'
+                times: 'TLD241024224843367449',
+                electricity: '2.73',
+                service: '0.56',
+                total: '2024-10-24 16:00:00',
             }],
             rules: {
-                firstLevel: [{ required: true, message: '请输入一级返佣比例', trigger: 'blur' }, { pattern: /^(100|[0-9]|[1-9][0-9])$/, message: '请输入0-100的整数', trigger: 'blur' }],
-                secondLevel: [{ required: true, message: '请输入二级返佣比例', trigger: 'blur' }, { pattern: /^(100|[0-9]|[1-9][0-9])$/, message: '请输入0-100的整数', trigger: 'blur' }],
+                firstLevel: [{ required: true, message: '请输入一级返佣比例', trigger: 'blur' },
+                { pattern: /^\d+(\.\d{0,2})?$/, message: '最多保留两位小数', trigger: 'blur' },
+                {validator:this.handleInput, trigger: 'blur'}],
+                secondLevel: [{ required: true, message: '请输入二级返佣比例', trigger: 'blur' }, { pattern: /^\d+(\.\d{0,2})?$/, message: '最多保留两位小数', trigger: 'blur' }],
                 maxUserCount: [{ required: true, message: '请输入人数限制', trigger: 'blur' }],
             },
         }
@@ -101,6 +92,13 @@ export default {
     computed: {
     },
     methods: {
+        handleInput(rule, value, callback) {
+            if (value<=0) {
+                callback(new Error('一级返佣比例必须大于0'));
+            }else{
+                callback();
+            }
+        },
         submitForm() {
             this.$refs.admin.validate(valid => {
                 if (valid) {
@@ -115,9 +113,9 @@ export default {
                             secondLevel: this.admin.secondLevel,
                             maxUserCount: this.admin.maxUserCount,
                         };
-                        this.setLoading= true
+                        this.setLoading = true
                         distributionSet({ ...updateData }).then((response) => {
-                            this.setLoading= false
+                            this.setLoading = false
                             if (response.code == 200) {
                                 this.$message({
                                     message: "提交成功!",

+ 11 - 1
src/views/distribution/finance/index.vue

@@ -57,7 +57,17 @@
         </el-card>
         <div class="table-container">
             <el-table ref="adminTable" :data="list" style="width: 100%" v-loading="listLoading" border>
-                <el-table-column label="结算金额/元" align="center">
+                <el-table-column label="结算金额(直属用户)/元" align="center">
+                    <template slot-scope="scope">
+                    <span>{{ scope.row.firstMoney || '--' }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="结算金额(下级分销)/元" align="center">
+                    <template slot-scope="scope">
+                    <span>{{ scope.row.secondMoney || '--' }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="结算金额(总额)/元" align="center">
                     <template slot-scope="scope">
                     <span class="pushRecords" @click="pushRecords(scope.row)">{{ scope.row.money || '--' }}</span>
                     </template>

+ 52 - 22
src/views/distribution/peopleManage/index.vue

@@ -73,7 +73,8 @@
                             查看二维码</el-button>
                         <el-button size="mini" type="success" plain
                             @click="checkJunior(scope.$index, scope.row)">查看下级</el-button>
-                        <el-button size="mini" v-if="scope.row.isSelf==1" type="info" plain @click="userEdit(scope.row)">编辑</el-button>
+                        <el-button size="mini" v-if="scope.row.isSelf == 1" type="info" plain
+                            @click="userEdit(scope.row)">编辑</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -121,13 +122,16 @@
                 <el-button type="primary" @click="confirmEdit" size="small">确 定</el-button>
             </span>
         </el-dialog>
-        <el-dialog title="查看二维码" :visible.sync="checkQrCodeDialogVisible" width="20%">
-            <div style="text-align: center;">
-                <el-image class="qrCode" style="" :src="qrCodeImg">
-                    <div slot="error" class="image-slot">
-                        <i class="el-icon-loading"></i>
-                    </div>
-                </el-image>
+        <el-dialog title="查看二维码" :visible.sync="checkQrCodeDialogVisible" width="40%">
+            <div ref="posterContainer" class="qrCodeBox">
+                <div class="bigImgBox">
+                    <img :src="qrCode_bg" class="qrCodeBg">
+                    <el-image class="qrCode" style="" :src="qrCodeImg">
+                        <div slot="error" class="image-slot">
+                            <i class="el-icon-loading"></i>
+                        </div>
+                    </el-image>
+                </div>
             </div>
             <div style="text-align: center;margin-top: 20px;">
                 <el-button type="success" @click="downloadQrCode" lazy size="mini">下载二维码</el-button>
@@ -136,8 +140,10 @@
     </div>
 </template>
 <script>
-import { peopleList, getQrcode,peopleEdit } from "@/api/distribution";
+import { peopleList, getQrcode, peopleEdit } from "@/api/distribution";
 import { formatDate } from "@/utils/date";
+import html2canvas from 'html2canvas';
+import qrCode_bg from '@/assets/images/canvasTest.jpg'
 
 const defaultListQuery = {
     pageNum: 1,
@@ -177,6 +183,7 @@ export default {
                 value: 3,
                 label: '二级'
             }],
+            qrCode_bg,
         };
     },
     watch: {
@@ -208,16 +215,16 @@ export default {
             this.forbiddenDialogVisible = true;
             this.admin = row;
         },
-        confirmEdit(){
-            let data={
+        confirmEdit() {
+            let data = {
                 userName: this.admin.userName,
                 adminUserId: this.admin.adminUserId,
                 bankCard: this.admin.bankCard,
                 card: this.admin.card,
                 depositBank: this.admin.depositBank,
             }
-            peopleEdit({...data}).then(res => {
-                if(res.code == 200){
+            peopleEdit({ ...data }).then(res => {
+                if (res.code == 200) {
                     this.$message({
                         message: '修改成功',
                         type: 'success'
@@ -240,12 +247,16 @@ export default {
 
         // 下载
         downloadQrCode() {
-            const a = document.createElement('a');
-            a.href = this.qrCodeImg;
-            a.download = '二维码.jpg'; // 下载后的文件名
-            document.body.appendChild(a);
-            a.click();
-            document.body.removeChild(a);
+            const posterContainer = this.$refs.posterContainer;
+            html2canvas(posterContainer).then(canvas => {
+                const dataURL = canvas.toDataURL('image/png');
+                // const a = document.createElement('a');
+                // a.href = dataURL;
+                // a.download = '二维码.jpg'; // 下载后的文件名
+                // document.body.appendChild(a);
+                // a.click();
+                // document.body.removeChild(a);
+            });
         },
 
         // 查看下级
@@ -258,7 +269,7 @@ export default {
             });
         },
         handleResetSearch() {
-            this.date=''
+            this.date = ''
             this.listQuery = Object.assign({}, defaultListQuery);
         },
         handleSearchList() {
@@ -292,9 +303,28 @@ export default {
     justify-content: right;
 }
 
+.qrCodeBox {
+    display: flex;
+    align-items: center;
+    justify-self: center;
+}
+
+.bigImgBox {
+    position: relative;
+    width: 200px;
+}
+
+.qrCodeBg {
+    width: 200px;
+    height: auto;
+}
+
 .qrCode {
-    width: 110px;
-    height: 110px;
+    width: 140px;
+    height: 140px;
     border-radius: 6px;
+    position: absolute;
+    top: 43%;
+    left: 15%;
 }
 </style>

+ 8 - 3
src/views/distribution/records/index.vue

@@ -101,8 +101,9 @@
                 </el-table-column>
                 <el-table-column label="结算状态" align="center" prop="updateBy">
                     <template slot-scope="scope">
-                        <el-tag :type="scope.row.status == 2 ? 'success' : 'danger'">{{ scope.row.status == 2 ? '已结算' :
-                            '待结算' }}</el-tag>
+                        <el-tag type="info" v-if="scope.row.status == 0">未提现</el-tag>
+                        <el-tag type="wanning" v-if="scope.row.status == 1">待结算</el-tag>
+                        <el-tag type="success" v-if="scope.row.status == 2">已结算</el-tag>
                     </template>
                 </el-table-column>
                 <el-table-column label="提现时间" align="center">
@@ -165,6 +166,9 @@ export default {
             listLoading: false,
             forbiddenDialogVisible: false,
             options: [{
+                value: 0,
+                label: "未提现",
+            },{
                 value: 1,
                 label: "待结算",
             },
@@ -229,11 +233,12 @@ export default {
             query.status = 1
             recordsList(query).then((response) => {
                 this.financeList.push(...response.data.list);
+                // settleRecordId去重
                 let updateList = Object.values(this.financeList.reduce((acc, r) => {
                     acc[r.settleRecordId] = r
                     return acc
                 }, {}))
-                this.financeList = updateList.map(item => item.chargeOrderId)
+                this.financeList = updateList.map(item => item.settleRecordId)
                 this.updateLoading = true
                 updateStatus(this.financeList).then((res) => {
                     this.updateLoading = false