jiangping
2024-01-30 a9ca0823ab8f33ca85abebcf6ec4a8da235adb49
开发业务接口
已添加2个文件
已修改13个文件
792 ■■■■ 文件已修改
company/src/api/business/dispatchUnit.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaInsuranceApplyCheckWindow.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/dispatchReview.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/dispatchReviewCheck.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/dispatchUnitDetailsPlat.vue 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/dispatchUnitReviewDetails.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/company.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/dispatchUnitReview.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/taxes.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/DispatchUnitController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Date.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/DispatchUnit.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/DuLog.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/dispatchUnit.js
@@ -21,7 +21,12 @@
export function getById (id) {
    return request.get(`/business/dispatchUnit/${id}`)
}
export function check (data) {
    return request.post('/business/dispatchUnit/check', data)
}
export function checkWorktype (data) {
    return request.post('/business/dispatchUnit/checkWorktype', data)
}
// æ·»åŠ å·¥ç§
export function createSolution (data) {
    return request.post('/business/dispatchUnit/createSolution', data)
company/src/components/business/OperaInsuranceApplyCheckWindow.vue
@@ -172,6 +172,24 @@
  methods: {
     open(title,target,flag){
       this.visible=true
       this.model={}
       this.form= {
         id: null,
         backCheckInfo:'',
         dealBackInfo:'',
         editCheckInfo:'',
         editDate: '',
         editCode: '',
         startTime:null,
         code:null,
         toubaodanFile:null,
         baoxianFile:null,
         editBaoxianFile:null,
         fileList: [],
         fileList1: [],
         fileList2: [],
         selectRadio:0
       },
       this.model=target
       this.form.startTime=this.model.startTime
       this.title=title
company/src/components/business/dispatchReview.vue
@@ -1,54 +1,57 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
    >
        <div class="box">
            <div class="box_label">保险方案:平安保险雇主责任险B版</div>
            <el-table
                :data="tableData"
                border
                style="width: 100%">
                <el-table-column
                    prop="date"
                    label="日期">
                </el-table-column>
                <el-table-column
                    prop="name"
                    label="姓名">
                </el-table-column>
                <el-table-column
                    prop="address"
                    label="地址">
                </el-table-column>
            </el-table>
        </div>
        <!--    é©³å›žé€€å›žç”³è¯·    -->
        <el-dialog
            title="审核确认"
            :visible.sync="visible5"
            :show-close="false"
            :close-on-click-modal="false"
            width="30%"
            center>
            <div class="form">
                <div class="form_item">
                    <div class="form_item_label"><span>*</span>审核说明:</div>
                    <div class="form_item_val">
                        <el-input type="textarea" :rows="2" placeholder="请输入"></el-input>
            <el-input type="textarea" v-model="form.checkInfo" :rows="2" placeholder="请输入"></el-input>
                    </div>
                </div>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="visible5 = false">取 æ¶ˆ</el-button>
                <el-button type="primary" @click="visible5 = false">ç¡® å®š</el-button>
            </span>
        </el-dialog>
         <div class="box" v-for="(item, index) in duSolutionList" :key="index">
          <div   class="box_label">保险方案:{{item.solutionName}}</div>
            <el-table
                v-if="item.duWorktypeList && item.duWorktypeList.length>0"
                :data="item.duWorktypeList"
                border
                style="width: 100%">
              <el-table-column label="序号" width="80px">
                <template slot-scope="scope">
                  <span>{{scope.$index + 1}}</span>
                </template>
              </el-table-column>
              <el-table-column
                  prop="workTypeName"
                  label="所属工种">
              </el-table-column>
              <el-table-column
                  prop="name"
                  label="操作视频">
                <template slot-scope="{row}">
                  <video loop controls width="150px" height="150px" :src="row.videoUrlFull"></video>
                </template>
              </el-table-column>
              <el-table-column
                  label="状态">
                <template slot-scope="{row}">
                  <span v-if="row.status === 0">待审核</span>
                  <span v-if="row.status === 1">审核通过</span>
                  <span v-if="row.status === 2">审核不通过</span>
                </template>
              </el-table-column>
            </el-table>
      </div>
        <template v-slot:footer>
            <el-button type="primary" @click="visible5 = true">审核通过</el-button>
            <el-button @click="visible5 = true">审核退回</el-button>
            <el-button type="primary" @click="doSubmit(1)">审核通过</el-button>
            <el-button type="danger" @click="doSubmit(2)">审核退回</el-button>
            <el-button @click="visible=false">取消</el-button>
        </template>
    </GlobalWindow>
</template>
@@ -56,6 +59,7 @@
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import {checkWorktype} from "@/api/business/dispatchUnit";
    export default {
        name: 'dispatchReview',
        extends: BaseOpera,
@@ -64,9 +68,10 @@
            return {
                // è¡¨å•数据
                form: {
                    id: null,
                    editDate: ''
                  checkInfo:'',
                  duSolutionList:[]
                },
              duSolutionList:[],
                // éªŒè¯è§„则
                rules: {
                },
@@ -81,6 +86,44 @@
            })
        },
        methods: {
          open(title, target){
            this.title=title
            this.visible=true
            this.form ={}
            this.form = target;
            this.duSolutionList=[]
            var duSolutionList = this.form.duSolutionList;
            duSolutionList.forEach(item => {
                var worktyps = item.duWorktypeList;
                var flag = 0;
              var tempworktyps = new Array();
                worktyps.forEach(item1 => {
                   if(item1.status == null || item1.status == 0){
                     //如果是待审核工种
                     flag = 1;
                     tempworktyps.push(item1);
                   }
                  if(flag ==1){
                    this.duSolutionList.push({duWorktypeList:tempworktyps,solutionName:item.solutionName})
                  }
                })
            })
            console.log(this.form)
          },
          doSubmit(type){
            this.$dialog.messageConfirm('确认进行该操作吗?')
                .then(() => {
                  this.isWorking = true
                  checkWorktype({id:this.form.id,checkInfo:this.form.checkInfo,worktypeStatus:type})
                      .then(response => {
                        this.visible = false
                        this.$emit('success')
                      }).catch(err => {
                    this.$tip.apiFailed(err)
                  })
                })
          }
        }
    }
@@ -101,6 +144,7 @@
        display: flex;
        align-items: center;
        flex-direction: column;
      margin-bottom: 50px;
        .form_span {
            width: 100%;
            display: flex;
@@ -122,13 +166,13 @@
            width: 100%;
            display: flex;
            align-items: center;
            margin-bottom: 20px;
            margin-bottom: 50px;
            &:last-child {
                margin: 0 !important;
            }
            .form_item_label {
                flex-shrink: 0;
                width: 170px;
                //width: 170px;
                color: black;
                font-size: 14px;
                span {
company/src/components/business/dispatchReviewCheck.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        :visible.sync="visible"
        :confirm-working="isWorking"
    >
          <div class="form">
            <div class="form_item">
              <div class="form_item_label"><span>*</span>审核说明:</div>
              <div class="form_item_val">
                <el-input type="textarea" v-model="form.checkInfo" :rows="2" placeholder="请输入"></el-input>
              </div>
            </div>
          </div>
      <template v-slot:footer>
        <el-button type="primary" @click="doSubmit(1)">审核通过</el-button>
        <el-button type="danger" @click="doSubmit(2)">审核退回</el-button>
        <el-button @click="visible=false">取消</el-button>
      </template>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import {check} from "@/api/business/dispatchUnit";
    export default {
        name: 'dispatchReviewCheck',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                // è¡¨å•数据
                form: {
                    id: null,
                    checkInfo: ''
                },
                // éªŒè¯è§„则
                rules: {
                },
                tableData: [],
                visible5: false
            }
        },
        created () {
            this.config({
                api: '/business/insuranceApply',
                'field.id': 'id'
            })
        },
        methods: {
          open(title,target){
            this.form.id = null
            this.title=title
            this.visible=true
            this.form.id=target.id
          },
          doSubmit(type){
            this.$dialog.messageConfirm('确认进行该操作吗?')
                .then(() => {
                  this.isWorking = true
                  check({id:this.form.id,checkInfo:this.form.checkInfo,unitStatus:type})
                      .then(response => {
                        this.visible = false
                        this.$emit('success')
                      }).catch(err => {
                    this.$tip.apiFailed(err)
                  })
                })
          }
        }
    }
</script>
<style lang="scss" scoped>
    .box {
        width: 100%;
        .box_label {
            width: 100%;
            color: black;
            font-size: 14px;
            margin-bottom: 15px;
        }
    }
    .form {
        width: 100%;
        display: flex;
        align-items: center;
        flex-direction: column;
        .form_span {
            width: 100%;
            display: flex;
            align-items: start;
            flex-direction: column;
            margin-bottom: 20px;
            span {
                font-size: 14px;
                &:nth-child(1) {
                    color: black;
                    margin-bottom: 5px;
                }
                &:nth-child(2) {
                    color: #8c939d;
                }
            }
        }
        .form_item {
            width: 100%;
            display: flex;
            align-items: center;
            margin-bottom: 20px;
            &:last-child {
                margin: 0 !important;
            }
            .form_item_label {
                flex-shrink: 0;
                width: 170px;
                color: black;
                font-size: 14px;
                span {
                    color: red;
                    font-size: 14px;
                }
            }
            .form_item_val {
                flex: 1;
                /*height: 40px;*/
                margin-left: 20px;
                textarea {
                    width: 100%;
                    height: 70px;
                    border: 1px solid #cbcbcb;
                    padding: 10px;
                    outline: none;
                    box-sizing: border-box;
                }
                input {
                    width: 100%;
                    height: 40px;
                    outline: none;
                    border-radius: 5px;
                    border: 1px solid #cbcbcb;
                    padding: 0 20px;
                    box-sizing: border-box;
                }
            }
        }
    }
</style>
company/src/components/business/dispatchUnitDetailsPlat.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,285 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="info">
          <div class="info_head">
            <span>所属企业:{{ form.companyName }} </span>
            <el-button  type="primary" v-if=" form.unitStatus == 0" @click="$refs.dispatchReviewCheck.open('审核派遣单位',form)" >审核</el-button>
            <el-button type="primary" v-else-if="form.unitStatus == 1 &&( form.worktypeStatus  == null || form.worktypeStatus == 0)" @click="$refs.dispatchReview.open('审核工种',form)">审核工种</el-button>
          </div>
            <div class="info_list">
                <div class="info_list_item">
                    <div class="info_list_item_label">派遣单位:</div>
                    <div class="info_list_item_val">{{form.name}}</div>
                </div>
                <div class="info_list_item">
                    <div class="info_list_item_label">派遣单位信用代码:</div>
                    <div class="info_list_item_val">{{form.code}}</div>
                </div>
                <div class="info_list_item">
                    <div class="info_list_item_label">派遣单位状态:</div>
                    <div class="info_list_item_val" style="color:#2E68EC;" v-if="form.unitStatus === 0">待审核</div>
                    <div class="info_list_item_val"   v-if="form.unitStatus === 1">
                      <span  style="color:#2E68EC;" v-if="form.worktypeStatus  ==null||form.worktypeStatus === 0">工种待审</span>
                      <span  style="color: green" v-if="form.worktypeStatus === 1">审核通过</span>
                      <span  style="color: red;" v-if="form.worktypeStatus === 2">工种审核不通过</span>
                     </div>
                    <div class="info_list_item_val"  style="color: red;" v-if="form.unitStatus === 2">审核不通过</div>
                </div>
                <div class="info_list_item">
                    <div class="info_list_item_label">派遣单位详述:</div>
                    <div class="info_list_item_val">{{form.content}}</div>
                </div>
            </div>
            <div class="info_table">
                <div class="info_table_item" v-for="(item, index) in form.duSolutionList" :key="index">
                    <div class="info_table_item_label">保险方案:{{item.solutionName}}</div>
                    <div class="info_table_item_content">
                        <el-table
                            :data="item.duWorktypeList"
                            border
                            style="width: 100%">
                            <el-table-column label="序号" width="80px">
                                <template slot-scope="scope">
                                    <span>{{scope.$index + 1}}</span>
                                </template>
                            </el-table-column>
                            <el-table-column
                                prop="workTypeName"
                                label="所属工种">
                            </el-table-column>
                            <el-table-column
                                prop="name"
                                label="操作视频">
                                <template slot-scope="{row}">
                                    <video loop controls width="150px" height="150px" :src="row.videoUrlFull"></video>
                                </template>
                            </el-table-column>
                            <el-table-column
                                prop="checkDate"
                                label="审核通过日期">
                            </el-table-column>
                            <el-table-column
                                label="状态">
                                <template slot-scope="{row}">
                                    <span v-if="row.status === 0">待审核</span>
                                    <span v-if="row.status === 1">审核通过</span>
                                    <span v-if="row.status === 2">审核不通过</span>
                                </template>
                            </el-table-column>
<!--                            <el-table-column
                                label="操作">
                                <template slot-scope="scope">
                                    <el-button type="text" style="color: red;" v-if="scope.row.status === 2" @click="dele(scope.row.id, index, scope.$index)">删除</el-button>
                                </template>
                            </el-table-column>-->
                        </el-table>
                    </div>
                </div>
            </div>
            <div class="info_status">
                <div class="info_status_label">审核流程</div>
                <div class="info_status_list">
                    <el-timeline :reverse="reverse">
                        <el-timeline-item
                            v-for="(activity, index) in form.duLogList"
                            :key="index">
                            <div style="display: flex; flex-direction: column;">
                                <span style="font-size: 16px; font-weight: 400; color: black;">
                                    {{activity.title}}
                                    <span style="font-size: 16px; font-weight: 400; color: black; margin-left: 10px;" v-if="activity.objType === 5 || activity.objType === 6 || activity.objType === 1 || activity.objType === 2">
                                       æäº¤æ„è§ï¼š{{activity.content}}
                                    </span>
                                </span>
                                <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;">
                                    æ“ä½œå‘˜-{{activity.creatorName}}({{activity.creatorType==1? activity.companyName: "平台端"}}){{activity.createDate}}
                                </span>
                            </div>
                        </el-timeline-item>
                    </el-timeline>
                </div>
            </div>
        </div>
        <!--    æ·»åŠ æ–¹æ¡ˆ    -->
        <addJobType ref="addJobType" @success="callback" />
        <!-- ç¼–辑 -->
      <OperaDispatchUnitWindow ref="OperaDispatchUnitWindow" @success="callback" />
      <dispatchReview ref="dispatchReview"  @success="callback" />
      <dispatchReviewCheck ref="dispatchReviewCheck" @success="callback" />
    </GlobalWindow>
</template>
<script>
  import BaseOpera from '@/components/base/BaseOpera'
  import GlobalWindow from '@/components/common/GlobalWindow'
  import addJobType from '@/components/enterprise/addJobType'
  import dispatchReview from '@/components/business/dispatchReview'
  import dispatchReviewCheck from '@/components/business/dispatchReviewCheck'
  import OperaDispatchUnitWindow from '@/components/enterprise/OperaDispatchUnitWindow'
  import { getById } from '@/api/business/dispatchUnit'
  import { deleteById } from '@/api/business/duWorktype'
  export default {
    name: 'dispatchUnitDetailsPlat',
    extends: BaseOpera,
    components: { GlobalWindow, addJobType, OperaDispatchUnitWindow,dispatchReview ,dispatchReviewCheck},
    data () {
      return {
        // è¡¨å•数据
        form: {
          id: null,
          name: '',
          code: '',
          content: '',
          companyName:'',
          unitStatus: '',
          worktypeStatus: '',
          duLogList: [],
          duSolutionList: [],
          saveDuSolutionDTOList: [
            {
              id: '',
              saveDuWorkTypeDTOList: [
                {
                  videoUrl: '',
                  workTypeId: '',
                  file: {
                    videourl: '',
                    videourlfull: ''
                  }
                }
              ],
              typeWork: [],
              solutionId: ''
            }
          ]
        },
        tableData: [],
        insuranceScheme: [],
        reverse: true,
        visible5:false,
        activities: []
      }
    },
    created () {
      this.config({
        api: '/business/dispatchUnit',
        'field.id': 'id'
      })
    },
    methods: {
      open (title, target) {
        this.title = title
        this.visible = true
        this.form={
          id: null,
          name: '',
          code: '',
          content: '',
          unitStatus: '',
          companyName:'',
          worktypeStatus: '',
          duLogList: [],
          duSolutionList: [],
          saveDuSolutionDTOList:[ ]
        }
        this.form.id = target.id
        this.getDetails()
      },
      async getDetails() {
        let res = await getById(this.form.id)
        for (const key in this.form) {
          this.form[key] = res[key]
        }
      },
      callback() {
          // this.visible = true
          this.open (this.title, this.form)
         this.$emit('success')
      }
    }
  }
</script>
<style lang="scss" scoped>
    .info {
        width: 100%;
        .info_list {
            width: 100%;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            .info_list_item {
                width: 33.3%;
                display: flex;
                align-items: center;
                margin-bottom: 15px;
                .info_list_item_label {
                    flex-shrink: 0;
                    //width: 150px;
                    font-size: 14px;
                    color: black;
                }
                .info_list_item_val {
                    flex: 1;
                    font-size: 14px;
                    color: black;
                }
            }
        }
      .info_head {
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: space-between;
        span {
          color: black;
          font-size: 14px;
        }
      }
        .info_btns {
            width: 100%;
            display: flex;
            align-items: center;
            margin-bottom: 15px;
        }
        .info_table {
            width: 100%;
            display: flex;
            flex-direction: column;
            margin-bottom: 15px;
            .info_table_item {
                width: 100%;
                display: flex;
                flex-direction: column;
                margin-bottom: 15px;
                &:last-child {
                    margin: 0 !important;
                }
                .info_table_item_label {
                    font-size: 14px;
                    color: black;
                    margin-bottom: 10px;
                }
                .info_table_item_content {
                    width: 100%;
                }
            }
        }
        .info_status {
            width: 100%;
            .info_status_label {
                width: 100%;
                font-size: 18px;
                font-weight: bold;
                margin-bottom: 15px;
            }
        }
    }
</style>
company/src/components/business/dispatchUnitReviewDetails.vue
@@ -230,6 +230,10 @@
                color: black;
                font-size: 14px;
            }
            span {
                color: black;
                font-size: 14px;
            }
        }
        .info_list {
            width: 100%;
company/src/views/business/company.vue
@@ -59,7 +59,9 @@
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.OperaCompanyDescWindow.open('企业详情', row)"  v-permissions="['business:company:update']">查看详情</el-button>
                        <el-button type="text" @click="edit(row)" v-permissions="['business:company:update']">修改</el-button>
<!--
                        <el-button type="text" @click="$refs.operaCompanyWindow.open('编辑企业信息表', row)" v-permissions="['business:company:update']">电子签认证</el-button>
-->
                    </template>
                </el-table-column>
            </el-table>
company/src/views/business/dispatchUnitReview.vue
@@ -2,30 +2,22 @@
    <TableLayout :permissions="['business:dispatchunit:query']">
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="所属企业" prop="companyId">
          <el-form-item label="所属业" prop="companyId">
                <el-select v-model="searchForm.companyId" placeholder="请选择" @change="search">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                  v-for="item in companyList"
                  :key="item.id"
                  :label="item.name"
                  :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="派遣单位" prop="name">
                <el-select v-model="searchForm.name" placeholder="请选择" @change="search">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                </el-select>
            <el-input v-model="searchForm.name" placeholder="请输入派遣单位" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
                <el-button @click="reset">重置</el-button>
                <el-button @click="$refs.dispatchUnitReviewDetails.open('派遣单位详情')">详情</el-button>
            </section>
        </el-form>
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
@@ -40,13 +32,17 @@
                        <span>{{scope.$index + 1}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="companyId" label="所属企业" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="所属企业" min-width="100px"></el-table-column>
                <el-table-column prop="name" label="派遣单位" min-width="100px"></el-table-column>
                <el-table-column label="派遣单位状态" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.unitStatus === 0">待审核</span>
                        <span v-if="row.unitStatus === 1">审核通过</span>
                        <span v-if="row.unitStatus === 2">审核不通过</span>
                        <span style="color: #2E68EC" v-if="row.unitStatus === 0">待审核</span>
                        <span v-if="row.unitStatus === 1">
                            <span style="color:#2E68EC" v-if="row.worktypeStatus ==null || row.worktypeStatus === 0">工种待审</span>
                            <span style="color: green" v-else-if="row.worktypeStatus === 1">审核通过</span>
                            <span style="color: red"  v-else-if="row.worktypeStatus === 2">工种审核不通过</span>
                        </span>
                        <span style="color: red" v-if="row.unitStatus === 2">审核不通过</span>
                    </template>
                </el-table-column>
                <el-table-column prop="createDate" label="提交日期" min-width="100px"></el-table-column>
@@ -57,7 +53,7 @@
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.operaDispatchUnitWindow.open('编辑派遣单位信息表', row)" icon="el-icon-edit" v-permissions="['business:dispatchunit:update']">查看详情</el-button>
                        <el-button type="text" @click="$refs.dispatchUnitDetailsPlat.open('派遣单位详情', row)" icon="el-icon-edit" v-permissions="['business:dispatchunit:update']">查看详情</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -69,7 +65,7 @@
            </pagination>
        </template>
        <!-- æ–°å»º/修改 -->
        <dispatchUnitReviewDetails ref="dispatchUnitReviewDetails" @success="handlePageChange"/>
        <dispatchUnitDetailsPlat ref="dispatchUnitDetailsPlat" @success="handlePageChange"/>
    </TableLayout>
</template>
@@ -77,18 +73,20 @@
    import BaseTable from '@/components/base/BaseTable'
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import dispatchUnitReviewDetails from '@/components/business/dispatchUnitReviewDetails'
    import dispatchUnitDetailsPlat from '@/components/business/dispatchUnitDetailsPlat'
    import {pageAll as companyAll} from '@/api/business/company'
    export default {
        name: 'dispatchUnitReview',
        extends: BaseTable,
        components: { TableLayout, Pagination, dispatchUnitReviewDetails },
        components: { TableLayout, Pagination, dispatchUnitDetailsPlat },
        data () {
            return {
                // æœç´¢
                searchForm: {
                    name: '',
                    companyId: ''
                }
                },
              companyList:[]
            }
        },
        created () {
@@ -99,6 +97,19 @@
                'field.main': 'id'
            })
            this.search()
          this.loadSelectList()
        },
      methods:{
        // handlePageChange() {
        //   this.search()
        // },
        loadSelectList() {
          companyAll({}).then(res => {
            this.companyList = res
          }).catch(err => {
          })
        }
        }
    }
