From d54dc04ae25b73ee0c7c588c6523d94624f052e3 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 05 六月 2026 10:09:13 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun

---
 admin/src/views/business/sysParams.vue |  290 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 232 insertions(+), 58 deletions(-)

diff --git a/admin/src/views/business/sysParams.vue b/admin/src/views/business/sysParams.vue
index 4d975db..2d98292 100644
--- a/admin/src/views/business/sysParams.vue
+++ b/admin/src/views/business/sysParams.vue
@@ -1,81 +1,186 @@
 <template>
-  <TableLayout>
-    <template v-slot:table-wrap>
-      <div class="params-container">
-      <div class="section">
-        <h3 class="section-title">鍙告満瑙勫垯</h3>
-        <div class="form-item">
-          <span class="label">鍙告満姣忔棩鍙彇娑堣鍗曟鏁颁负</span>
-          <el-input-number v-model="form.driverDailyCancelLimit" :min="0" controls-position="right"></el-input-number>
-          <span class="desc">娆★紝瓒呰繃娆℃暟鍚庯紝浠婃棩涓嶅彲鎶㈠崟</span>
-        </div>
-        <div class="form-item">
-          <span class="label">鍙告満鏈�澶у悓鏃惰繘琛屼腑璁㈠崟鏁伴噺涓�</span>
-          <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number>
-          <span class="desc">涓紝瓒呰繃璇ユ暟閲忎笉鍏佽鎶㈠崟<span class="red">锛堝嵆璁㈠崟鐘舵��=寰呭彇浠�/閰嶉�佷腑锛�</span></span>
-        </div>
+  <div class="params-container" :style="' height: '+contentHeight+'px;'">
+    <div class="section">
+      <h3 class="section-title">鍙告満瑙勫垯</h3>
+      <div class="form-item">
+        <span class="label">鍙告満姣忔棩鍙彇娑堣鍗曟鏁颁负</span>
+        <el-input-number v-model="form.driverDailyCancelLimit" :min="0" controls-position="right"></el-input-number>
+        <span class="label">娆★紝瓒呰繃娆℃暟鍚庯紝浠婃棩涓嶅彲鎶㈠崟</span>
       </div>
-
-      <div class="section">
-        <h3 class="section-title">璁㈠崟瑙勫垯</h3>
-        <div class="form-item">
-          <span class="label">瓒呮椂</span>
-          <el-input-number v-model="form.autoCancelTime" :min="0" controls-position="right"></el-input-number>
-          <span class="desc">鍒嗛挓鏈敮浠橈紝璁㈠崟鑷姩鍙栨秷</span>
-        </div>
-        <div class="form-item">
-          <span class="label">鎬ラ�熻揪璁㈠崟璁′环绯绘暟</span>
-          <el-input-number v-model="form.urgentCoefficient" :min="0" :precision="2" controls-position="right"></el-input-number>
-        </div>
-        <div class="form-item">
-          <span class="label">鐗╁搧淇濊垂姣斾緥</span>
-          <el-input-number v-model="form.insuranceRate" :min="0" :precision="2" controls-position="right"></el-input-number>
-          <span class="desc">%</span>
-        </div>
-        <div class="form-item">
-          <span class="label">寮傚湴瀵勯�佹ā寮忎笅锛岃嫢鐗╁搧宸查�佽揪锛岃�屽鎴峰綋澶╂湭鍙栦欢锛屽垯鍚庣画绯荤粺鎸�</span>
-          <el-input-number v-model="form.unpickedDiscount" :min="0" :precision="2" controls-position="right"></el-input-number>
-          <span class="desc">鎶樻墸绯绘暟璁$畻</span>
-        </div>
-        <div class="form-item">
-          <span class="label">璁㈠崟閫佽揪鍚庨粯璁�</span>
-          <el-input-number v-model="form.autoConfirmReceipt" :min="0" controls-position="right"></el-input-number>
-          <span class="desc">澶╁悗鑷姩纭鏀惰揣<span class="red">锛堜粎闄愭敹浠跺湴鍧�涓嶆槸鏈嶅姟鐐圭殑鎯呭喌锛�</span></span>
-        </div>
-        <div class="form-item">
-          <span class="label">璁㈠崟瀹屾垚鍚�</span>
-          <el-input-number v-model="form.settlementDate" :min="0" controls-position="right"></el-input-number>
-          <span class="desc">澶╁悗绯荤粺缁撶畻璁㈠崟锛屽苟缁欎笌鍙備笌瑙掕壊鎸夋瘮渚嬪垎鎴�</span>
-        </div>
+      <div class="form-item">
+        <span class="label">鍙告満鏈�澶у悓鏃惰繘琛屼腑璁㈠崟鏁伴噺涓�</span>
+        <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number>
+        <span class="label">涓紝瓒呰繃璇ユ暟閲忎笉鍏佽鎶㈠崟<span class="red">锛堝嵆璁㈠崟鐘舵��=寰呭彇浠�/閰嶉�佷腑锛�</span></span>
       </div>
