浏览代码

Merge branch 'ETA_1.1.7'

hbchen 1 年之前
父节点
当前提交
8f1543f11a

+ 12 - 8
src/views/reportEn/AddReport.vue

@@ -60,6 +60,10 @@ async function getReportDetail(){
         reportData.value=res.Data
         reportBaseInfoData.addType=res.Data.AddType
         reportBaseInfoData.classifyName=[
+            {
+                id:res.Data.ClassifyIdRoot,
+                text:res.Data.ClassifyNameRoot
+            },
             {
                 id:res.Data.ClassifyIdFirst,
                 text:res.Data.ClassifyNameFirst
@@ -96,10 +100,10 @@ async function handleReportBaseInfoChange(e){
     reportBaseInfoData=e
 
     // 继承报告 覆盖一次
-    if(e.addType===2&&e.classifyName.length===2){
+    if(e.addType===2&&e.classifyName.length===3){
         const res=await apiReportEn.reportDetailByClassifyId({
-            ClassifyIdFirst:e.classifyName[0].id,
-            ClassifyIdSecond:e.classifyName[1].id
+            ClassifyIdFirst:e.classifyName[1].id,
+            ClassifyIdSecond:e.classifyName[2].id
         })
         if(res.Ret===200){
             if(res.Data===null){
@@ -222,10 +226,10 @@ async function handleReportOpt(e){
     $('#editor .fr-element').find('img.fr-uploading').length&&$('#editor .fr-element').find('img.fr-uploading').remove()
     const params={
         AddType:reportBaseInfoData.addType,
-        ClassifyIdFirst:reportBaseInfoData.classifyName[0]?.id,
-        ClassifyNameFirst:reportBaseInfoData.classifyName[0]?.text,
-        ClassifyIdSecond:reportBaseInfoData.classifyName[1]?.id,
-        ClassifyNameSecond:reportBaseInfoData.classifyName[1]?.text,
+        ClassifyIdFirst:reportBaseInfoData.classifyName[1]?.id,
+        ClassifyNameFirst:reportBaseInfoData.classifyName[1]?.text,
+        ClassifyIdSecond:reportBaseInfoData.classifyName[2]?.id,
+        ClassifyNameSecond:reportBaseInfoData.classifyName[2]?.text,
         Title:reportBaseInfoData.title,
         Abstract:reportBaseInfoData.abstract,
         Author:reportBaseInfoData.author.join(','),
@@ -237,7 +241,7 @@ async function handleReportOpt(e){
         Overview:temOverviewData.value
     }
     
-    if(reportBaseInfoData.classifyName.length!=2){
+    if(reportBaseInfoData.classifyName.length!=3){
         showToast('请选择分类')
         return
     }

+ 14 - 6
src/views/reportEn/List.vue

@@ -20,8 +20,9 @@ const router=useRouter()
 const showCleanFilterBox=computed(()=>{
     if(isClickClose.value) return false
     if(
+        listState.ClassifyNameRoot ||
         listState.ClassifyNameFirst||
-        listState.ClassifyNameFirst||
+        listState.ClassifyNameSecond||
         listState.EndDate||
         listState.Frequency||
         listState.MsgIsSend||
@@ -30,8 +31,12 @@ const showCleanFilterBox=computed(()=>{
 })
 const isClickClose=ref(false)//是否点击过关闭一键清空模块
 function handleCleanFilter(){
+    listState.ClassifyNameRoot=''
     listState.ClassifyNameFirst=''
     listState.ClassifyNameSecond=''
+    // 重置分类选择器状态
+    classifySelector.value.clearClassifyOptions()
+
     listState.MsgIsSend=''
     listState.Frequency=''
     listState.StartDate=''
@@ -42,12 +47,13 @@ function handleCleanFilter(){
 
 // 分类弹窗
 const showClassify=ref(false)
-
+const classifySelector=ref(null)
 
 const listState = reactive({
     publishStatus:'',
     MsgIsSend:'',
     Frequency:'',
+    ClassifyNameRoot:'',
     ClassifyNameFirst:'',
     ClassifyNameSecond:'',
     StartDate:'',
@@ -64,8 +70,9 @@ async function getList(){
         PageSize:listState.pageSize,
         StartDate:listState.StartDate,
         EndDate:listState.EndDate,
-        ClassifyNameFirst:listState.ClassifyNameFirst,
-        ClassifyNameSecond:listState.ClassifyNameSecond,
+        ClassifyIdRoot:listState.ClassifyNameRoot.id,
+        ClassifyIdFirst:listState.ClassifyNameFirst.id,
+        ClassifySecond:listState.ClassifyNameSecond.id,
         Frequency:listState.Frequency,
         EmailState:listState.MsgIsSend,
         TimeType:dateType.value===1?'publish_time':'modify_time',
@@ -171,7 +178,8 @@ function handleResetCalendar(){
 }
 
 // 分类筛选
-function handleConfirmClassify({firstClassify,secondClassify}){
+function handleConfirmClassify({rootClassify,firstClassify,secondClassify}){
+    listState.ClassifyNameRoot=rootClassify
     listState.ClassifyNameFirst=firstClassify
     listState.ClassifyNameSecond=secondClassify
     refreshList()
@@ -562,7 +570,7 @@ function handleGoEmailLog(e){
         :style="width>650?{ width: '400px'}:''"
         round
     >
-        <ListClassify @close="showClassify=false" @confirm="handleConfirmClassify"/>
+        <ListClassify @close="showClassify=false" @confirm="handleConfirmClassify" ref="classifySelector"/>
     </van-popup>
 
     <!-- 日期筛选 -->

+ 5 - 5
src/views/reportEn/components/EditReportBaseInfo.vue

@@ -56,20 +56,20 @@ function selectAddType(e){
 // 报告所属分类
 const showClassifyPop=ref(false)
 const setClassifyVal=computed(()=>{
-    if(reportBaseInfo.classifyName.length===2){
-        return `${reportBaseInfo.classifyName[0].text}/${reportBaseInfo.classifyName[1].text}`
+    if(reportBaseInfo.classifyName.length===3){
+        return `${reportBaseInfo.classifyName[0].text} / ${reportBaseInfo.classifyName[1].text} / ${reportBaseInfo.classifyName[2].text}`
     }
     return '请选择分类'
 })
 function handleShowClassify(){
     showClassifyPop.value=true
 }
-function handleConfirmClassify({firstClassify,secondClassify}){
-    if(!firstClassify.id||!secondClassify.id){
+function handleConfirmClassify({rootClassify,firstClassify,secondClassify}){
+    if(!rootClassify||!firstClassify.id||!secondClassify.id){
         showToast('请选择分类')
         return
     }
-    reportBaseInfo.classifyName=[firstClassify,secondClassify]
+    reportBaseInfo.classifyName=[rootClassify,firstClassify,secondClassify]
     reportBaseInfo.title=secondClassify.text
     showClassifyPop.value=false
 }

+ 2 - 1
src/views/reportEn/components/EditStrategyReport.vue

@@ -115,7 +115,8 @@ async function handleSave(){
 <template>
     <div class="edit-strategy-report-wrap">
         <van-cell-group>
-            <van-cell value-class="cell-con" required title="分类" :value="defaultData.ClassifyNameFirst+'/'+defaultData.ClassifyNameSecond" />
+            <van-cell value-class="cell-con" required title="分类" 
+            :value="defaultData.ClassifyNameRoot+'/'+defaultData.ClassifyNameFirst+'/'+defaultData.ClassifyNameSecond" />
             <van-cell value-class="cell-con" title="作者" :value="baseInfo.author.join(',')" is-link @click="handleShowSelectAuthor"/>
             <van-cell value-class="cell-con" title="频度" :value="baseInfo.frequency.join('')" is-link @click="handleShowFrequency"/>
             <van-cell value-class="cell-con" title="创建时间" :value="baseInfo.createtime" is-link @click="handleShowCreatetime"/>

+ 69 - 17
src/views/reportEn/components/ListClassify.vue

@@ -5,12 +5,15 @@ import apiReportEn from '@/api/reportEn'
 const props=defineProps({
     defaultVal:null,
     noReset:false,
+    rootClassifyDisabled:false,//顶级分类是否要判断禁用
     firstClassifyDisabled:false,//一级分类是否要判断禁用
 })
 
 const emits=defineEmits(['close','confirm'])
 
 const list=ref([])
+const activeTab=ref(0)
+
 function getClassifyList(){
     apiReportEn.getClassifyList({
         CurrentIndex:1,
@@ -21,22 +24,33 @@ function getClassifyList(){
             const arr=res.Data.List||[]
             list.value=arr.map(item=>{
                 const child=item.Child?item.Child.map(e=>{
+                    // console.log(e,'ee')
+                    const groundChild = e.Child? e.Child.map(it =>{
+                        return {
+                            text:it.ClassifyName,
+                            id:it.Id
+                        }
+                    }):[]
+
                     return {
                         text:e.ClassifyName,
-                        id:e.Id
+                        id:e.Id,
+                        children:groundChild,
+                        disabled:props.firstClassifyDisabled&&groundChild.length===0?true:false,
                     }
                 }):[]
                 return {
                     text:item.ClassifyName,
                     id:item.Id,
                     children:child,
-                    disabled:props.firstClassifyDisabled&&child.length===0?true:false,
+                    disabled:props.rootClassifyDisabled&&child.length===0?true:false,
                 }
             })
-            if(props.defaultVal&&props.defaultVal[1]){
-                activeId.value=props.defaultVal[1].id
+
+            if(props.defaultVal&&props.defaultVal[2]){
+                activeId.value=props.defaultVal[2].id
                 list.value.forEach((item,index)=>{
-                    if(item.id===props.defaultVal[0].id){
+                    if(item.id===props.defaultVal[1].id){
                         activeIndex.value=index
                     }
                 })
@@ -54,27 +68,57 @@ function handleCancle(){
 }
 
 function handleReset(){
+    activeTab.value=0
+    activeIndex.value=0
+    activeId.value=null
+    emits('confirm',{rootClassify:'',firstClassify:'',secondClassify:''})
+}
+
+function clearClassifyOptions(){
+    activeTab.value=0
+    activeIndex.value=0
+    activeId.value=null
+}
+
+function tabChange(value) {
     activeIndex.value=0
     activeId.value=null
-    emits('confirm',{firstClassify:'',secondClassify:''})
 }
 
 function handleConfirm(){
-    const firstClassify={
-        text:list.value[activeIndex.value].text,
-        id:list.value[activeIndex.value].id
+
+    let itemChild = list.value[activeTab.value]
+    const rootClassify={
+        text:itemChild.text,
+        id:itemChild.id
     }
+    let firstClassify={text:'',id:''}
+    if(itemChild.children[activeIndex.value]){
+        firstClassify={
+            text:itemChild.children[activeIndex.value].text,
+            id:itemChild.children[activeIndex.value].id
+        }
+    }
+
     let secondClassify={text:'',id:''}
     if(activeId.value){
-        list.value[activeIndex.value].children.forEach(e => {
+        // 找第三级id
+        itemChild.children[activeIndex.value].children.forEach(e => {
+            // console.log(e.id,"e.id",activeId.value);
             if(e.id===activeId.value){
                 secondClassify.text=e.text
                 secondClassify.id=e.id
             }
         });
     }
-    emits('confirm',{firstClassify,secondClassify})
+    // console.log(rootClassify,firstClassify,secondClassify,'secondClassify');
+    emits('confirm',{rootClassify,firstClassify,secondClassify})
 }
+
+defineExpose({
+    clearClassifyOptions
+})
+
 </script>
 
 <template>
@@ -85,12 +129,20 @@ function handleConfirm(){
             <span style="font-size:18px;font-weight:bold">选择分类</span>
             <span style="color:#0052D9" @click="handleConfirm">确定</span>
         </div>
-        <van-tree-select
-            v-model:active-id="activeId"
-            v-model:main-active-index="activeIndex"
-            :items="list"
-            @click-nav="activeId=null"
-        />
+        <van-tabs v-model:active="activeTab" shrink @change="tabChange">
+            <van-tab v-for="tabOp in list" :key="tabOp.id" 
+            :title="tabOp.text" :disabled="tabOp.disabled" >
+                <div class="content">
+                    <van-tree-select
+                        v-model:active-id="activeId"
+                        v-model:main-active-index="activeIndex"
+                        :items="tabOp.children"
+                        @click-nav="activeId=null"
+                    />
+                </div>
+            </van-tab>
+        </van-tabs>
+
     </div>
 </template>