浏览代码

Merge branch 'v2.0' of http://8.136.199.33:3000/eta_forum/eta_forum_admin_front into v2.0

chenlei 2 月之前
父节点
当前提交
d9baa7509f

+ 1 - 3
README.md

@@ -1,8 +1,6 @@
 # ETA社区管理后台项目
 1. 测试访问地址:http://8.136.199.33:8900/
-2. 项目引入了两个UI库 Tdesign 和 ElementPlus,主要使用Tdesign因为UI是按照这个组件库标准设计的,
-    使用ElementPlus是因为用了其中的Tree组件
-3. t-table 某列数据的插槽 是 直接用 
+2. t-table 某列数据的插槽 是 直接用 
     ``<template #EdbName="{ row }">
         <span>指标名称</span>
     </template>``

+ 1 - 1
package.json

@@ -21,7 +21,7 @@
     "moment": "^2.30.1",
     "normalize.css": "^8.0.1",
     "tdesign-icons-vue-next": "^0.2.2",
-    "tdesign-vue-next": "^1.10.5",
+    "tdesign-vue-next": "^1.10.6",
     "vue": "^3.5.13",
     "vue-router": "^4.3.2"
   },

+ 9 - 8
pnpm-lock.yaml

@@ -35,8 +35,8 @@ dependencies:
     specifier: ^0.2.2
     version: 0.2.2(vue@3.5.13)
   tdesign-vue-next:
-    specifier: ^1.10.5
-    version: 1.10.5(vue@3.5.13)
+    specifier: ^1.10.6
+    version: 1.10.6(vue@3.5.13)
   vue:
     specifier: ^3.5.13
     version: 3.5.13
@@ -1011,7 +1011,7 @@ packages:
   /@vueuse/shared@10.11.0(vue@3.5.13):
     resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==}
     dependencies:
-      vue-demi: 0.14.10(vue@3.5.13)
+      vue-demi: 0.14.8(vue@3.5.13)
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
@@ -1181,8 +1181,8 @@ packages:
     resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
     dev: true
 
-  /bare-events@2.5.0:
-    resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==}
+  /bare-events@2.5.3:
+    resolution: {integrity: sha512-pCO3aoRJ0MBiRMu8B7vUga0qL3L7gO1+SW7ku6qlSsMLwuhaawnuvZDyzJY/kyC63Un0XAB0OPUcfF1eTO/V+Q==}
     requiresBuild: true
     dev: true
     optional: true
@@ -3281,7 +3281,7 @@ packages:
       queue-tick: 1.0.1
       text-decoder: 1.2.1
     optionalDependencies:
-      bare-events: 2.5.0
+      bare-events: 2.5.3
     dev: true
 
   /strict-uri-encode@1.1.0:
@@ -3454,8 +3454,8 @@ packages:
       vue: 3.5.13
     dev: false
 
-  /tdesign-vue-next@1.10.5(vue@3.5.13):
-    resolution: {integrity: sha512-z00HyuKI3xnXSzkBMPjjl87FnXrkxmF1MPJbEzys2Eh80ofRC+Pc+iPQbcbEOxJhJ0yeQYf2jzwgl/wmKesSrg==}
+  /tdesign-vue-next@1.10.6(vue@3.5.13):
+    resolution: {integrity: sha512-EXMEiWlfH250Th0vZBfesoxozGrsuiV7doF34wmitDZk5KiMMyaXymKLN7832G4F/c9DIRW8DCKjxqqaHABGYA==}
     peerDependencies:
       vue: '>=3.1.0'
     dependencies:
@@ -3811,6 +3811,7 @@ packages:
         optional: true
     dependencies:
       vue: 3.5.13
+    dev: false
 
   /vue-demi@0.14.8(vue@3.5.13):
     resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==}

+ 1 - 0
src/components/SelectBusiness.vue

@@ -58,6 +58,7 @@ function handleChange(value,context){
     :clearable="props.clearable"
     :loading="loading"
     :minCollapsedNum="1"
+    :tag-props="{closable:false}"
     :disabled="props.disabled"
     @search="remoteMethod"
     @change="handleChange"

+ 3 - 7
src/views/customer/user/components/MoveUser.vue

@@ -73,13 +73,9 @@ watch(
         />
       </t-form-item>
       
-      <t-form-item label="所属客户" name="customer">
-        <select-business 
-          :value="props.data?.EtaBusinessId"
-          placeholder="输入社会信用码或客户名称"
-          disabled
-          v-if="show"
-        />
+      <t-form-item label="所属销售" name="customer">
+        <t-select disabled :value="props.data?.SellerName">
+        </t-select>
       </t-form-item>
     </t-form>
     <template #footer>

+ 40 - 21
src/views/etaChart/components/MoveClassify.vue

@@ -14,6 +14,7 @@ const filterState = reactive({
   user: '',
   searchVal: '',
   checkAll: false,
+  indeterminate:false,
   targetClassify: ''
 })
 
@@ -93,7 +94,12 @@ async function getChartList() {
     pagination.value.total = res.Data.Paging.Totals
 
     if(filterState.checkAll){
-      handleClickCheckAll(filterState.checkAll)
+      //全选了去除之前记录被手动取消勾选的项
+      tableData.value.forEach(item=>{
+        if(!selectedRowKeys.value.includes(item.ChartInfoId)&&!cancelSelectRowKeys.includes(item.ChartInfoId)){
+          selectedRowKeys.value.push(item.ChartInfoId)
+        }
+      })
     }
   }
 }
@@ -104,6 +110,10 @@ function handlePageChange(pageInfo) {
   getChartList()
 }
 function handleRefreshList() {
+  cancelSelectRowKeys=[]
+  selectedRowKeys.value=[]
+  filterState.checkAll=false
+  filterState.indeterminate=false
   pagination.value.current = 1
   getChartList()
 }
@@ -114,31 +124,40 @@ watch(
   }
 )
 
