riku
2023-12-25 440522ea896377c45ffd80f4b70927d27e701c64
编写评估任务模块逻辑,未完成
已修改5个文件
已添加1个文件
219 ■■■■ 文件已修改
src/styles/element/animation.scss 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/styles/element/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/evaluation/DataSource.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/evaluation/components/precheck/CompCheckArea.vue 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/evaluation/components/precheck/CompCheckExemption.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/evaluation/components/precheck/CompCheckSource.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/styles/element/animation.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
// @mixin animation($value) {
//   animation: $value;
//   -webkit-animation: $value;
// }
// @keyframes rotatemove {
//   from {
//     transform: rotate(0deg);
//   }
//   to {
//     transform: rotate(360deg);
//   }
// }
// .icon-rotate {
//   @include animation(rotatemove 2s linear infinite);
// }
src/styles/element/index.scss
@@ -40,3 +40,4 @@
// custom dark variables
@use "./dark.scss";
@use "./animation.scss"
src/views/fysp/evaluation/DataSource.vue
@@ -4,13 +4,25 @@
      <CompPreCheck></CompPreCheck>
    </el-col>
    <el-col :span="8">
      <div class="radius"></div>
      <el-card shadow="never" class="radius">
        <template #header>
          <el-row justify="space-between">
            <div>
              <div><el-text tag="b" size="large">自动评估任务</el-text></div>
              <el-text size="small" type="info">显示当前正在进行的自动评估任务状态</el-text>
            </div>
            <el-button icon="Refresh" type="primary" size="default" :loading="loading" @click="submit"
              >刷新任务</el-button
            >
          </el-row>
        </template>
      </el-card>
    </el-col>
  </el-row>