</script>
company/src/views/business/taxes.vue
@@ -19,12 +19,12 @@
                </el-date-picker>
            </el-form-item>
            <el-form-item label="申请开票企业" prop="companyId">
                <el-select v-model="searchForm.companyId" placeholder="请选择" @keypress.enter.native="search">
              <el-select v-model="searchForm.companyId" placeholder="请选择" @change="search">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    v-for="item in companyList"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
@@ -122,6 +122,8 @@
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import OperaTaxesWindow from '@/components/business/OperaTaxesWindow'
    import {all as solutionAll} from "@/api/business/solutions";
    import {pageAll as companyAll} from "@/api/business/company";
    export default {
        name: 'Taxes',
        extends: BaseTable,
@@ -129,6 +131,7 @@
        data () {
            return {
                // æœç´¢
              companyList:[],
                searchForm: {
                    status: '',
                    companyId: ''
@@ -144,10 +147,21 @@
                'field.main': 'id'
            })
            this.search()
          this.loadSelectList()
        },
        methods: {
            handleRemove(file, fileList) {
                console.log(file, fileList);
            },
          loadSelectList() {
            solutionAll({dataType:0}).then(res => {
              this.solutionList = res
            }).catch(err => {
            })
            companyAll({}).then(res => {
              this.companyList = res
            }).catch(err => {
            })
            }
        }
    }
