rk
2025-09-28 081b2afc94c32a1c5e735e2f6b971d9fe1ff9b4f
Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao
已添加2个文件
已修改12个文件
277 ■■■■■ 文件已修改
admin/src/api/business/company.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/member.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaInternalCompanyWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryJkBanner.vue 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryJkLine.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/inoutRecord.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalCompany.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/category.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/components/OperaCategoryWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/company.js
@@ -37,6 +37,9 @@
export function companySync (data) {
  return request.post('/visitsAdmin/cloudService/business/company/syncAll', data)
}
export function companySyncDingding (data) {
  return request.post('/visitsAdmin/cloudService/business/company/syncAllDingding', data)
}
// åˆ†é¡µæŸ¥è¯¢
export function companyGetList (data) {
  return request.post('/visitsAdmin/cloudService/business/company/page', data)
admin/src/api/business/member.js
@@ -19,10 +19,13 @@
    trim: true
  })
}
// éƒ¨é—¨ä¿¡æ¯åŒæ­¥
// ä¿¡æ¯åŒæ­¥
export function memberSync (data) {
  return request.post('/visitsAdmin/cloudService/business/member/syncAll', data)
}
export function memberSyncDingding (data) {
  return request.post('/visitsAdmin/cloudService/business/member/syncAllDingding', data)
}
export function delHkForce (data) {
  return request.post('/visitsAdmin/cloudService/business/member/delHkForce', data)
}
admin/src/components/business/OperaInternalCompanyWindow.vue
@@ -21,7 +21,7 @@
          <el-form-item label="组织类型" prop="type" v-if="(editType === 'edit' && parentId) || (editType === 'add')">
            <el-radio-group v-model="form.type" :disabled="(editType === 'edit') || (!!(editType === 'add' && parentId))">
              <el-radio :label="0">相关方组织</el-radio>
              <el-radio :label="1">内部组织</el-radio>
<!--              <el-radio :label="1">内部组织</el-radio>-->
            </el-radio-group>
          </el-form-item>
        </el-form>
admin/src/views/business/categoryJkBanner.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
<template>
  <TableLayout :permissions="['business:category:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
      <el-form-item label="广告名称" prop="name">
        <el-input v-model="searchForm.name" clearable 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>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:category:create','business:category:delete']">
        <li><el-button type="primary" @click="$refs.OperaCategoryFileWindow.open('新建广告')" icon="el-icon-plus" v-permissions="['business:category:create']">新建</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">批量删除</el-button></li>
      </ul>
      <el-table
          :height="tableHeightNew"
          v-loading="isWorking.search"
          :data="tableData.list"
          stripe
          @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="name" show-overflow-tooltip label="广告" min-width="120px"></el-table-column>
        <el-table-column prop="imgurl" show-overflow-tooltip label="" min-width="120px">
          <template slot-scope="{row}">
            <el-image v-if="row.imgurlFull" style="width: 60px; height: 60px" :src="row.imgurlFull"
                      :preview-src-list="[row.imgurlFull]">
            </el-image>
          </template>
        </el-table-column>
        <el-table-column prop="sortnum" label="排序码"  min-width="70px"></el-table-column>
        <el-table-column prop="editDate" label="操作时间" width="160px"></el-table-column>
        <el-table-column
            v-if="containPermissions(['business:category:update', 'business:category:delete' ])"
            label="操作"
            min-width="140"
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCategoryFileWindow.open('编辑广告',row)" v-permissions="['business:category:update']">编辑</el-button>
            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:category:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
          @size-change="handleSizeChange"
          @current-change="handlePageChange"
          :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaCategoryFileWindow ref="OperaCategoryFileWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCategoryFileWindow from '@/components/business/OperaCategoryFileWindow'
