标准搜索页面

(cherry picked from commit 47b1a3ac4b90cb3a68be647ec134cea0d96577fd)
This commit is contained in:
Xia Zekun
2024-09-06 17:24:18 +08:00
committed by mzaxd
parent a10baccaf9
commit da76f279a2
15 changed files with 1662 additions and 18 deletions
+59
View File
@@ -0,0 +1,59 @@
import { getAction, postAction } from './manage'
// 获取检索历史数据
const getSearchHistoryData = (params) => getAction('/home/lawsHomeNormalSearchHistory/page', params)
// 根据id删除检索历史
const deleteSearchHistoryById = (params) => postAction('/home/lawsHomeNormalSearchHistory/delete', params)
// 批量删除检索历史
const batchDeleteSearchHistory = (params) => postAction('/home/lawsHomeNormalSearchHistory/deleteBatch', params)
// 一般检索(标题)——资源类型改变获取下面筛选项统计数据
const getSearchParamNum = (params) => getAction('/home/lawsHomeSearch/getNormalSearchTitleCount', params)
// 一般检索(标题)—— 查询
const generalSearchTitleSearch = (params) => getAction('/home/lawsHomeSearch/getNormalSearchTitlePage', params)
// 一般检索(全文)——资源类型改变获取下面筛选项统计数据
const getSearchParamNumFullText = (params) => getAction('/home/lawsHomeSearch/getNormalSearchAllCount', params)
// 一般检索(全文)—— 查询
const generalSearchFullTextSearch = (params) => getAction('/home/lawsHomeSearch/getNormalSearchAllPage', params)
// 国内标准的高级搜索,查询搜索条件
const getDomesticStandardQuery = (params) => getAction('/laws/standard/domestic/getAdvancedQueryCondition', params)
// 国外标准的高级搜索,查询搜索条件
const getOverseasStandardQuery = (params) => getAction('/laws/standard/overseas/getAdvancedQueryCondition', params)
// 企业标准的高级搜索,查询搜索条件
const getEnterStandardQuery = (params) => getAction('/laws/standard/enterprise/getAdvancedQueryCondition', params)
// 国内标准的高级搜索,查询列表数据
const getDomesticStandardList = (params) => postAction('/laws/standard/domestic/getCommonPageNoPermissions', params)
// 国外标准的高级搜索,查询列表数据
const getOverseasStandardList = (params) => postAction('/laws/standard/overseas/getCommonPageNoPermissions', params)
// 企标的高级搜索,查询列表数据
const getEnterStandardList = (params) => postAction('/laws/standard/enterprise/getCommonPageNoPermissions', params)
// 快捷入口-显示模块列表
const getQuickEntryModuleList = (params) => getAction('/home/lawsHomeQuickAccess/queryMenuList', params)
// 快捷入口可选列表
const getQuickEntryList = (params) => getAction('/home/lawsHomeQuickAccess/queryPermissionMenuList', params)
// 快捷入口-保存显示模块列表
const saveQuickEntryModuleList = (params) => postAction('/home/lawsHomeQuickAccess/saveMenu', params)
// 待办任务-列表
const getTodoList = (params) => getAction('/home/lawsHomeBacklogTask/queryBacklogTaskList', params)
export {
getSearchHistoryData,
deleteSearchHistoryById,
batchDeleteSearchHistory,
getSearchParamNum,
generalSearchTitleSearch,
getSearchParamNumFullText,
generalSearchFullTextSearch,
getDomesticStandardQuery,
getOverseasStandardQuery,
getEnterStandardQuery,
getDomesticStandardList,
getOverseasStandardList,
getEnterStandardList,
getQuickEntryModuleList,
getQuickEntryList,
saveQuickEntryModuleList,
getTodoList
}
+99
View File
@@ -0,0 +1,99 @@
import { getAction, postAction } from './manage'
// 获取表格头部数据
const getEnterpriseStandardTableHeader = (params) => getAction('/laws/standard/enterprise/getCommonHeader', params)
// 获取搜索区域数据
const getEnterpriseStandardSearchForm = (params) => getAction('/laws/standard/enterprise/getQueryCondition', params)
// 获取新增表单数据
const getEnterpriseStandardAddForm = (params) => getAction('/laws/standard/enterprise/getFormModel', params)
// 根据id获取详情
const getEnterpriseStandardInfoById = (params) => getAction('/laws/standard/enterprise/getByIdAndModule', params)
// 配置标准
const allocationStandard = (params) => getAction('/laws/standard/enterprise/relatedStandard', params)
// 配置标准-获取可配置标准列表
const allocationStandardList = (params) => getAction('/laws/standard/common/getStandardRightBox', params)
// 移出标准
const shiftStandard = (params) => getAction('/laws/standard/enterprise/removeStandard', params)
// 获取左侧树列表
const getTreeList = (params) => getAction('/laws/standard/lawsTreeNode/enterprise', params)
// 左侧树删除
const deleteTreeNode = (params) => postAction('/laws/standard/lawsTreeNode/enterprise/delete', params)
// 临时权限设置
const temporaryPermissionSet = (params) => postAction('/laws/standard/enterprise/tempPermission', params)
// 收藏企标
const collectStandard = (params) => postAction('/personal/lawsStandardCollection/enterprise/add', params)
// 取消收藏企标
const cancelCollectStandard = (params) => postAction('/personal/lawsStandardCollection/enterprise/delete', params)
// 分享企标
const shareStandard = (params) => postAction('/personal/lawsStandardSharing/enterprise/add', params)
// 查询是否有查看详情的权限
const isCanLookDetail = (params) => getAction('/laws/standard/enterprise/detailPermission', params)
// 企标级别映射列表获取
const getStandardGradeClassification = (params) => getAction('/sys/lawsGrade/listWithoutPermission', params)
// 解除授权
const cancelAuthor = (params) => getAction('/laws/standard/enterprise/revokeAuth', params)
// 企标详情-获取更新记录
const detailGetUpdateRecord = (params) => getAction('/laws/standard/enterprise/getUpdateRecordList', params)
// 企标详情-提交问题
const detailSubmitQuestion = (params) => postAction('/laws/library/lawsProblemLibrary/addProblem/QB', params)
// 企标详情-企标评价
const detailEvaluate = (standardId, params) => getAction('/laws/standard/enterprise/evaluateDetailForESInfo/' + `${standardId}`, params)
// 企标评审会记录-设置优质标准
const setQualityStandard = (params) => getAction('/enterprise/reviewMeeting/setQualityStandards', params)
// 获取评分详情
const getScoreDetail = (id, params) => getAction('/enterprise/reviewMeeting/evaluateDetail/' + `${id}`, params)
// 企标稽查-获取延期稽查数据
const getDeferredCheck = (params) => getAction('/enterprise/inspect/delayInspect', params)
// 企标稽查-根据id获取稽查报告详情
const getCheckReportById = (params) => getAction('/enterprise/inspect/inspectReport', params)
// 企标稽查-根据id获取整改计划
const getRectificationPlanById = (params) => getAction('/enterprise/inspect/rectifyPlan', params)
// 企标计划-根据id获取计划详情
const getEnterpriseStandardPlanInfoById = (params) => getAction('/enterprise/plan/detail', params)
// 企标计划-分页获取(选择企标计划组件中用)
const getEnterpriseStandardPlanPage = (params) => getAction('/process/es/initChange/getESPList', params)
// 企标复审计划-分页获取(选择企标复审计划组件中用)
const getEnterpriseRecheckPlanPage = (params) => getAction('/enterprise/recheckPlan/page', params)
// 企标复审计划-根据id获取数据
const getEnterpriseRecheckPlanById = (id, params) => getAction(`/enterprise/recheckPlan/getById/${id}`, params)
export {
getEnterpriseStandardTableHeader,
getEnterpriseStandardSearchForm,
getEnterpriseStandardAddForm,
getEnterpriseStandardInfoById,
allocationStandard,
allocationStandardList,
shiftStandard,
getTreeList,
deleteTreeNode,
temporaryPermissionSet,
collectStandard,
cancelCollectStandard,
shareStandard,
isCanLookDetail,
getStandardGradeClassification,
cancelAuthor,
detailGetUpdateRecord,
detailSubmitQuestion,
detailEvaluate,
setQualityStandard,
getScoreDetail,
getDeferredCheck,
getCheckReportById,
getRectificationPlanById,
getEnterpriseStandardPlanInfoById,
getEnterpriseStandardPlanPage,
getEnterpriseRecheckPlanPage,
getEnterpriseRecheckPlanById
}
+159
View File
@@ -0,0 +1,159 @@
import { getAction, postAction } from './manage'
// 国内法规标准-获取查询条件
const getDomesticStandardSearchForm = (params) => getAction('/laws/standard/domestic/getQueryCondition', params)
// 国内法规标准-获取表单模型
const getDomesticStandardFormModal = (params) => getAction('/laws/standard/domestic/getFormModel', params)
// 国内法规标准-获取信息
const getDomesticStandardDocumentInfo = (params) => getAction('/laws/standard/domestic/getByIdAndModule', params)
// 国内法规标准-获取表头信息
const getDomesticStandardTableHeader = (params) => getAction('/laws/standard/domestic/getCommonHeader', params)
// 国内标准法规-收藏
const collectionDomesticStandard = (params) => postAction('/personal/lawsStandardCollection/domestic/add', params)
// 国内标准法规-取消收藏
const cancelCollectionDomesticStandard = (params) => postAction('/personal/lawsStandardCollection/domestic/delete', params)
// 国内标准法规-分享
const shareDomesticStandard = (params) => postAction('/personal/lawsStandardSharing/domestic/add', params)
// 国内标准-体系新增
const addDomesticSystemTree = (params) => postAction('/laws/standard/lawsTreeNode/domestic/add', params)
// 国内标准-体系编辑
const editDomesticSystemTree = (params) => postAction('/laws/standard/lawsTreeNode/domestic/edit', params)
// 国内标准-体系删除
const deleteDomesticSystemTree = (params) => postAction('/laws/standard/lawsTreeNode/domestic/delete', params)
// 国内标准-配置标准
const configDomesticStandard = (params) => getAction('/laws/standard/domestic/relatedStandard', params)
// 国内标准-移出标准
const removeDomesticStandard = (params) => getAction('/laws/standard/domestic/removeStandard', params)
// 国内标准-获取体系树
const getDomesticStandardTree = (params) => getAction('/laws/standard/lawsTreeNode/domestic', params)
// 国内标准-新增标准
const addDomesticStandard = (params) => postAction('/laws/standard/domestic/commonAdd', params)
// 国内标准-编辑标准
const editDomesticStandard = (params) => postAction('/laws/standard/domestic/commonEdit', params)
// 国内标准-配置标准-过滤没有选中体系的数据
const getDomesticStandardNoSystem = (params) => getAction('/laws/standard/common/getStandardRightBox', params)
// 国内标准-获取详情信息
const getDomesticStandardDetail = (params) => getAction('/laws/standard/domestic/getByIdAndModule', params)
// 国内标准-获取更新记录
const getDomesticStandardUpdateRecord = (params) => getAction('/laws/standard/domestic/getUpdateRecordList', params)
// 国内标准-提交问题
const submitDomesticQuestion = (params) => postAction('/laws/library/lawsProblemLibrary/addProblem/GB', params)
// 海外标准-获取查询条件
const getOverseasStandardSearchForm = (params) => getAction('/laws/standard/overseas/getQueryCondition', params)
// 海外标准-获取表单
const getOverseasStandardForm = (params) => getAction('/laws/standard/overseas/getFormModel', params)
// 海外标准-获取信息
const getOverseasStandardDocumentInfo = (params) => getAction('/laws/standard/overseas/getByIdAndModule', params)
// 海外标准-获取表头信息
const getOverseasStandardTableHeader = (params) => getAction('/laws/standard/overseas/getCommonHeader', params)
// 海外标准-获取体系数据
const getOverseasStandardSystem = (params) => getAction('/laws/standard/lawsTreeNode/overseas', params)
// 海外标准-收藏
const collectionOverseasStandard = (params) => postAction('/personal/lawsStandardCollection/overseas/add', params)
// 海外标准-取消收藏
const cancelCollectionOverseasStandard = (params) => postAction('/personal/lawsStandardCollection/overseas/delete', params)
// 海外标准-分享
const shareOverseasStandard = (params) => postAction('/personal/lawsStandardSharing/overseas/add', params)
// 海外标准-体系删除
const deleteOverseasStandardSystem = (params) => postAction('/laws/standard/lawsTreeNode/overseas/delete', params)
// 海外标准-体系新增
const addOverseasStandardSystem = (params) => postAction('/laws/standard/lawsTreeNode/overseas/add', params)
// 海外标准-体系编辑
const editOverseasStandardSystem = (params) => postAction('/laws/standard/lawsTreeNode/overseas/edit', params)
// 海外标准-配置标准
const configOverseasStandard = (params) => getAction('/laws/standard/overseas/relatedStandard', params)
// 海外标准-移除标准
const removeOverseasStandard = (params) => getAction('/laws/standard/overseas/removeStandard', params)
// 海外标准-添加标准
const addOverseasStandard = (params) => postAction('/laws/standard/overseas/commonAdd', params)
// 海外标准-编辑标准
const editOverseasStandard = (params) => postAction('/laws/standard/overseas/commonEdit', params)
// 海外标准-提出问题
const submitOverseasQuestion = (params) => postAction('/laws/library/lawsProblemLibrary/addProblem/FB', params)
// 动态消息-保存
const saveDynamicMessage = (params) => postAction('/laws/standard/lawsNewsFeed/save', params)
// 动态消息-发布
const releaseDynamicMessage = (params) => postAction('/laws/standard/lawsNewsFeed/release', params)
// 动态消息-通过id查询
const getDynamicMessageById = (params) => getAction('/laws/standard/lawsNewsFeed/queryById', params)
// 动态消息-分享
const shareDynamicMessageById = (params) => postAction('/personal/lawsStandardSharing/dynamicMessages/add', params)
// 资料中心-新增
const addProfileCenter = (params) => postAction('/laws/dataCenter/lawsDataCenterFile/add', params)
// 资料中心-编辑
const editProfileCenter = (params) => postAction('/laws/dataCenter/lawsDataCenterFile/edit', params)
// 资料中心-新增同级
const addProfileCenterTree = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/addBrother', params)
// 资料中心-新增子文件夹
const addChildrenFolder = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/addChild', params)
// 资料中心-编辑树节点
const editProfileCenterTree = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/edit', params)
// 资料中心-删除树节点
const deleteProfileCenterTree = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/delete', params)
// 资料中心-获取树节点树
const getProfileCenterTree = (params) => getAction('/laws/dataCenter/lawsDataCenterFolder/getTreeList', params)
// 国标、海外、企标通用接口
// 通过标准号获取信息
const getStandardInfoByStandardNumber = (params) => getAction('/laws/standard/common/getInfoByStandardNo', params)
export {
// 国内标准
getDomesticStandardSearchForm,
getDomesticStandardFormModal,
getDomesticStandardDocumentInfo,
getDomesticStandardTableHeader,
collectionDomesticStandard,
cancelCollectionDomesticStandard,
shareDomesticStandard,
addDomesticSystemTree,
editDomesticSystemTree,
deleteDomesticSystemTree,
configDomesticStandard,
removeDomesticStandard,
getDomesticStandardTree,
addDomesticStandard,
editDomesticStandard,
getDomesticStandardNoSystem,
getDomesticStandardDetail,
getDomesticStandardUpdateRecord,
submitDomesticQuestion,
// 海外标准
getOverseasStandardSearchForm,
getOverseasStandardForm,
getOverseasStandardDocumentInfo,
getOverseasStandardTableHeader,
getOverseasStandardSystem,
collectionOverseasStandard,
cancelCollectionOverseasStandard,
shareOverseasStandard,
deleteOverseasStandardSystem,
editOverseasStandardSystem,
addOverseasStandardSystem,
configOverseasStandard,
removeOverseasStandard,
addOverseasStandard,
editOverseasStandard,
submitOverseasQuestion,
// 动态消息
saveDynamicMessage,
releaseDynamicMessage,
getDynamicMessageById,
shareDynamicMessageById,
// 资料中心
addProfileCenter,
editProfileCenter,
addProfileCenterTree,
addChildrenFolder,
editProfileCenterTree,
deleteProfileCenterTree,
getProfileCenterTree,
getStandardInfoByStandardNumber
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

+48
View File
@@ -0,0 +1,48 @@
// 首页的所有翻译
module.exports = {
// 一般检索
generalSearch: {
advancedSearch: 'Advanced Search',
homePage: 'Home',
searchHistory: '检索历史',
queryCondition: 'Query Condition',
retrievalMode: 'Retrieval Mode',
resourceType: 'Resource Type',
standardClass: 'Standard Class',
dynamicType: 'Dynamic Type',
applicableVehicleType: 'Applicable Vehicle Type',
standardType: 'Standard Type',
state: 'State',
enterpriseStandardCode: 'Enterprise Standard Code',
standardState: 'Standard State',
standardGradeClassification: 'Standard Grade Classification',
all: 'All',
releaseDate: 'Release Date'
},
// 高级搜索
advancedSearch: {
standardNum: '标准号',
standardName: '标准名称',
releaseDate: '发布日期',
materialDate: '实施日期',
standardStatus: '标准状态'
},
// 快捷入口
quickEnter: {
quickEnter: '快捷入口',
menuManage: '菜单管理',
custom: '自定义',
optionModules: '可选模块',
personalDisplayModule: '个人展示模块',
itemUnit: '项',
itemsUnit: '项',
listEmpty: '列表为空',
pleaseEnterSearchContent: '请输入搜索内容',
maxSelectedNine: '最多选择9个模块'
},
// 待办任务
todoTask: {
todoTask: '待办任务',
more: '更多'
}
}
+49
View File
@@ -0,0 +1,49 @@
// 首页的所有翻译
module.exports = {
// 一般检索
generalSearch: {
advancedSearch: '高级搜索',
homePage: '首页',
searchHistory: '检索历史',
queryCondition: '查询条件',
retrievalMode: '检索方式',
resourceType: '资源类型',
standardClass: '标准类别',
dynamicType: '动力类型',
applicableVehicleType: '适用车辆类型',
standardType: '标准类型',
state: '状态',
enterpriseStandardCode: '企业标准代号',
standardState: '标准状态',
standardGradeClassification: '标准等级分类',
all: '全部',
releaseDate: '发布日期',
standardStatusSet: '标准状态设置'
},
// 高级搜索
advancedSearch: {
standardNum: '标准号',
standardName: '标准名称',
releaseDate: '发布日期',
materialDate: '实施日期',
standardStatus: '标准状态'
},
// 快捷入口
quickEnter: {
quickEnter: '快捷入口',
menuManage: '菜单管理',
custom: '自定义',
optionModules: '可选模块',
personalDisplayModule: '个人展示模块',
itemUnit: '项',
itemsUnit: '项',
listEmpty: '列表为空',
pleaseEnterSearchContent: '请输入搜索内容',
maxSelectedNine: '最多选择9个模块'
},
// 待办任务
todoTask: {
todoTask: '待办任务',
more: '更多'
}
}
+6 -1
View File
@@ -1,3 +1,5 @@
const dashboard = require('./dashboard/en')
module.exports = {
pageTitle: {
home: 'home',
@@ -291,5 +293,8 @@ module.exports = {
evaluationFeedback: '评估反馈',
evaluator: '评估人',
evaluationResult: '评估结果'
}
},
// 首页
dashboard
}
+6 -1
View File
@@ -1,3 +1,5 @@
const dashboard = require('./dashboard/zh')
module.exports = {
pageTitle: {
home: '首页',
@@ -341,5 +343,8 @@ module.exports = {
projectApproval: '项目审批',
implementationDate: '实施日期',
vehicleModel: '车型'
}
},
// 首页
dashboard
}
+26
View File
@@ -1,5 +1,31 @@
import EsEnums from './EsEnum'
// 国内标准状态
export const StandardStatus = {
DRAFT: { text: '起草', value: '1' },
SEEK_FOR_OPTIONS: { text: '征求意见', value: '2' },
EXAMINE: { text: '审查', value: '2.1' },
APPROVAL: { text: '报批', value: '3' },
RELEASE: { text: '发布', value: '4' },
BE_IMPLEMENTED_SOON: { text: '即将实施', value: '5' },
CURRENTLY_EFFECTIVE: { text: '现行有效', value: '6' },
ABOLISH: { text: '废止', value: '7' }
}
// 企标状态
export const EnterpriseStandardStatus = {
DRAFT: { text: '起草', value: '1' },
SEEK_FOR_OPTIONS: { text: '征求意见', value: '2' },
EXAMINE: { text: '审查', value: '3' },
APPROVAL: { text: '报批', value: '4' },
PRE_RELEASE: { text: '预发布', value: '5' },
RELEASE: { text: '发布', value: '6' },
TRIAL_OPERATION: { text: '试运行', value: '7' },
CURRENTLY_EFFECTIVE: { text: '现行有效', value: '8' },
ABOLISH: { text: '废止', value: '9' },
ARCHIVE: { text: '封存', value: '10' }
}
export const YesOrNoEnum = new EsEnums({
NO: { name: '否', value: '0' },
YES: { name: '是', value: '1' }
+3 -1
View File
@@ -82,7 +82,9 @@ new Vue({
console.log(' 非钉钉平台 不进行钉钉单点登录')
return
}
this.$router.push({ path: '/search/generalSearch' }).catch((res) => {
console.log(res)
})
console.log('store.dispatch(\'DingLogin\')')
store.dispatch('DingLogin').then().catch((e) => {
Toast(e.message)
+196
View File
@@ -0,0 +1,196 @@
import { USER_AUTH, SYS_BUTTON_AUTH } from '@/store/mutation-types'
const hasPermission = {
install (Vue) {
Vue.directive('has', {
inserted: (el, binding, vnode) => {
// console.time()
// 节点权限处理,如果命中则不进行全局权限处理
if (!filterNodePermission(el, binding, vnode)) {
filterGlobalPermission(el, binding, vnode)
}
}
})
}
}
/**
* 流程节点权限控制
*/
export function filterNodePermission (el, binding, vnode) {
const permissionList = []
try {
const obj = vnode.context.$props.formData
if (obj) {
const bpmList = obj.permissionList
for (const bpm of bpmList) {
if (bpm.type + '' !== '2') {
permissionList.push(bpm)
}
}
} else {
return false
}
} catch (e) {
// console.log("页面权限异常----", e);
}
if (permissionList === null || permissionList === '' || permissionList === undefined || permissionList.length <= 0) {
// el.parentNode.removeChild(el)
return false
}
console.log('流程节点页面权限--NODE--')
const permissions = []
for (const item of permissionList) {
if (item.type + '' !== '2') {
permissions.push(item.action)
}
}
// console.log("页面权限----"+permissions);
// console.log("页面权限----"+binding.value);
if (!permissions.includes(binding.value)) {
// el.parentNode.removeChild(el)
return false
} else {
for (const item2 of permissionList) {
if (binding.value === item2.action) {
return true
}
}
}
return false
}
/**
* 全局权限控制
*/
export function filterGlobalPermission (el, binding) {
const permissionList = []
const allPermissionList = []
// let authList = Vue.ls.get(USER_AUTH);
const authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || '[]')
for (const auth of authList) {
if (auth.type + '' !== '2') {
permissionList.push(auth)
}
}
// console.log("页面权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH));
const allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || '[]')
for (const gauth of allAuthList) {
if (gauth.type + '' !== '2') {
allPermissionList.push(gauth)
}
}
// 设置全局配置是否有命中
let invalidFlag = false// 无效命中
if (allPermissionList && allPermissionList.length > 0) {
for (const itemG of allPermissionList) {
if (binding.value === itemG.action) {
if (itemG.status + '' === '0') {
invalidFlag = true
break
}
}
}
}
if (invalidFlag) {
return
}
if (permissionList === null || permissionList === '' || permissionList === undefined || permissionList.length <= 0) {
el.parentNode.removeChild(el)
return
}
const permissions = []
for (const item of permissionList) {
// 权限策略1显示2禁用
if (item.type + '' !== '2') {
// update--begin--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU-------
if (item.action) {
if (item.action.includes(',')) {
const split = item.action.split(',')
for (let i = 0; i < split.length; i++) {
if (!split[i] || split[i].length === 0) {
continue
}
permissions.push(split[i])
}
} else {
permissions.push(item.action)
}
}
// update--end--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------
}
}
if (!permissions.includes(binding.value)) {
el.parentNode.removeChild(el)
}
}
/**
* 根据授权标识是否拥有该权限,用于tab页签的权限
*/
export function isHasPermission (permissionIdentifier) {
const permissionList = []
const allPermissionList = []
// let authList = Vue.ls.get(USER_AUTH);
const authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || '[]')
for (const auth of authList) {
if (auth.type + '' !== '2') {
permissionList.push(auth)
}
}
// console.log("页面权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH));
const allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || '[]')
for (const gauth of allAuthList) {
if (gauth.type + '' !== '2') {
allPermissionList.push(gauth)
}
}
// 设置全局配置是否有命中
let invalidFlag = false// 无效命中
if (allPermissionList && allPermissionList.length > 0) {
for (const itemG of allPermissionList) {
if (permissionIdentifier === itemG.action) {
if (itemG.status + '' === '0') {
invalidFlag = true
break
}
}
}
}
if (invalidFlag) {
return
}
if (permissionList === null || permissionList === '' || permissionList === undefined || permissionList.length <= 0) {
return false
}
const permissions = []
for (const item of permissionList) {
// 权限策略1显示2禁用
if (item.type + '' !== '2') {
// update--begin--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU-------
if (item.action) {
if (item.action.includes(',')) {
const split = item.action.split(',')
for (let i = 0; i < split.length; i++) {
if (!split[i] || split[i].length === 0) {
continue
}
permissions.push(split[i])
}
} else {
permissions.push(item.action)
}
}
// update--end--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------
}
}
if (!permissions.includes(permissionIdentifier)) {
return false
}
return true
}
export default hasPermission
+40
View File
@@ -0,0 +1,40 @@
import Vue from 'vue'
import { USER_INFO } from '../store/mutation-types'
import { Base64 } from 'js-base64'
import md5 from 'md5'
function fillZero (str) {
let realNum
if (str < 10) {
realNum = '0' + str
} else {
realNum = str
}
return realNum
}
export function dealUrl (fileUrl) {
const userInfo = Vue.ls.get(USER_INFO)
// 获取当前时间
const date = new Date()
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
const time = `${year}${fillZero(month)}${fillZero(day)}${fillZero(hour)}${fillZero(minute)}${fillZero(second)}`
// 水印内容
const watermarkTxt = `${userInfo.username} ${userInfo.realname} ${time}`
// 客户环境预览需要加的加密参数
const watermarkSign = md5(watermarkTxt + 'cnhtc')
return `${window._CONFIG.onlinePreviewDomainURL}?url=${encodeURIComponent(Base64.encode(fileUrl))}&watermarkTxt=${encodeURIComponent(watermarkTxt)}&watermarkSign=${watermarkSign}`
}
/**
* kkFile预览文件并添加水印
* @param fileUrl
*/
export const kkFilePreview = (fileUrl) => {
window.open(dealUrl(fileUrl))
}
+957 -3
View File
@@ -1,13 +1,967 @@
<template>
<div>generalSearch</div>
<div :spinning="loading || selectOptionLoading">
<van-overlay :show="loading || selectOptionLoading">
<van-loading type="spinner" class="center-flex"/>
</van-overlay>
<div :bordered="false" :bodyStyle="{height: cardHeight}">
<!-- 搜索框部分 -->
<form action="/">
<van-search
clearable
v-model="searchValue"
:placeholder="$t('pleaseEnter')+$t('dashboard.generalSearch.queryCondition')"
@search="onInputSearch"
/>
</form>
<!-- 搜索框部分 -->
<!-- <div class="top-search-div">-->
<!-- <div class="top-search-div-content">-->
<!-- <a-input-search class="input-search"-->
<!-- :class="!isHasPermission('dashboard:generalSearch:search') ? 'search-no-btn' : ''"-->
<!-- :placeholder="$t('pleaseEnter')+$t('dashboard.generalSearch.queryCondition')"-->
<!-- v-model="searchValue"-->
<!-- :maxLength="50"-->
<!-- @search="onInputSearch()">-->
<!-- <van-button type="primary" slot="enterButton">-->
<!-- <i class="iconfont icon-Searchbar_Search_icon"></i>-->
<!-- </van-button>-->
<!-- </a-input-search>-->
<!-- </div>-->
<!-- </div>-->
<!-- 筛选区域 -->
<div class="filter-area-div" ref="filterArea">
<!-- 检索方式 -->
<a-row :gutter="24" class="filter-row">
<a-col :md="6" class="label-col"><span class="search_label">{{ $t('dashboard.generalSearch.retrievalMode') }}</span></a-col>
<a-col :md="18" class="option-col">
<div v-for="item in retrievalModeOptions" :key="item.key" class="option-div" :class="retrievalModeCurrent === item.key ? 'option-curr' : ''" @click="retrievalModeChange(item.key)">
{{ item.label }}
</div>
</a-col>
</a-row>
<!-- 资源类型 -->
<a-row :gutter="24" class="filter-row">
<a-col :md="6" class="label-col"><span class="search_label">{{ $t('dashboard.generalSearch.resourceType') }}</span></a-col>
<a-col :md="18" class="option-col">
<div v-for="item in resourceTypeOptions" :key="item.key" class="option-div" :class="resourceTypeCurrent === item.key ? 'option-curr' : ''" @click="resourceTypeChange(item.key)">
{{ item.label }}
</div>
</a-col>
</a-row>
<!-- 标准状态设置 -->
<a-row :gutter="24" class="filter-row">
<a-col :md="6" class="label-col"><span class="search_label">{{ $t('dashboard.generalSearch.standardStatusSet') }}</span></a-col>
<a-col :md="18" class="option-col">
<div v-for="item in standardStatusSetOptions" :key="item.key" class="option-div" :class="standardStatusSetCurrent === item.key ? 'option-curr' : ''" @click="standardStatusSetChange(item.key)">
{{ item.label }}
</div>
</a-col>
</a-row>
<!-- 其他筛选条件 -->
<template v-if="toggleSearchStatus">
<template v-for="(value, key) in selectOptionsKeys">
<div :key="key" v-if="selectOptions[value]" :gutter="24" class="filter-row">
<div class="label-col"><span class="search_label">{{ selectOptions[value].label }}</span></div>
<div class="option-col">
<div v-for="item in selectOptions[value].options" :key="item.itemValue" class="option-div" :class="selectOptions[value].current === item.itemValue ? 'option-curr' : ''" @click="selectOptionsChange(value, item.itemValue)">
<span>{{ item.itemText }}<span v-if="item.statisticsCount || item.statisticsCount === 0">(<span class="option-span-num">{{ item.statisticsCount }}</span>)</span></span>
</div>
</div>
</div>
</template>
</template>
</div>
<div class="toggle-div" @click="handleToggleChange" v-if="selectOptions && Object.keys(selectOptions).length !== 0">
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
{{ toggleSearchStatus ? $t('putAway') : $t('open') }}
</div>
<!-- 结果展示 -->
<template v-if="dataSource && dataSource.length > 0">
<!-- 查询结果展示区域 -->
<div class="result-wrapper">
<div class="result-div" v-for="item in dataSource" :key="item.id">
<div class="result-title-wrapper">
<!-- 正在搜索标题根据搜索内容高亮显示 -->
<a-tooltip>
<template #title>
<span v-html="item.title"></span>
</template>
<p class="result-title" v-html="item.title" @click="filePreviewAll(item)"></p>
</a-tooltip>
<div class="result-source-wrapper">
<p class="result-source">{{ resourceTypeOptions.find(i => i.key === item.resourceType).label }}</p>
</div>
<div v-show="judgeAbolish(item)" class="result-source-wrapper" >
<p class="result-abolish">{{ StandardStatus.ABOLISH.text }}</p>
</div>
<p class="result-date">{{ $t('dashboard.generalSearch.releaseDate') }} {{ item.releaseDate || global.emptyLine }}</p>
</div>
<template v-if="retrievalModeCurrent === '1'">
<!-- 全文检索 -->
<div v-html="item.content" class="result-content-wrapper"></div>
</template>
</div>
</div>
<!-- <a-pagination-->
<!-- v-if="dataSource && dataSource.length > 0"-->
<!-- class="page-content"-->
<!-- show-quick-jumper-->
<!-- show-size-changer-->
<!-- v-model="ipagination.current"-->
<!-- :pageSize="ipagination.pageSize"-->
<!-- :pageSizeOptions="ipagination.pageSizeOptions"-->
<!-- :total="ipagination.total"-->
<!-- :showTotal="ipagination.showTotal"-->
<!-- @change="pageChange"-->
<!-- @showSizeChange="pageSizeChange"-->
<!-- />-->
<van-pagination
v-if="dataSource && dataSource.length > 0"
class="page-content"
show-quick-jumper
show-size-changer
v-model="ipagination.current"
:page-count="ipagination.pageCount"
:total-items="ipagination.total"
:items-per-page="ipagination.pageSize"
:pageSizeOptions="ipagination.pageSizeOptions"
:show-page-size="3"
:showTotal="ipagination.showTotal"
@change="pageChange"
@showSizeChange="pageSizeChange"
force-ellipses
/>
<!-- <van-pagination-->
<!-- v-model="currentPage"-->
<!-- :total-items="125"-->
<!-- :show-page-size="3"-->
<!-- force-ellipses-->
<!-- />-->
</template>
<div class="empty-content" v-else ></div>
</div>
</div>
</template>
<script>
import {
getSearchParamNum,
getSearchParamNumFullText,
generalSearchTitleSearch,
generalSearchFullTextSearch
} from '@/api/dashboard'
import { isHasPermission } from '@/utils/hasPermission'
import { mapGetters } from 'vuex'
import { StandardStatus, EnterpriseStandardStatus } from '@/enums/commonEnums'
import {
getDomesticStandardFormModal,
getDomesticStandardDetail,
getOverseasStandardForm,
getOverseasStandardDocumentInfo
} from '@/api/standardRegulationLibraryApi'
import {
getEnterpriseStandardAddForm,
getEnterpriseStandardInfoById,
isCanLookDetail
} from '@/api/enterpriseStandardLibraryApi'
import Vue from 'vue'
import { previewPdf } from '@/utils/previewPdf'
import { kkFilePreview } from '@/utils/kkFilePreview'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { getFileInfo } from '@/api/api'
export default {
name: 'generalSearch'
name: 'GeneralSearch',
computed: {
...mapGetters(['defaultHeight']),
cardHeight () {
return `calc(100vh - ${this.defaultHeight['user-info-height']} - ${this.defaultHeight['breadcrumb-height']}`
}
},
data () {
return {
selectOptionLoading: false, // 其他筛选条件部分的loading
loading: false,
searchValue: '', // 搜索框内容
toggleSearchStatus: false, // 检索条件收缩还是展开, false收缩状态
// 检索方式可选择项
retrievalModeOptions: [
{ key: '1', label: '全文检索' },
{ key: '2', label: '标题检索' }
],
retrievalModeCurrent: '1', // 检索方式当前选中项
// 资源类型可选择项
resourceTypeOptions: [
{ key: 'all', label: '全部' },
{ key: '1', label: '国内标准法规' },
{ key: '2', label: '海外标准法规' },
{ key: '3', label: '企业标准' }
// { key: '4', label: '动态消息' }
],
resourceTypeCurrent: 'all', // 资源类型当前选中项
// 标准状态设置可选择项
standardStatusSetOptions: [
{ key: '1', label: '不包含废止标准' },
{ key: '2', label: '包含废止标准' }
],
standardStatusSetCurrent: '1', // 标准状态设置当前选中项
selectOptions: {}, // 其他筛选条件
selectOptionsKeys: [
'standardClass', // 标准类别
'dynamicType', // 动力类型
'applicableVehicle', // 适用车辆类型
'standardProperty', // 标准类型
'standardState', // 状态
'standardCode', // 企业标准代号
'enterpriseStandardState', // 标准状态
'gradeClassification' // 标准等级分类
], // 其他筛选条件中所有的key,为了能按顺序遍历
dataSource: [],
ipagination: {
current: 1,
pageSize: 10,
pageCount: 1,
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
},
total: 0,
showQuickJumper: true,
showSizeChanger: true
},
StandardStatus: StandardStatus,
getFormFunc: getDomesticStandardFormModal,
getDocumentInfoFunc: getDomesticStandardDetail
}
},
mounted () {
// 初始化检索方式
if (this.$route.query.type === 'title') {
// 标题检索
this.retrievalModeCurrent = '2'
} else if (this.$route.query.type === 'fullText') {
// 全文检索
this.retrievalModeCurrent = '1'
}
// 初始化资源类型
if (this.$route.query.resourceType) {
this.resourceTypeCurrent = this.$route.query.resourceType
}
// 初始化搜索内容
if (this.$route.query.searchValue) {
this.searchValue = this.$route.query.searchValue
}
// 资源类型不是全部,并且有搜索内容时获取筛选条件
if (this.resourceTypeCurrent !== 'all' && this.searchValue) {
this.initFilterData()
}
// 有搜索内容时,调用查询方法
if (this.searchValue) {
this.onSearch(1)
}
},
methods: {
isHasPermission,
// 判断是否是废止标准
judgeAbolish (item) {
// console.log('judgeAbolish')
// console.log('item', item)
if (item.resourceType === '3') { // 企业标准 判断 废止
return item.standardState === EnterpriseStandardStatus.ABOLISH.value
} else { // 国内标准 海外标准 判断 废止
return item.standardState === StandardStatus.ABOLISH.value
}
},
// 获取要显示数量的筛选条件的数据
initFilterData (callback) {
const param = {}
// 资源类型
param.resourceType = this.resourceTypeCurrent === 'all' ? null : this.resourceTypeCurrent
// 检索方式
param.searchMode = this.retrievalModeCurrent
// 检索内容
param.searchContent = this.searchValue
// 标准状态设置
param.standardStateSet = this.standardStatusSetCurrent
let func
if (this.retrievalModeCurrent === '1') {
func = getSearchParamNumFullText
} else {
func = getSearchParamNum
}
this.selectOptionLoading = true
func(param).then(res => {
if (res.success) {
// 设置对象key为搜索时需要传给后端的字段名,以及设置选项和字段label
for (const item in res.result) {
if (res.result[item]) {
let label = ''
if (item === 'applicableVehicle') {
// 适用车辆类型
label = this.$t('dashboard.generalSearch.applicableVehicleType')
} else if (item === 'dynamicType') {
// 动力类型
label = this.$t('dashboard.generalSearch.dynamicType')
} else if (item === 'enterpriseStandardState') {
// 标准状态
label = this.$t('dashboard.generalSearch.standardState')
} else if (item === 'gradeClassification') {
// 标准等级分类
label = this.$t('dashboard.generalSearch.standardGradeClassification')
} else if (item === 'standardClass') {
// 标准类别
label = this.$t('dashboard.generalSearch.standardClass')
} else if (item === 'standardCode') {
// 企业标准代号
label = this.$t('dashboard.generalSearch.enterpriseStandardCode')
} else if (item === 'standardProperty') {
// 标准类型
label = this.$t('dashboard.generalSearch.standardType')
} else if (item === 'standardState') {
// 状态
label = this.$t('dashboard.generalSearch.state')
}
res.result[item].unshift({ itemText: this.$t('dashboard.generalSearch.all'), itemValue: 'all' })
this.selectOptions[item] = {
options: res.result[item],
label: label,
current: 'all'
}
} else {
// 该字段为null,删除原本有的该字段
if (Object.keys(this.selectOptions).includes(item)) {
delete this.selectOptions[item]
}
}
}
console.log(this.selectOptions)
callback && callback()
} else {
this.$message.warning(res.message)
this.selectOptions = {}
}
}).finally(() => {
this.selectOptionLoading = false
})
},
// 查询时获取参数
getSearchParam () {
const param = {}
// 检索方式
param.searchMode = this.retrievalModeCurrent
// 资源类型
param.resourceType = this.resourceTypeCurrent === 'all' ? null : this.resourceTypeCurrent
// 检索内容
param.searchContent = this.searchValue
// 标准状态设置
param.standardStateSet = this.standardStatusSetCurrent
// 其他筛选条件
for (const item in this.selectOptions) {
param[item] = this.selectOptions[item].current === 'all' ? null : this.selectOptions[item].current
}
// 分页
param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize
return param
},
// 查询
onSearch (arg) {
if (arg === 1) {
this.ipagination.current = 1
}
const param = this.getSearchParam()
let func
if (this.retrievalModeCurrent === '1') {
// 是全文检索
func = generalSearchFullTextSearch
} else {
// 是标题检索
func = generalSearchTitleSearch
}
this.loading = true
func(param).then(res => {
if (res.success) {
this.dataSource = res.result.records
console.log('this.ipagination', this.ipagination)
if (res.result.total) {
this.ipagination.total = res.result.total
this.ipagination.pageCount = Math.ceil(this.ipagination.total / this.ipagination.pageSize)
} else {
this.ipagination.total = 0
}
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
},
// 分页改变
pageChange (page) {
this.ipagination.current = page
this.onSearch()
},
pageSizeChange (current, size) {
console.log(current, size)
this.ipagination.current = current
this.ipagination.pageSize = size
this.onSearch()
},
onInputSearch () {
this.onSearch(1)
if (this.resourceTypeCurrent !== 'all') {
this.initFilterData()
}
},
// 检索方式改变
retrievalModeChange (key) {
this.retrievalModeCurrent = key
this.ipagination = {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
},
total: 0,
showQuickJumper: true,
showSizeChanger: true
}
// 更新其他筛选项的数据
if (this.resourceTypeCurrent !== 'all') {
this.initFilterData()
}
this.onSearch()
},
// 资源类型改变
resourceTypeChange (key) {
this.resourceTypeCurrent = key
this.ipagination = {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
},
total: 0,
showQuickJumper: true,
showSizeChanger: true
}
// 更新其他筛选项的数据
if (key !== 'all') {
this.initFilterData()
} else {
this.selectOptions = {}
}
this.onSearch()
},
// 标准状态设置改变
standardStatusSetChange (key) {
this.standardStatusSetCurrent = key
this.ipagination = {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
},
total: 0,
showQuickJumper: true,
showSizeChanger: true
}
if (this.resourceTypeCurrent !== 'all') {
this.initFilterData()
}
this.onSearch()
},
// 其他检索条件改变
selectOptionsChange (changeKey, value) {
console.log(changeKey, value)
this.selectOptions[changeKey].current = value
this.onSearch(1)
this.$forceUpdate()
},
// 收齐展开点击
handleToggleChange () {
this.toggleSearchStatus = !this.toggleSearchStatus
},
// 点击高级搜索按钮
clickAdvancedSearch () {
this.$router.push({
path: '/advancedSearch'
})
},
// 点击首页按钮
clickHomePage () {
this.$router.push({
path: '/dashboard/analysis'
})
},
// 点击检索历史
clickSearchHistory () {
this.$refs.searchHistoryModal.open()
},
// 跳转详情
goDetail (record) {
let path = ''
// 需要先判断是哪种标准
if (record.resourceType === '1') {
path = '/standardRegulationLibrary/DomesticStandardDetail'
} else if (record.resourceType === '2') {
path = '/standardRegulationLibrary/OverseasStandardDetail'
} else if (record.resourceType === '3') {
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
} else if (record.resourceType === '4') {
path = '/standardRegulationLibrary/DynamicMessageDetail'
}
this.$openPageNewSheet({
path: path,
query: {
id: record.id
}
})
},
// 根据类型,选择调用的函数
adjustFunc (type) {
switch (type) {
case '1':
this.getFormFunc = getDomesticStandardFormModal
this.getDocumentInfoFunc = getDomesticStandardDetail
break
case '2':
this.getFormFunc = getOverseasStandardForm
this.getDocumentInfoFunc = getOverseasStandardDocumentInfo
break
case '3':
this.getFormFunc = getEnterpriseStandardAddForm
this.getDocumentInfoFunc = getEnterpriseStandardInfoById
break
}
},
filePreviewAll (record) {
if (record.resourceType === '4') {
this.goDetail(record)
} else {
this.adjustFunc(record.resourceType)
if (record.resourceType === '3') { // 企标打开需要权限验证
console.log('record', record)
isCanLookDetail(record).then(res => {
console.log('res', res)
if (res.success) {
if (res.result) {
this.filePreview13(record)
} else {
this.$message.warn('您没有查看该文件的权限')
}
} else {
this.$message.warn(res.message)
}
})
} else {
this.filePreview13(record)
}
}
},
/**
* 按顺序打开最新的pdf或word
*/
async filePreview13 (record) {
console.log('filePreview', record)
// 获取并处理过程稿件数据
let res = await this.getFormFunc({ type: 1 })
if (!res.success) {
this.$message.warn(res.message)
console.log('getFormFunc error:', res)
return
}
console.log('res.result', res.result)
const data = res.result || {}
const form = data
const partList = Object.keys(data)
let part
const partZh = '过程稿件'
const partEn = 'Process Manuscript'
if (partList.includes(partEn))part = partEn
if (partList.includes(partZh))part = partZh
console.log('part', part)
const processManuscript = form[part]
console.log('过程稿件', processManuscript)
// 获取并处理详情数据
res = await this.getDocumentInfoFunc({ id: record.id, type: 1 })
if (!res.success) {
this.$message.warn(res.message)
console.log('getDocumentInfoFunc error:', res)
return
}
const detailData = Object.assign({}, res.result || {})
console.log('detailData', detailData)
// 选择合适的文件
let file = null
const pdfFileList = []
const docFileList = []
let newestFileList = []
let manuscriptName = '' // 记录找到哪个稿件就找到文件了
// 按照过程稿件顺序寻找文件
for (const formItem of processManuscript) {
const keyId = formItem.dbFieldName
const keyName = formItem.dbFieldName + '_dictText'
if (!detailData[keyId]) continue
const idArray = detailData[keyId].split(',')
const nameArray = detailData[keyName].split(',')
// 每个过程中可能有多个文件
for (let i = 0; i < idArray.length; i++) {
const id = idArray[i]
const name = nameArray[i]
var suffix = name.substring(name.lastIndexOf('.') + 1).toLowerCase()
if (suffix === 'pdf') {
pdfFileList.push({ id, name, suffix })
}
if (suffix === 'doc' || suffix === 'docx') {
docFileList.push({ id, name, suffix })
}
}
// 一旦一个过程中找到pdf或者doc,就可以退出
if (pdfFileList.length > 0 || docFileList.length > 0) {
manuscriptName = formItem.dbFieldName
break
}
}
if (manuscriptName === 'publish_of_original' && record.resourceType === '3') {
// 是企标,在发布稿就找到了,合并pdf和doc文件列表排序
newestFileList = [...pdfFileList, ...docFileList]
} else {
newestFileList = pdfFileList // 默认从pdf里选最新的文件
if (pdfFileList.length === 0)newestFileList = docFileList // 如果没有pdf文件,就从doc文件里选
}
file = await this.selectNewestFile(newestFileList)
if (file === null) { // 没有找到文件就退出
console.log('没有找到符合要求的文件!')
this.$message.error('该标准暂无预览文件,请联系标准管理员。')
return
}
console.log('seletedFile', file)
// 是onlyOffice生成的,预览关联的pdf文件
if (file.pdfId) {
// 说明是onlyOffice生成的
const url = previewPdf(file.pdfId)
window.open(url)
return
}
// 预览选择的文件
const fileFullUrl = `${window._CONFIG.domianWebSocketURL}/sys/common/view/${file.id}?at=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.name}`
console.log(fileFullUrl)
if (file.suffix === 'pdf') { // pdf预览
const url = previewPdf(file.id)
window.open(url)
return
}
kkFilePreview(fileFullUrl)// 其余可预览文件仍使用KKFile进行预览
},
/**
* 从文件列表里选择最新文件
* @param fileList
*/
async selectNewestFile (fileList) {
if (!fileList || fileList.length === 0) return null
if (fileList.length === 1) {
const res = await getFileInfo(fileList[0])
return { ...fileList[0], ...res.result }
}
const newFileList = []
// 获取时间信息
for (const file of fileList) {
const res = await getFileInfo(file)
newFileList.push({ ...file, ...res.result })
}
// 排序取出最新
newFileList.sort((a, b) => b.id - a.id) // 日期只精确到天,用id更能区分
console.log('newFileList', newFileList)
return newFileList[0]
},
// 检索弹框点击历史查数据
historySearch (searchObj) {
console.log('--------historySearch--------', searchObj)
// 清空其他筛选记录
this.selectOptions = {}
// 设置历史记录中的值
this.retrievalModeCurrent = searchObj.searchMode // 检索方式
this.resourceTypeCurrent = searchObj.resourceType || 'all' // 资源类型
this.searchValue = searchObj.searchValue // 搜索内容
if (this.resourceTypeCurrent !== 'all' && this.searchValue) {
this.initFilterData(() => {
const query = {
applicableVehicle: searchObj.applicableVehicle, // 适用车辆类型
dynamicType: searchObj.dynamicType, // 动力类型
enterpriseStandardState: searchObj.enterpriseStandardState, // 标准状态
gradeClassification: searchObj.gradeClassification, // 标准等级分类
standardClass: searchObj.standardClass, // 标准类别
standardCode: searchObj.standardCode, // 企业标准代号
standardProperty: searchObj.standardProperty, // 标准类型
standardState: searchObj.standardState // 状态
}
const queryObj = {}
for (const item in query) {
if (query[item]) {
queryObj[item] = query[item]
}
}
for (const item in queryObj) {
this.selectOptions[item].current = queryObj[item]
}
this.onSearch(1)
})
} else {
this.onSearch(1)
}
}
}
}
</script>
<style scoped>
<style scoped lang="less">
@import '~@assets/less/common.less';
//居中
.center-flex {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
/deep/ .ant-card-body {
padding: 0;
//height: calc(100vh - 45px - 59px - 12px);
box-sizing: border-box;
overflow: hidden;
display: flex;
flex-direction: column;
}
// 搜索没有按钮
.search-no-btn {
/deep/ .ant-input {
border-right: 1px solid #d9d9d9;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
}
// 头部搜索区域
.top-search-div {
width: 100%;
min-height: 60px;
background-image: url("../../assets/image/searchPageBack.png");
background-size: 100% 100%;
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
.input-search {
width: 360px;
height: 44px;
/deep/ .ant-input {
height: 42px;
line-height: 42px;
}
/deep/ .ant-input-search-button {
height: 42px;
}
}
.search-link {
height: 44px;
line-height: 44px;
margin-left: 32px;
border-bottom: 1px solid @primary-color;
}
}
// 筛选区域
.filter-area-div {
padding: 10px 20px;
//box-sizing: border-box;
max-height: 300px;
overflow-y: auto;
.filter-row {
height: auto;
line-height: 38px;
display: flex;
}
.label-col {
width: 110px;
text-align: left;
color: #86909c;
}
.option-col {
//width: calc(100% - 200px);
height: auto;
color: #1D2129;
display: flex;
align-items: center;
flex-wrap: wrap;
.option-div {
width: auto;
height: 26px;
line-height: 26px;
padding: 0 12px;
cursor: pointer;
margin: 6px 4px;
overflow: hidden;
white-space: nowrap;
}
.option-span-num {
color: @primary-color;
}
}
}
// 选中项样式
.option-curr {
background: rgba(213, 44, 38, 0.08);
color: @primary-color;
border-radius: 4px 4px 4px 4px;
}
// 收缩展开容器
.toggle-div {
text-align: center;
cursor: pointer;
padding: 10px 0;
border-bottom: 1px solid #E5E6EB;
/deep/ .anticon {
height: 8px;
}
}
// 查询结果展示区域
.result-wrapper {
flex: 1;
overflow-y: auto;
padding: 16px 24px 0;
}
// 高亮样式
/deep/ .highlight-Es-class {
color: @primary-color;
word-wrap: break-word;
}
// 单个查询结果
.result-div {
width: 100%;
height: auto;
background: #F8F8F8;
border-radius: 4px 4px 4px 4px;
padding: 20px;
box-sizing: border-box;
margin-bottom: 16px;
.result-title-wrapper {
display: flex;
align-items: center;
p {
margin-bottom: 0;
}
.result-title {
color: #1D2129;
font-size: 18px;
font-family: PingFang SC-Semibold, PingFang SC;
font-weight: 600;
line-height: 28px;
margin-right: 20px;
max-height: calc(100% - 340px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
.result-source-wrapper {
min-width: 100px;
}
.result-source {
display: inline-block;
width: auto;
height: 28px;
line-height: 28px;
background: @primary-color;
border-radius: 4px 4px 4px 4px;
font-size: 14px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
padding: 0 8px;
}
.result-abolish {
margin-left: 10px;
display: inline-block;
width: auto;
height: 28px;
line-height: 28px;
background: #B7B7B7;
border-radius: 4px 4px 4px 4px;
font-size: 14px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
padding: 0 8px;
}
.result-date {
min-width: 200px !important;
font-size: 16px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #86909C;
line-height: 19px;
text-align: right;
white-space: nowrap;
flex: 1;
}
}
.result-content-wrapper {
width: 100%;
max-height: 40px;
font-size: 14px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #1D2129;
line-height: 20px;
margin-top: 10px;
//display: -webkit-box; /* 将元素作为块级元素进行布局 */
//-webkit-box-orient: vertical; /* 垂直方向对齐 */
//-webkit-line-clamp: 2; /* 最多显示两行文本 */
overflow: hidden; /* 控制溢出内容不被显示 */
text-overflow: ellipsis; /* 当内容溢出时显示省略号 */
.result-field-span {
margin-right: 12px;
}
}
}
.empty-content {
margin-top: 20px;
}
// 分页
.page-content {
height: 32px;
text-align: right;
margin: 10px 24px 24px 0;
}
// 检索历史全屏下的样式
.search-history-modal.ant-modal-root.j-modal-box.fullscreen {
/deep/ .ant-spin-nested-loading {
height: 100%;
.ant-spin-container {
height: 100%;
}
.content-wrapper {
max-height: calc(100% - 20px);
}
}
}
</style>
+11 -11
View File
@@ -129,17 +129,17 @@ export default {
},
loginSuccess () {
Toast('登录成功')
const query = this.$route.query
if (query.redirect) {
console.log('redirect:', query)
this.$router.push({ path: query.redirect }).catch((res) => {
console.log(res)
})
} else {
this.$router.push({ path: '/search/generalSearch' }).catch((res) => {
console.log(res)
})
}
// const query = this.$route.query
// if (query.redirect) {
// console.log('redirect:', query)
// this.$router.push({ path: query.redirect }).catch((res) => {
// console.log(res)
// })
// } else {
this.$router.push({ path: '/search/generalSearch' }).catch((res) => {
console.log(res)
})
// }
},
// 密码禁止粘贴
handleOperate () {
+3 -1
View File
@@ -9,6 +9,8 @@ module.exports = {
'nav-bar-icon-color': white,
'nav-bar-text-color': white,
'nav-bar-title-text-color': white,
'nav-bar-background-color': primaryColor
'nav-bar-background-color': primaryColor,
// 分页
'pagination-item-default-color': primaryColor
}
}