Browse Source

刷新时间数据转换

cxmo 1 year ago
parent
commit
605d81938e

+ 76 - 44
src/views/system_manage/components/refreshConfig.vue

@@ -16,34 +16,27 @@
                     
                     <!-- 每周 -->
                     <el-form-item prop="frequency_week" v-if="item.frequency==='week'">
-                        <el-select v-model="item.frequency_week" multiple class="full-input" key="week">
+                        <el-select v-model="item.frequency_week" class="full-input" key="week">
                             <el-option v-for="i in weekList" :key="i.key" 
                                 :label="i.label" :value="i.key"/>
                         </el-select>
                     </el-form-item>
                     
                     <!-- 每旬、月、季、半年、年 -->
-                    <el-form-item prop="frequency_last" v-if="!['day','eday','week',''].includes(item.frequency)">
+                    <el-form-item prop="frequency_last" v-if="!item.frequency.includes('日')&&!item.frequency.includes('月')">
                         <el-select v-model="item.frequency_last" :key="item.key" key="option">
                             <el-option v-for="i in timeOptionList" :key="i.key" 
                                 :label="i.label" :value="i.key"/>
                         </el-select>
                     </el-form-item>
-                    <el-form-item prop="frequency_n" v-if="item.frequency_last==='n'&&!['day','eday','week',''].includes(item.frequency)">
+                    <el-form-item prop="frequency_n" v-if="item.frequency_last==='n'&&!item.frequency.includes('日')&&!item.frequency.includes('月')">
                         <el-input v-model="item.frequency_n">
                             <template slot="prefix">N=</template>
                         </el-input>
                     </el-form-item>
                 </el-form-item>
                 <el-form-item class="item" label="时间">
-                    <!-- 非周度时可多选 -->
-                    <el-form-item prop="times" v-if="item.frequency!=='week'">
-                        <el-select v-model="item.times" multiple class="full-input" key="multiple">
-                            <el-option v-for="i in timeList" :key="i" 
-                                :label="i" :value="i"/>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="time" v-if="item.frequency==='week'">
+                    <el-form-item prop="time">
                         <el-select v-model="item.time" class="full-input" key="single">
                             <el-option v-for="i in timeList" :key="i" 
                                 :label="i" :value="i"/>