export default {
  name: 'areaSet',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaCategoryFileWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        type: 4
      }
    }
  },
  created () {
    this.config({
      module: '广告',
      api: '/business/category',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
  }
}
</script>
admin/src/views/business/categoryJkLine.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<template>
  <TableLayout :permissions="['business:category:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
      <el-form-item label="主线路名称" prop="name">
        <el-input v-model="searchForm.name" clearable 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>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:category:create','business:category:delete']">
        <li><el-button type="primary" @click="$refs.OperaCategoryFileWindow.open('新建主线路')" icon="el-icon-plus" v-permissions="['business:category:create']">新建</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">批量删除</el-button></li>
      </ul>
      <el-table
          :height="tableHeightNew"
          v-loading="isWorking.search"
          :data="tableData.list"
          stripe
          @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="name" show-overflow-tooltip label="主线路" min-width="120px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码"  min-width="70px"></el-table-column>
        <el-table-column prop="editDate" label="操作时间" width="160px"></el-table-column>
        <el-table-column
            v-if="containPermissions(['business:category:update', 'business:category:delete' ])"
            label="操作"
            min-width="140"
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCategoryFileWindow.open('编辑主线路',row)" v-permissions="['business:category:update']">编辑</el-button>
            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:category:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
          @size-change="handleSizeChange"
          @current-change="handlePageChange"
          :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaCategoryFileWindow ref="OperaCategoryFileWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCategoryFileWindow from '@/components/business/OperaCategoryFileWindow'
export default {
  name: 'areaSet',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaCategoryFileWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        type: 4
      }
    }
  },
  created () {
    this.config({
      module: '主线路',
      api: '/business/category',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
  }
}
</script>
admin/src/views/business/inoutRecord.vue
@@ -162,8 +162,8 @@
        { key: 1, name: '外协运输车辆' },
        { key: 2, name: '市公司卸货车辆' },
        { key: 3, name: '加工烟卸货车辆' },
        { key: 4, name: '物流公务用车' },
        { key: 5, name: '物流货运车辆' },
        { key: 4, name: '自有公务车' },
        { key: 5, name: '自有货运车辆' },
        { key: 6, name: '未知车辆' }
      ]
    }
admin/src/views/business/internalCompany.vue
@@ -25,6 +25,8 @@
            v-permissions="['business:company:sort']">下移</el-button></li>
        <li><el-button type="primary" v-permissions="['business:company:sync']" :loading="loading"
            @click="synchronous()">同步</el-button></li>
        <li><el-button type="primary" v-permissions="['business:company:create']" :loading="loading"
            @click="synchronousDingding()">同步钉钉</el-button></li>
      </ul>
      <el-table :max-height="tableHeight" v-loading="isWorking.search" :data="list" stripe
        :tree-props="{ children: 'childList', hasChildren: 'hasChildren' }" row-key="id"
@@ -45,7 +47,7 @@
          <template slot-scope="{row}">
            <el-button type="text"
              @click="$refs.OperaInternalCompanyWindow.open('编辑企业信息', { id: row.parentId, name: row.parentName, type: row.parentType, companyPath: row.parentCompanyPath }, row, 'edit')"
              icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button>
              icon="el-icon-edit" v-permissions="['business:company:update']" v-if="row.type ==0">编辑</el-button>
            <el-button type="text" @click="$refs.OperaInternalCompanyWindow.open('新建子级', row, null, 'add')"
              icon="el-icon-plus">新建子级</el-button>
            <el-button type="text" @click="deleteById(row)" style="color: red" icon="el-icon-delete"
