Initial commit
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
<template>
|
||||
<div class="analysis-box">
|
||||
<div class="content-box">
|
||||
<img class="logo-img" src="../../../assets/image/analysisLogo.png"/>
|
||||
<div class="search-box">
|
||||
<a-input-group compact class="search-input-group">
|
||||
<a-select v-model="resourceType" :dropdownMatchSelectWidth="false">
|
||||
<a-select-option value="all">{{ $t('dashboard.generalSearch.all')}}</a-select-option>
|
||||
<a-select-option v-for="item in resourceTypeOptions" :key="item.value" :value="item.value">
|
||||
{{ item.title }}
|
||||
</a-select-option>
|
||||
<i slot="suffixIcon" class="iconfont icon-nav-bottom"></i>
|
||||
</a-select>
|
||||
<a-input v-model="searchValue" :placeholder="$t('pleaseEnter')" @pressEnter="searchInputEnter">
|
||||
<i slot="prefix" class="iconfont icon-Searchbar_Search_icon"></i>
|
||||
<!--<a-icon type="search" />-->
|
||||
</a-input>
|
||||
</a-input-group>
|
||||
<a-button type="primary" @click="toSearchWindow('title')">标题检索</a-button>
|
||||
<a-button type="primary" @click="toSearchWindow('fullText')">全文检索</a-button>
|
||||
<a-button type="primary" ghost @click="toAdvancedSearch">高级检索</a-button>
|
||||
</div>
|
||||
<p class="tips-p">全球法规标准搜索</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ajaxGetDictItems } from '@/api/api'
|
||||
|
||||
export default {
|
||||
name: 'FirstStageCard',
|
||||
data () {
|
||||
return {
|
||||
resourceTypeOptions: [], // 资源类型下拉框数据
|
||||
resourceType: 'all', // 资源类型
|
||||
searchValue: '' // 检索内容
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.initResourceTypeOptions()
|
||||
},
|
||||
methods: {
|
||||
// 获取资源类型下拉框数据
|
||||
initResourceTypeOptions () {
|
||||
ajaxGetDictItems('resource_type').then(res => {
|
||||
if (res.success) {
|
||||
this.resourceTypeOptions = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
// 回车跳标题检索
|
||||
searchInputEnter () {
|
||||
const { href } = this.$router.resolve({
|
||||
path: '/generalSearch',
|
||||
query: {
|
||||
type: 'title',
|
||||
resourceType: this.resourceType,
|
||||
searchValue: this.searchValue
|
||||
}
|
||||
})
|
||||
window.open(href, '_blank')
|
||||
},
|
||||
// 点击跳转到一般检索页
|
||||
toSearchWindow (type) {
|
||||
const { href } = this.$router.resolve({
|
||||
path: '/generalSearch',
|
||||
query: {
|
||||
type: type,
|
||||
resourceType: this.resourceType,
|
||||
searchValue: this.searchValue
|
||||
}
|
||||
})
|
||||
window.open(href, '_blank')
|
||||
},
|
||||
// 点击跳转到高级检索页
|
||||
toAdvancedSearch () {
|
||||
const { href } = this.$router.resolve({
|
||||
path: '/advancedSearch'
|
||||
})
|
||||
window.open(href, '_blank')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.analysis-box {
|
||||
width: 100%;
|
||||
height: calc(@page-content-h - 20px);
|
||||
background-image: url("../../../assets/image/analysisBack.png");
|
||||
background-repeat: no-repeat;
|
||||
//background-size: 100% 100%;
|
||||
background-size: cover;
|
||||
background-position: center center;
|
||||
padding-top: calc(@page-content-h * 0.2);
|
||||
}
|
||||
|
||||
.content-box {
|
||||
width: 70%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.logo-img {
|
||||
width: 222px;
|
||||
}
|
||||
.tips-p {
|
||||
margin-top: 24px;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #86909C;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
.search-box {
|
||||
width: 100%;
|
||||
height: 56px;
|
||||
margin-top: 60px;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
.search-input-group {
|
||||
height: 56px;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
/deep/ .ant-select-selection {
|
||||
height: 100%;
|
||||
border-color: @primary-color;
|
||||
color: @primary-color;
|
||||
.ant-select-selection__rendered {
|
||||
height: 100%;
|
||||
line-height: 54px;
|
||||
margin-right: 38px;
|
||||
}
|
||||
.ant-select-arrow-icon {
|
||||
font-size: 18px;
|
||||
color: @primary-color;
|
||||
}
|
||||
.ant-select-arrow {
|
||||
margin-top: -9px;
|
||||
}
|
||||
}
|
||||
/deep/ .ant-input-prefix {
|
||||
color: @primary-color;
|
||||
left: 18px;
|
||||
}
|
||||
/deep/ .ant-input {
|
||||
height: 56px;
|
||||
border-color: @primary-color;
|
||||
padding-left: 40px;
|
||||
}
|
||||
}
|
||||
/deep/ .ant-btn {
|
||||
height: 56px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<span class="left-p"><i class="iconfont icon-link left-icon"></i>友情链接</span>
|
||||
<span class="right-p" @click="moreLink" v-has="'dashboard:friendShipLInk:linkManage'">链接管理<i class="iconfont icon-right"></i></span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content-div" v-for="item in dataSource" :key="item.id" @click="clickLink(item)">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'FriendLinkCard',
|
||||
data () {
|
||||
return {
|
||||
loading: true,
|
||||
dataSource: [],
|
||||
url: {
|
||||
list: '/sys/lawsFriendlyLinks/list'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.loadData()
|
||||
},
|
||||
methods: {
|
||||
loadData () {
|
||||
this.loading = true
|
||||
getAction(this.url.list, {}).then((res) => {
|
||||
if (res.success) {
|
||||
// grounding 1上架 0下架(只显示上架的)
|
||||
this.dataSource = res.result.filter(item => item.grounding === '1')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 点击更多链接
|
||||
moreLink () {
|
||||
this.$router.push({
|
||||
path: '/isystem/friendshipLink'
|
||||
})
|
||||
},
|
||||
// 点击链接
|
||||
clickLink (record) {
|
||||
const href = record.link
|
||||
window.open(href)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
.content-wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-gap: 20px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.content-div {
|
||||
height: 62px;
|
||||
padding: 16px;
|
||||
line-height: 30px;
|
||||
box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.1);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||
font-weight: 400;
|
||||
color: @primary-color;
|
||||
text-align: center;
|
||||
background-image: url('../../../assets/image/dashboardLinkBack.png');
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,167 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="$t('dashboard.quickEnter.custom')"
|
||||
:visible="visible"
|
||||
:width="1000"
|
||||
switchFullscreen
|
||||
@ok="handleOk"
|
||||
:confirmLoading="loading"
|
||||
@cancel="close"
|
||||
:cancelText="$t('close')">
|
||||
<a-spin :spinning="loading">
|
||||
<a-transfer
|
||||
class="transfer"
|
||||
:data-source="dataSource"
|
||||
:titles="titles"
|
||||
:show-search="true"
|
||||
:filter-option="filterOption"
|
||||
:target-keys="targetKeys"
|
||||
:row-key="item => item.id"
|
||||
:render="item => item.name"
|
||||
:listStyle="listStyle"
|
||||
:locale="locale"
|
||||
@change="handleChange"
|
||||
/>
|
||||
</a-spin>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getQuickEntryList, saveQuickEntryModuleList } from '@api/dashboard'
|
||||
|
||||
export default {
|
||||
name: 'MenuManageModal',
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
// 穿梭框两侧样式
|
||||
listStyle: {
|
||||
textAlign: 'left',
|
||||
width: '40%',
|
||||
height: '100%'
|
||||
},
|
||||
visible: false,
|
||||
// 可选数据和个人展示模块
|
||||
titles: [this.$t('dashboard.quickEnter.optionModules'), this.$t('dashboard.quickEnter.personalDisplayModule')],
|
||||
// 可选数据
|
||||
dataSource: [],
|
||||
// 已选数据id
|
||||
targetKeys: [],
|
||||
// 已勾选的菜单
|
||||
selectedMenu: [],
|
||||
// 之前勾选,但是后来没权限的菜单列表
|
||||
notPermissionMenu: [],
|
||||
// 打开弹框传入的ids
|
||||
ids: [],
|
||||
// 多语言
|
||||
locale: {
|
||||
itemUnit: this.$t('dashboard.quickEnter.itemUnit'),
|
||||
itemsUnit: this.$t('dashboard.quickEnter.itemsUnit'),
|
||||
notFoundContent: this.$t('dashboard.quickEnter.listEmpty'),
|
||||
searchPlaceholder: this.$t('dashboard.quickEnter.pleaseEnterSearchContent')
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 打开弹框
|
||||
* @param ids - 已经选择的ids
|
||||
* @param selectedMenu
|
||||
*/
|
||||
show (ids, selectedMenu) {
|
||||
this.visible = true
|
||||
// 清空之前的数据,然后重新请求
|
||||
this.dataSource = []
|
||||
this.notPermissionMenu = []
|
||||
// 存储已经勾选的菜单
|
||||
this.selectedMenu = selectedMenu
|
||||
this.targetKeys = ids || []
|
||||
this.ids = ids
|
||||
this.getMenuList()
|
||||
},
|
||||
// 获取菜单列表
|
||||
getMenuList () {
|
||||
this.loading = true
|
||||
getQuickEntryList().then(res => {
|
||||
if (res.success) {
|
||||
// 处理之前有权限,后来没有权限
|
||||
// 没有权限的菜单接口不会返回,但是已经勾选的菜单需要显示出来
|
||||
const data = res.result || []
|
||||
// 所有有权限的菜单id
|
||||
const hasPermissionIds = data.map(item => item.id)
|
||||
// 获取已选择但没有权限的列表
|
||||
this.notPermissionMenu = this.selectedMenu.filter(item => !hasPermissionIds.includes(item.id))
|
||||
this.dataSource = data.concat(this.notPermissionMenu)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
}, 1000)
|
||||
})
|
||||
},
|
||||
// 确定
|
||||
handleOk () {
|
||||
// 最多选择9个模块
|
||||
if (this.targetKeys.length > 9) {
|
||||
this.$message.warning(this.$t('dashboard.quickEnter.maxSelectedNine'))
|
||||
return
|
||||
}
|
||||
// 如果进来的值和提交的值一样不提示操作成功
|
||||
if (this.notPermissionMenu.length === 0 && this.ids.join(',') === this.targetKeys.join(',')) {
|
||||
this.close()
|
||||
return
|
||||
}
|
||||
this.loading = true
|
||||
saveQuickEntryModuleList({
|
||||
permissionIds: this.targetKeys.join(',')
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.$emit('ok')
|
||||
this.close()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 关闭
|
||||
close () {
|
||||
this.visible = false
|
||||
},
|
||||
// 穿梭框改变
|
||||
handleChange (targetKeys, direction, moveKeys) {
|
||||
console.log(targetKeys, direction, moveKeys)
|
||||
this.targetKeys = targetKeys
|
||||
},
|
||||
// 搜索过滤
|
||||
filterOption (inputValue, option) {
|
||||
return option.name.indexOf(inputValue) > -1
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.transfer {
|
||||
height: 50vh;
|
||||
text-align: center;
|
||||
/deep/ .ant-transfer-operation button {
|
||||
margin: 20px 0;
|
||||
border-radius: 50%;
|
||||
}
|
||||
/deep/ .ant-transfer-list-header-selected {
|
||||
display: inline-flex;
|
||||
flex-direction: row-reverse;
|
||||
justify-content: space-between;
|
||||
width: 94%;
|
||||
|
||||
.ant-transfer-list-header-title {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,207 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<p class="left-p"><i class="iconfont icon-rukou left-icon"></i>{{ this.$t('dashboard.quickEnter.quickEnter') }}</p>
|
||||
<p class="right-p" @click="menuManage" v-has="'dashboard:quickEnter:menuManage'"><i class="iconfont icon-settings"></i>{{ this.$t('dashboard.quickEnter.menuManage') }}</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content-div" v-for="item in dataSource" :key="item.id" @click="handleTo(item.url)">
|
||||
<img class="icon-img" :src="item.src" :alt="item.name" v-if="item.src">
|
||||
<!--<i class="iconfont" :class="'icon-' + 'shengchanliuchengguanli'"></i>-->
|
||||
<a-tooltip placement="top">
|
||||
<template slot="title">{{item.name}}</template>
|
||||
<p>{{ item.name }}</p>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="plus-div" @click="menuManage" v-if="dataSource.length < 9" v-has="'dashboard:quickEnter:menuManage'">
|
||||
<a-icon type="plus" class="text-primary-color" />
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
<!-- 菜单管理 -->
|
||||
<menu-manage-modal ref="menuManageModal" @ok="loadData"/>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import MenuManageModal from '@views/dashboard/modules/MenuManageModal'
|
||||
import { getQuickEntryModuleList } from '@api/dashboard'
|
||||
|
||||
// 菜单id或name --> 图标名
|
||||
const map = [
|
||||
{ id: '897f80938bcd2157018bcd22d1770001', name: '法规评估库', srcName: 'project-library' },
|
||||
{ id: '1696430663505027073', name: '企业标准', srcName: 'enterprise-standard' },
|
||||
{ id: '1701430695719411713', name: '企标复审计划', srcName: 'standard-review-plan' },
|
||||
{ id: '1699984911627018242', name: '企标宣贯', srcName: 'standard-promotion' },
|
||||
{ id: '1701402482251210753', name: '企标稽查', srcName: 'standard-audit' },
|
||||
{ id: '1699610110131494913', name: '企标级别映射', srcName: 'standard-level-mapping' },
|
||||
{ id: '1701846774438457346', name: '企标计划', srcName: 'standard-plan' },
|
||||
{ id: '1701129706890174465', name: '企标评审会记录', srcName: 'standard-review-minutes' },
|
||||
{ id: '1699268154566213634', name: '内部工作组', srcName: 'internal-working-group' },
|
||||
{ id: '1706216785733353474', name: '动态消息', srcName: 'dynamic-message' },
|
||||
{ id: '1699621406990196738', name: '友情链接管理', srcName: 'friend-link-management' },
|
||||
{ id: '1694954872496123906', name: '国内标准', srcName: 'domestic-standards' },
|
||||
{ id: '1702146447208464385', name: '已发分享', srcName: 'shared-items' },
|
||||
{ id: '1702153747398770689', name: '已收分享', srcName: 'received-shares' },
|
||||
{ id: '897f809c8b41f679018b41f679090000', name: '征求意见', srcName: 'soliciting-opinions' },
|
||||
{ id: '1692098082295779330', name: '我的收藏', srcName: 'my-favorites' },
|
||||
{ id: '53a9230444d33de28aa11cc108fb1dba', name: '我的消息', srcName: 'my-messages' },
|
||||
{ id: 'f1cb187abf927c88b89470d08615f5ac', name: '数据字典', srcName: 'data-dictionary' },
|
||||
{ id: '1691007717915566081', name: '文档拆分', srcName: 'document-splitting' },
|
||||
{ id: '897f89fa8b07e219018b07e4338f0001', name: '新建流程', srcName: 'new-process' },
|
||||
{ id: '1692057704023822337', name: '新旧拆分单对比', srcName: 'new-old-split-comparison' },
|
||||
{ id: '897f80938bcd2157018bcd21573b0000', name: '未符合项', srcName: 'non-compliance-items' },
|
||||
{ id: '1697502618994315265', name: '标准化活动', srcName: 'standardization-activities' },
|
||||
{ id: '897f80868b84b221018b84bb4fe20005', name: '标准预警', srcName: 'standard-warning' },
|
||||
{ id: '1689517320967122945', name: '标签管理', srcName: 'tag-management' },
|
||||
{ id: '897f89fa8b1c5a5b018b1c5a5b4c0000', name: '流程中心', srcName: 'process-center' },
|
||||
{ id: '897f809c8b0cf422018b0d1b5d790006', name: '流程配置', srcName: 'process-configuration' },
|
||||
{ id: '1702153981491265538', name: '浏览记录', srcName: 'browsing-history' },
|
||||
{ id: '1696420777130401794', name: '海外标准', srcName: 'overseas-standards' },
|
||||
{ id: '3f915b2769fc80648e92d04e84ca059d', name: '用户管理', srcName: 'user-center' },
|
||||
{ id: '897f89fa8b130b62018b130b620d0000', name: '联络人管理', srcName: 'contact-management' },
|
||||
{ id: '897f809c8b5f5aff018b5f5aff0f0000', name: '自定义比对', srcName: 'custom-comparison' },
|
||||
{ id: '190c2b43bec6a5f7a4194a85db67d96a', name: '角色管理', srcName: 'role-center' },
|
||||
{ id: '1706587922522857473', name: '资料中心', srcName: 'resource-center' },
|
||||
{ id: '1701115229728014338', name: '车型项目库', srcName: 'vehicle-project-library' },
|
||||
{ id: '45c966826eeff4c99b8f8ebfe74511fc', name: '部门管理', srcName: 'department-management' },
|
||||
{ id: '1704319763516084225', name: '问答库', srcName: 'questions-answers-library' },
|
||||
{ id: '897f89d78ca41926018ca419266c0000', name: '任务转交', srcName: 'task-transfer' },
|
||||
{ id: '897f89d78d1beaa3018d1bec513c0001', name: '文档动态', srcName: 'document-dynamics' }
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'QuickEnterCard',
|
||||
components: { MenuManageModal },
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
dataSource: [
|
||||
// { iconName: 'shengchanliuchengguanli', name: '新建流程' },
|
||||
// { iconName: 'a-moxingkuaisuchaifen1', name: '标准拆分' },
|
||||
// { iconName: 'shoucang', name: '我的收藏' },
|
||||
// { iconName: 'a-fagui1', name: '国内法规' },
|
||||
// { iconName: 'a-moxingkuaisuchaifen1', name: '征求意见' },
|
||||
// { iconName: 'jiaoseguanli', name: '角色管理' },
|
||||
// { iconName: 'wenda1', name: '我的问答' }
|
||||
]
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.loadData()
|
||||
},
|
||||
methods: {
|
||||
// 获取快捷入口
|
||||
loadData () {
|
||||
this.loading = true
|
||||
getQuickEntryModuleList().then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || []
|
||||
this.dataSource = data.map(item => {
|
||||
// 如果能找到菜单名,就用对应图标
|
||||
const findMap = map.find(m => m.id === item.id || m.name === item.name)
|
||||
if (findMap) {
|
||||
item.src = require(`@/assets/image/dashboard/${findMap.srcName}.png`)
|
||||
}
|
||||
return item
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 点击快捷入口,跳转对应页面
|
||||
handleTo (path) {
|
||||
this.$router.push({ path })
|
||||
},
|
||||
// 菜单管理
|
||||
menuManage () {
|
||||
const ids = this.dataSource.map(item => item.id)
|
||||
// 已经选中的菜单(之前有权限,后来没有了,这时接口不会返回没权限的菜单导致取消不了,需要前端处理)
|
||||
const selectedMenu = this.dataSource.map(item => {
|
||||
return {
|
||||
id: item.id,
|
||||
name: item.name
|
||||
}
|
||||
})
|
||||
this.$refs.menuManageModal.show(ids, selectedMenu)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.content-wrapper {
|
||||
//display: flex;
|
||||
//flex-direction: row;
|
||||
//flex-wrap: wrap;
|
||||
//justify-content: space-between;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, calc((100% - 20px) / 3));
|
||||
grid-gap: 10px;
|
||||
grid-auto-flow: row;
|
||||
margin-top: 10px;
|
||||
& > div {
|
||||
//width: 100px;
|
||||
//height: 100px;
|
||||
min-height: 50px;
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.content-div {
|
||||
// (总高度 - 内边距 - 标题 - 上下边距) / 3
|
||||
height: calc((306px - 48px - 31px - 20px) / 3);
|
||||
cursor: pointer;
|
||||
background: rgba(213,44,38,0.08);
|
||||
.icon-img {
|
||||
width: 27px;
|
||||
}
|
||||
.iconfont {
|
||||
font-size: 27px;
|
||||
color: @primary-color;
|
||||
}
|
||||
p {
|
||||
width: 90%;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-bottom: 0;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC, PingFang SC, sans-serif;
|
||||
font-weight: 400;
|
||||
color: #000000;
|
||||
line-height: 28px;
|
||||
}
|
||||
}
|
||||
.plus-div {
|
||||
// (总高度 - 内边距 - 标题 - 上下边距) / 3
|
||||
height: calc((306px - 48px - 31px - 20px) / 3);
|
||||
cursor: pointer;
|
||||
border: 1px dashed @primary-color;
|
||||
box-sizing: border-box;
|
||||
.anticon {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.text-primary-color {
|
||||
color: @primary-color
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1366px) {
|
||||
.content-wrapper {
|
||||
.content-div {
|
||||
p {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,405 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<!-- 搜索区域 -->
|
||||
<div class="search-wrapper">
|
||||
<a-select class="resource-type-select" v-model="resourceType">
|
||||
<a-select-option value="all">{{ $t('dashboard.generalSearch.all')}}</a-select-option>
|
||||
<a-select-option v-for="item in resourceTypeOptions" :key="item.value" :value="item.value" :title="item.title">
|
||||
{{ item.title }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<a-input v-model="searchValue" :placeholder="$t('pleaseEnter')" @pressEnter="searchInputEnter"></a-input>
|
||||
<a-button type="primary" @click="toSearchWindow('title')">标题检索</a-button>
|
||||
<a-button type="primary" @click="toSearchWindow('fullText')">全文检索</a-button>
|
||||
<a-button type="primary" ghost @click="toAdvancedSearch">高级检索</a-button>
|
||||
</div>
|
||||
<!-- 预警区域 -->
|
||||
<div class="warning-wrapper">
|
||||
<!-- tab切换 -->
|
||||
<div class="tab-wrapper">
|
||||
<div class="tab-div" :class="warningTab === 'newCarType' ? 'curr-tab' : ''" @click="warningTabChange('newCarType')">新车型实施预警</div>
|
||||
<div class="tab-div" :class="warningTab === 'carInProduction' ? 'curr-tab' : ''" @click="warningTabChange('carInProduction')">在产车实施预警</div>
|
||||
<div class="tab-div small-tab-div" :class="warningTab === 'enStandardImplement' ? 'curr-tab small-curr-tab' : ''" @click="warningTabChange('enStandardImplement')">最新发布企标</div>
|
||||
<div class="tab-div small-tab-div" :class="warningTab === 'enStandardPublish' ? 'curr-tab small-curr-tab' : ''" @click="warningTabChange('enStandardPublish')">最新实施企标</div>
|
||||
</div>
|
||||
<!--这里的scroll.y必须有,后面用媒体查询进行样式覆盖-->
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
:rowKey="(_, index) => index"
|
||||
class="table"
|
||||
:scroll="{ x: '100%', y: '40vh' }"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
@change="handleTableChange"
|
||||
:loading="loading">
|
||||
<template slot="text" slot-scope="text">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 标准号、标准名称 -->
|
||||
<template v-slot:standard="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<a v-if="text" class="link-a" @click="detailClick(record)">{{ text }}</a>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 企标号、企标名称 -->
|
||||
<template v-slot:enStandard="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<a v-if="text" class="link-a" @click="enStandardDetailClick(record)">{{ text }}</a>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ajaxGetDictItems } from '@/api/api'
|
||||
import { getAction } from '@api/manage'
|
||||
import { StandardSource } from '@/enums/commonEnums'
|
||||
|
||||
const warningColumns = [
|
||||
{
|
||||
title: '来源',
|
||||
align: 'left',
|
||||
dataIndex: 'source_dictText',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '标准号',
|
||||
align: 'left',
|
||||
dataIndex: 'standardNumber',
|
||||
width: 120,
|
||||
scopedSlots: { customRender: 'standard' }
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'left',
|
||||
dataIndex: 'standardName',
|
||||
width: 180,
|
||||
scopedSlots: { customRender: 'standard' }
|
||||
},
|
||||
{
|
||||
title: '新车型实施日期',
|
||||
align: 'left',
|
||||
dataIndex: 'newModelImplementationDate',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}
|
||||
]
|
||||
|
||||
const enStandardColumns = [
|
||||
{
|
||||
title: '企标编号',
|
||||
align: 'left',
|
||||
dataIndex: 'standardNumber',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'enStandard' }
|
||||
},
|
||||
{
|
||||
title: '企标名称',
|
||||
align: 'left',
|
||||
dataIndex: 'standardName',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'enStandard' }
|
||||
},
|
||||
{
|
||||
title: '标准状态',
|
||||
align: 'left',
|
||||
dataIndex: 'standardState_dictText',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '发布日期',
|
||||
align: 'left',
|
||||
dataIndex: 'releaseDate',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '实施日期',
|
||||
align: 'left',
|
||||
dataIndex: 'implementationDate',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'SearchAndWarningCard',
|
||||
data () {
|
||||
return {
|
||||
resourceTypeOptions: [], // 资源类型下拉框数据
|
||||
resourceType: 'all', // 资源类型
|
||||
searchValue: '', // 检索内容
|
||||
warningTab: 'newCarType', // 预警当前tab
|
||||
loading: false,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '来源',
|
||||
align: 'left',
|
||||
dataIndex: 'source_dictText',
|
||||
width: 60,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: '标准号',
|
||||
align: 'left',
|
||||
dataIndex: 'standardNumber',
|
||||
width: 120,
|
||||
scopedSlots: { customRender: 'standard' }
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'left',
|
||||
dataIndex: 'standardName',
|
||||
width: 180,
|
||||
scopedSlots: { customRender: 'standard' }
|
||||
},
|
||||
{
|
||||
title: '新车型实施日期',
|
||||
align: 'left',
|
||||
dataIndex: 'newModelImplementationDate',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
/* 分页参数 */
|
||||
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')
|
||||
},
|
||||
showQuickJumper: true,
|
||||
showSizeChanger: true,
|
||||
total: 0
|
||||
},
|
||||
url: {
|
||||
newModelWarningList: '/laws/localTool/standardEarlyWarning/newModelImplementation',
|
||||
inProductionWarningList: '/laws/localTool/standardEarlyWarning/onTheProduction',
|
||||
enStandardImplementList: '/laws/localTool/standardEarlyWarning/latestImplementEs',
|
||||
enStandardPublishList: '/laws/localTool/standardEarlyWarning/latestReleaseEs'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.initResourceTypeOptions()
|
||||
this.loadData(1)
|
||||
},
|
||||
methods: {
|
||||
// 获取资源类型下拉框数据
|
||||
initResourceTypeOptions () {
|
||||
ajaxGetDictItems('resource_type').then(res => {
|
||||
if (res.success) {
|
||||
this.resourceTypeOptions = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
// 回车跳标题检索
|
||||
searchInputEnter () {
|
||||
const { href } = this.$router.resolve({
|
||||
path: '/generalSearch',
|
||||
query: {
|
||||
type: 'title',
|
||||
resourceType: this.resourceType,
|
||||
searchValue: this.searchValue
|
||||
}
|
||||
})
|
||||
window.open(href, '_blank')
|
||||
},
|
||||
// 点击跳转到一般检索页
|
||||
toSearchWindow (type) {
|
||||
const { href } = this.$router.resolve({
|
||||
path: '/generalSearch',
|
||||
query: {
|
||||
type: type,
|
||||
resourceType: this.resourceType,
|
||||
searchValue: this.searchValue
|
||||
}
|
||||
})
|
||||
window.open(href, '_blank')
|
||||
},
|
||||
// 点击跳转到高级检索页
|
||||
toAdvancedSearch () {
|
||||
const { href } = this.$router.resolve({
|
||||
path: '/advancedSearch'
|
||||
})
|
||||
window.open(href, '_blank')
|
||||
},
|
||||
// 预警tab切换
|
||||
warningTabChange (value) {
|
||||
this.warningTab = value
|
||||
this.dataSource = []
|
||||
if (value === 'newCarType') {
|
||||
this.columns.splice(1, this.columns.length - 1, ...warningColumns)
|
||||
this.columns[4].title = '新车型实施日期'
|
||||
this.columns[4].dataIndex = 'newModelImplementationDate'
|
||||
} else if (value === 'carInProduction') {
|
||||
this.columns.splice(1, this.columns.length - 1, ...warningColumns)
|
||||
this.columns[4].title = '在产车实施日期'
|
||||
this.columns[4].dataIndex = 'onTheProductionDate'
|
||||
} else {
|
||||
// 是企标实施预警或企标发布预警
|
||||
this.columns.splice(1, this.columns.length - 1, ...enStandardColumns)
|
||||
}
|
||||
this.loadData(1)
|
||||
},
|
||||
// 跳转详情
|
||||
detailClick (record) {
|
||||
let path
|
||||
// 根据来源跳转不同的详情页
|
||||
switch (record.source + '') {
|
||||
// 国内
|
||||
case StandardSource.DOMESTIC.value:
|
||||
path = '/standardRegulationLibrary/DomesticStandardDetail'
|
||||
break
|
||||
// 海外
|
||||
case StandardSource.OVERSEAS.value:
|
||||
path = '/standardRegulationLibrary/OverseasStandardDetail'
|
||||
break
|
||||
// 企标
|
||||
case StandardSource.ENTERPRISE.value:
|
||||
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
this.$openPageNewSheet({
|
||||
path,
|
||||
query: {
|
||||
id: record.id
|
||||
}
|
||||
})
|
||||
},
|
||||
// 企标详情
|
||||
enStandardDetailClick (record) {
|
||||
this.$openPageNewSheet({
|
||||
path: '/enterpriseStandardLibrary/enterpriseStandardDetail',
|
||||
query: {
|
||||
id: record.id
|
||||
}
|
||||
})
|
||||
},
|
||||
handleTableChange (pagination) {
|
||||
this.ipagination = pagination
|
||||
this.loadData()
|
||||
},
|
||||
loadData (arg) {
|
||||
// 加载数据 若传入参数1则加载第一页的内容
|
||||
if (arg === 1) {
|
||||
this.ipagination.current = 1
|
||||
}
|
||||
const params = {}// 查询条件
|
||||
params.pageNo = this.ipagination.current
|
||||
params.pageSize = this.ipagination.pageSize
|
||||
params.columns = 'createTime'
|
||||
params.order = 'desc'
|
||||
this.loading = true
|
||||
let url = ''
|
||||
if (this.warningTab === 'newCarType') {
|
||||
url = this.url.newModelWarningList
|
||||
} else if (this.warningTab === 'carInProduction') {
|
||||
url = this.url.inProductionWarningList
|
||||
} else if (this.warningTab === 'enStandardImplement') {
|
||||
url = this.url.enStandardImplementList
|
||||
} else {
|
||||
url = this.url.enStandardPublishList
|
||||
}
|
||||
getAction(url, params).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result.records || res.result
|
||||
if (res.result.total) {
|
||||
this.ipagination.total = res.result.total
|
||||
} else {
|
||||
this.ipagination.total = 0
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.search-wrapper {
|
||||
display: grid;
|
||||
grid-gap: 10px;
|
||||
grid-template-columns: 96px 200px 88px 88px 88px;
|
||||
}
|
||||
.resource-type-select {
|
||||
width: 96px;
|
||||
}
|
||||
|
||||
// 预警容器
|
||||
.warning-wrapper {
|
||||
padding: 24px 0;
|
||||
}
|
||||
// 预警tab切换
|
||||
.tab-wrapper {
|
||||
width: 664px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.tab-div {
|
||||
cursor: pointer;
|
||||
width: 176px;
|
||||
height: 32px;
|
||||
background: rgba(245, 245, 245, 0.60);
|
||||
color: #4E5969;
|
||||
text-align: center;
|
||||
line-height: 32px;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||
font-weight: 400;
|
||||
}
|
||||
.small-tab-div {
|
||||
width: 156px;
|
||||
}
|
||||
.curr-tab {
|
||||
width: 176px;
|
||||
height: 44px;
|
||||
line-height: 42px;
|
||||
border-top: 2px solid @primary-color;
|
||||
color: @primary-color;
|
||||
box-sizing: border-box;
|
||||
font-weight: 500;
|
||||
//transition-property: width,height,border-top;
|
||||
//transition-duration: 0.1s;
|
||||
//transition-timing-function: ease-in;
|
||||
}
|
||||
.small-curr-tab {
|
||||
width: 156px;
|
||||
}
|
||||
// 通过媒体查询覆盖表格高度
|
||||
.table /deep/ .ant-table-scroll .ant-table-body {
|
||||
max-height: calc(100vh - 20px - 162px - 310px) !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,214 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<p class="left-p"><i class="iconfont icon-calendar left-icon"></i>{{ $t('dashboard.todoTask.todoTask') }}</p>
|
||||
<p class="right-p" @click="handleMore">{{ $t('dashboard.todoTask.more') }}<i class="iconfont icon-right"></i></p>
|
||||
</div>
|
||||
<div class="content-wrapper" v-if="dataSource.length > 0">
|
||||
<div class="content-item" v-for="item in dataSource" :key="item.id" @click="handleToDetail(item)">
|
||||
<a-tooltip placement="top">
|
||||
<template slot="title">{{item.prcName}}</template>
|
||||
<p>{{ item.prcName }}</p>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<a-list :data-source="[]" v-else></a-list>
|
||||
</a-spin>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getTodoList } from '@api/dashboard'
|
||||
|
||||
export default {
|
||||
name: 'ToDoTaskCard',
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
// 数据
|
||||
dataSource: []
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.getTodoTask()
|
||||
},
|
||||
methods: {
|
||||
// 获取待办任务
|
||||
getTodoTask () {
|
||||
this.loading = true
|
||||
getTodoList().then(res => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result.records || []
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 跳转待办详情
|
||||
handleToDetail (record) {
|
||||
let path = ''
|
||||
// 跳转到对应流程页面
|
||||
switch (record.prcType + '') {
|
||||
// 标准法规入库/变更流程
|
||||
case '1':
|
||||
path = '/workCenter/StandardEntryOrChangeProcess'
|
||||
break
|
||||
// 标准征求意见流程
|
||||
case '2':
|
||||
path = '/workCenter/StandardConsultationProcess'
|
||||
break
|
||||
// 项目合规评估流程
|
||||
case '3':
|
||||
path = '/workCenter/ProjectComplianceEvaluationProcess'
|
||||
break
|
||||
// 未符合项跟踪流程
|
||||
case '4':
|
||||
path = '/workCenter/NoMatchTrackingProcess'
|
||||
break
|
||||
// 法规合规评估流程
|
||||
case '5':
|
||||
path = '/workCenter/StandardComplianceProcess'
|
||||
break
|
||||
// 法规采购流程
|
||||
case '6':
|
||||
path = '/workCenter/StandardProcurementProcess'
|
||||
break
|
||||
// 企标立项、变更计划
|
||||
case '7':
|
||||
path = '/workCenter/enterpriseStandardInitChange/planApprovalChangeFlow'
|
||||
break
|
||||
// 年度制修订计划(各部门主动上报)
|
||||
case '8':
|
||||
path = '/workCenter/annualRevisionPlanActivelyReport/revisionPlanActivelyReportFlow'
|
||||
break
|
||||
// 年度制修订计划(标准化发起)
|
||||
case '9':
|
||||
path = '/workCenter/annualRevisionPlanStandardizationInit/revisionPlanStandardizationInitFlow'
|
||||
break
|
||||
// 企标制修订流程
|
||||
case '10':
|
||||
path = '/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow'
|
||||
break
|
||||
// 企标更改流程
|
||||
case '11':
|
||||
path = '/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow'
|
||||
break
|
||||
// 企标复审流程
|
||||
case '12':
|
||||
path = '/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow'
|
||||
break
|
||||
// 企标废止流程
|
||||
case '13':
|
||||
path = '/workCenter/enterpriseStandardAnnul/enterpriseStandardAnnulFlow'
|
||||
break
|
||||
// 企标封存流程
|
||||
case '14':
|
||||
path = '/workCenter/enterpriseStandardSealSave/enterpriseStandardSealSaveFlow'
|
||||
break
|
||||
// 已封存企标启用流程
|
||||
case '15':
|
||||
path = '/workCenter/enterpriseStandardStartUse/enterpriseStandardStartUseFlow'
|
||||
break
|
||||
// 企标稽查计划
|
||||
case '16':
|
||||
path = '/workCenter/EnterpriseStandardInspectionPlan'
|
||||
break
|
||||
// 企标稽查流程
|
||||
case '17':
|
||||
path = '/workCenter/EnterpriseStandardInspectionProcess'
|
||||
break
|
||||
// 稽查延期申请流程
|
||||
case '18':
|
||||
path = '/workCenter/InspectionExtensionRequestProcess'
|
||||
break
|
||||
// 企标稽查整改
|
||||
case '19':
|
||||
path = '/workCenter/EnterpriseStandardInspectionRectification'
|
||||
break
|
||||
// 权限申请流程
|
||||
case '20':
|
||||
path = '/workCenter/PermissionApplicationProcess'
|
||||
break
|
||||
// 标准宣贯流程
|
||||
case '21':
|
||||
path = '/workCenter/StandardPromotionProcess'
|
||||
break
|
||||
// 会后管理流程
|
||||
case '22':
|
||||
path = '/workCenter/PostMeetingManageProcess'
|
||||
break
|
||||
// 如果都没找到不用跳转
|
||||
default:
|
||||
return
|
||||
}
|
||||
this.$router.push({
|
||||
path: path,
|
||||
query: {
|
||||
projectId: record.projectId,
|
||||
taskName: record.taskName,
|
||||
taskId: record.taskId, // 任务id
|
||||
processInstanceId: record.processInstanceId, // 流程实例id,必须传人员信息右侧表格查询需要用
|
||||
nodeId: record.nodeId // 节点的id
|
||||
}
|
||||
})
|
||||
},
|
||||
// 更多:跳转待办
|
||||
handleMore () {
|
||||
this.$router.push({
|
||||
path: '/workCenter/processCenter/processCenter'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.content-wrapper {
|
||||
margin-top: 10px;
|
||||
height: calc(100vh - 346px - 200px);
|
||||
overflow-y: auto;
|
||||
|
||||
.content-item {
|
||||
cursor: pointer;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-family: PingFang SC, PingFang SC, sans-serif;
|
||||
font-weight: 400;
|
||||
color: #1D2129;
|
||||
position: relative;
|
||||
font-size: 16px;
|
||||
line-height: 48px;
|
||||
height: 48px;
|
||||
border-bottom: 1px solid #E5E6EB;
|
||||
text-indent: 18px;
|
||||
}
|
||||
.content-item::before {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
transform: translateY(-50%);
|
||||
display: block;
|
||||
content: '';
|
||||
background-color: #86909C;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1366px) {
|
||||
.content-wrapper {
|
||||
height: calc(100vh - 306px - 200px);
|
||||
|
||||
.content-item {
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user