-
-      <div class="footer">
-        <el-button type="primary" @click="handleSave" :loading="isWorking.save">淇濆瓨</el-button>
+      <div class="form-item">
+        <span class="label">瀹㈡埛涓嬪崟鍚庢瘡闅�</span>
+        <el-input-number v-model="form.noGrabNotifyTime" :min="0" controls-position="right"></el-input-number>
+        <span class="label">鍒嗛挓鏈湁鍙告満鎶㈠崟锛岀郴缁熸帹閫佸钩鍙扮鐞嗗憳</span>
+        <el-select v-model="userIds"   multiple  clearable placeholder="璇烽�夋嫨">
+          <el-option
+              v-for="item in userList"
+              :key="item.id"
+              :label="item.realname"
+              :value="item.id+''" />
+        </el-select>
+        <span class="label">鎻愰啋鍔犳�ユ淳鍗曞鐞嗐��</span>
+      </div>
+      <div class="form-item">
+        <span class="label">闂ㄥ簵榛樿閰嶉�佽寖鍥�</span>
+        <el-input-number v-model="form.defaultDeliveryRange" :min="0" controls-position="right"></el-input-number>
+        <span class="label">锛堝叕閲岋級</span>
       </div>
     </div>
-    </template>
-  </TableLayout>
+
+    <div class="section">
+      <h3 class="section-title">璁㈠崟瑙勫垯</h3>
+      <div class="form-item">
+        <span class="label">瓒呮椂</span>
+        <el-input-number v-model="form.autoCancelTime" :min="0" controls-position="right"></el-input-number>
+        <span class="label">鍒嗛挓鏈敮浠橈紝璁㈠崟鑷姩鍙栨秷</span>
+      </div>
+      <div class="form-item">
+        <span class="label">鎬ラ�熻揪璁㈠崟璁′环绯绘暟</span>
+        <el-input-number v-model="form.urgentCoefficient" :min="0" :precision="2" controls-position="right"></el-input-number>
+      </div>
+      <div class="form-item">
+        <span class="label">鐗╁搧淇濊垂姣斾緥</span>
+        <el-input-number v-model="form.insuranceRate" :min="0" :precision="2" controls-position="right"></el-input-number>
+        <span class="desc">%</span>
+      </div>
+      <div class="form-item">
+        <span class="label">鍚屽煄瀵勯�佹ā寮忎笅锛岃嫢鐗╁搧宸查�佽揪锛岃�屽鎴峰綋澶╂湭鍙栦欢锛屽垯鍚庣画绯荤粺鎸�</span>
+        <el-input-number v-model="form.unpickedDiscount" :min="0" :precision="2" controls-position="right"></el-input-number>
+        <span class="desc">鎶樻墸绯绘暟璁$畻</span>
+      </div>
+      <div class="form-item">
+        <span class="label">璁㈠崟閫佽揪鍚庨粯璁�</span>
+        <el-input-number v-model="form.autoConfirmReceipt" :min="0" controls-position="right"></el-input-number>
+        <span class="label">澶╁悗鑷姩纭鏀惰揣<span class="red">锛堜粎闄愭敹浠跺湴鍧�涓嶆槸鏈嶅姟鐐圭殑鎯呭喌锛�</span></span>
+      </div>
+      <div class="form-item">
+        <span class="label">璁㈠崟瀹屾垚鍚�</span>
+        <el-input-number v-model="form.settlementDate" :min="0" controls-position="right"></el-input-number>
+        <span class="label">澶╁悗绯荤粺缁撶畻璁㈠崟锛屽苟缁欎笌鍙備笌瑙掕壊鎸夋瘮渚嬪垎鎴�</span>
+      </div>
+    </div>
+
+    <div class="section">
+      <h3 class="section-title">浼樻儬鍒稿彂鏀捐鍒�</h3>
+      <div class="form-item">
+        <span class="label">涓嬪崟鏁伴噺姣忔弧</span>
+        <el-input-number v-model="form.orderCouponOrderCount" :min="1" controls-position="right"></el-input-number>
+        <span class="label">鍗曪紝鑷冲</span>
+        <el-input-number v-model="form.orderCouponGiftCount" :min="1" controls-position="right"></el-input-number>
+        <span class="label">娆★紝骞冲彴璧犻�佷紭鎯犲埜 </span>
+        <el-select v-model="form.orderCouponId" style="width: 130px;" placeholder="浼樻儬鍒�">
+          <el-option v-for="item in couponList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+        <span class="label"><span class="red">锛堜互琛屾潕宸插瘎瀛橀棬搴椾负鍑嗭紝鍗充究閫�鍗曚害涓嶆敹鍥烇紝榛樿姣忔鍙戞斁1寮狅級</span></span>
+      </div>
+      <div class="form-item">
+        <span class="label">浼氬憳娉ㄥ唽姣忔弧</span>
+        <el-input-number v-model="form.registerCouponYears" :min="1" controls-position="right"></el-input-number>
+        <span class="label">骞达紝鑷冲</span>
+        <el-input-number v-model="form.registerCouponGiftCount" :min="1" controls-position="right"></el-input-number>
+        <span class="label">娆★紝骞冲彴璧犻�佷紭鎯犲埜 </span>
+        <el-select v-model="form.registerCouponId" style="width: 130px;" placeholder="浼樻儬鍒�">
+          <el-option v-for="item in couponList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+        <span class="label"><span class="red">锛堟寜娉ㄥ唽鏃堕棿锛屾棤璁轰細鍛樻槸鍚︿笅鍗曪紱榛樿姣忔鍙戞斁1寮狅級</span></span>
+      </div>
+      <div class="form-item">
+        <span class="label">鏂版敞鍐屼細鍛橀�佸钩鍙拌禒閫佷紭鎯犲埜</span>
+        <el-select v-model="form.registerGiftCouponId" style="width: 130px;" placeholder="浼樻儬鍒�">
+          <el-option v-for="item in couponList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+      </div>
+    </div>
+
+    <div class="section">
+      <h3 class="section-title">寮�绁ㄨ鍒�</h3>
+      <div class="form-item">
+        <span class="label">瓒呮椂</span>
+        <el-input-number v-model="form.invoiceMonthLimit" :min="1" controls-position="right"></el-input-number>
+        <span class="label">涓湀鐨勮鍗曚笉鍏佽寮�鍙戠エ</span>
+      </div>
+    </div>
+
+    <div class="section">
+      <h3 class="section-title">鍙告満濂栧姳瑙勫垯</h3>
+      <div class="table-container">
+        <el-table :data="driverRewardList" border style="width: 100%">
+          <el-table-column prop="registerRewardAmount" label="娉ㄥ唽濂栧姳锛堝厓/鍗曪級">
+            <template slot-scope="scope">
+              <el-input-number v-model="scope.row.registerRewardAmount" :min="1" controls-position="right"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column prop="registerRewardOrderCount" label="娉ㄥ唽濂栧姳鍗曟暟">
+            <template slot-scope="scope">
+              <el-input-number v-model="scope.row.registerRewardOrderCount" :min="1" controls-position="right"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column prop="platformRewardAmount" label="骞冲彴濂栧姳锛堝厓/鍗曪級">
+            <template slot-scope="scope">
+              <el-input-number v-model="scope.row.platformRewardAmount" :min="1" controls-position="right"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column prop="platformRewardOrderCount" label="骞冲彴濂栧姳鍗曟暟">
+            <template slot-scope="scope">
+              <el-input-number v-model="scope.row.platformRewardOrderCount" :min="1" controls-position="right"></el-input-number>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+
+    <div class="footer">
+      <el-button type="primary" @click="handleSave" :loading="isWorking.save">淇濆瓨</el-button>
+    </div>
+  </div>
 </template>
 
 <script>
 import TableLayout from '@/layouts/TableLayout'
 import { getParams, saveParams } from '@/api/business/sysParams'