@@ -62,7 +64,7 @@
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import { companySync, sort } from '@/api/business/company'
import { companySync,companySyncDingding, sort } from '@/api/business/company'
import OperaInternalCompanyWindow from '@/components/business/OperaInternalCompanyWindow'
export default {
  name: 'internalCompany',
@@ -129,6 +131,24 @@
        })
        .catch(() => { })
    },
    async synchronousDingding() {
      this.$dialog.actionConfirm('该操作将系统清空已有内部组织信息,您确认同步全部信息吗?', '操作确认提醒')
        .then(() => {
          this.loading = true
          companySyncDingding({})
            .then(res => {
              this.$tip.apiSuccess(res || '同步成功')
              this.search()
            })
            .catch(e => {
              this.$tip.apiFailed(e)
            })
            .finally(() => {
              this.loading = false
            })
        })
        .catch(() => { })
    },
    // æŽ’序
    sort(direction) {
      if (this.sorting) {
admin/src/views/business/internalMember.vue
@@ -66,13 +66,15 @@
      <ul class="toolbar" v-permissions="['business:member:delete', 'business:member:create,business:empower:create']">
        <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading"
            @click="synchronous()">同步</el-button></li>
        <li><el-button type="primary"
        <li><el-button type="primary" v-permissions="['business:member:create']" :loading="loading"
            @click="synchronousDingding()">同步钉钉</el-button></li>
<!--        <li><el-button type="primary"
            @click="add" icon="el-icon-plus"
            v-permissions="['business:member:create']">新建员工</el-button></li>
        <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('人员导入', searchForm.companyType)"
            icon="el-icon-plus" v-permissions="['business:member:create']">人员导入</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
            v-permissions="['business:member:delete']">批量删除</el-button></li>
            v-permissions="['business:member:delete']">批量删除</el-button></li>-->
        <li><el-button type="primary" v-permissions="['business:empower:create']"
            @click="startEmpowerBatch()">下发授权</el-button></li>
        <li style="float: right">
@@ -183,8 +185,7 @@
          v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
          label="操作" min-width="280">
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="edit(row)"
              v-permissions="['business:member:update']">编辑</el-button>
           <el-button type="text" icon="el-icon-edit" @click="edit(row)"  v-permissions="['business:member:update']">编辑</el-button>
            <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
              v-permissions="['business:empower:create']">重新授权</el-button>
            <el-button type="text" :loading="heading" style="color: red" icon="el-icon-delete"
@@ -192,8 +193,8 @@
              v-permissions="['business:member:head']">取消主管</el-button>
            <el-button type="text" :loading="heading" icon="el-icon-edit" @click="updateHead(row, 1)"
              v-if="row.headStatus == 0" v-permissions="['business:member:head']">设为主管</el-button>
            <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red"
              v-permissions="['business:member:delete']">删除</el-button>
<!--            <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red"
              v-permissions="['business:member:delete']">删除</el-button>-->
          </template>
        </el-table-column>
      </el-table>
@@ -219,7 +220,7 @@
import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
import { fetchList } from '@/api/business/company'
import { allList } from '@/api/business/position'
import { memberSync, roleAuth, updateCanVisit, updateHead, updateWorkStatus } from '@/api/business/member'
import { memberSync,memberSyncDingding, roleAuth, updateCanVisit, updateHead, updateWorkStatus } from '@/api/business/member'
export default {
  name: 'internalMember',
  extends: BaseTable,
@@ -369,6 +370,25 @@
        })
        .catch(() => { })
    },
    // åŒæ­¥ä¿¡æ¯
    async synchronousDingding() {
      this.$dialog.actionConfirm('该操作降触发全员信息更新和重新下发!请谨慎操作', '您确认全量同步内部人员信息吗?')
        .then(() => {
          this.loading = true
          memberSyncDingding({})
            .then(res => {
              this.$tip.apiSuccess(res || '同步成功')
              this.search()
            })
            .catch(e => {
              this.$tip.apiFailed(e)
            })
            .finally(() => {
              this.loading = false
            })
        })
        .catch(() => { })
    },
    async updateHead(row, type) {
      this.$dialog.actionConfirm('您确认进行当前操作吗?', '部门主管设置操作提示')
        .then(() => {
admin/src/views/task/index.vue
@@ -118,8 +118,8 @@
              { label: '访客申请', value: '0' },
              { label: '访客报备', value: '1' },
              { label: '用车申请', value: '2' },
              { label: '隐患随手拍', value: '3' },
              { label: '物流车申请', value: '6' }
              // { label: '隐患随手拍', value: '3' },
              // { label: '物流车申请', value: '6' }
            ]
          },
          {
@@ -149,8 +149,8 @@
        { name: '访客申请', id: 0 },
        { name: '访客报备', id: 1 },
        { name: '用车申请', id: 2 },
        { name: '隐患随手拍', id: 3 },
        { name: '物流车申请', id: 6 }
        // { name: '隐患随手拍', id: 3 },
        // { name: '物流车申请', id: 6 }
      ]
    }
  },