@@ -65,21 +58,16 @@
 
 <script>
 const config = {
-    frequency:'',//刷新频率
-    frequency_week:[],//频率为每周时,选择
+    frequency:'',//刷新频率:
+    frequency_week:'',//频率为每周时,选择
     frequency_last:'',//第N天或最后一天
-    frequency_n:0,
+    frequency_n:1,
     time:'',//时间
-    times:[],
     num:3,//刷新单元格数
     isAll:false,//全部刷新
 }
 export default {
     props:{
-        isDefault:{//是否是设置默认操作时间
-            type:Boolean,
-            default:false
-        },
         defaultForm:{
             type:Object
         }
@@ -92,18 +80,17 @@ export default {
                         ...config,
                         key:0
                     }
-                    
                 ]
             },
             frequencyType:[
-                {label:'每自然日',key:'day'},
-                {label:'每交易日',key:'eday'},
-                {label:'每周',key:'week'},
-                {label:'每旬',key:'tenday'},
-                {label:'每月',key:'month'},
-                {label:'每季',key:'season'},
-                {label:'每半年',key:'halfyear'},
-                {label:'每年',key:'year'},
+                {label:'每自然日',key:'每自然日'},
+                {label:'每交易日',key:'每交易日'},
+                {label:'每周',key:'每周'},
+                {label:'每旬',key:'每旬'},
+                {label:'每月',key:'每月'},
+                {label:'每季',key:'每季'},
+                {label:'每半年',key:'每半年'},
+                {label:'每年',key:'每年'},
             ],
             //每周,可多选
             weekList:[
@@ -122,10 +109,12 @@ export default {
             ],
             //时间选项,仅整点
             timeList:[
-                '00:00','01:00','02:00','03:00','04:00','05:00','06:00',
-                '07:00','08:00','09:00','10:00','11:00','12:00','13:00',
-                '14:00','15:00','16:00','17:00','18:00','19:00','20:00',
-                '21:00','22:00','23:00',
+                '00:00','00:30','01:00','01:30','02:00','02:30','03:00','03:30',
+                '04:00','04:30','05:00','05:30','06:00','06:30','07:00','07:30',
+                '08:00','08:30','09:00','09:30','10:00','10:30','11:00','11:30',
+                '12:00','12:30','13:00','13:30','14:00','14:30','15:00','15:30',
+                '16:00','16:30','17:00','17:30','18:00','18:30','19:00','19:30',
+                '20:00','20:30','21:00','21:30','22:00','22:30','23:00','23:30'
             ],
             //N 范围 1-~
             n_limit_map:{
@@ -138,20 +127,11 @@ export default {
         };
     },
     watch:{
-        isDefault:{
+        defaultForm:{
             handler(newVal){
-                if(newVal){ //若为默认操作时间,则重新赋值dynamicForm
-                    this.dynamicForm = _.cloneDeep(this.defaultForm)
-                }else{
-                    this.dynamicForm = {
-                        configList:[{
-                            ...config,
-                            key:0
-                        }]
-                    }
-                }
+                this.dynamicForm = this.formatForm(newVal)
             },
-            immediate:true
+            deep:true
         }
     },
     methods: {
@@ -163,6 +143,58 @@ export default {
         },
         deleteSetting(index){
             this.dynamicForm.configList.splice(index,1)
+        },
+        //将接口数据转换成form支持的格式
+        formatForm(form){
+            const {configList=[]} = form
+            if(!configList.length){
+                return {
+                    configList:[{
+                        ...config,
+                        key:0
+                    }]
+                }
+            }
+            const formatList = configList.map((item)=>{
+                let isOther = false
+                if(!item.RefreshFrequency.includes("周")&&!item.RefreshFrequency.includes("日")){
+                    isOther = true
+                }
+                return {
+                    frequency:item.RefreshFrequency,
+                    frequency_week:item.RefreshFrequency.includes("周")?item.RefreshFrequencyNum:'',
+                    frequency_last:isOther?(item.RefreshFrequencyNum===0?'last':'n'):'',
+                    frequency_n:item.RefreshFrequencyNum,
+                    time:item.RefreshTime,
+                    num:item.RefreshDataNum,
+                    isAll:false
+                }
+            })
+            return {
+                configList:formatList
+            }
+        },
+        //将数据转换成接口形式
+        getFormList(){
+            const list = this.dynamicForm.configList.map((item)=>{
+                //RefreshFrequencyDay: 每自然日、每交易日传0;每周传1~7;其他传n,最后一天n=0
+                let FrequencyDay = 0
+                if(item.frequency.includes("日")){
+                    FrequencyDay = 0
+                }else if(item.frequency.includes("周")){
+                    FrequencyDay = item.frequency_week
+                }else{
+                    FrequencyDay = item.frequency_last==='last'?0:item.frequency_n
+                }
+                return {
+                    RefreshFrequency:item.frequency,
+                    RefreshFrequencyDay:FrequencyDay,
+                    RefreshTime:item.time,
+                    RefreshAllData:Number(item.isAll),
+                    RefreshDataNum:item.num,
+                }
+            })
+            return list
         }
     },
 };

+ 42 - 13
src/views/system_manage/dataRefreshSetting.vue

@@ -17,7 +17,7 @@
                 >默认刷新时间</el-button>
             </div>
             
-            <el-input placeholder="指标ID/指标名称" prefix-icon="el-icon-search" 
+            <el-input placeholder="指标ID/指标名称" prefix-icon="el-icon-search" clearable
                 v-model="selectOption.keyWord" @change="selectOptionChange('keyWord')"
                 v-if="![34,11].includes(Source)"></el-input>
             
@@ -25,12 +25,12 @@
         <div class="table-box" v-if="hasSelectOption">
             <div class="table-select" v-loading="selectOptionLoading">
                 <div class="select-list">
-                    <el-select placeholder="终端编码" no-match-text="请选择完整数据源"
+                    <el-select placeholder="终端编码" no-match-text="请选择完整数据源" clearable
                         v-model="selectOption.terminalCode" @change="selectOptionChange('terminalCode')">
                         <el-option v-for="i in terminalCodeList" :key="i.TerminalCode"
                             :label="i.Name" :value="i.TerminalCode"/>
                     </el-select>
-                    <el-cascader placeholder="ETA指标库分类" no-match-text="请选择完整数据源"
+                    <el-cascader placeholder="ETA指标库分类" no-match-text="请选择完整数据源" clearable
                         v-model="selectOption.classify" @change="selectOptionChange('classify')"
                         :options="edbClassifyList"
                         :props="{
@@ -40,7 +40,7 @@
                             children:'Children'
                         }" />
                     <el-cascader
