xiejun
2023-10-19 421ee711aa469f00eaff610cfa85ad1d4b755688
Source/UBCS-WEB/src/views/wel/index.vue
@@ -7,13 +7,13 @@
    </el-row>
    <el-row>
      <el-col :span="24">
        <basic-container title="待办事项">
        <basic-container title="主数据统计">
          <Statistic></Statistic>
        </basic-container>
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="16">
      <el-col :span="24">
        <basic-container title="待办流程任务">
          <avue-crud ref="crud" :table-loading="loading" :data="todoData" :option="todoOption"
                     @on-load="onLoad"
@@ -28,69 +28,18 @@
          </avue-crud>
        </basic-container>
      </el-col>
      <el-col :span="8">
        <el-row>
          <basic-container title="消息列表">
            <el-collapse v-model="logActiveNames" @change="handleChange">
              <el-collapse-item title="2.8.2.RELEASE发布" name="23">
                <div>1.[升级]SpringBoot 至 2.3.12</div>
                <div>2.[升级]SpringBootAdmin 至 2.3.1</div>
                <div>3.[升级]Knife4j 至 2.0.9</div>
                <div>4.[升级]Nacos 至 2.0.2</div>
                <div>5.[升级]Seata 至 1.4.2</div>
                <div>6.[回滚]MybatisPlus 至 3.4.2</div>
                <div>7.[升级]DynamicDatasource 至 3.3.6</div>
                <div>8.[升级]Druid 至 1.2.6</div>
                <div>9.[升级]Avue 至 2.8.18</div>
                <div>10.[新增]用户登录错误次数锁定功能</div>
                <div>11.[新增]多部门多角色用户在登录时增加下拉选项</div>
                <div>12.[新增]新增用户多条件查询接口</div>
                <div>13.[新增]Ribbon组件权重读取逻辑</div>
                <div>14.[新增]ExcelUtil新增WriteHandler参数</div>
                <div>15.[新增]CacheUtil增加指定tenantId清空方法</div>
                <div>16.[优化]手机短信校验逻辑,增加手机号强制判断</div>
                <div>17.[优化]短信调试功能增加资源编号读取</div>
                <div>18.[优化]多租户切面逻辑</div>
                <div>19.[优化]多租户缓存清空逻辑</div>
                <div>20.[优化]ISqlInjector支持自定义覆盖</div>
                <div>21.[优化]优化日志对于租户id的判断</div>
                <div>22.[优化]Menu类重写hashCode方法</div>
                <div>23.[优化]MySql脚本将long类型字段改为bigint(20)</div>
                <div>24.[修复]用户中心字段绑定相反的问题</div>
                <div>25.[修复]关闭验证码模式后首页仍调用验证码接口的问题</div>
              </el-collapse-item>
              <el-collapse-item title="2.8.2.RELEASE发布,增强用户登录方案" name="24">
                <div>1.[升级]SpringBoot 至 2.3.12</div>
                <div>2.[升级]SpringBootAdmin 至 2.3.1</div>
                <div>3.[升级]Knife4j 至 2.0.9</div>
                <div>4.[升级]Nacos 至 2.0.2</div>
                <div>5.[升级]Seata 至 1.4.2</div>
                <div>6.[回滚]MybatisPlus 至 3.4.2</div>
                <div>7.[升级]DynamicDatasource 至 3.3.6</div>
                <div>8.[升级]Druid 至 1.2.6</div>
                <div>9.[升级]Avue 至 2.8.18</div>
                <div>10.[新增]用户登录错误次数锁定功能</div>
                <div>11.[新增]多部门多角色用户在登录时增加下拉选项</div>
                <div>12.[新增]新增用户多条件查询接口</div>
                <div>13.[新增]Ribbon组件权重读取逻辑</div>
                <div>14.[新增]ExcelUtil新增WriteHandler参数</div>
                <div>15.[新增]CacheUtil增加指定tenantId清空方法</div>
                <div>16.[优化]手机短信校验逻辑,增加手机号强制判断</div>
                <div>17.[优化]短信调试功能增加资源编号读取</div>
                <div>18.[优化]多租户切面逻辑</div>
                <div>19.[优化]多租户缓存清空逻辑</div>
                <div>20.[优化]ISqlInjector支持自定义覆盖</div>
                <div>21.[优化]优化日志对于租户id的判断</div>
                <div>22.[优化]Menu类重写hashCode方法</div>
                <div>23.[优化]MySql脚本将long类型字段改为bigint(20)</div>
                <div>24.[修复]用户中心字段绑定相反的问题</div>
                <div>25.[修复]关闭验证码模式后首页仍调用验证码接口的问题</div>
              </el-collapse-item>
            </el-collapse>
          </basic-container>
        </el-row>
<!--      <el-col :span="8">-->
<!--        <el-row>-->
<!--          <basic-container title="消息列表">-->
<!--            <el-collapse v-model="logActiveNames" @change="handleChange">-->
<!--              <el-collapse-item v-for="item in noticeData" :title="item.title" :name="item.id">-->
<!--                <div>{{item.subtitle}}</div>-->
<!--              </el-collapse-item>-->
<!--            </el-collapse>-->
<!--          </basic-container>-->
<!--        </el-row>-->
      </el-col>
