Эх сурвалжийг харах

Merge branch 'ch/jinrui1.0' of eta_mini/eta_mini_crm_front into debug_jr

leichen 3 долоо хоног өмнө
parent
commit
75349e31b4

+ 7 - 0
src/components/AllUserForDepart.vue

@@ -16,6 +16,10 @@ const props=defineProps({
     type:String,
     default:'营业部/销售'
   },
+  size:{
+    type:String,
+    default:'default'
+  },
   onlySelectUser:{//是否只能选择销售用户
     type:Boolean,
     default:false
@@ -64,6 +68,9 @@ function handleChange(){
     v-model="model"
     :placeholder="props.placeholder"
     collapse-tags
+    :max-collapse-tags="1"
+    :size="props.size"
+    :show-all-levels="false"
     :clearable="clearable"
     :filterable="filterable"
     @change="handleChange"

+ 2 - 0
src/views/customer/CompanyEdit.vue

@@ -21,6 +21,8 @@ const formRules = {
   CreditCode: [{ required: true, message: '社会信用码不能为空', trigger: 'blur' }],
   Industry: [{ required: true, message: '所属行业不能为空', trigger: 'blur' }],
   sellerId: [{ required: true, message: '营业部不能为空', trigger: 'blur' }],
+  province: [{ required: true, message: '省份不能为空', trigger: 'blur' }],
+  city: [{ required: true, message: '城市不能为空', trigger: 'blur' }],
 }
 const formState = reactive({
   CompanyName: '',

+ 29 - 35
src/views/customer/PotentialUserList.vue

@@ -23,22 +23,19 @@ const tableColOpt = [
   },
   {
     label: '手机号',
-    key: 'MobileHidden'
+    key: 'Mobile'
   },
   {
     label: '注册时间',
-    key: 'RegisterTime',
-    sort: true
-  },
+    key: 'RegisterTime'
+  }, 
   {
     label: '最近一次阅读时间',
-    key: 'ModifyTime',
-    sort: true
+    key: 'ModifyTime'
   },
   {
     label: '阅读统计',
-    key: 'ReadTimes',
-    sort: true,
+    key: 'ReadTimes'
   },
 ]
 const userList = ref([])
@@ -53,17 +50,7 @@ async function getUserList() {
     PageSize: pageSize.value,
     CurrentIndex: page.value,
     Keywords: filterState.keyword,
-    ApplyStatus: filterState.ApplyStatus,
-    SellerDepartmentId: filterState.SellerDepartmentId,
-    SortParam: filterState.sortType,
-    SortType: filterState.sortVal,
     UserStatus: 1,
-    // CompanyId,
-    // StartTime, 
-    // EndTime,
-    // UserStatus,
-    // SortField: '',
-    // SortRule: '',
   })
   tableLoading.value = false
   if (res.Ret === 200) {
@@ -89,17 +76,6 @@ function handlePageChange(e) {
   page.value = e
   getUserList()
 }
-function handleTableSort(e) {
-  // console.log(e);
-  const { order, prop } = e//order:"descending",prop: "RegisterTime"
-  filterState.sortType=prop
-  if(!order){
-    filterState.sortVal=''
-  }else{
-    filterState.sortVal=order==='descending'?'desc':'asc'
-  }
-  handleFilterList()
-}
 
 function handleFilterList() {
   page.value = 1
@@ -120,13 +96,11 @@ function handleEditUser(e) {
 const showDetail=ref(false)
 const activeUserId=ref(0)
 const activeUserName=ref('')
-function handleShowDetail(e){
+function handleGoReadTimes(e){
   activeUserId.value=e.UserId
   activeUserName.value=e.RealName
   showDetail.value=true
 }
-
-
 </script>
 
 <template>
@@ -148,7 +122,6 @@ function handleShowDetail(e){
         highlight-current-row
         element-loading-text="数据加载中..."
         v-loading="tableLoading"
-        @sort-change="handleTableSort"
       >
         <el-table-column
           v-for="column in tableColOpt"
@@ -172,8 +145,13 @@ function handleShowDetail(e){
             </el-tooltip>
           </template>
           <template #default="{ row }">
-            <el-button v-if="column.key === 'ReadCnt'&&row.ReadCnt>0" link type="primary" @click="handleShowDetail(row)">{{row.ReadCnt}}</el-button>
-            <span v-else>{{ row[column.key] }}</span>
+            <div class="name-box" v-if="column.key === 'RealName'">
+              <span class="name-tips" v-if="row.TrialExpired">试用过期</span>
+              <span>{{ row[column.key] || '-' }}</span>
+            </div>
+            <span v-else-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
+            <el-button v-else-if="column.key === 'ReadCnt'&&row.ReadCnt>0" link type="primary" @click="handleShowDetail(row)">{{row.ReadCnt}}</el-button>
+            <span v-else>{{ row[column.key] || '-' }}</span>
           </template>
         </el-table-column>
         <el-table-column label="操作" align="center" width="200">
@@ -209,5 +187,21 @@ function handleShowDetail(e){
     flex-wrap: wrap;
     gap: 10px;
   }
+  .name-box {
+    position: relative;
+    .name-tips {
+      height: 25px;
+      border-radius: 5px;
+      padding: 0 10px;
+      background-color: red;
+      z-index: 9;
+      position: absolute;
+      top: 50%;
+      left: 10px;
+      transform: translateY(-50%);
+      color: #fff;
+      font-size: 12px;
+    }
+  }
 }
 </style>

+ 41 - 30
src/views/customer/UserList.vue

@@ -11,10 +11,10 @@ const router = useRouter()
 
 const filterState = reactive({
   keyword: '',
-  SellerDepartmentId: '',
+  sellerId: [],
   createTime: [],
-  sortType:'',
-  sortVal:''
+  SortField: 0,
+  SortRule: 0
 })
 
 const tableColOpt = computed( ()=>{
@@ -44,7 +44,8 @@ const tableColOpt = computed( ()=>{
       {
         label: '创建时间',
         key: 'CreateTime',
-        width: '200px'
+        width: '200px',
+        sort: true,
       },
     ]
   } else {
@@ -111,16 +112,15 @@ async function getUserList() {
   const parames = {
     PageSize: pageSize.value,
     CurrentIndex: page.value,
-    SellerDepartmentId: filterState.SellerDepartmentId,
-    KeyWord: filterState.keyword,
-    CreateStartDate: filterState.createTime ? filterState.createTime[0] : '',
-    CreateEndDate: filterState.createTime ? filterState.createTime[1] : '',
-    SortParam:filterState.sortType,
-    SortType:filterState.sortVal,
+    SellerIds: filterState.sellerId.length > 0 ? filterState.sellerId.join(',') : '',
+    Keywords: filterState.keyword,
+    StartTime: filterState.createTime ? filterState.createTime[0] : '',
+    EndTime: filterState.createTime ? filterState.createTime[1] : '',
+    SortField:filterState.SortField,
+    SortRule:filterState.SortRule,
     UserStatus: 2
   }
-  console.log(radio.value === 1 ? 'companyPageList' : 'userList');
-  
+
   const res = radio.value === 1 ? await apiCustomerUser.companyPageList(parames) : await apiCustomerUser.userList(parames)
   tableLoading.value = false
   if (res.Ret === 200) {
@@ -149,17 +149,22 @@ async function getSellerDepartment() {
 }
 
 function handleTableSort(e) {
-  const { order, prop } = e//order:"descending",prop: "RegisterTime"
-  filterState.sortType=prop
-  if(!order){
-    filterState.sortVal=''
-  }else{
-    filterState.sortVal=order==='descending'?'desc':'asc'
-  }
-  
+
+  const sortFieldMap = {
+    CreateTime: 1,
+    RegisterTime: 2,
+    ModifyTime: 3,
+    ReadTimes: 4
+  };
+  // 设置排序字段
+  filterState.SortField = sortFieldMap[e.prop] || 0;
+  // 设置排序规则
+  filterState.SortRule = e.order ? (e.order === 'descending' ? 1 : 2) : 0;
   handleFilterList()
 }
 function handleFilterList() {
+  console.log('handleFilterList', filterState.sellerId);
+  
   page.value = 1
   getUserList()
 }
@@ -341,16 +346,22 @@ function handleGoReadTimes(e){
           style="max-width: 359px;float: right"
           @input="handleFilterList"
         />
-        <el-select
-          placeholder="请选择营业部"
-          v-model="filterState.SellerDepartmentId"
-          style="width: 165px"
-          clearable
-          size="large"
-          @change="handleFilterList"
-        >
-          <el-option v-for="(item, index) in departmentList" :key="index" :label="item.SysDepartmentName" :value="item.SysDepartmentId"></el-option>
-        </el-select>
+        <div style="width: 235px">
+          <all-user-for-depart
+            style="width: 100%"
+            :props="{
+              emitPath: false,
+              checkStrictly: true,
+              multiple: true,
+            }"
+            :filterable="true"
+            onlySelectUser
+            :size="'large'"
+            v-model="filterState.sellerId"
+            placeholder="请选择营业部"
+            @change="handleFilterList"
+          />
+        </div>
         <div style="width: 235px">
           <el-date-picker
             style="width: 235px"

+ 2 - 2
src/views/customer/UserSearch.vue

@@ -13,7 +13,7 @@ const searchFilters = reactive({
 
 const tableColumns = [
   { label: '用户姓名', key: 'RealName' },
-  { label: '手机号', key: 'Mobile' },
+  { label: '手机号', key: 'MobileHidden' },
   { label: '注册时间', key: 'CreateTime' },
   { label: '最近一次阅读时间', key: 'ModifyTime' },
   {
@@ -35,7 +35,7 @@ async function fetchUserList() {
     const res = await apiCustomerUser.userGlobalSearch({
       PageSize: pageSize.value,
       CurrentIndex: page.value,
-      KeyWord: searchFilters.keyword,
+      Keywords: searchFilters.keyword,
       SortParam: searchFilters.sortType,
       SortType: searchFilters.sortVal
     })

+ 16 - 13
src/views/customer/components/ContactTable.vue

@@ -8,8 +8,8 @@ const route = useRoute()
 const router = useRouter()
 
 const filterState = reactive({
-  sortType:'',
-  sortVal:''
+  SortField:'',
+  SortRule:''
 })
 
 const tableColOpt = computed( ()=>{
@@ -74,8 +74,8 @@ async function getUserList() {
     PageSize: pageSize.value,
     CurrentIndex: page.value,
     CompanyId: route.query.id,
-    SortParam:filterState.sortType,
-    SortType:filterState.sortVal,
+    SortField:filterState.SortField,
+    SortRule:filterState.SortRule,
     UserStatus: 2
   }
   const res = await apiCustomerUser.userList(parames)
@@ -102,15 +102,18 @@ async function getSellerDepartment() {
 }
 
 function handleTableSort(e) {
-  const { order, prop } = e//order:"descending",prop: "RegisterTime"
-  filterState.sortType=prop
-  if(!order){
-    filterState.sortVal=''
-  }else{
-    filterState.sortVal=order==='descending'?'desc':'asc'
-  }
-  
-  handleFilterList()
+
+const sortFieldMap = {
+  CreateTime: 1,
+  RegisterTime: 2,
+  ModifyTime: 3,
+  ReadTimes: 4
+};
+// 设置排序字段
+filterState.SortField = sortFieldMap[e.prop] || 0;
+// 设置排序规则
+filterState.SortRule = e.order ? (e.order === 'descending' ? 1 : 2) : 0;
+handleFilterList()
 }
 function handleFilterList() {
   page.value = 1