zangbin 1 年之前
父节点
当前提交
49837df887

+ 1 - 1
tour-module/src/main/java/com/tour/module/domain/LineCommission.java

@@ -49,7 +49,7 @@ public class LineCommission implements Serializable {
 
     /** 佣金 */
     @Excel(name = "佣金")
-    private BigDecimal commisson;
+    private BigDecimal commission;
 
     /** 创建者 */
     private String createBy;

+ 6 - 0
tour-module/src/main/java/com/tour/module/service/ILineCommissionService.java

@@ -3,6 +3,8 @@ package com.tour.module.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.tour.module.domain.LineCommission;
 
+import java.util.List;
+
 /**
  * Demo class
  *
@@ -10,4 +12,8 @@ import com.tour.module.domain.LineCommission;
  * @date 2023/6/14 14:39
  */
 public interface ILineCommissionService extends IService<LineCommission> {
+
+    List<LineCommission> queryList(LineCommission commission);
+
+    Boolean saveCommission(LineCommission commission);
 }

+ 43 - 0
tour-module/src/main/java/com/tour/module/service/impl/LineCommissionServiceImpl.java

@@ -1,11 +1,19 @@
 package com.tour.module.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.tour.module.domain.LineCommission;
+import com.tour.module.expection.CustomAppException;
 import com.tour.module.mapper.LineCommissionMapper;
 import com.tour.module.service.ILineCommissionService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * Demo class
  *
@@ -14,4 +22,39 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class LineCommissionServiceImpl extends ServiceImpl<LineCommissionMapper, LineCommission> implements ILineCommissionService {
+
+    @Override
+    public List<LineCommission> queryList(LineCommission commission) {
+        LambdaQueryWrapper<LineCommission> lqw = Wrappers.lambdaQuery();
+        if (commission.getId() != null) {
+            lqw.eq(LineCommission::getId, commission.getId());
+        }
+        if (commission.getLineId() != null) {
+            lqw.eq(LineCommission::getLineId, commission.getLineId());
+        }
+
+        if (StringUtils.isNotBlank(commission.getProvinceName())) {
+            lqw.like(LineCommission::getProvinceName, commission.getProvinceName());
+        }
+
+        if (StringUtils.isNotBlank(commission.getCityName())) {
+            lqw.apply("(find_in_set("+commission.getCityName()+",city_name)");
+        }
+
+        List<LineCommission> commissions = this.list(lqw);
+        return commissions;
+    }
+
+    @Override
+    public Boolean saveCommission(LineCommission commission) {
+        List<LineCommission> commissions = baseMapper.selectList(new QueryWrapper<LineCommission>()
+                .eq("deleted", 0)
+                .eq("line_id", commission.getLineId())
+                .eq("province_name", commission.getProvinceName()));
+        if (CollectionUtils.isNotEmpty(commissions)) {
+            throw new CustomAppException("该省重复设置!");
+        }
+        baseMapper.insert(commission);
+        return true;
+    }
 }

+ 21 - 2
tour-oms/src/main/java/com/tour/web/controller/LineCommissionController.java

@@ -1,10 +1,15 @@
 package com.tour.web.controller;
 
 import com.tour.common.core.controller.BaseController;
+import com.tour.common.core.domain.Result;
+import com.tour.common.core.page.TableDataInfo;
+import com.tour.module.domain.LineCommission;
+import com.tour.module.service.ILineCommissionService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * Demo class
@@ -16,4 +21,18 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/module/line/commission")
 @RestController
 public class LineCommissionController extends BaseController {
+
+    private final ILineCommissionService iLineCommissionService;
+
+    @GetMapping(value = "/list")
+    public TableDataInfo getList(LineCommission commission) {
+        startPage();
+        List<LineCommission> commissions = iLineCommissionService.queryList(commission);
+        return getDataTable(commissions);
+    }
+
+    @PostMapping
+    public Result add(@RequestBody LineCommission commission) {
+        return toAjax(iLineCommissionService.saveCommission(commission) ? 1 : 0);
+    }
 }

+ 16 - 0
web-ui/src/api/module/line.js

@@ -42,4 +42,20 @@ export function delLine(id) {
     url: '/module/line/' + id,
     method: 'delete'
   })
