|
@@ -3,6 +3,80 @@ import useQuickSearchModel from '@jy/data-models/modules/quick-search/model'
|
|
|
import { without } from 'lodash'
|
|
|
import { computed, reactive, ref } from 'vue'
|
|
|
|
|
|
+function useSearchFilterModel() {
|
|
|
+ const activeTab = ref('all')
|
|
|
+ const Tabs = [
|
|
|
+ {
|
|
|
+ label: '全部',
|
|
|
+ key: 'all'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '招标采购公告',
|
|
|
+ key: 'bid'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '超前项目',
|
|
|
+ badge: '推荐',
|
|
|
+ key: 'project'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ const searchTabs = computed(() => {
|
|
|
+ return Tabs.map((v) => {
|
|
|
+ v.active = activeTab.value === v.key
|
|
|
+ return v
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ const searchState = ref({
|
|
|
+ input: '',
|
|
|
+ // 关键词筛选模式
|
|
|
+ searchMode: '0',
|
|
|
+ matchKeys: [],
|
|
|
+ // 附加关键词筛选模式
|
|
|
+ wordsMode: 0,
|
|
|
+ // 附件关键词组
|
|
|
+ additionalWords: [],
|
|
|
+ selectMoreKey: false
|
|
|
+ })
|
|
|
+
|
|
|
+ const searchModelOptions = [
|
|
|
+ {
|
|
|
+ label: '精准搜索',
|
|
|
+ value: '0'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '模糊搜索',
|
|
|
+ value: '1'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+
|
|
|
+ function getSearchParams() {
|
|
|
+ let params = {
|
|
|
+ searchvalue: searchState.value.input,
|
|
|
+ searchMode: ++searchState.value.searchMode
|
|
|
+ }
|
|
|
+
|
|
|
+ if (searchState.value.selectMoreKey) {
|
|
|
+ params.additionalWords = searchState.value.additionalWords.join(',')
|
|
|
+ params.wordsMode = searchState.value.wordsMode
|
|
|
+ }
|
|
|
+
|
|
|
+ return params
|
|
|
+ }
|
|
|
+
|
|
|
+ function doChangeTab(tab) {
|
|
|
+ activeTab.value = tab.key
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ searchState,
|
|
|
+ searchTabs,
|
|
|
+ searchModelOptions,
|
|
|
+ doChangeTab,
|
|
|
+ getSearchParams
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function useSearchBidModel() {
|
|
|
// 列表顶部操作按钮
|
|
|
const actions = [
|
|
@@ -65,7 +139,7 @@ function useSearchBidModel() {
|
|
|
doToggleItemSelection,
|
|
|
doToggleListSelection,
|
|
|
doClearAllSelection,
|
|
|
- doQuery
|
|
|
+ doQuery: doRunQuery
|
|
|
} = useQuickSearchModel({
|
|
|
type: 'search-bid',
|
|
|
getParams: () => {
|
|
@@ -73,6 +147,14 @@ function useSearchBidModel() {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
+ function doQuery() {
|
|
|
+ return doRunQuery().then((res) => {
|
|
|
+ searchState.value.matchKeys = res.origin?.heightWords?.split(' ') || [
|
|
|
+ searchState.value.input
|
|
|
+ ]
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
// 列表状态
|
|
|
const listState = reactive({
|
|
|
finished,
|
|
@@ -82,17 +164,6 @@ function useSearchBidModel() {
|
|
|
total
|
|
|
})
|
|
|
|
|
|
- // 获取筛选参数
|
|
|
- function getParams() {
|
|
|
- return {
|
|
|
- reqType: 'lastNews',
|
|
|
- publishtime: 'fiveyear',
|
|
|
- selectType: 'content,title',
|
|
|
- pageNumber: listState.pageNum,
|
|
|
- pageSize: listState.pageSize
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
// 用于回显复选框选中的 Item
|
|
|
const activeList = computed(() => {
|
|
|
return list.value.map((v) => {
|
|
@@ -170,7 +241,36 @@ function useSearchBidModel() {
|
|
|
doQuery()
|
|
|
}
|
|
|
|
|
|
+ // 筛选模型注入
|
|
|
+ const {
|
|
|
+ searchState,
|
|
|
+ searchTabs,
|
|
|
+ searchModelOptions,
|
|
|
+ doChangeTab,
|
|
|
+ getSearchParams
|
|
|
+ } = useSearchFilterModel()
|
|
|
+
|
|
|
+ // 获取筛选参数
|
|
|
+ function getParams() {
|
|
|
+ return Object.assign(
|
|
|
+ {
|
|
|
+ reqType: 'lastNews',
|
|
|
+ publishtime: 'fiveyear',
|
|
|
+ selectType: 'title',
|
|
|
+ pageNumber: listState.pageNum,
|
|
|
+ pageSize: listState.pageSize
|
|
|
+ },
|
|
|
+ getSearchParams()
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
return {
|
|
|
+ // 筛选模型
|
|
|
+ searchState,
|
|
|
+ searchTabs,
|
|
|
+ searchModelOptions,
|
|
|
+ doChangeTab,
|
|
|
+ // 列表模型
|
|
|
listState,
|
|
|
activeItemStyleType,
|
|
|
searchListProps,
|
|
@@ -183,4 +283,6 @@ function useSearchBidModel() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-export default useSearchBidModel
|
|
|
+const SearchBidModel = useSearchBidModel()
|
|
|
+
|
|
|
+export default SearchBidModel
|