ludc
2023-09-19 904897d888962511eb58b0dec9168983ecc1a439
Merge remote-tracking branch 'origin/master'
已修改7个文件
已添加2个文件
603 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/docking/data.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/task.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/integration/sysInfo.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/login/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/login/userlogin.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/integration/systemInfo.vue 463 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/SystemClassifyRole.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/data.js
@@ -1,13 +1,13 @@
import request from '@/router/axios';
export const getDataList = (page, size, params) => {
export const getDataList = (page, limit, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridDockingData',
    method: 'get',
    params: {
      ...params,
      page,
      size
      limit
    }
  })
}
Source/UBCS-WEB/src/api/docking/task.js
@@ -1,13 +1,13 @@
import request from '@/router/axios';
export const getTaskList = (page, size, params) => {
export const getTaskList = (page, limit, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridDockingTask',
    method: 'get',
    params: {
      ...params,
      page,
      size
      limit
    }
  })
}
Source/UBCS-WEB/src/api/integration/sysInfo.js
@@ -1,11 +1,15 @@
import request from '@/router/axios';
// é›†æˆç³»ç»Ÿä¿¡æ¯ç®¡ç†åˆ—表
export const getSysInfoList = (params) => {
export const getSysInfoList = (size,current,params) => {
    return request({
      url: '/api/ubcs-code/dockingManagement/gridDockingSystem',
      method: 'get',
      params: params
      params: {
        size,
        current,
        ...params
      }
    })
  }
  // é›†æˆç³»ç»Ÿä¿¡æ¯ç®¡ç†æ–°å¢ž
Source/UBCS-WEB/src/page/login/index.vue
@@ -21,12 +21,12 @@
          </h4>
          <userLogin v-if="activeName==='user'"></userLogin>
          <thirdLogin v-else-if="activeName==='third'"></thirdLogin>
          <div class="login-menu">
            <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>
            <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
            <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>
            <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a>
          </div>
<!--          <div class="login-menu">-->
<!--            <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>-->
<!--            <a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
<!--            <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>-->
<!--            <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a>-->
<!--          </div>-->
        </div>
      </div>
Source/UBCS-WEB/src/page/login/userlogin.vue
@@ -8,7 +8,7 @@
             status-icon
    >
      <el-form-item prop="selectInput">
        <el-select v-model="loginForm.tenantId" placeholder="请选择租户" style="width: 100%" @change="selectchange">
        <el-select v-model="loginForm.tenantId" placeholder="请选择租户" style="width: 100%" @change="selectChange">
          <i slot="prefix" class="el-icon-s-operation"/>
          <el-option
            v-for="(item,index) in loginForm.region"
@@ -40,6 +40,7 @@
      </el-form-item>
      <el-form-item>
        <el-button @click="ChandleLogin">测试单点登录</el-button>
        <el-button class="login-submit"
                   size="small"
                   type="primary"
@@ -62,7 +63,7 @@
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="delok">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="addok">ç¡® å®š</el-button>
        <el-button type="primary" @click="addHandler">ç¡® å®š</el-button>
      </div>
    </el-dialog>
  </div>
@@ -192,6 +193,9 @@
  },
  props: [],
  methods: {
    ChandleLogin(){
    },
    closehandle(){
      removeToken()
    },
@@ -201,7 +205,7 @@
      removeToken()
    },
    // ç‚¹å‡»ç¡®å®šä¿®æ”¹å¯†ç 
    addok(){
    addHandler(){
      this.dialogFormVisible = false
      updatePassword(md5(this.form.oldPassword), this.form.newPassword, this.form.newPassword1).then(res=>{
        console.log(res)
@@ -215,7 +219,7 @@
      })
    },
    // ç»‘定下拉菜单动态ID
    selectchange(value) {
    selectChange(value) {
      this.loginForm.tenantId = value
    },
    showPassword() {
Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -1,235 +1,252 @@
<template>
    <basic-container>
        <avue-crud ref="crud" :table-loading="loading" :data="data" :option="option" :page.sync="page" :search.sync="search"
            @on-load="getDataList" @row-save="handleSave" @row-del="handleDelete" @row-update="handleEdit"
            @refresh-change="handleRefresh" @size-change="handleSizePage" @current-change="handleCurrentPage"
            @selection-change="selectionChange" @row-click="handleRowClick">
            <template slot="menuLeft">
                <!-- <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">查 è¯¢
                </el-button> -->
                <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">删 é™¤
                </el-button>
            </template>
            <template slot="search" slot-scope="{row,size}">
                <el-select v-model="selectValue" size="small" @change="handleSelect">
                    <el-option v-for="item in selectOption" :key="item.value" :label="item.label" :value="item.value">
                    </el-option>
                </el-select>
                <el-input :placeholder="`请输入${selectValue === 'id' ? '系统编号' : '系统名称'}并按回车查询`" :size="size"
                    style="width:300px;margin-left: 10px;" v-model="search[selectValue]" clearable
                    @keyup.enter.native="handleEnter" @clear="handleClear"></el-input>
            </template>
        </avue-crud>
    </basic-container>
  <basic-container>
    <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :search.sync="search" :table-loading="loading"
               @on-load="getDataList" @row-save="handleSave" @row-del="handleDelete" @row-update="handleEdit"
               @refresh-change="handleRefresh" @size-change="handleSizePage" @current-change="handleCurrentPage"
               @selection-change="selectionChange" @row-click="handleRowClick">
      <template slot="menuLeft">
        <!-- <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">查 è¯¢
        </el-button> -->
        <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">删 é™¤
        </el-button>
      </template>
      <template slot="search" slot-scope="{row,size}">
        <el-select v-model="selectValue" size="small" @change="handleSelect">
          <el-option v-for="item in selectOption" :key="item.value" :label="item.label" :value="item.value">
          </el-option>
        </el-select>
        <el-input v-model="search[selectValue]" :placeholder="`请输入${selectValue === 'id' ? '系统编号' : '系统名称'}并按回车查询`"
                  :size="size" clearable style="width:300px;margin-left: 10px;"
                  @clear="handleClear" @keyup.enter.native="handleEnter"></el-input>
      </template>
      <template #menu="{row,index,size}">
        <el-button type="text" icon="el-icon-menu" size="small" @click="classifyHandler">分类授权</el-button>
      </template>
    </avue-crud>
    <el-dialog :visible.sync="dialogVisible" append-to-body title="分类授权">
    </el-dialog>
  </basic-container>
</template>
<script>
import { getSysInfoList, sysInfoAdd, sysInfoEdit, sysInfoDel } from '@/api/integration/sysInfo.js'
export default {
    data() {
        return {
            loading: false,
            page: {
                currentPage: 1,
                pageSize: 10,
                total: 0
            },
            selectOption: [{
                value: 'id',
                label: '系统编号'
            }, {
                value: 'name',
                label: '系统名称'
            }],
            selectValue: 'id',
            search: {},
            delIds: [],
            data: [],
            option: {
                height: "auto",
              tip:false,
                border: true,
                align: 'center',
                menuAlign: 'center',
                index: true,
                searchMenuSpan: 8,
                searchBtn: false,
                emptyBtn: false,
                columnBtn: false,
                defaultSort: {
                    prop: 'id,name',
                    order: 'descending'
                },
                selection: true,
                column: [
                    {
                        label: '系统编号',
                        prop: 'id',
                        sortable: true,
                        rules: [{
                            required: true,
                            message: '系统编号不能为空',
                            trigger: 'blur'
                        }],
                        // maxlength: 30,    //字数限制
                    }, {
                        label: '系统名称',
                        prop: 'name',
                        sortable: true,
                        rules: [{
                            required: true,
                            message: '系统名称不能为空',
                            trigger: 'blur'
                        }],
                        // maxlength: 30,    //字数限制
                    },
                    {
                        label: '系统描述',
                        prop: 'description',
                        type: 'textarea'
                    }
                ]
            },
        }
    },
    methods: {
        // èŽ·å–åˆ—è¡¨
        async getDataList() {
            this.loading = true
            console.log(this.search)
            const { pageSize, currentPage } = this.page
            let param = { size: pageSize, current: currentPage }
            this.search = Object.keys(this.search)
                .filter((key) => this.search[key] !== null && this.search[key] !== undefined && this.search[key] !== "")
                .reduce((acc, key) => ({ ...acc, [key]: this.search[key] }), {});
            const response = await getSysInfoList({ ...param, ...this.search })
            if (response.status === 200) {
                console.log(response)
                this.loading = false
                const data = response.data.data
                this.data = data.records
                this.page.total = data.total
            } else this.loading = false
        },
        // æ–°å¢ž
        async handleSave(row, done, loading) {
            try {
                const response = await sysInfoAdd(row)
                if (response.status === 200) {
                    this.$message({
                        type: 'success',
                        message: '新增数据成功!'
                    })
                    done(row)
                    // this.$refs.crud.refreshTable()
                    // this.getDataList()
                }
            } catch {
                loading()
            }
        },
        // ç¼–辑
        async handleEdit(row, index, done, loading) {
            try {
                const { oid, id, name, description } = row
                const response = await sysInfoEdit({ oid, id, name, description })
                if (response.status === 200) {
                    loading()
                    this.$message({
                        type: 'success',
                        message: '修改数据成功!'
                    })
                    done(row)
                }
            } catch {
                loading()
            }
        },
        // åˆ é™¤å•条
        handleDelete(row) {
            const { oid } = row
            this.deleteSysInfo({ oids: oid })
        },
        // å¤šæ¡æ•°æ®åˆ é™¤
        handleDeleteByIds() {
            const { oids } = this.delIds
            if (this.$utilFunc.isEmpty(oids)) {
                this.$message({
                    type: "error",
                    message: "请至少选择一条数据!"
                })
            } else {
                this.deleteSysInfo(this.delIds)
            }
        },
        // åˆ é™¤æŽ¥å£
        deleteSysInfo(param) {
            this.$confirm('是否确定删除选择的集成系统?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(async () => {
                const response = await sysInfoDel(param)
                if (response.status === 200) {
                    console.log(response)
                    this.$message({
                        type: 'success',
                        message: '删除成功!'
                    });
                    this.getDataList()
                }
            })
        },
        // é€‰æ‹©æ¡†å†…容选择后
        handleSelect(event) {
            this.selectValue = event
            if (this.selectValue === 'id') {
                this.search['name'] = ''
                delete this.search['name']
            } else {
                this.search['id'] = ''
                delete this.search['id']
            }
        },
        // enter搜索
        handleEnter() {
            if (this.search[this.selectValue] === '') return
            else this.getDataList()
import {getSysInfoList, sysInfoAdd, sysInfoEdit, sysInfoDel} from '@/api/integration/sysInfo.js'
export default {
  data() {
    return {
      loading: false,
      dialogVisible:false,
      page: {
        currentPage: 1,
        pageSize: 10,
        total: 0
      },
      selectOption: [{
        value: 'id',
        label: '系统编号'
      }, {
        value: 'name',
        label: '系统名称'
      }],
      selectValue: 'id',
      search: {},
      delIds: [],
      data: [],
      option: {
        height: "auto",
        tip: false,
        border: true,
        align: 'center',
        menuAlign: 'center',
        index: true,
        searchMenuSpan: 8,
        searchBtn: false,
        emptyBtn: false,
        columnBtn: false,
        defaultSort: {
          prop: 'id,name',
          order: 'descending'
        },
        // è¾“入框清空
        handleClear() {
            this.search = {}
            this.getDataList()
        },
        // åˆ·æ–°æŒ‰é’®
        handleRefresh() {
            this.getDataList()
        },
        handleSizePage(event) {
            this.page.pageSize = event
        },
        handleCurrentPage(event) {
            this.page.currentPage = event
        },
        // ç‚¹å‡»é€‰æ‹©
        handleRowClick(row) {
            this.$refs.crud.toggleRowSelection(row, true)
        },
        // å¤šé€‰
        selectionChange(list) {
            console.log(list)
            let newData = list.map(item => {
                const { oid } = item
                return oid
            })
            this.delIds = { oids: newData.toString() }
            console.log(this.delIds)
        },
        selection: true,
        column: [
          {
            label: '系统编号',
            prop: 'id',
            sortable: true,
            rules: [{
              required: true,
              message: '系统编号不能为空',
              trigger: 'blur'
            }],
            // maxlength: 30,    //字数限制
          }, {
            label: '系统名称',
            prop: 'name',
            sortable: true,
            rules: [{
              required: true,
              message: '系统名称不能为空',
              trigger: 'blur'
            }],
            // maxlength: 30,    //字数限制
          },
          {
            label: '系统描述',
            prop: 'description',
            type: 'textarea'
          }
        ]
      },
    }
  },
  methods: {
    //分类授权
    classifyHandler(){
      this.dialogVisible=true;
    },
    async getDataList() {
      this.loading = true;
      console.log(this.search);
      const { pageSize, currentPage } = this.page;
      const conditions = {};
      if (Object.keys(this.search).length > 0) {
        for (const key in this.search) {
          if (this.search[key]) {
            conditions[`conditionMap[${key}_like]`] = this.search[key];
          }
        }
      }
      const response = await getSysInfoList(pageSize, currentPage, conditions);
      if (response.status === 200) {
        console.log(response);
        this.loading = false;
        const data = response.data.data;
        this.data = data.records;
        this.page.total = data.total;
      } else {
        this.loading = false;
      }
    },
    // æ–°å¢ž
    async handleSave(row, done, loading) {
      try {
        const response = await sysInfoAdd(row)
        if (response.status === 200) {
          this.$message({
            type: 'success',
            message: '新增数据成功!'
          })
          done(row)
          // this.$refs.crud.refreshTable()
          // this.getDataList()
        }
      } catch {
        loading()
      }
    },
    // ç¼–辑
    async handleEdit(row, index, done, loading) {
      try {
        const {oid, id, name, description} = row
        const response = await sysInfoEdit({oid, id, name, description})
        if (response.status === 200) {
          loading()
          this.$message({
            type: 'success',
            message: '修改数据成功!'
          })
          done(row)
        }
      } catch {
        loading()
      }
    },
    // åˆ é™¤å•条
    handleDelete(row) {
      const {oid} = row
      this.deleteSysInfo({oids: oid})
    },
    // å¤šæ¡æ•°æ®åˆ é™¤
    handleDeleteByIds() {
      const {oids} = this.delIds
      if (this.$utilFunc.isEmpty(oids)) {
        this.$message({
          type: "error",
          message: "请至少选择一条数据!"
        })
      } else {
        this.deleteSysInfo(this.delIds)
      }
    },
    // åˆ é™¤æŽ¥å£
    deleteSysInfo(param) {
      this.$confirm('是否确定删除选择的集成系统?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const response = await sysInfoDel(param)
        if (response.status === 200) {
          console.log(response)
          this.$message({
            type: 'success',
            message: '删除成功!'
          });
          this.getDataList()
        }
      })
    },
    // é€‰æ‹©æ¡†å†…容选择后
    handleSelect(event) {
      this.selectValue = event
      if (this.selectValue === 'id') {
        this.search['name'] = ''
        delete this.search['name']
      } else {
        this.search['id'] = ''
        delete this.search['id']
      }
    },
    // enter搜索
    handleEnter() {
      if (this.search[this.selectValue] === '') return
      else this.getDataList()
    },
    // è¾“入框清空
    handleClear() {
      this.search = {}
      this.getDataList()
    },
    // åˆ·æ–°æŒ‰é’®
    handleRefresh() {
      this.getDataList()
    },
    handleSizePage(event) {
      this.page.pageSize = event
    },
    handleCurrentPage(event) {
      this.page.currentPage = event
    },
    // ç‚¹å‡»é€‰æ‹©
    handleRowClick(row) {
      this.$refs.crud.toggleRowSelection(row, true)
    },
    // å¤šé€‰
    selectionChange(list) {
      console.log(list)
      let newData = list.map(item => {
        const {oid} = item
        return oid
      })
      this.delIds = {oids: newData.toString()}
      console.log(this.delIds)
    },
  }
}
</script>
<style lang="scss" scoped>
::v-deep(.avue-crud .el-select) {
    width: 100px !important;
  width: 100px !important;
}
</style>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/SystemClassifyRole.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.constant.CodeTableNameConstant;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * é›†æˆç³»ç»Ÿåˆ†ç±»æŽˆæƒ
 *
 * @author xiejun
 * @since 2023-04-03
 */
@Data
@TableName(CodeTableNameConstant.PL_CODE_SYSTEM_CLASSIFY_ROLE)
@ApiModel(value = "SystemClassifyRole对象", description = "集成系统分类授权")
@EqualsAndHashCode(callSuper = true)
public class SystemClassifyRole extends BaseModel {
    /***
     * é›†æˆç³»ç»Ÿä¸»é”®oid
     */
    private String systemOid;
    /**
     * é›†æˆç³»ç»Ÿæ ‡è¯†
     */
    private String systemId;
    /***
     * åˆ†ç±»oid
     */
    private String classifyOid;
    /***
     * é›†æˆç³»ç»Ÿåˆ†ç±»ä»£å·
     */
    private String classifyId;
    /**
     * æ˜¯å¦æœ‰æƒé™
     */
    private boolean selected;
    /**
     * åˆ†ç±»çˆ¶èŠ‚ç‚¹oid
     */
    private String classParentOid;
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java
@@ -141,6 +141,9 @@
    public static final String PL_CODE_DOCKINGTASK = "PL_CODE_DOCKINGTASK";
    /**
     * é›†æˆç³»ç»ŸæŽˆæƒåˆ†ç±»æƒé™è¡¨
     */
    public static final String PL_CODE_SYSTEM_CLASSIFY_ROLE = "PL_CODE_SYSTEM_CLASSIFY_ROLE";
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.vci.ubcs.code.controller;
import com.vci.ubcs.code.service.ICodeClassifyService;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * ä¸»é¢˜åº“定义表 æŽ§åˆ¶å™¨
 *
 * @author xiejun
 * @since 2023-07-24
 */
@RestController
@AllArgsConstructor
@RequestMapping("/codeApplyWebManagementController")
public class CodeApplyWebManagementController {
    /***
     * åˆ†ç±»æœåŠ¡å¯¹è±¡
     */
    private final ICodeClassifyService codeClassifyService;
    /***
     * æ ¹æ®å‰ç«¯é€‰æ‹©çš„分类权限授权授权
     * @return
     */
    private R saveClassifyRoleBySystemId(){
        return R.success("成功");
    }
    /***
     * æ ¹æ®ç³»ç»Ÿé›†æˆæ ‡è¯†æŸ¥è¯¢å…·å¤‡æƒé™çš„分类数据
     * @return
     */
    public R selectCodeClassifyVOByParentId(String systemId){
        return R.success("查询成功");
    }
}