fuliqi
2024-09-02 8fb7cc0325027caa4ed7574443e24f5bd7a8efb7
考核结果图表bug,登录路由权限控制
4个文件已修改
112 ■■■■ 已修改文件
src/layout/components/Navbar.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/check/result/index.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue
@@ -39,7 +39,7 @@
    </div>
    <div class="button-container">
      <el-button type="primary" @click="toScreen" size="small">可视化大屏</el-button>
      <el-button v-if="roles.includes('admin') || roles.includes('county_leader') || roles.includes('city_leader')" type="primary" @click="toScreen" size="small">可视化大屏</el-button>
    </div>
    <div class="button-container">
      <el-button type="primary" @click="toSystemB" size="small">跳转B系统</el-button>
@@ -76,7 +76,8 @@
    ...mapGetters([
      'sidebar',
      'avatar',
      'device'
      'device',
      'roles'
    ]),
    setting: {
      get() {
src/views/login.vue
@@ -18,28 +18,28 @@
          <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
            <el-form-item prop="username">
              <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
                <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
                <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon"/>
              </el-input>
            </el-form-item>
            <el-form-item prop="password">
              <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
                @keyup.enter.native="handleLogin">
                <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
                        @keyup.enter.native="handleLogin">
                <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon"/>
              </el-input>
            </el-form-item>
            <el-form-item prop="code" v-if="captchaEnabled">
              <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%"
                @keyup.enter.native="handleLogin">
                <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
                        @keyup.enter.native="handleLogin">
                <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon"/>
              </el-input>
              <div class="login-code">
                <img :src="codeUrl" @click="getCode" class="login-code-img" />
                <img :src="codeUrl" @click="getCode" class="login-code-img"/>
              </div>
            </el-form-item>
            <el-checkbox v-model="loginForm.rememberMe" style=" margin:0px 0px 25px 0px;">记住密码</el-checkbox>
            <el-form-item style="width:100%;">
              <el-button :loading="loading" size="medium" type="primary" style="width:100%;"
                @click.native.prevent="handleLogin">
                         @click.native.prevent="handleLogin">
                <span v-if="!loading">登 录</span>
                <span v-else>登 录 中...</span>
              </el-button>
@@ -67,10 +67,10 @@
</template>
<script>
import { getCodeImg, getInfo } from "@/api/login";
import {getCodeImg, getInfo} from "@/api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt'
import { updateUserPwd } from "@/api/system/user";
import {encrypt, decrypt} from '@/utils/jsencrypt'
import {updateUserPwd} from "@/api/system/user";
export default {
  //新增对象、变量
@@ -87,8 +87,7 @@
      var regex = /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[\W_])/;
      if (value.length < 8 || value.length > 10) {
        callback(new Error('请输入8-10位大写字母+小写字母+数字+特殊字符'));
      }
      else if (!regex.test(value)) {
      } else if (!regex.test(value)) {
        callback(new Error("请输入8-10位大写字母+小写字母+数字+特殊字符"));
      } else {
        callback();
@@ -110,21 +109,21 @@
      confirmPassword: undefined,
      loginRules: {
        username: [
          { required: true, trigger: "blur", message: "请输入您的账号" }
          {required: true, trigger: "blur", message: "请输入您的账号"}
        ],
        password: [
          { required: true, trigger: "blur", message: "请输入您的密码" }
          {required: true, trigger: "blur", message: "请输入您的密码"}
        ],
        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
        code: [{required: true, trigger: "change", message: "请输入验证码"}]
      },
      rules: {
        newPassword: [
          { required: true, message: "新密码不能为空", trigger: "blur" },
          { required: true, validator: validatePassword, trigger: "blur" }
          {required: true, message: "新密码不能为空", trigger: "blur"},
          {required: true, validator: validatePassword, trigger: "blur"}
        ],
        confirmPassword: [
          { required: true, message: "确认密码不能为空", trigger: "blur" },
          { required: true, validator: equalToPassword, trigger: "blur" }
          {required: true, message: "确认密码不能为空", trigger: "blur"},
          {required: true, validator: equalToPassword, trigger: "blur"}
        ]
      },
      loading: false,
@@ -174,9 +173,9 @@
          this.loading = true;
          if (this.loginForm.rememberMe) {
            Cookies.set("username", this.loginForm.username, { expires: 30 });
            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
            Cookies.set("username", this.loginForm.username, {expires: 30});
            Cookies.set("password", encrypt(this.loginForm.password), {expires: 30});
            Cookies.set('rememberMe', this.loginForm.rememberMe, {expires: 30});
          } else {
            Cookies.remove("username");
            Cookies.remove("password");
@@ -190,11 +189,18 @@
              if (this.loginInfo.firstLogin == 1) {
                // this.$router.push({ path: "/" }).catch(() => { });
                // return;
                this.$router.push({ path: this.redirect || "/screen" }).catch(() => { });
                if (this.loginInfo.roles.includes("admin") || this.loginInfo.roles.includes("city_leader") || this.loginInfo.roles.includes("county_leader")) {
                  this.$router.push({path: this.redirect || "/screen"}).catch(() => {
                  });
                } else {
                  this.$router.push({path: this.redirect || "/index"}).catch(() => {
                  });
                }
              } else {
                localStorage.setItem('firstLogin', 0)
              }
            }).catch(() => { })
            }).catch(() => {
            })
          }).catch(() => {
            this.loading = false;
            if (this.captchaEnabled) {
@@ -210,7 +216,8 @@
        // 修改完成将firstLogin改为1
        localStorage.setItem('firstLogin', 1)
        this.$modal.msgSuccess("修改成功");
        this.$router.push({ path: this.redirect || "/" }).catch(() => { });
        this.$router.push({path: this.redirect || "/"}).catch(() => {
        });
      }).catch((e) => {
        console.info(e)
      });
@@ -319,7 +326,6 @@
    animation-delay: 0.1s;
  }
}
.login-form {
src/views/system/check/result/index.vue
@@ -78,12 +78,6 @@
      activeIndex: '0',
      date: '',
      company: '',
      dataList: {
        name: ['富顺县', '荣县', '高新区', '自流井区', '贡井区', '大安区', '沿滩区'],
        data1: [95, 96, 97, 95, 94.5, 93.6, 94.5],
        data2: [93.7, 93.5, 94.3, 96.5, 95.3, 94.2, 93.3],
        data3: [98.3, 94.3, 93.3, 95.5, 96.8, 96.1, 95.8],
      },
      // 查询参数
      queryParams: {
        examineTag: null,
@@ -92,13 +86,13 @@
    }
  },
  created() {
  },
  mounted() {
    this.queryParams.examineTag = this.activeIndex
    this.getList();
    this.areaSelect();
  },
  mounted() {
    chart = echarts.init(this.$refs.barChart);
    this.initEchart();
    this.setChartOption(this.checkScoreList);
  },
  methods: {
    jumpDetail(index) {
@@ -238,17 +232,22 @@
      }
      chart.setOption(option, true);
    },
    filterData(data, tag) {
      if (!data) return;
      if(!Array.isArray(data)) return;
    filterData(mapData, tag) {
      if (!mapData) return;
      if(!Array.isArray(mapData)) return;
      const tempArray = [];
      data.forEach((item) => {
      mapData.forEach((item) => {
        if(item.data.length) {
          let flag = false;
          item.data.forEach((examine) => {
            if(examine.examineCategory === tag) {
              flag = true
              tempArray.push(examine.score);
            }
          })
          if(!flag){
            tempArray.push(0);
          }
        }
      })
      return tempArray;
@@ -314,8 +313,8 @@
      listScore(this.queryParams).then(response => {
        this.checkScoreList = response.data;
        console.log(this.checkScoreList);
        this.loading = false;
        this.setChartOption(this.checkScoreList);
        this.loading = false;
      });
    },
    publish(city) {
src/views/system/user/index.vue
@@ -268,17 +268,17 @@
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="岗位">
              <el-select v-model="form.postIds" multiple placeholder="请选择岗位">
                <el-option
                  v-for="item in postOptions"
                  :key="item.postId"
                  :label="item.postName"
                  :value="item.postId"
                  :disabled="item.status == 1"
                ></el-option>
              </el-select>
            </el-form-item>
<!--            <el-form-item label="岗位">-->
<!--              <el-select v-model="form.postIds" multiple placeholder="请选择岗位">-->
<!--                <el-option-->
<!--                  v-for="item in postOptions"-->
<!--                  :key="item.postId"-->
<!--                  :label="item.postName"-->
<!--                  :value="item.postId"-->
<!--                  :disabled="item.status == 1"-->
<!--                ></el-option>-->
<!--              </el-select>-->
<!--            </el-form-item>-->
          </el-col>
          <el-col :span="12">
            <el-form-item label="角色">