소스 검색

Merge branch 'dev/v1.0.36_tsz' of jianyu/web into feature/v1.0.36

汤世哲 1 년 전
부모
커밋
ca6455961f

+ 58 - 2
apps/bigmember_pc/src/components/filter-items/CommonCheckboxSelector.vue

@@ -12,8 +12,9 @@
         class="j-checkbox-button"
         v-for="state in options.value"
         :key="state"
-        :label="state">
-          {{ state }}
+        :label="state"
+      >
+        {{ state }}
       </el-checkbox-button>
     </el-checkbox-group>
   </div>
@@ -32,6 +33,61 @@ const props = defineProps({
 })
 const emit = defineEmits(['input'])
 function onIssueStateChange(value) {
+  const isAllBtn = value.filter((item, i) => item === '全部' && i !== 0)
+  if (isAllBtn.length > 0) {
+    value = ['全部']
+  } else {
+    value = value.filter((item) => item !== '全部')
+    if (value.length === 0) {
+      value = ['全部']
+    }
+  }
   emit('input', value)
 }
 </script>
+
+<style lang="scss" scoped>
+.common-checkbox-selector {
+  // checked-button
+  .j-checkbox-button {
+    margin: 0 10px 10px 0;
+    ::v-deep{
+      .el-checkbox-button__inner {
+        line-height: 22px;
+        border: none;
+        border-color: transparent;
+        border-radius: 4px;
+        padding: 2px 6px;
+        &:hover{
+          background: #2abed1;
+          color: #fff
+        }
+      }
+    }
+    
+    &.is-active {
+      .el-checkbox-button__inner {
+        border-color: #2abed1;
+      }
+    }
+    
+  }
+  .j-checkbox-button:first-child,
+  .j-checkbox-button:last-child {
+    :v-deep{
+      .el-checkbox-button__inner {
+        border-color: transparent;
+        border-radius: 4px;
+        padding: 2px 6px;
+      }
+    }
+  }
+  .el-checkbox-button__inner {
+    color: #1d1d1d;
+  }
+  .el-checkbox-button.is-focus .el-checkbox-button__inner {
+    border: none;
+    border-color: transparent;
+  }
+}
+</style>

+ 0 - 2
apps/bigmember_pc/src/views/search/nzj/constant/search-filters.js

@@ -8,8 +8,6 @@ const labelOfKeyMap = [
   'electromechanical',
   'project_stage',
   'ownerclass',
-  'searchSort',
-  'matchKeys'
 ]
 
 const SearchNzjBaseSchema = []

+ 4 - 2
apps/bigmember_pc/src/views/search/nzj/index.vue

@@ -1,5 +1,5 @@
 <script setup>
-import { ref} from 'vue'
+import { ref } from 'vue'
 import SearchHeaderCard from '@/views/search/components/search-header-card.vue'
 import SearchSchemaFilter from '@/views/search/components/search-schema-filter.vue'
 import SearchList from '@/views/search/layout/search-list.vue'
@@ -11,7 +11,8 @@ import {
   searchListProps,
   doChangePageNum,
   doChangePageSize,
-  doChangeFilter
+  doChangeInput,
+  doChangeFilter,
 } from './model'
 import { useSearchNzjBaseSchema } from './constant/search-filters'
 
@@ -47,6 +48,7 @@ useSearchNzjBaseSchema().then(res => {
           v-model="filterState"
           :schema="SearchNzjBaseSchema"
           :showLabel="true"
+          @input="doChangeInput"
           @change="doChangeFilter"
         ></search-schema-filter>
       </div>

+ 62 - 2
apps/bigmember_pc/src/views/search/nzj/model/index.js

@@ -40,7 +40,7 @@ function doQuery(params = {}) {
 function doSearch() {
   return doQuery()
 }
-
+let filterParams = reactive({})
 // 列表状态
 const listState = reactive({
   finished,
@@ -50,6 +50,7 @@ const listState = reactive({
   total
 })
 
+
 // search-list 组件所需参数
 const searchListProps = computed(() => {
   return {
@@ -74,14 +75,72 @@ function doChangePageSize(size) {
 }
 
 function doChangeFilter() {
+  // doQuery()
+}
+
+function doChangeInput(data) {
+  console.log(data)
+  let { area, build, civil, electromechanical, project_stage, ownerclass } = data
+  const areaJudge = checkIfArrayHasOnlyValue(area, '全部');
+  const buildJudge = checkIfArrayHasOnlyValue(build, '全部');
+  const civilJudge = checkIfArrayHasOnlyValue(civil, '全部');
+  const electromechanicalJudge = checkIfArrayHasOnlyValue(
+    electromechanical,
+    '全部'
+  )
+  const project_stageJudge = checkIfArrayHasOnlyValue(project_stage, '全部');
+  const ownerclassJudge = checkIfArrayHasOnlyValue(ownerclass, '全部');
+  // 地区
+  area = areaJudge ? '' : area.join(',')
+  // 工程(建筑、土木、机电)
+  // 如果三个都选全部,则category为空,有一个不选全部,剩下两个选全部,则category为两个不选全部的字符串拼接
+  // 如果三个都不选全部,则category为三个不选全部的字符串拼接
+  let category = ''
+  if (buildJudge && civilJudge && electromechanicalJudge) {
+    category = ''
+  } else {
+    const buildValue = getCategoryValue(data, build, 'build', buildJudge)
+    const civilValue = getCategoryValue(data, civil, 'civil', civilJudge)
+    const electromechanicalValue = getCategoryValue(data, electromechanical, 'electromechanical', electromechanicalJudge)
+    category = `${buildValue}${buildValue ? ',' : ''}${civilValue}${civilValue ? ',' : ''}${electromechanicalValue}`
+  }
+  const pattern = /(全部,){2}全部/;
+  if (pattern.test(category)) {
+    category = ''
+  }
+  // 项目阶段
+  project_stage = project_stageJudge ? '' : project_stage.join(',')
+  // 业主类别
+  ownerclass = ownerclassJudge ? '' : ownerclass.join(',')
+  filterParams = {
+    keyWord: inputKeywordsState.value.input,
+    area: area, // 地区
+    category: category,
+    project_stage: project_stage, // 项目阶段
+    ownerclass: ownerclass, // 业主类型
+    searchSort: 0
+  }
+  console.log(filterParams, 'filterParams')
   doQuery()
 }
 
+function getCategoryValue(filterData, field, filterDataString, judgeVariable) {
+  const judgeData = !judgeVariable
+    ? filterData[filterDataString].join(',')
+    : field.join(',')
+    debugger
+  console.log(judgeData, 'judgeData')
+  return judgeData
+}
+function checkIfArrayHasOnlyValue(arr, value) {
+  return arr.length === 1 && arr[0] === value;
+}
 function getParams() {
   return {
     keyWord: inputKeywordsState.value.input,
     pageNum: listState.pageNum,
-    pageSize: listState.pageSize
+    pageSize: listState.pageSize,
+    ...filterParams
   }
 }
 
@@ -93,6 +152,7 @@ export {
   // 搜索UI
   filterState,
   doChangeFilter,
+  doChangeInput,
   searchTabs,
   inputKeywordsState,
   doSearch,