-                        placeholder="创建人" no-match-text="请选择完整数据源"
+                        placeholder="创建人" no-match-text="请选择完整数据源" 
                         v-model="selectOption.user" @change="selectOptionChange('user')"
                         :options="userList"
                         :props="{
@@ -54,12 +54,12 @@
                         clearable
                         filterable 
                     />
-                    <el-select placeholder="频度" v-model="selectOption.frequency" @change="selectOptionChange('frequency')">
+                    <el-select placeholder="频度" v-model="selectOption.frequency" @change="selectOptionChange('frequency')" clearable>
                         <el-option v-for="i in frequencyList" :key="i"
                             :label="i" :value="i"
                         />
                     </el-select>
-                    <el-select placeholder="刷新状态" v-model="selectOption.state" @change="selectOptionChange('state')">
+                    <el-select placeholder="刷新状态" v-model="selectOption.state" @change="selectOptionChange('state')" clearable>
                         <el-option label="启用刷新" value="启用"/>
                         <el-option label="暂停刷新" value="暂停"/>
                     </el-select>
@@ -130,7 +130,9 @@
                 <!-- 刷新配置 -->
                 <div class="refresh-box">
                     <RefreshConfig
-                        :isDefault="isDefault"
+                        ref="refreshconfig"
+                        :isDefalut="isDefault"
+                        :isSetTimeDialogShow="isSetTimeDialogShow"
                         :defaultForm="defaultForm"
                     ></RefreshConfig>
                 </div>
@@ -139,7 +141,7 @@
             <!-- 弹窗按钮 -->
             <div class="dialog-btn">
                 <el-button type="primary" plain>取消</el-button>
-                <el-button type="primary">确定</el-button>
+                <el-button type="primary" @click="handleSetRefreshTime">确定</el-button>
             </div>
         </el-dialog>
         <!-- 设置刷新状态 -->
@@ -233,14 +235,19 @@ export default {
         showDialog(isDefault){
             if(isDefault){
                 //判断数据源是否选择
-                if(!this.SubSource||!this.Source){
+                if(!this.Source){
                     this.$message.warning("请选择数据源")
                     return
                 }
+                if(this.SubSourceList.length&&!this.SubSource){
+                    this.$message.warning("请选择完整数据源")
+                    return
+                }
             }
             this.isDefault = isDefault
             this.isSetTimeDialogShow = true
             this.isDefault&&this.handleDefaultChange()
+            !this.isDefault&&(this.defaultForm={})
         },
         handleDefaultChange(){
             //获取默认设置
@@ -252,7 +259,16 @@ export default {
             }).then(res=>{
                 this.defaultDialogLoading = false
                 if(res.Ret!==200) return 
-
+                let configList = res.Data||[]
+                configList = configList.map((item,index)=>{
+                    return {
+                        ...item,
+                        key:index
+                    }
+                })
+                this.defaultForm = {
+                    configList
+                }
             })
         },
         //获取数据源列表
@@ -274,13 +290,13 @@ export default {
             //如果没有二级数据源,则请求表格筛选项数据;钢联化工,SMM没有筛选项数据
             if(!this.SubSourceList.length&&this.hasSelectOption){
                 this.getSelectOption()
-                this.getTableData()
+                this.getTableData('optionChange')
             }
         },
         handleSubSourceChange(){
             if(this.SubSource){
                 this.getSelectOption()
-                this.getTableData()
+                this.getTableData('optionChange')
             }
         },
         //获取终端编码列表
@@ -333,7 +349,6 @@ export default {
         },
         //表格筛选项改变时触发
         selectOptionChange(type){
-            console.log('触发了',type)
             this.getTableData('optionChange')
         },
         handleCurrentChange(page){
@@ -482,6 +497,20 @@ export default {
                 this.selectList = this.selectList.filter(it => !this.tableDataIds.includes(it))
             }
         },
+        //设置刷新时间
+        handleSetRefreshTime(){
+            //校验表格
+
+            //转换数据格式
+            const list = this.$refs.refreshconfig.getFormList()
+            console.log('list',list)
+            //判断是否是默认时间,走不同接口
+            this.setRefreshTime(list)
+        },
+        setRefreshTime(list){
+
+        },
+        setDefaultTime(list){}
     },
     mounted(){
         this.getSourceList()