+import { allList } from '@/api/system/user'
+import { validList } from '@/api/business/coupon'
 
 export default {
   name: 'SysParams',
   components: { TableLayout },
   data () {
     return {
+      contentHeight: 600,
+      driverRewardList: [],
       form: {
-        autoCancelTime: '',
-        autoConfirmReceipt: '',
-        driverDailyCancelLimit: '',
+         autoCancelTime: '',
+         autoConfirmReceipt: '',
+         registerRewardAmount: 0,
+         registerRewardOrderCount: 0,
+         platformRewardAmount: 0,
+         platformRewardOrderCount: 0,
+         driverDailyCancelLimit: '',
         insuranceRate: '',
         orderAcceptLimit: '',
+        noGrabNotifyUsers: '',
+        noGrabNotifyTime: '',
+        defaultDeliveryRange: '',
         settlementDate: '',
         unpickedDiscount: '',
-        urgentCoefficient: ''
+        urgentCoefficient: '',
+        orderCouponOrderCount: '',
+        orderCouponGiftCount: '',
+        registerCouponYears: '',
+        registerCouponGiftCount: '',
+        orderCouponId: null,
+        registerCouponId: null,
+        registerGiftCouponIds: null,
+        invoiceMonthLimit: ''
       },
+      couponList: [],
+      userIds: [],
+      userList: [],
       isWorking: {
         save: false
       }
@@ -83,8 +188,26 @@
   },
   created () {
     this.loadData()
+    this.loadUserlist()
+    this.loadCouponList()
+    this.contentHeight =  window.innerHeight -110;
   },
   methods: {
+    loadCouponList() {
+      validList().then(res => {
+        console.log(res)
+        this.couponList = res || []
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
+    loadUserlist () {
+      allList().then(res => {
+        this.userList = res || []
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
     loadData () {
       getParams().then(res => {
         this.form = {
@@ -92,10 +215,35 @@
           autoConfirmReceipt: res.autoConfirmReceipt || '',
           driverDailyCancelLimit: res.driverDailyCancelLimit || '',
           insuranceRate: res.insuranceRate || '',
+          defaultDeliveryRange: res.defaultDeliveryRange || '',
+          noGrabNotifyTime: res.noGrabNotifyTime || '',
           orderAcceptLimit: res.orderAcceptLimit || '',
+          noGrabNotifyUsers: res.noGrabNotifyUsers || '',
           settlementDate: res.settlementDate || '',
           unpickedDiscount: res.unpickedDiscount || '',
-          urgentCoefficient: res.urgentCoefficient || ''
+          urgentCoefficient: res.urgentCoefficient || '',
+          orderCouponOrderCount: res.orderCouponOrderCount || '',
+          orderCouponGiftCount: res.orderCouponGiftCount || '',
+          registerCouponYears: res.registerCouponYears || '',
+          registerCouponGiftCount: res.registerCouponGiftCount || '',
+          orderCouponId: res.orderCouponId ? Number(res.orderCouponId) : null,
+          registerCouponId: res.registerCouponId ? Number(res.registerCouponId) : null,
+          registerGiftCouponIds: res.registerGiftCouponIds ? Number(res.registerGiftCouponIds) : '',
+          registerRewardAmount: (res.registerRewardAmount || 0) / 100,
+          registerRewardOrderCount: res.registerRewardOrderCount || 0,
+          platformRewardAmount: (res.platformRewardAmount || 0) / 100,
+          platformRewardOrderCount: res.platformRewardOrderCount || 0,
+          invoiceMonthLimit: res.invoiceMonthLimit || ''
+        }
+        // 鍒濆鍖栧徃鏈哄鍔辫鍒欒〃鏍兼暟鎹�
+        this.driverRewardList = [{
+          registerRewardAmount: this.form.registerRewardAmount || 0,
+          registerRewardOrderCount: this.form.registerRewardOrderCount || 0,
+          platformRewardAmount: this.form.platformRewardAmount || 0,
+          platformRewardOrderCount: this.form.platformRewardOrderCount || 0
+        }]
+        if (this.form.noGrabNotifyUsers) {
+          this.userIds = this.form.noGrabNotifyUsers.split(',')
         }
       }).catch(e => {
         this.$tip.apiFailed(e)
@@ -103,7 +251,30 @@
     },
     handleSave () {
       this.isWorking.save = true
-      saveParams(this.form).then(res => {
+      // 娣辨嫹璐濊〃鍗曟暟鎹�
+      const submitForm = JSON.parse(JSON.stringify(this.form))
+      submitForm.noGrabNotifyUsers = ''
+      if (this.userIds) {
+        submitForm.noGrabNotifyUsers = this.userIds.join(',')
+        }
+        // 鍚屾鍙告満濂栧姳琛ㄦ牸鏁版嵁鍒拌〃鍗�
+        if (this.driverRewardList.length > 0) {
+          const rewardData = this.driverRewardList[0]
+          submitForm.registerRewardAmount = rewardData.registerRewardAmount
+          submitForm.registerRewardOrderCount = rewardData.registerRewardOrderCount
+          submitForm.platformRewardAmount = rewardData.platformRewardAmount
+          submitForm.platformRewardOrderCount = rewardData.platformRewardOrderCount
+        }
+        if (submitForm.orderCouponId) {
+          submitForm.orderCouponId = String(submitForm.orderCouponId)
+        }
+        if (submitForm.registerCouponId) {
+          submitForm.registerCouponId = String(submitForm.registerCouponId)
+        }
+        // if (submitForm.registerGiftCouponIds) {
+        //   submitForm.registerGiftCouponIds = submitForm.registerGiftCouponIds
+        // }
+      saveParams(submitForm).then(res => {
         this.$tip.apiSuccess(res || '淇濆瓨鎴愬姛')
       }).catch(e => {
         this.$tip.apiFailed(e)
@@ -118,6 +289,9 @@
 <style scoped>
 .params-container {
   padding: 20px;
+  overflow: auto;
+  display: block;
+  background-color: #fff;
 }
 .section {
   margin-bottom: 40px;

--
Gitblit v1.9.3