已修改13个文件
已删除3个文件
已添加4个文件
已重命名2个文件
| | |
| | | */ |
| | | fetchAutoEvaluation(param) { |
| | | return $fysp.post(`evaluation/auto/record`, param).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * æ¥è¯¢è¯ä¼°æ»è§å |
| | | * @param {Object} param |
| | | * @returns |
| | | */ |
| | | fetchEvaluationRule(param) { |
| | | return $fysp.post(`evaluationrule/find`, param).then((res) => res.data); |
| | | } |
| | | }; |
| | |
| | | }, |
| | | |
| | | /** |
| | | * æ¥è¯¢æ»ä»»å¡ |
| | | * @param {Object} param |
| | | * @returns |
| | | */ |
| | | fetchTopTasks(param) { |
| | | return $fysp.post('task/find', param).then((res) => res.data); |
| | | }, |
| | | |
| | | /** |
| | | * è·ååä»»å¡ç»è®¡ä¿¡æ¯ |
| | | */ |
| | | getSubtaskSummary({ topTaskId = undefined, sceneTypeId = undefined }) { |
| | |
| | | ElTag: typeof import('element-plus/es')['ElTag'] |
| | | ElText: typeof import('element-plus/es')['ElText'] |
| | | ElTooltip: typeof import('element-plus/es')['ElTooltip'] |
| | | ElTransfer: typeof import('element-plus/es')['ElTransfer'] |
| | | ElTree: typeof import('element-plus/es')['ElTree'] |
| | | Footer: typeof import('./components/core/Footer.vue')['default'] |
| | | FormCol: typeof import('./components/layout/FormCol.vue')['default'] |
| | |
| | | </el-col> |
| | | <el-col :span="20" class="p-l-8"> |
| | | <el-row justify="space-between"> |
| | | <el-text class="m-l-4px w-150px" tag="b" size="large" truncated>{{ model.name }}</el-text> |
| | | <el-text class="m-l-4px w-300px" tag="b" size="large" truncated>{{ model.name }}</el-text> |
| | | <el-tag>{{ nameToLabel(model.type) }}</el-tag> |
| | | </el-row> |
| | | <el-row class="p-v-8" align="bottom"> |
| | |
| | | </template> |
| | | <script> |
| | | import { nTlBgTask, BG_TASK_STATUS } from '@/enum/bgTask'; |
| | | import { useTimer } from '../../composables/timer'; |
| | | import { useTimer } from '@/composables/timer'; |
| | | // import { useTimer } from '@/composables/timer2'; |
| | | |
| | | export default { |
| | | setup() { |
| | | const { time, startTimer, pauseTimer, stopTimer } = useTimer(); |
| | | return { time, startTimer, pauseTimer, stopTimer }; |
| | | const { time, startTimer, pauseTimer, stopTimer, count } = useTimer(); |
| | | return { time, startTimer, pauseTimer, stopTimer, count }; |
| | | }, |
| | | props: { |
| | | model: Object, |
| | |
| | | removeConfirm: false |
| | | }; |
| | | }, |
| | | watch: { |
| | | 'model.status': { |
| | | handler(nV) { |
| | | switch (nV) { |
| | | case BG_TASK_STATUS.WAITING.name: |
| | | this.stopTimer(); |
| | | break; |
| | | case BG_TASK_STATUS.RUNNING.name: |
| | | this.startTimer(); |
| | | break; |
| | | case BG_TASK_STATUS.SUCCESS.name: |
| | | case BG_TASK_STATUS.FAIL.name: |
| | | case BG_TASK_STATUS.SHUTDOWN.name: |
| | | this.pauseTimer(); |
| | | break; |
| | | default: |
| | | this.stopTimer(); |
| | | break; |
| | | } |
| | | this.count = this.model.runTime |
| | | }, |
| | | immediate: true |
| | | } |
| | | }, |
| | | computed: { |
| | | waiting() { |
| | | return this.model.status == BG_TASK_STATUS.WAITING.name; |
| | |
| | | required: true, |
| | | message: 'è¡æ¿åºåä¸è½ä¸ºç©º', |
| | | trigger: 'change' |
| | | // validator: (rule, value, callback) => { |
| | | // if (!value) { |
| | | // callback(new Error('Please input the age')); |
| | | // } else { |
| | | // callback() |
| | | // } |
| | | // } |
| | | } |
| | | ], |
| | | _scenetype: [ |
| | |
| | | required: true, |
| | | message: 'åºæ¯ç±»åä¸è½ä¸ºç©º', |
| | | trigger: 'change' |
| | | // validator: (rule, value, callback) => { |
| | | // if (!value) { |
| | | // callback(new Error('Please input the age')); |
| | | // } else { |
| | | // callback() |
| | | // } |
| | | // } |
| | | } |
| | | ] |
| | | }); |
| | |
| | | placeholder="åºæ¯ç±»å" |
| | | style="width: 150px" |
| | | > |
| | | <el-option |
| | | v-for="s in sceneTypes" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s" |
| | | /> |
| | | <el-option v-for="s in sceneTypes" :key="s.value" :label="s.label" :value="s" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </template> |
| | |
| | | // æ¯å¦å¨é¦é项夿·»å âå
¨é¨âé项 |
| | | allOption: { |
| | | type: Boolean, |
| | | default: true, |
| | | default: true |
| | | }, |
| | | // 1:é£ç¾½ç¯å¢ç³»ç»ï¼2ï¼é£ç¾½ç管系ç»ï¼ |
| | | type: { |
| | | type: Number, |
| | | default: 1, |
| | | default: 1 |
| | | }, |
| | | // è¿åç»æ |
| | | value: Object, |
| | | // æ¯å¦é»è®¤è¿ååå§é项 |
| | | initValue: { |
| | | type: Boolean, |
| | | default: true, |
| | | default: true |
| | | }, |
| | | // form表åç»å®å±æ§å |
| | | prop: { |
| | | type: String, |
| | | default: '_scenetype' |
| | | }, |
| | | // 忢 type åï¼å½åé项æ¯å¦æ¸
空 |
| | | sourceInit: { |
| | | type: Boolean, |
| | | default: true |
| | | } |
| | | }, |
| | | emits: ['update:value'], |
| | | data() { |
| | | return { |
| | | sceneTypes: enumScene(this.type, this.allOption), |
| | | // sceneTypes: enumScene(this.type, this.allOption), |
| | | }; |
| | | }, |
| | | computed: { |
| | | sceneTypes() { |
| | | if (this.sourceInit) { |
| | | // å½å 为typeæè
allOptionåæ°ååå¼èµ·é项忴æ¶ï¼æ¸
空å½åé项 |
| | | this.handleChange(); |
| | | } |
| | | return enumScene(this.type, this.allOption); |
| | | } |
| | | }, |
| | | methods: { |
| | | handleChange(value) { |
| | |
| | | if (this.initValue) { |
| | | this.handleChange(this.sceneTypes[0]); |
| | | } |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | <template> |
| | | <el-form-item label="æ¶é´" :prop="prop"> |
| | | <el-date-picker |
| | | :model-value="value" |
| | | v-model="date" |
| | | @change="handleChange" |
| | | type="month" |
| | | :type="type" |
| | | placeholder="éæ©æ¶é´" |
| | | style="width: 150px" |
| | | /> |
| | |
| | | }, |
| | | emits: ['update:value'], |
| | | data() { |
| | | return {}; |
| | | return { |
| | | date: this.value |
| | | }; |
| | | }, |
| | | computed:{ |
| | | }, |
| | | methods: { |
| | | handleChange(value) { |
| | |
| | | }, |
| | | mounted() { |
| | | if (this.initValue) { |
| | | this.handleChange(new Date()); |
| | | this.date = new Date() |
| | | this.handleChange(this.date); |
| | | } |
| | | } |
| | | }; |
| | |
| | | count.value = 0; |
| | | } |
| | | |
| | | return { time, startTimer, pauseTimer, stopTimer, running }; |
| | | return { time, startTimer, pauseTimer, stopTimer, running, count }; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { ref, computed, watch } from 'vue'; |
| | | import { useNow } from '@vueuse/core'; |
| | | |
| | | /** |
| | | * ç§è¡¨è®¡æ¶å¨ |
| | | */ |
| | | export function useTimer() { |
| | | const startTime = ref(new Date()); |
| | | const endTime = ref(new Date()); |
| | | const { now, pause, resume } = useNow({ controls: true }); |
| | | |
| | | // æ¶é´åç§»éï¼å½åå§æ¶é´ä»æå¡å¨çå¤é¨è®¾å¤è·åæ¶ï¼æµè§å¨æå¨è®¾å¤çæ¶é´ä¼ä¸å
¶æè¯¯å·®ï¼ä¸ºäºè®¡æ¶å¨ä¸¥æ ¼å¨0ç§å¯å¨ï¼è®°å½å
¶ä¹é´çåç§»éï¼ |
| | | const offset = ref(0) |
| | | // è¿è¡ç¶æï¼0ï¼åæ¢ï¼1ï¼è¿è¡ä¸ï¼2ï¼æå |
| | | const status = ref(0); |
| | | const time = computed(() => { |
| | | if (status.value == 0) { |
| | | return `00:00:00`; |
| | | } |
| | | |
| | | let seconds = 0; |
| | | if (status.value == 2) { |
| | | seconds = endTime.value.getTime() - startTime.value.getTime(); |
| | | } else { |
| | | seconds = now.value.getTime() - startTime.value.getTime(); |
| | | } |
| | | seconds = (seconds + offset.value) / 1000 |
| | | const hour = Math.floor(seconds / 3600); |
| | | const min = Math.floor((seconds - hour * 3600) / 60); |
| | | const sec = Math.floor(seconds - hour * 3600 - min * 60); |
| | | |
| | | // console.log(seconds); |
| | | // console.log(hour); |
| | | // console.log(min); |
| | | // console.log(sec); |
| | | |
| | | return `${hour.toString().padStart(2, '0')}:${min.toString().padStart(2, '0')}:${sec |
| | | .toString() |
| | | .padStart(2, '0')}`; |
| | | }); |
| | | |
| | | watch(startTime, (nV)=>{ |
| | | |
| | | }) |
| | | |
| | | /** |
| | | * å¯å¨è®¡æ¶å¨ |
| | | * @param {Date} s åå§æ¶é´ |
| | | */ |
| | | function startTimer(s) { |
| | | status.value = 1; |
| | | if (s) { |
| | | startTime.value = new Date(s); |
| | | } else { |
| | | startTime.value = new Date(); |
| | | } |
| | | resumeTimer(); |
| | | } |
| | | |
| | | /** |
| | | * ç»§ç»è®¡æ¶å¨ |
| | | */ |
| | | function resumeTimer() { |
| | | // now.value = startTime.value; |
| | | offset.value = startTime.value.getTime() - now.value.getTime() |
| | | resume(); |
| | | } |
| | | |
| | | /** |
| | | * æå计æ¶å¨ |
| | | */ |
| | | function pauseTimer(s, e) { |
| | | status.value = 2; |
| | | if (s) { |
| | | startTime.value = new Date(s); |
| | | } |
| | | if (e) { |
| | | endTime.value = new Date(e); |
| | | } else { |
| | | endTime.value = new Date(); |
| | | } |
| | | offset.value = 0 |
| | | pause(); |
| | | } |
| | | |
| | | /** |
| | | * åæ¢è®¡æ¶å¨ |
| | | */ |
| | | function stopTimer() { |
| | | pauseTimer(); |
| | | status.value = 0; |
| | | } |
| | | |
| | | return { time, startTimer, resumeTimer, pauseTimer, stopTimer, status, startTime }; |
| | | } |
| | |
| | | background-color: aqua; |
| | | } |
| | | |
| | | // |
| | | .p-l-8 { |
| | | padding-left: 8px; |
| | | /************************************** å
å¤è¾¹è· **************************************/ |
| | | $direction: ( |
| | | l: 'left', |
| | | t: 'top', |
| | | r: 'right', |
| | | b: 'bottom' |
| | | ); |
| | | $size: (4, 8, 10, 16); |
| | | @each $dName, $dValue in $direction { |
| | | @each $i in $size { |
| | | .p-#{$dName}-#{$i} { |
| | | padding-#{$dValue}: #{$i}px; |
| | | } |
| | | .m-#{$dName}-#{$i} { |
| | | margin-#{$dValue}: #{$i}px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .p-v-8 { |
| | | padding: 8px 0; |
| | | @each $i in $size { |
| | | .p-v-#{$i} { |
| | | padding: #{$i}px 0; |
| | | } |
| | | .p-h-#{$i} { |
| | | padding: 0 #{$i}px; |
| | | } |
| | | .m-v-#{$i} { |
| | | margin: #{$i}px 0; |
| | | } |
| | | .m-h-#{$i} { |
| | | margin: 0 #{$i}px; |
| | | } |
| | | } |
| | | |
| | | .m-b-8 { |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | .m-l-4 { |
| | | margin-left: 4px; |
| | | } |
| | | |
| | | .w-150px { |
| | | width: 290px; |
| | | .w-300px { |
| | | width: 300px; |
| | | } |
| | | |
| | | // |
| | |
| | | |
| | | <script> |
| | | import CompEvaTask from './components/CompEvaTask.vue'; |
| | | import CompPreCheck from './components/CompPreCheck.vue'; |
| | | import CompPreCheck from './components/precheck/CompPreCheck.vue'; |
| | | export default { |
| | | name: 'DataSource', |
| | | components: { CompPreCheck, CompEvaTask }, |
| | |
| | | dCode: '310106', |
| | | dName: 'éå®åº', |
| | | }, |
| | | scenetype: { label: 'å·¥å°', value: '1' } |
| | | scenetype: { label: 'å·¥å°', value: '1' }, |
| | | sourcetype: false, |
| | | }, |
| | | { |
| | | name: '徿±é¤é¥®', |
| | |
| | | dCode: '310104', |
| | | dName: '徿±åº' |
| | | }, |
| | | scenetype: { label: 'é¤é¥®', value: '5' } |
| | | scenetype: { label: 'é¤é¥®', value: '5' }, |
| | | sourcetype: false, |
| | | }, |
| | | { |
| | | name: 'é山工å°', |
| | |
| | | dCode: '310116', |
| | | dName: 'éå±±åº' |
| | | }, |
| | | scenetype: { label: 'å·¥å°', value: '1' } |
| | | scenetype: { label: 'å·¥å°', value: '1' }, |
| | | sourcetype: false, |
| | | }, |
| | | { |
| | | name: 'éå±±ç 头', |
| | |
| | | dCode: '310116', |
| | | dName: 'éå±±åº' |
| | | }, |
| | | scenetype: { label: 'ç 头', value: '2' } |
| | | scenetype: { label: 'ç 头', value: '2' }, |
| | | sourcetype: false, |
| | | }, |
| | | { |
| | | name: 'éå±±æ
æç«', |
| | |
| | | dCode: '310116', |
| | | dName: 'éå±±åº' |
| | | }, |
| | | scenetype: { label: 'æ
æç«', value: '3' } |
| | | scenetype: { label: 'æ
æç«', value: '3' }, |
| | | sourcetype: false, |
| | | }, |
| | | { |
| | | name: '徿±æ±½ä¿®', |
| | | locations: { |
| | | pCode: '31', |
| | | pName: '䏿µ·å¸', |
| | | cCode: '3100', |
| | | cName: '䏿µ·å¸', |
| | | dCode: '310104', |
| | | dName: '徿±åº' |
| | | }, |
| | | scenetype: { label: '汽修', value: '7' }, |
| | | sourcetype: true, |
| | | } |
| | | ] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-steps :active="stepIndex" finish-status="success" style="" align-center> |
| | | <el-step title="è¯ä¼°èå´" /> |
| | | <el-step title="æ°æ®æºæ£æ¥" /> |
| | | <el-step title="è±å
æ¡ç®" /> |
| | | <el-step title="èªå¨è¯ä¼°" /> |
| | | </el-steps> |
| | | <CompCheckArea v-show="stepIndex == 0" v-model="stepIndex" @change="onAreaChange"></CompCheckArea> |
| | | <CompCheckSource |
| | | v-show="stepIndex == 1" |
| | | v-model="stepIndex" |
| | | ref="refSource" |
| | | ></CompCheckSource> |
| | | <CompCheckExemption v-show="stepIndex == 2" v-model="stepIndex"></CompCheckExemption> |
| | | <CompCheckConfirm v-show="stepIndex == 3" v-model="stepIndex"></CompCheckConfirm> |
| | | </template> |
| | | |
| | | <script> |
| | | import dayjs from 'dayjs'; |
| | | import CompCheckArea from './components/CompCheckArea.vue'; |
| | | import CompCheckSource from './components/CompCheckSource.vue'; |
| | | import CompCheckExemption from './components/CompCheckExemption.vue'; |
| | | import CompCheckConfirm from './components/CompCheckConfirm.vue'; |
| | | |
| | | /** |
| | | * èªå¨è¯ä¼°æ¡ä»¶åè§æ§æ£æ¥ |
| | | */ |
| | | export default { |
| | | name: 'CompPreCheck', |
| | | components: { CompCheckArea, CompCheckSource, CompCheckExemption, CompCheckConfirm }, |
| | | props: {}, |
| | | emits: ['preCheck'], |
| | | data() { |
| | | return { |
| | | // æä½æ¥éª¤ä¸æ |
| | | stepIndex: 0, |
| | | area: {} |
| | | }; |
| | | }, |
| | | methods: { |
| | | /** |
| | | * çå¬è¯ä¼°èå´åæ´ |
| | | */ |
| | | onAreaChange(v) { |
| | | // this.area = v; |
| | | this.$refs.refSource.startCheck(v); |
| | | }, |
| | | /** |
| | | * èªå¨è¯ä¼°åç½®åè§æ§æ£æ¥ |
| | | * æ£æ¥æéèå´å
å项è¯ä¼°æ°æ®æºæ¯å¦å®æ´ |
| | | */ |
| | | preCheck() { |
| | | // this.$emit('preCheck', param) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-card shadow="never"> |
| | | <template #header> |
| | | <div><el-text tag="b" size="large">éæ©è¯ä¼°èå´</el-text></div> |
| | | <el-text size="small" type="info">å
æ¬åºå¿ãåºæ¯ç±»å以åæä»½</el-text> |
| | | </template> |
| | | <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" |
| | | :sourceInit="sceneOptionSourceInit" |
| | | :type="formObj.sourcetype ? 1 : 2" |
| | | v-model:value="formObj._scenetype" |
| | | ></FYOptionScene> |
| | | <!-- æ¶é´ --> |
| | | <FYOptionTime |
| | | prop="time" |
| | | :initValue="true" |
| | | type="month" |
| | | v-model:value="formObj.time" |
| | | ></FYOptionTime> |
| | | <el-form-item label="ä¸»æ°æ®æº" prop="sourcetype"> |
| | | <el-switch v-model="formObj.sourcetype" @change="sceneOptionSourceInit = true" /> |
| | | <span class="m-l-16">{{ formObj.sourcetype ? '宿³æå¡è®°å½' : 'ç°åºå·¡æ¥è®°å½' }}</span> |
| | | <el-tooltip placement="bottom-start" effect="light"> |
| | | <template #content> |
| | | <!-- <el-text tag="b" size="default">说æ</el-text><br /> --> |
| | | <el-text tag="i" size="default" type="warning" |
| | | >该é项æ¯ç¨äºå³å®è¯ä¼°ä¸»ä½å¯¹è±¡çè·åæ¹å¼</el-text |
| | | ><br /> |
| | | <el-text tag="b" size="small">宿³æå¡è®°å½ï¼</el-text><br /> |
| | | <el-text size="small" |
| | | >表示å¨è¯ä¼°æ¶ï¼è¯ä¼°å¯¹è±¡æ¯ä»å®æ³æå¡å°ç¨åºç³»ç»ä¸è·åçå½åå¯ç¨çç¨æ·ï¼<br /> |
| | | ä¸è¬æ
åµä¸ï¼å½è¯ä¼°å¯¹è±¡æ²¡æè¿è¡ç°åºå·¡æ¥ï¼åªæå®æ³æå¡ç¸å
³è®°å½æ¶ï¼éç¨æ¤é项ï¼</el-text |
| | | ><br /> |
| | | <el-text tag="b" size="small">ç°åºå·¡æ¥è®°å½ï¼</el-text><br /> |
| | | <el-text size="small" |
| | | >表示å¨è¯ä¼°æ¶ï¼è¯ä¼°å¯¹è±¡æ¯ä»ç°åºå·¡æ¥ç管系ç»ä¸è·åçæ»ä»»å¡ä¸çææçç®¡åºæ¯ï¼<br /> |
| | | ä¸è¬æ
åµä¸ï¼å½è¯ä¼°å¯¹è±¡æè¿è¡ç°åºå·¡æ¥ï¼éç¨æ¤éé¡¹ï¼ </el-text |
| | | ><br /> |
| | | </template> |
| | | <el-icon class="m-l-8 cursor-p" :size="16" color="var(--el-color-warning)" |
| | | ><QuestionFilled |
| | | /></el-icon> |
| | | </el-tooltip> |
| | | </el-form-item> |
| | | </template> |
| | | </FYForm> |
| | | </FormCol> |
| | | <template #footer> |
| | | <el-row justify="space-around"> |
| | | <el-button type="primary" size="default" :loading="loading" @click="submit" |
| | | >ä¸ä¸æ¥</el-button |
| | | > |
| | | </el-row> |
| | | </template> |
| | | </el-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import CompQuickSet from '../../CompQuickSet.vue'; |
| | | |
| | | /** |
| | | * è¯ä¼°èå´åè§æ§æ£æ¥ |
| | | */ |
| | | export default { |
| | | components: { CompQuickSet }, |
| | | props: { |
| | | // æ¥éª¤ä¸æ |
| | | modelValue: Number |
| | | }, |
| | | emits: ['update:modelValue', 'change'], |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | evaConditionRules: { |
| | | time: [ |
| | | { |
| | | required: true, |
| | | message: 'æ¶é´ä¸è½ä¸ºç©º', |
| | | trigger: 'change' |
| | | } |
| | | ] |
| | | }, |
| | | // å½åºæ¯éé¡¹åæ¢æ°æ®æºæ¶ï¼æ¯å¦æ¸
空å½åéé¡¹å¼ |
| | | sceneOptionSourceInit: true |
| | | }; |
| | | }, |
| | | methods: { |
| | | setOptions(param) { |
| | | this.sceneOptionSourceInit = false; |
| | | this.$refs.formRef.formObj._locations = param.locations; |
| | | this.$refs.formRef.formObj._scenetype = param.scenetype; |
| | | this.$refs.formRef.formObj.sourcetype = param.sourcetype; |
| | | }, |
| | | submit() { |
| | | this.$refs.formRef.onSubmit(false); |
| | | }, |
| | | // 跳转ä¸ä¸æ¥ |
| | | nextStep(formObj, success, fail) { |
| | | // todo: æ£æ¥æ¯å¦å·²æè¯ä¼°è®°å½ï¼æç¤ºç¨æ·å¯ç´æ¥è·³è½¬æ¥çæç»§ç»ä¸ä¸æ¥ |
| | | |
| | | this.loading = true; |
| | | return new Promise((reslove, reject) => { |
| | | setTimeout(() => { |
| | | this.$emit('change', formObj); |
| | | this.$emit('update:modelValue', this.modelValue + 1); |
| | | this.loading = false; |
| | | success(); |
| | | reslove(); |
| | | }, 1000); |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-card shadow="never"> |
| | | <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" class="m-l-4">{{ 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 == true"> |
| | | <el-icon color="var(--el-color-success)"><Check /></el-icon> |
| | | <el-text size="default" type="success">éè¿</el-text> |
| | | </template> |
| | | <template v-else-if="v.pass == false"> |
| | | <el-icon color="var(--el-color-danger)"><Close /></el-icon> |
| | | <el-text size="default" type="danger">缺失</el-text> |
| | | </template> |
| | | <template v-else> |
| | | <el-icon color="var(--el-color-warning)"><Warning /></el-icon> |
| | | <el-text size="default" type="warning">æç¥è¿</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)" |
| | | :disabled="v.path == ''" |
| | | > |
| | | å»å®å |
| | | <el-icon class="m-l-4"><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 :disabled="!checkPass" type="primary" size="default" @click="nextStep" |
| | | >ä¸ä¸æ¥</el-button |
| | | > |
| | | </el-row> |
| | | </template> |
| | | </el-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import evaluateApi from '@/api/fysp/evaluateApi'; |
| | | import taskApi from '@/api/fysp/taskApi'; |
| | | |
| | | /** |
| | | * çæä¸é¡¹æ°æ®æºæ£æ¥è®°å½ |
| | | * @param {*} _name |
| | | * @param {*} _path |
| | | * @param {*} _fetch |
| | | * @param {*} _required |
| | | */ |
| | | function baseCheckItem(_name, _path, _fetch, _required) { |
| | | return { |
| | | required: _required, |
| | | name: _name, |
| | | loading: true, |
| | | pass: false, |
| | | path: _path, |
| | | async fetch() { |
| | | this.loading = true; |
| | | setTimeout(async () => { |
| | | this.pass = await _fetch(); |
| | | this.loading = false; |
| | | }, 1000); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * è¯ä¼°æ°æ®æºå®æ´æ§æ£æ¥ |
| | | */ |
| | | export default { |
| | | props: { |
| | | // æ¥éª¤ä¸æ |
| | | modelValue: Number |
| | | }, |
| | | emits: ['update:modelValue'], |
| | | data() { |
| | | return { |
| | | areaInfo: { |
| | | _locations: '', |
| | | _scenetype: '', |
| | | time: '', |
| | | sourcetype: '' |
| | | }, |
| | | // æ°æ®æºæ£æ¥è®°å½ |
| | | checkResults: [ |
| | | baseCheckItem( |
| | | 'èªå¨è¯ä¼°è§å表', |
| | | '', |
| | | () => { |
| | | const param = { |
| | | taskTypeId: 99, |
| | | scensetypeid: this.areaInfo._scenetype.value |
| | | }; |
| | | return evaluateApi.fetchEvaluationRule(param).then((res) => { |
| | | return res.data.length > 0; |
| | | }); |
| | | }, |
| | | true |
| | | ), |
| | | baseCheckItem('ç°åºçç®¡å·¡æ¥æ»ä»»å¡', '', () => {}), |
| | | baseCheckItem('ç°åºçæµæ°æ®', '', () => {}), |
| | | baseCheckItem('ç管ç¹ä½ä¸çæµç¹å¹é
', '', () => {}), |
| | | baseCheckItem('ç°åºç管é®é¢ç±»å', '', () => {}), |
| | | baseCheckItem('信访æè¯', '', () => {}), |
| | | baseCheckItem('è¡æ¿å¤ç½', '', () => {}) |
| | | ] |
| | | }; |
| | | }, |
| | | 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); |
| | | } |
| | | }, |
| | | // å¼å§æ£æ¥ä»»å¡ |
| | | startCheck(v) { |
| | | this.areaInfo = v; |
| | | this.checkResults.forEach((e) => { |
| | | e.fetch(); |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .required { |
| | | color: var(--el-color-danger); |
| | | } |
| | | |
| | | .not-required { |
| | | color: transparent; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <el-form |
| | | :inline="false" |
| | | :model="form" |
| | | ref="formRef" |
| | | :rules="rules" |
| | | label-position="top" |
| | | > |
| | | <el-form :inline="false" :model="form" ref="formRef" :rules="rules" label-position="top"> |
| | | <el-form-item label="éç¥æ é¢" prop="title"> |
| | | <el-input v-model="form.title" placeholder="éç¥æ é¢" /> |
| | | </el-form-item> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="åºå¿ç±»å" prop="district"> |
| | | <el-select v-model="form.district" placeholder="åºå¿ç±»å"> |
| | | <el-option |
| | | v-for="s in districts" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s.value" |
| | | /> |
| | | <el-option v-for="s in districts" :key="s.value" :label="s.label" :value="s.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åºæ¯ç±»å" prop="receiverType"> |
| | | <el-select v-model="form.receiverType" placeholder="åºæ¯ç±»å"> |
| | | <el-option |
| | | v-for="s in sceneTypes" |
| | | :key="s.value" |
| | | :label="s.label" |
| | | :value="s.value" |
| | | /> |
| | | <!-- <FYOptionScene |
| | | prop="receiverType" |
| | | :allOption="true" |
| | | :type="1" |
| | | :initValue="true" |
| | | v-model:value="form.receiverType" |
| | | ></FYOptionScene> --> |
| | | <el-form-item label="åºæ¯ç±»å" prop="_receiverType"> |
| | | <el-select v-model="form._receiverType" placeholder="åºæ¯ç±»å"> |
| | | <el-option v-for="s in sceneTypes" :key="s.value" :label="s.label" :value="s.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦éè¦ç¾æ¶" prop="needSigned"> |
| | |
| | | <span style="margin-left: 16px">{{ form.needSigned ? 'æ¯' : 'å¦' }}</span> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="onSubmit" :loading="loading" |
| | | >æäº¤</el-button |
| | | > |
| | | <el-button type="primary" @click="onSubmit" :loading="loading">æäº¤</el-button> |
| | | <el-button @click="onCancel">åæ¶</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | props: { |
| | | active: { |
| | | type: Boolean, |
| | | default: false, |
| | | default: false |
| | | }, |
| | | edit: Boolean, |
| | | loading: Boolean, |
| | | loading: Boolean |
| | | }, |
| | | emits: ['update:edit', 'onSubmit', 'onCancel'], |
| | | data() { |
| | |
| | | //æ¯å¦éè¦ç¾æ¶ |
| | | needSigned: false, |
| | | //æ¥åç¨æ·åºæ¯ç±»å |
| | | _receiverType: null, |
| | | receiverType: '0', |
| | | //æ¥åç¨æ·åºå¿ |
| | | district: '0', |
| | | //æ¥åç¨æ·id |
| | | receiverId: null, |
| | | receiverId: null |
| | | }, |
| | | rules: { |
| | | title: [ |
| | | { |
| | | required: true, |
| | | message: '请è¾å
¥éç¥æ é¢', |
| | | trigger: 'blur', |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | content: [ |
| | | { |
| | | required: true, |
| | | message: '请è¾å
¥éç¥å
容', |
| | | trigger: 'blur', |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | _typeArray: [ |
| | | { |
| | | required: true, |
| | | message: 'è¯·éæ©éç¥ç±»å', |
| | | trigger: 'change', |
| | | }, |
| | | ], |
| | | }, |
| | | trigger: 'change' |
| | | } |
| | | ] |
| | | } |
| | | }; |
| | | }, |
| | | watch: { |
| | |
| | | } |
| | | this.isReset = false; |
| | | }, |
| | | deep: true, |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | computed: {}, |
| | | methods: { |
| | |
| | | this.form.typeId = a[0]; |
| | | this.form.subTypeId = 0; |
| | | } |
| | | if (this.form._receiverType == null) { |
| | | this.form.receiverType = '0'; |
| | | } |
| | | this.$emit('onSubmit', this.form); |
| | | } else { |
| | | console.log('error submit!', fields); |
| | |
| | | onCancel() { |
| | | // this.reset(); |
| | | this.$emit('onCancel'); |
| | | }, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.noticeTypes[0].disabled = true; |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | /> |
| | | <el-table-column width="160" prop="ecCreator" label="å建人" /> |
| | | <!-- <el-table-column prop="ecPicurl" label="å¾ç" /> --> |
| | | <el-table-column prop="ecReceiverid" label="ç¾æ¶äºº" /> |
| | | <!-- <el-table-column prop="ecReceiverid" label="ç¾æ¶äºº" /> --> |
| | | </el-table> |
| | | <!-- <el-affix :offset="0" position="bottom"> --> |
| | | <el-pagination |