-const indeterminate=computed(()=>{
-  if(filterState.checkAll) return false
-  if(selectedRowKeys.value.length>0) return true
-})
 const selectedRowKeys = ref([])
+let cancelSelectRowKeys=[]//取消选择的keys
 function tableSelectChange(value, ctx) {
-  selectedRowKeys.value = value
-  if(ctx.type==="uncheck"&&filterState.checkAll){
-    filterState.checkAll=false
-  }
-  if(ctx.type==='check'&&selectedRowKeys.value.length>0){
-    filterState.indeterminate=true
+  if (ctx.type === 'uncheck') {
+    if (ctx.currentRowKey === 'CHECK_ALL_BOX') {
+      tableData.value.forEach(i => cancelSelectRowKeys.push(i.ChartInfoId));
+    } else {
+      cancelSelectRowKeys.push(ctx.currentRowKey);
+    }
+    filterState.indeterminate = selectedRowKeys.value.length > 0;
+    filterState.checkAll = selectedRowKeys.value.length === 0 ? false : filterState.checkAll;
+  } else if (ctx.type === 'check') {
+    filterState.indeterminate = true;
+    if (selectedRowKeys.value.length === pagination.value.total) {
+      filterState.checkAll = true;
+      filterState.indeterminate = false;
+      cancelSelectRowKeys = [];
+    } else {
+      cancelSelectRowKeys = cancelSelectRowKeys.filter(i => selectedRowKeys.value.includes(i));
+    }
   }
 }
 
 function handleClickCheckAll(check) {
-  if(check){
-    // 全选
-    selectedRowKeys.value=[]
-    tableData.value.forEach(item=>{
-      selectedRowKeys.value.push(item.ChartInfoId)
-    })
-  }else{
-    selectedRowKeys.value=[]
+  if(!check&&filterState.indeterminate){
+    selectedRowKeys.value=[...selectedRowKeys.value,...cancelSelectRowKeys]
+    cancelSelectRowKeys=[]
+    filterState.indeterminate = false;
+    filterState.checkAll=true
+    return
   }
+  filterState.indeterminate = false;
+  selectedRowKeys.value = check ? tableData.value.map(item => item.ChartInfoId) : [];
+  cancelSelectRowKeys = [];
 }
 
 
@@ -157,7 +176,7 @@ function handleConfirmClassify() {
     ChartClassifyIds: cArr|| '', //多个分类id用英文逗号拼接
     SysUserIds: filterState.user ? filterState.user.join(',') : '',
     ChartName: filterState.searchVal, //图表名称
-    ChartInfoIds: selectedRowKeys.value.join(','), //选中的图表ID
+    ChartInfoIds: filterState.checkAll? cancelSelectRowKeys.join(',') : selectedRowKeys.value.join(','), //选中的图表ID
     ChartClassifyId: filterState.targetClassify//新分类ID
   }
   console.log(params);
@@ -236,7 +255,7 @@ function handleConfirmClassify() {
         </t-input>
         <t-checkbox
           style="flex-shrink: 0"
-          :indeterminate="indeterminate"
+          :indeterminate="filterState.indeterminate"
           v-model="filterState.checkAll"
           @change="handleClickCheckAll"
           >全选</t-checkbox

+ 1 - 1
src/views/system/helpCenter/classify/Index.vue

@@ -117,7 +117,7 @@ function handleShowAuthSetClassify(item){
 }
 
 function treeExpandAndFoldIconRender (h, { type, row }) {
-  return type === 'expand' ? <CaretDownSmallIcon /> : <CaretRightSmallIcon />;
+  return type === 'expand' ? <CaretRightSmallIcon /> : <CaretDownSmallIcon /> ;
 }
 
 </script>

+ 1 - 1
src/views/system/helpCenter/classify/components/EditClassify.vue

@@ -37,7 +37,7 @@ async function handleSave(){
   const params={
     ParentId:formData.parent||0,
     HelpDocClassifyName:formData.name,
-    Level:parentLevel,
+    Level:formData.parent?parentLevel:parentLevel-1,
   }
   const res=props.data?await apiSystemHelpCenter.classifyEdit({
     HelpDocClassifyId:props.data.ClassifyId,