server/platform/src/main/java/com/doumee/api/business/DispatchUnitController.java
@@ -100,6 +100,6 @@
    @GetMapping("/{id}")
    @RequiresPermissions("business:dispatchunit:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(dispatchUnitService.findById(id));
        return ApiResponse.success(dispatchUnitService.detailById(id));
    }
}
server/service/src/main/java/com/doumee/core/utils/Date.java
@@ -20,6 +20,9 @@
     * @return java.util.Date
     */
    public java.util.Date getStart (java.util.Date date) {
        if(date == null){
            return null;
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
server/service/src/main/java/com/doumee/dao/business/model/DispatchUnit.java
@@ -94,6 +94,7 @@
    @ExcelColumn(name="联系人")
    private String linkname;
    @ApiModelProperty(value = "审核时间")
    @ExcelColumn(name="审核时间")
@@ -138,5 +139,9 @@
    @TableField(exist = false)
    private Integer duSolutionId;
    @ApiModelProperty(value = "企业名称")
    @TableField(exist = false)
    private String companyName;
}
server/service/src/main/java/com/doumee/dao/business/model/DuLog.java
@@ -87,6 +87,9 @@
    @ApiModelProperty(value = "创建人名称", example = "1")
    @TableField(exist = false)
    private String  creatorName;
    @ApiModelProperty(value = "创建人类型 0平台 1企业", example = "1")
    @TableField(exist = false)
    private Integer  creatorType;
    @ApiModelProperty(value = "公司名称", example = "1")
    @TableField(exist = false)
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -82,13 +82,13 @@
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        DispatchUnit model = dispatchUnitMapper.selectById(param.getId());
        if(Objects.isNull(model) || Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ||!Constants.equalsInteger(model.getDataType(),Constants.ZERO)){
        if(Objects.isNull(model) || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ||!Constants.equalsInteger(model.getDataType(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到派遣单位信息");
        }
        if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){
        if(!Constants.equalsInteger(model.getUnitStatus(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位尚未审核通过,不支持该操作!");
        }
        if(Constants.equalsInteger(model.getWorktypeStatus(),Constants.ZERO)){
        if(!Constants.equalsInteger(model.getWorktypeStatus(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位工种已审核,请勿重复提交~");
        }
        DispatchUnit update = new DispatchUnit();
@@ -139,6 +139,9 @@
        duSolutionMapper.update(null,new UpdateWrapper<DuSolution>().lambda()
                        .set(DuSolution::getStatus,Constants.ONE)
                .set(DuSolution::getCheckDate,update.getEditDate() )
                .set(DuSolution::getCheckUserId,update.getCheckUserId())
                .set(DuSolution::getCheckInfo,update.getCheckInfo())
                .eq(DuSolution::getIsdeleted,Constants.ZERO)
                .eq(DuSolution::getStatus,Constants.ZERO)
                .eq(DuSolution::getDispatchUnitId,model.getId())
@@ -164,6 +167,9 @@
            duWorktypeMapper.update(null,new UpdateWrapper<DuWorktype>().lambda()
                    .set(DuWorktype::getStatus,Constants.ONE)
                    .set(DuWorktype::getCheckDate,update.getEditDate())
                    .set(DuWorktype::getCheckUserId,update.getCheckUserId())
                    .set(DuWorktype::getCheckInfo,update.getCheckInfo())
                    .eq(DuWorktype::getIsdeleted,Constants.ZERO)
                    .eq(DuWorktype::getStatus,Constants.ZERO)
                    .eq(DuWorktype::getDuSolutionId,s.getId()));
@@ -212,7 +218,7 @@
        update.setEditDate(new Date());
        update.setId(model.getId());
        update.setUnitStatus(param.getUnitStatus());
        update.setWorktypeStatus(param.getWorktypeStatus());
        update.setWorktypeStatus(param.getUnitStatus());
        update.setCheckDate(update.getEditDate());
        update.setCheckUserId(user.getId());
        update.setCheckInfo(param.getCheckInfo());
@@ -226,8 +232,8 @@
        }else{
            //更新明细数据为审核失败
            duSolutionMapper.update(null,new UpdateWrapper<DuSolution>().lambda()
                    .set(DuSolution::getCheckDate,new Date() )
                    .set(DuSolution::getStatus,Constants.TWO)
                    .set(DuSolution::getCheckDate,new Date() )
                    .set(DuSolution::getCheckUserId,update.getCheckUserId())
                    .set(DuSolution::getCheckInfo,update.getCheckInfo())
                    .eq(DuSolution::getDispatchUnitId,update.getId()));
@@ -669,74 +675,93 @@
    @Override
    public PageData<DispatchUnit> findPage(PageWrap<DispatchUnit> pageWrap) {
        IPage<DispatchUnit> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<DispatchUnit> queryWrapper = new QueryWrapper<>();
        if(pageWrap.getModel().getDataType() ==null){
            pageWrap.getModel().setDataType(Constants.ZERO);
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.lambda().eq(DispatchUnit::getIsdeleted,Constants.ZERO);
        MPJLambdaWrapper<DispatchUnit>  queryWrapper =    new MPJLambdaWrapper<DispatchUnit>();
        queryWrapper.selectAll(DispatchUnit.class)
                .selectAs(Company::getName,DispatchUnit::getCompanyName)
                .leftJoin(Company.class,Company::getId,DispatchUnit::getCompanyId);
        queryWrapper.eq(DispatchUnit::getIsdeleted,Constants.ZERO);
        if(Constants.equalsInteger(user.getType(),Constants.ZERO)){
            //只能看权限范围内
            if(user.getCompanyIdList() == null || user.getCompanyIdList().size() == 0){
                queryWrapper. eq(Company::getId,-1);//设置无效访问
            }else {
                queryWrapper. in(Company::getId, user.getCompanyIdList());
            }
        } else  {
            //企业用户只看自己的数据
            pageWrap.getModel().setCompanyId(user.getCompanyId());
        }
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getId, pageWrap.getModel().getId());
            queryWrapper.eq(DispatchUnit::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCreator, pageWrap.getModel().getCreator());
            queryWrapper.eq(DispatchUnit::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(DispatchUnit::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(DispatchUnit::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
            queryWrapper.ge(DispatchUnit::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.le(DispatchUnit::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getEditor, pageWrap.getModel().getEditor());
            queryWrapper.eq(DispatchUnit::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(DispatchUnit::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(DispatchUnit::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
            queryWrapper.ge(DispatchUnit::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.le(DispatchUnit::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getIsdeleted, pageWrap.getModel().getIsdeleted());
            queryWrapper.eq(DispatchUnit::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getName, pageWrap.getModel().getName());
            queryWrapper.like(DispatchUnit::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getRemark, pageWrap.getModel().getRemark());
            queryWrapper.eq(DispatchUnit::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getStatus, pageWrap.getModel().getStatus());
            queryWrapper.eq(DispatchUnit::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getUnitStatus() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getUnitStatus, pageWrap.getModel().getUnitStatus());
            queryWrapper.eq(DispatchUnit::getUnitStatus, pageWrap.getModel().getUnitStatus());
        }
        if (pageWrap.getModel().getWorktypeStatus() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getWorktypeStatus, pageWrap.getModel().getWorktypeStatus());
            queryWrapper.eq(DispatchUnit::getWorktypeStatus, pageWrap.getModel().getWorktypeStatus());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getSortnum, pageWrap.getModel().getSortnum());
            queryWrapper.eq(DispatchUnit::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getCompanyId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCompanyId, pageWrap.getModel().getCompanyId());
            queryWrapper.eq(DispatchUnit::getCompanyId, pageWrap.getModel().getCompanyId());
        }
        if (pageWrap.getModel().getPhone() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getPhone, pageWrap.getModel().getPhone());
            queryWrapper.eq(DispatchUnit::getPhone, pageWrap.getModel().getPhone());
        }
        if (pageWrap.getModel().getLinkname() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getLinkname, pageWrap.getModel().getLinkname());
            queryWrapper.eq(DispatchUnit::getLinkname, pageWrap.getModel().getLinkname());
        }
        if (pageWrap.getModel().getCheckDate() != null) {
            queryWrapper.lambda().ge(DispatchUnit::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()));
            queryWrapper.lambda().le(DispatchUnit::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()));
            queryWrapper.ge(DispatchUnit::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()));
            queryWrapper.le(DispatchUnit::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()));
        }
        if (pageWrap.getModel().getCheckInfo() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCheckInfo, pageWrap.getModel().getCheckInfo());
            queryWrapper.eq(DispatchUnit::getCheckInfo, pageWrap.getModel().getCheckInfo());
        }
        if (pageWrap.getModel().getCheckUserId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCheckUserId, pageWrap.getModel().getCheckUserId());
            queryWrapper.eq(DispatchUnit::getCheckUserId, pageWrap.getModel().getCheckUserId());
        }
        if (pageWrap.getModel().getVersion() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getVersion, pageWrap.getModel().getVersion());
            queryWrapper.eq(DispatchUnit::getVersion, pageWrap.getModel().getVersion());
        }
        if (pageWrap.getModel().getDataType() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getDataType, pageWrap.getModel().getDataType());
            queryWrapper.eq(DispatchUnit::getDataType, pageWrap.getModel().getDataType());
        }
        if (pageWrap.getModel().getBaseId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getBaseId, pageWrap.getModel().getBaseId());
            queryWrapper.eq(DispatchUnit::getBaseId, pageWrap.getModel().getBaseId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -745,8 +770,8 @@
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        PageData<DispatchUnit> dispatchUnitPageData = PageData.from(dispatchUnitMapper.selectPage(page, queryWrapper));
        return dispatchUnitPageData;
        PageData<DispatchUnit> pageData = PageData.from(dispatchUnitJoinMapper.selectJoinPage(page,DispatchUnit.class, queryWrapper));
        return pageData;
    }
    @Override
@@ -758,7 +783,12 @@
    @Override
    public DispatchUnit detailById(Integer id) {
        DispatchUnit dispatchUnit = dispatchUnitMapper.selectById(id);
        DispatchUnit dispatchUnit = dispatchUnitJoinMapper.selectJoinOne(DispatchUnit.class,
                new MPJLambdaWrapper<DispatchUnit>()
                        .selectAll(DispatchUnit.class)
                        .selectAs(Company::getName,DispatchUnit::getCompanyName)
                        .leftJoin(Company.class,Company::getId,DispatchUnit::getCompanyId)
                        .eq(DispatchUnit::getId,id) );
        //方案配置表
        List<DuSolution> duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,
                new MPJLambdaWrapper<DuSolution>()
@@ -794,6 +824,7 @@
        List<DuLog> duLogList = duLogJoinMapper.selectJoinList(DuLog.class,
                new MPJLambdaWrapper<DuLog>()
                        .selectAll(DuLog.class)
                        .selectAs(SystemUser::getType,DuLog::getCreatorType)
                        .selectAs(SystemUser::getRealname,DuLog::getCreatorName)
                        .selectAs(Company::getName,DuLog::getCompanyName)
                        .leftJoin(SystemUser.class,SystemUser::getId,DuLog::getCreator)
server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java
@@ -290,8 +290,8 @@
            queryWrapper.eq(Taxes::getCompanyId,-1);//设置无效访问
        }else{
            queryWrapper.in(Taxes::getCompanyId,user.getCompanyIdList());
            queryWrapper.ge(pageWrap.getModel().getStartDate() != null,Taxes::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()));
            queryWrapper.le(SignRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate()));
            queryWrapper.ge(pageWrap.getModel().getStartDate() != null,Taxes::getCreateDate, pageWrap.getModel().getStartDate());
            queryWrapper.le(pageWrap.getModel().getEndDate() != null,Taxes::getCreateDate, pageWrap.getModel().getEndDate());
            queryWrapper.eq(pageWrap.getModel().getTaxBank() != null,Taxes::getTaxBank, pageWrap.getModel().getTaxBank());
            queryWrapper.eq(pageWrap.getModel().getTaxBank() != null,Taxes::getTaxBank, pageWrap.getModel().getTaxBank());
            queryWrapper.eq(pageWrap.getModel().getRemark() != null,Taxes::getRemark, pageWrap.getModel().getRemark());
@@ -340,8 +340,8 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非企业用户无法进行该业务查询");
        }
        if(!Objects.isNull(queryModel)){
            queryWrapper.ge(pageWrap.getModel().getStartDate() != null,Taxes::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()));
            queryWrapper.le(SignRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate()));
            queryWrapper.ge(pageWrap.getModel().getStartDate() != null,Taxes::getCreateDate, (pageWrap.getModel().getStartDate()));
            queryWrapper.le(pageWrap.getModel().getEndDate() != null,Taxes::getCreateDate,  (pageWrap.getModel().getEndDate()));
            queryWrapper.eq(!Objects.isNull(queryModel.getInsuranceApplyId()),Taxes::getInsuranceApplyId,queryModel.getInsuranceApplyId());
            queryWrapper.eq(!Objects.isNull(queryModel.getStatus()),Taxes::getStatus,queryModel.getStatus());
        }