admin/src/views/vehicle/category.vue
@@ -30,8 +30,8 @@
                      <span  v-else-if="row.bizType ==1">外协运输车辆</span>
                      <span  v-else-if="row.bizType ==2">市公司卸货车辆</span>
                      <span  v-else-if="row.bizType ==3">加工烟卸货车辆</span>
                      <span  v-else-if="row.bizType ==4">物流公务用车</span>
                      <span  v-else-if="row.bizType ==5">物流货运车辆</span>
                      <span  v-else-if="row.bizType ==4">自有公务车</span>
                      <span  v-else-if="row.bizType ==5">自有货运车辆</span>
                      <span  v-else >-</span>
                    </template>
              </el-table-column>
admin/src/views/vehicle/components/OperaCategoryWindow.vue
@@ -50,8 +50,8 @@
        { key: 1, name: '外协运输车辆' },
        { key: 2, name: '市公司卸货车辆' },
        { key: 3, name: '加工烟卸货车辆' },
        { key: 4, name: '物流公务用车' },
        { key: 5, name: '物流货运车辆' }
        { key: 4, name: '自有公务车' },
        { key: 5, name: '自有货运车辆' }
      ],
      // éªŒè¯è§„则
      rules: {
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -160,6 +160,7 @@
    public static final String PRESSURE_LEVEL_UNIT = "PRESSURE_LEVEL_UNIT";
    public static final String LIQUID_LEVEL_UNIT ="LIQUID_LEVEL_UNIT" ;
    public static final String OUT_HY_LOT_TOTAL ="OUT_HY_LOT_TOTAL" ;
    public static final String BANNER_IMG ="BANNER_IMG" ;
    public static  boolean DEALING_HK_SYNCPRIVILEGE= false;
    public static  boolean DEALING_HK_SYNCDEVICE = false;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Category.java
@@ -68,7 +68,7 @@
     //@ExcelColumn(name="图标")
    private String imgurl;
    @ApiModelProperty(value = "类型 0公司类型 1车辆类型")
    @ApiModelProperty(value = "类型 0公司类型 1车辆类型 2资料分类 3钥匙柜终端广告 4交控主线路")
     //@ExcelColumn(name="类型 0公司类型 1车辆类型")
    private Integer type;
    @ApiModelProperty(value = "业务类型 " +
@@ -92,6 +92,8 @@
    @TableField(exist = false)
    @ExcelColumn(name="组合名称",index = 3,width = 20)
    private String groupName;
    @ApiModelProperty(value = "完整图片地址 ")
    private String imgurlFull;
    @ApiModelProperty(value = "子集分类")
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.service.business.third.model.LoginUserInfo;
@@ -37,6 +38,8 @@
@Service
public class CategoryServiceImpl implements CategoryService {
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private CategoryMapper categoryMapper;
@@ -155,6 +158,9 @@
        IPage<Category> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.FTP,Constants.BANNER_IMG).getCode();
        queryWrapper.lambda().eq(Category::getIsdeleted,Constants.ZERO)
                .eq(Objects.nonNull(pageWrap.getModel().getType()),Category::getType,pageWrap.getModel().getType())
                .like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Category::getName,pageWrap.getModel().getName())
@@ -171,6 +177,9 @@
            category.setChildCategoryList(
                    categoryList.stream().filter(i->Constants.equalsInteger(i.getParentId(),category.getId())).collect(Collectors.toList())
            );
            if(StringUtils.isNotBlank(category.getImgurl())){
                category.setImgurlFull(prefixUrl + category.getImgurl());
            }
        }
        return categoryPageData;