<!--      </el-col>-->
    </el-row>
    <el-dialog title="修改密码" :visible.sync="dialogFormVisible" append-to-body  :close-on-press-escape="false" :before-close="Xdelhandle">
      <el-form :model="form"  :rules="rules" ref="form">
@@ -114,12 +63,13 @@
<script>
  import {mapGetters} from "vuex";
  import  {getUndoTaskList,check,updatePassword} from "@/api/system/user"
  import  {check,updatePassword} from "@/api/system/user"
  import md5 from "js-md5";
  import {removeToken} from "@/util/auth";
  import Statistic from './Statistic.vue';
  import {validatenull} from "@/util/validate";
  import {flowCategory,flowRoute} from "@/util/flow";
  import {todoList} from "@/api/work/work";
  export default {
    name: "wel",
@@ -136,39 +86,81 @@
        todoData: [],
        // 代办流程任务option
        todoOption: {
          height:500,
          addBtn: false,
          header: false,
          align: 'center',
          index: true,
          menuWidth: 100,
          menuWidth: 80,
          editBtn: false,
          delBtn: false,
          border:true,
          column: [{
            label: '任务名称',
            prop: 'name',
            prop: 'taskName',
            sortable:true,
            headerAlign:'center',
            align:'left',
            html: true,
            width:300,
            overHidden:true,
            formatter: (val) => {
              return '<a name="processname" href="javascript:;" style="color: #66b1ff;">' + val.taskName + '</a>'
              return '<a name="processname" href="javascript:;" style="color: #66b1ff;">' + val.variables.processName+'-'+val.taskName + '</a>'
            }
          },
            {
              label: '上一步处理时间',
              sortable:true,
              width:150,
              prop: 'createTime'
            },
            {
              label: '描述',
              prop: 'description'
              label: '上一步操作人',
              sortable:true,
              width:120,
              prop: 'historyActivityAssigneName'
            },
            {
              label: '上一步操作人',
              prop: 'creator_name'
              label: '流程描述',
              prop: 'processDesc',
              overHidden:true,
              formatter: (val) => {
                return  val.variables.processDesc
              }
            },
            {
              label: '所属流程模板',
              sortable:true,
              overHidden:true,
              prop: 'categoryName'
            }
          ]
        },
        noticeData: [{
          img: '/img/bg/vip1.png',
          title: '史蒂夫·乔布斯 关注了你',
          subtitle: '05-08 15:08',
          tag: '已经开始',
          status: 0
        }, {
          img: '/img/bg/vip2.png',
          title: '斯蒂夫·沃兹尼亚克 关注了你',
          subtitle: '05-08 15:08',
          tag: '未开始',
          status: 1
        }, {
          img: '/img/bg/vip3.png',
          title: '蒂姆·库克 关注了你',
          subtitle: '05-08 15:08',
          status: 3,
          tag: '有错误'
        }, {
          img: '/img/bg/vip4.png',
          title: '比尔·费尔南德斯 关注了你',
          subtitle: '05-08 15:08',
          status: 4,
          tag: '已完成'
        }],
        logActiveNames: ['28'],
        userarr: [],
        userid: '',
@@ -196,7 +188,11 @@
    created() {
      this.updataArr = JSON.parse(localStorage.getItem("updataid"))
      this.userid = this.$store.state.user.upadatastatus.user_id
      this.checkhandle()
      const pageFlag = localStorage.getItem("pageFlag")
      if (pageFlag === null) {
        this.checkhandle()
        localStorage.setItem("pageFlag", true)
      }
    },
    computed: {
      ...mapGetters(["userInfo", "flowRoutes"]),
@@ -205,8 +201,6 @@
      handleChange(val) {
        window.console.log(val);
      },
      //element组件关闭弹窗的延迟回调,这里没有用关闭弹窗的方法,因为当用户点击确认也是关闭弹窗,如果登录成功弹窗关闭后也是会清除token回到登录页
      //Xdelhandle是点击X号关闭弹唱,delhandle是点击取消关闭弹窗,在这分了两个事件
      Xdelhandle() {
        removeToken()
        this.dialogFormVisible = false
@@ -249,10 +243,10 @@
                this.dialogFormVisible = true
              }, 1500)
            } else if (res.data.data == 0) {
              this.$message({
                type: 'success',
                message: "操作成功"
              })
              // this.$message({
              //   type: 'success',
              //   message: "操作成功"
              // })
            }
          }).catch(res => {
            console.log(res)
@@ -261,7 +255,11 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getUndoTaskList(page.currentPage, page.pageSize, Object.assign(params)).then(res => {
        const query = {
          ...this.query,
          category: (params.category) ? flowCategory(params.category) : null
        };
        todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
          const data = res.data.data;
          this.page.total = data.total;
          this.todoData = data.records;
@@ -272,13 +270,12 @@
        })
      },
      cellHandle(row, column, cell, event) {
        if (column.property == 'name') {
        if (column.property == 'taskName') {
          this.gotodo(row)
        }
      },
      gotodo(row, index) {
        //this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` });
        this.$router.push({ path: `/work/todo` });
        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` });
      }
    }
  };