</template>
<script>
import CompPreCheck from "./components/CompPreCheck.vue";
import CompPreCheck from './components/CompPreCheck.vue';
export default {
  name: 'DataSource',
  components: { CompPreCheck },
@@ -22,7 +34,7 @@
<style scoped>
.radius {
  height: 80vh;
  border: 1px solid var(--el-border-color);
  border-radius: var(--el-border-radius-base);
  /* border: 1px solid var(--el-border-color); */
  /* border-radius: var(--el-border-radius-base); */
}
</style>
src/views/fysp/evaluation/components/precheck/CompCheckArea.vue
@@ -4,38 +4,35 @@
      <div><el-text tag="b" size="large">选择评估范围</el-text></div>
      <el-text size="small" type="info">包括区县、场景类型以及月份</el-text>
    </template>
    <FYForm
      ref="formRef"
      :rules="evaConditionRules"
      :showButtons="false"
      @submit="nextStep"
    >
      <template #form-item="{ formObj }">
        <CompQuickSet @quick-set="setOptions"></CompQuickSet>
        <!-- åŒºåŽ¿ -->
        <FYOptionLocation
          :allOption="false"
          :level="3"
          :initValue="false"
          :checkStrictly="false"
          v-model:value="formObj._locations"
        ></FYOptionLocation>
        <!-- åœºæ™¯ç±»åž‹ -->
        <FYOptionScene
          :allOption="false"
          :initValue="false"
          :type="2"
          v-model:value="formObj._scenetype"
        ></FYOptionScene>
        <!-- æ—¶é—´ -->
        <FYOptionTime
          prop="time"
          :initValue="true"
          type="month"
          v-model:value="formObj.time"
        ></FYOptionTime>
      </template>
    </FYForm>
    <FormCol>
      <FYForm ref="formRef" :rules="evaConditionRules" :showButtons="false" @submit="nextStep">
        <template #form-item="{ formObj }">
          <CompQuickSet @quick-set="setOptions"></CompQuickSet>
          <!-- åŒºåŽ¿ -->
          <FYOptionLocation
            :allOption="false"
            :level="3"
            :initValue="false"
            :checkStrictly="false"
            v-model:value="formObj._locations"
          ></FYOptionLocation>
          <!-- åœºæ™¯ç±»åž‹ -->
          <FYOptionScene
            :allOption="false"
            :initValue="false"
            :type="2"
            v-model:value="formObj._scenetype"
          ></FYOptionScene>
          <!-- æ—¶é—´ -->
          <FYOptionTime
            prop="time"
            :initValue="true"
            type="month"
            v-model:value="formObj.time"
          ></FYOptionTime>
        </template>
      </FYForm>
    </FormCol>
    <template #footer>
      <el-row justify="space-around">
        <el-button type="primary" size="default" :loading="loading" @click="submit"
@@ -83,6 +80,9 @@
    },
    // è·³è½¬ä¸‹ä¸€æ­¥
    nextStep() {
      // todo: æ£€æŸ¥æ˜¯å¦å·²æœ‰è¯„估记录,提示用户可直接跳转查看或继续下一步
      this.loading = true;
      return new Promise((reslove, reject) => {
        setTimeout(() => {
src/views/fysp/evaluation/components/precheck/CompCheckExemption.vue
@@ -1,6 +1,6 @@
<template>
  <el-card shadow="never">
    Never3
    è±å…æ¡ç›®åŠŸèƒ½æš‚æœªå®Œæˆï¼Œè¯·ç›´æŽ¥ç‚¹å‡»ä¸‹ä¸€æ­¥
    <template #footer>
      <el-row justify="space-around">
        <el-button type="primary" size="default" @click="lastStep">上一步</el-button>
src/views/fysp/evaluation/components/precheck/CompCheckSource.vue
@@ -1,10 +1,47 @@
<template>
  <el-card shadow="never">
    Never2
    <template #header>
      <div><el-text tag="b" size="large">数据源检查</el-text></div>
      <el-text size="small" type="info">检查评估所需数据源是否完整</el-text>
    </template>
    <FormCol>
      <el-form-item align="middle" v-for="(v, i) in checkResults" :key="i">
        <el-col :span="14">
          <el-row align="middle">
            <el-text size="default" :class="v.required ? 'required' : 'not-required'">*</el-text>
            <el-text size="default">{{ v.name }}</el-text>
          </el-row>
        </el-col>
        <el-col :span="5">
          <el-row align="middle">
            <el-space>
              <template v-if="v.loading">
                <el-icon class="is-loading"><Loading /></el-icon>
                <el-text size="default" type="default">检查中...</el-text>
              </template>
              <template v-else-if="v.pass">
                <el-icon color="var(--el-color-success)"><Check /></el-icon>
                <el-text size="default" type="success">通过</el-text>
              </template>
              <template v-else>
                <el-icon color="var(--el-color-danger)"><Close /></el-icon>
                <el-text size="default" type="danger">缺失</el-text>
              </template>
            </el-space>
          </el-row>
        </el-col>
        <el-col :span="5">
          <el-button v-if="!v.pass" type="primary" size="small" @click="goto(v.path)">
            åŽ»å®Œå–„
            <el-icon style="margin-left: 4px"><Right /></el-icon>
          </el-button>
        </el-col>
      </el-form-item>
    </FormCol>
    <template #footer>
      <el-row justify="space-around">
        <el-button type="primary" size="default" @click="lastStep">上一步</el-button>
        <el-button type="primary" size="default" @click="nextStep">下一步</el-button>
        <el-button :disabled="!checkPass" type="primary" size="default" @click="nextStep">下一步</el-button>
      </el-row>
    </template>
  </el-card>
@@ -22,18 +59,88 @@
  emits: ['update:modelValue'],
  data() {
    return {
      // æ•°æ®æºæ£€æŸ¥è®°å½•
      checkResults: [
        {
          required: true,
          name: '自动评估规则表',
          loading: false,
          pass: true,
          path: ''
        },
        {
          name: '现场监管巡查总任务',
          loading: false,
          pass: true,
          path: ''
        },
        {
          name: '现场监测数据',
          loading: false,
          pass: false,
          path: ''
        },
        {
          name: '现场监管问题类型',
          loading: false,
          pass: true,
          path: ''
        },
        {
          name: '信访投诉',
          loading: false,
          pass: true,
          path: ''
        },
        {
          name: '行政处罚',
          loading: false,
          pass: true,
          path: ''
        }
      ]
    };
  },
  computed: {
    /**
     * åˆ¤æ–­æ•°æ®æºæ£€æŸ¥æ˜¯å¦é€šè¿‡
     * å…¨éƒ¨åŠ è½½å®ŒæˆåŽï¼Œå¿…è¦é¡¹å¿…é¡»é€šè¿‡ï¼Œå¯é€‰é¡¹éžå¿…é¡»é€šè¿‡
     */
    checkPass() {
      let res = true;
      this.checkResults.forEach((e) => {
        if (e.loading) {
          res = res && false
        } else if (e.required) {
          res = res && e.pass;
        }
      });
      return res;
    }
  },
  methods: {
    // è·³è½¬ä¸‹ä¸€æ­¥
    nextStep() {
      this.$emit('update:modelValue', this.modelValue + 1);
    },
    // è·³è½¬ä¸‹ä¸€æ­¥
    // è·³è½¬ä¸Šä¸€æ­¥
    lastStep() {
      this.$emit('update:modelValue', this.modelValue - 1);
    },
    goto(path) {
      if (path && path != '') {
        this.$router.push(path);
      }
    }
  }
};
</script>
<style scoped>
.required {
  color: var(--el-color-danger);
}
.not-required {
  color: transparent;
}
</style>