+}
+
+export function getLineCommissionList(query) {
+  return request({
+    url: '/module/line/commission/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addLineCommission(data) {
+  return request({
+    url: '/module/line/commission',
+    method: 'post',
+    data: data
+  })
 }

+ 38 - 14
web-ui/src/components/area/lineArea.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-select v-model="provinceAndCity.province"
+    <el-select v-model="provinceAndCity.province" v-if="ifShow==1"
                clearable @change="changeProvince" placeholder="请选择">
       <el-option
         v-for="item in area"
@@ -10,7 +10,8 @@
       </el-option>
     </el-select>
 
-    <el-select v-model="provinceAndCity.city" clearable @change="changeCity" placeholder="请选择" multiple>
+    <el-select v-model="provinceAndCity.city" v-if="ifShow==2"
+              clearable @change="changeCity" @visible-change="finishSelecting" placeholder="请选择" multiple>
       <el-option
         v-for="item in provinceAndCity.cityValues"
         :key="item.id"
@@ -26,16 +27,26 @@ import { areaMixins } from '@/api/areaMixins'
 
 export default {
   mixins: [areaMixins],
-  props: ['provinceAndCity'],
+  props: {
+    ifShow:{
+        type: Number,
+        default: 0
+    },
+    provinceAndCity:{
+        type: Object,
+        default: () => {}
+    }
+  },
   data() {
     return {
-      provinceAndCity: {
-        province: '',
-        city: '',
-        provinceName: '',
-        cityName: '',
-        cityValues: [],
-      },
+      // provinceAndCity: {
+      //   province: '',
+      //   city: [],
+      //   provinceName: '',
+      //   cityName: '',
+      //   cityValues: [],
+      //   cityNames: []
+      // },
 
     }
   },
@@ -48,24 +59,37 @@ export default {
   methods: {
     changeProvince(val) {
       this.provinceAndCity.provinceName = ''
+      this.provinceAndCity.city = []
       this.provinceAndCity.cityValues = []
+
       this.area.forEach(item => {
         if (item.id === val) {
           this.provinceAndCity.provinceName = item.name
           this.provinceAndCity.cityValues = item.childs
         }
       })
+      // console.log('provice', this.provinceAndCity)
       this.$emit("changeArea", this.provinceAndCity)
     },
     changeCity(val) {
       this.provinceAndCity.cityName = ''
       this.provinceAndCity.cityValues.forEach(item => {
-        if (item.id === val) {
-          this.provinceAndCity.cityName = item.name
-        }
+        val.forEach(v => {
+          if (item.id === v) {
+            this.provinceAndCity.cityNames.push(item.name)
+          }
+        })
       })
+      // console.log('city', this.provinceAndCity)
       this.$emit("changeArea", this.provinceAndCity)
-    }
+    },
+    finishSelecting(val) {
+      // console.log('finish', this.provinceAndCity)
+      if (this.provinceAndCity.cityNames.length > 0 && val === false) {
+        this.provinceAndCity.cityName = this.provinceAndCity.cityNames.join(",")
+        this.$emit("changeArea", this.provinceAndCity)
+      }
+    },
   }
 }
 </script>

+ 98 - 28
web-ui/src/views/module/line/index.vue

@@ -219,35 +219,35 @@
     </template>
 
     <el-dialog title="设置佣金" :visible.sync="commissionDia" width="65%">
-      <el-form :model="form1" ref="form1">
-        <el-form-item label="省" prop="agentName">
-          <LineArea :provinceAndCity="areaProp" :ifShow="ifShow=true" ref="lineArea"/>
+      <el-form :model="form1" ref="form1" :rules="rules1" label-width="100px">
+        <el-form-item label="分佣" prop="agentName">
+          <LineArea :provinceAndCity="areaProp" :ifShow="1" ref="lineArea" @changeArea="changeArea" />
         </el-form-item>
         <el-form-item label="不参与分佣市" prop="provinceName">
-          <LineArea :provinceAndCity="areaProp" :ifShow="ifShow=false" ref="lineArea"/>
+          <LineArea :provinceAndCity="areaProp" :ifShow="2" ref="lineArea" @changeArea="changeArea" />
         </el-form-item>
-        <el-form-item label="佣金" align="center" prop="commisson">
-          <el-input-number style="width:200px" :min="0" controls-position="right" :precision="2" v-model="form1.commisson">
+        <el-form-item label="佣金" prop="commission">
+          <el-input-number style="width:200px" :min="0" controls-position="right" :precision="2" v-model="form1.commission">
             </el-input-number> 
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" icon="el-icon-search" @click="handleMake">提交</el-button>
+          <el-button type="primary" icon="el-icon-position" @click="commissionSubmit">提交</el-button>
         </el-form-item>
       </el-form>
       <template>已设置省份</template>
       <el-table  v-loading="commissionLoading"  :data="commissionList"  stripe   border  highlight-current-row style="width: 100%" >
         <el-table-column label="省名称" align="center" prop="provinceName" />
         <el-table-column label="不参与分佣市名称" align="center" prop="cityName"/>
-        <el-table-column label="佣金" align="center" prop="num"/>
+        <el-table-column label="佣金" align="center" prop="commission"/>
         <el-table-column label="创建时间" align="center" prop="createTime"/>
       </el-table>
 
       <pagination
-        v-show="total>0"
-        :total="total"
+        v-show="commissionTotal>0"
+        :total="commissionTotal"
         :page.sync="commissionParams.pageNum"
         :limit.sync="commissionParams.pageSize"
-        @pagination="getList"
+        @pagination="getCommissionList"
       />
 
     </el-dialog>
@@ -256,12 +256,12 @@
 </template>
 
 <script>
-import { getList,addLine,updatLine,getInfo,delLine } from "@/api/module/line";
+import { getList,addLine,updatLine,getInfo,delLine,getLineCommissionList,addLineCommission } from "@/api/module/line";
 import Area from '@/components/area'
 import {getToken} from "@/utils/auth";
 import Editor from '@/components/Editor';
 import {serverUrl} from "@/utils/auth";
-import LineArea from '@/components/lineArea';
+import LineArea from '@/components/area/lineArea';
 
 export default {
   name: "lineindex",
@@ -272,7 +272,14 @@ export default {
   },
   data() {
     return {
-      areaProp: {},
+      areaProp: {
+        province: '',
+        city: [],
+        provinceName: '',
+        cityName: '',
+        cityValues: [],
+        cityNames: []
+      },
       lineList: [],
       commissionList: [],
       subLoading:false,
@@ -302,6 +309,7 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
+      commissionTotal: 0,
  
       // 弹出层标题
       title: "",
@@ -318,8 +326,9 @@ export default {
         status: undefined
       },
       commissionParams: {
-         pageNum: 1,
-        pageSize: 10
+        pageNum: 1,
+        pageSize: 10,
+        id: undefined
       },
       typeOption: [
         {
@@ -345,8 +354,32 @@ export default {
           message: '请输入标题:',
           trigger: 'blur'
         }],
-      
+      },
+      // 表单参数
+      form1: {
+        lineId: undefined,
+        provinceId: '',
+        provinceName: '',
+        commission: 0,
+        cityCode: '',
+        cityName: ''
+      },
 
+      // 表单校验
+      rules1: {
+        commission: [{
+          required: true,
+          message: '佣金不能为空:',
+          trigger: 'blur'
+        }],
+      },
+      startArea: {
+        province: '',
+        city: '',
+        provinceName: '',
+        cityName: '',
+        cityValues: [],
+        cityNames: []
       },
       caerAction: process.env.VUE_APP_BASE_API + "/common/upload",
       caerfileList: [],
@@ -384,13 +417,21 @@ export default {
 
   },
   methods: {
+    getCommissionList() {
+        this.commissionLoading = true;
+        getLineCommissionList(this.commissionParams).then(response => {
+          this.commissionList = response.rows;
+          this.commissionTotal = response.total;
+          this.commissionLoading = false;
+        });
+      },
 
-       // 选择区域
-  changeArea (e) {
-      this.startArea = e
+    // 选择区域
+    changeArea (e) {
+        this.startArea = e
 
-    },
-       /** 重置按钮操作 */
+      },
+    /** 重置按钮操作 */
     resetQuery() {
       this.resetForm("queryForm");
       this.handleQuery();
@@ -460,6 +501,41 @@ export default {
         this.title = "修改旅游线路信息";
       });
     },
+
+    handleCommission(row) {
+      this.commissionParams.lineId = row.id ;
+      this.form1.lineId = row.id;
+      this.commissionDia = true;
+      this.getCommissionList();
+    },
+
+    commissionSubmit() {
+      this.$refs["form1"].validate(valid => {
+        if (valid) {
+          if (this.startArea.province === undefined || this.startArea.province === '') {
+            this.$message({
+              message: '请选择地区',
+              type: 'error',
+              duration: 1500
+            })
+            return;
+          }
+          console.log('startArea', this.startArea)
+          this.form1.provinceId = this.startArea.province
+          this.form1.cityId = this.startArea.city
+          if(this.startArea.city != "" && this.startArea.city != null) {
+            this.form1.cityCode = this.startArea.city.join(",")
+          }
+          this.form1.provinceName = this.startArea.provinceName
+          this.form1.cityName = this.startArea.cityName
+          console.log('form1', this.form1)
+          addLineCommission(this.form1).then(response => {
+              this.msgSuccess("新增成功");
+              this.getCommissionList();
+            });
+        }
+        });
+    },
    
     /** 提交按钮 */
     submitForm() {
@@ -529,12 +605,6 @@ export default {
       })
     },
 
-    handleCommission(row) {
-      const id = row.id ;
-      this.commissionDia = true;
-    },
-
-
     caerBeforeUpload(file) {
       let isRightSize = file.size / 1024 / 1024 < 20
       if (!isRightSize) {