Merge pull request 'master' (#117) from master into prod
Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/117
This commit is contained in:
@@ -68,7 +68,7 @@ const filterConfig = computed(()=>{
|
||||
// 搜索功能表单元素默认值
|
||||
const setDefaultFormValues = () => {
|
||||
filterConfig.value.forEach(item=>{
|
||||
form.value[item.prop] = item.props.defaultValue || null
|
||||
form.value[item.prop] = item.props?.defaultValue || null
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-popover
|
||||
:width="300"
|
||||
trigger="click"
|
||||
placement="bottom"
|
||||
popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 10px;"
|
||||
>
|
||||
<template #reference>
|
||||
<el-badge :hidden="total===0" :value="total" class="item">
|
||||
<el-icon size="22px" style="cursor: pointer">
|
||||
<Bell/>
|
||||
</el-icon>
|
||||
</el-badge>
|
||||
</template>
|
||||
<template #default>
|
||||
<div v-if="total===0" style="height: 100px;display: flex;align-items: center;justify-content: center">
|
||||
暂无数据~
|
||||
</div>
|
||||
<ul v-else>
|
||||
<li v-for="(notice,index) in noticeList" :key="index">
|
||||
<span @click="handleToNotifyDetail(notice,index)">{{ notice.noticeTitle }}</span>
|
||||
<span v-if="notice.state==='0'" @click="handleRead(notice)">已读</span>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- <el-popover-->
|
||||
<!-- :width="300"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- placement="bottom"-->
|
||||
<!-- popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 10px;"-->
|
||||
<!-- >-->
|
||||
<!-- <template #reference>-->
|
||||
<!-- <el-badge :hidden="total===0" :value="total" class="item">-->
|
||||
<!-- <el-icon size="22px" style="cursor: pointer">-->
|
||||
<!-- <Bell/>-->
|
||||
<!-- </el-icon>-->
|
||||
<!-- </el-badge>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template #default>-->
|
||||
<!-- <div v-if="total===0" style="height: 100px;display: flex;align-items: center;justify-content: center">-->
|
||||
<!-- 暂无数据~-->
|
||||
<!-- </div>-->
|
||||
<!-- <ul v-else>-->
|
||||
<!-- <li v-for="(notice,index) in noticeList" :key="index">-->
|
||||
<!-- <span @click="handleToNotifyDetail(notice,index)">{{ notice.noticeTitle }}</span>-->
|
||||
<!-- <span v-if="notice.state==='0'" @click="handleRead(notice)">已读</span>-->
|
||||
<!-- </li>-->
|
||||
<!-- </ul>-->
|
||||
|
||||
<div class="notify-btn">
|
||||
<el-button type="primary" @click="handlePrevious" :disabled="pageInfo.pageNum===1" link>上一页</el-button>
|
||||
<span @click="handleMoreRead">本页已读</span>
|
||||
<el-button type="primary" @click="handleNext" :disabled="pageInfo.pageNum*pageInfo.pageSize>total" link>下一页
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-popover>
|
||||
<!-- <div class="notify-btn">-->
|
||||
<!-- <el-button type="primary" @click="handlePrevious" :disabled="pageInfo.pageNum===1" link>上一页</el-button>-->
|
||||
<!-- <span @click="handleMoreRead">本页已读</span>-->
|
||||
<!-- <el-button type="primary" @click="handleNext" :disabled="pageInfo.pageNum*pageInfo.pageSize>total" link>下一页-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-popover>-->
|
||||
<el-dialog width="1200px" title="通知公告详情" v-model="visible" @close="visible=false">
|
||||
<el-form :model="viewForm" label-width="100px">
|
||||
<el-row>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<bell-socket/>
|
||||
<div class="user-box">
|
||||
<div>
|
||||
<img :src="userInfo.avatar" alt="" @click.stop="handleVisitedP">
|
||||
<span>{{userInfo.userName}}</span>
|
||||
<!-- <img :src="userInfo.avatar" alt="" @click.stop="handleVisitedP">-->
|
||||
<span>欢迎回来,{{userInfo.userName}}</span>
|
||||
</div>
|
||||
<div class="person" v-if="visitedP">
|
||||
<ul>
|
||||
|
||||
@@ -107,7 +107,17 @@ export const usePermisstionStroe = defineStore('permisstion', () => {
|
||||
}
|
||||
|
||||
const removeMenu = () => {
|
||||
menuList.value.length = 0
|
||||
menuList.value = [
|
||||
{
|
||||
name: 'home',
|
||||
path: '/home',
|
||||
icon: 'home',
|
||||
title: '首页',
|
||||
meta: {
|
||||
breadcrumb: true
|
||||
}
|
||||
}
|
||||
]
|
||||
asyncRouters.value.length = 0
|
||||
}
|
||||
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="8" :md="6" :lg="4" :xl="4">
|
||||
<div class="right">
|
||||
<div class="right-top">
|
||||
<h3>欢迎回来, Sunshine</h3>
|
||||
<div>科技创新项目需求征集中, 要求参见OA内部信!</div>
|
||||
</div>
|
||||
<!-- <div class="right-top">-->
|
||||
<!-- <h3>欢迎回来, Sunshine</h3>-->
|
||||
<!-- <div>科技创新项目需求征集中, 要求参见OA内部信!</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-gap"></div>-->
|
||||
<div class="right-down">
|
||||
<div class="right-top ">
|
||||
<div>
|
||||
<h3>帮助文档</h3>
|
||||
<span>查看更多</span>
|
||||
@@ -36,6 +36,14 @@
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-down">
|
||||
<div>
|
||||
<h3>工具下载</h3>
|
||||
<span>常用网站</span>
|
||||
</div>
|
||||
<el-divider/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -103,10 +111,11 @@ const tableConfig = reactive({
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
prop: 'state',
|
||||
label: '状态',
|
||||
prop: 'type',
|
||||
label: '类型',
|
||||
align: 'center',
|
||||
currentRender: ({row, index}) => (<Tag dictType={'normal_disable'} value={row.state}/>)
|
||||
showOverflowTooltip: false,
|
||||
// currentRender: ({row, index}) => (<Tag dictType={'normal_disable'} value={row.state}/>)
|
||||
},
|
||||
{
|
||||
prop: 'createTime',
|
||||
@@ -119,6 +128,7 @@ const tableConfig = reactive({
|
||||
fixed: 'right',
|
||||
width: '150',
|
||||
align: 'center',
|
||||
showOverflowTooltip: false,
|
||||
currentRender: ({row, index}) => {
|
||||
return (
|
||||
<div>
|
||||
@@ -232,20 +242,20 @@ const headBtnClick = (key) => {
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
.right-top {
|
||||
h3 {
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
div {
|
||||
color: #909399;
|
||||
font-size: 14px;
|
||||
margin: 0 20px;
|
||||
letter-spacing: 1px;
|
||||
line-height: 25px;
|
||||
}
|
||||
}
|
||||
//.right-top {
|
||||
// h3 {
|
||||
// text-align: center;
|
||||
// margin-bottom: 15px;
|
||||
// }
|
||||
//
|
||||
// div {
|
||||
// color: #909399;
|
||||
// font-size: 14px;
|
||||
// margin: 0 20px;
|
||||
// letter-spacing: 1px;
|
||||
// line-height: 25px;
|
||||
// }
|
||||
//}
|
||||
|
||||
.right-top, .right-down {
|
||||
flex: 0.5;
|
||||
@@ -254,8 +264,7 @@ const headBtnClick = (key) => {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
|
||||
.right-down {
|
||||
.right-down,.right-top {
|
||||
flex: 0.48;
|
||||
|
||||
> div:first-child {
|
||||
|
||||
@@ -1,13 +1,108 @@
|
||||
<template>
|
||||
<div>
|
||||
需求征集
|
||||
</div>
|
||||
<fvSearchForm :searchConfig="searchConfig" @search="search"></fvSearchForm>
|
||||
<fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick"></fvTable>
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
|
||||
import Tag from '@/components/Tag.vue'
|
||||
|
||||
const router = useRouter()
|
||||
const searchConfig = reactive([
|
||||
{
|
||||
label: '名称',
|
||||
prop: 'roleName',
|
||||
component: 'el-input',
|
||||
props: {
|
||||
placeholder: '请输入名称查询',
|
||||
clearable: true
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '状态',
|
||||
prop: 'state',
|
||||
component: shallowRef(fvSelect),
|
||||
props: {
|
||||
placeholder: '请选择',
|
||||
clearable: true,
|
||||
cacheKey: 'normal_disable'
|
||||
}
|
||||
}
|
||||
])
|
||||
const tableIns = ref()
|
||||
const auths = {
|
||||
edit: ['admin:role:edit'],
|
||||
add: ['admin:role:add'],
|
||||
export: ['admin:role:export'],
|
||||
}
|
||||
|
||||
const tableConfig = reactive({
|
||||
columns: [
|
||||
{
|
||||
type: 'selection',
|
||||
prop: 'selection'
|
||||
},
|
||||
{
|
||||
prop: 'roleName',
|
||||
label: '名称',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'roleKey',
|
||||
label: '所属公司',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'time',
|
||||
label: '发布时间',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'state',
|
||||
label: '状态',
|
||||
align: 'center',
|
||||
showOverflowTooltip: false,
|
||||
currentRender: ({row, index}) => (<Tag dictType={'normal_disable'} value={row.state}/>)
|
||||
},
|
||||
{
|
||||
prop: 'oper',
|
||||
label: '操作',
|
||||
align: 'center',
|
||||
showOverflowTooltip: false,
|
||||
currentRender: ({row, index}) => {
|
||||
return (
|
||||
<div>
|
||||
<el-button type={'primary'} link onClick={()=>{}}>详情</el-button>
|
||||
<el-button type={'primary'} link onClick={()=>{}}>上报</el-button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
],
|
||||
api: '',
|
||||
btns: [
|
||||
{name: '新增', key: 'add', auth: auths.add, type: 'primary'},
|
||||
{name: '导出', key: 'add', auth: auths.add, type: 'primary'},
|
||||
],
|
||||
params: {}
|
||||
})
|
||||
|
||||
const search = (val) => {
|
||||
tableConfig.params = {...val}
|
||||
tableIns.value.refresh()
|
||||
}
|
||||
const headBtnClick = (key) => {
|
||||
switch (key) {
|
||||
case 'add':
|
||||
handleAdd()
|
||||
break;
|
||||
case 'export':
|
||||
handleExport()
|
||||
break;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -1,11 +1,127 @@
|
||||
<template>
|
||||
<div>
|
||||
需求汇总
|
||||
</div>
|
||||
<fvSearchForm :searchConfig="searchConfig"></fvSearchForm>
|
||||
<fvTable :table-config="tableConfig"></fvTable>
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
import { reactive, shallowRef } from 'vue';
|
||||
import fvSelect from './../../../fvcomponents/fvSelect/index.vue'
|
||||
|
||||
const localData = reactive({
|
||||
// 表格配置
|
||||
|
||||
})
|
||||
|
||||
const searchConfig = reactive([
|
||||
{
|
||||
label: '名称',
|
||||
prop: 'name',
|
||||
component: 'el-input',
|
||||
colProps: {}
|
||||
},
|
||||
{
|
||||
label: '项目类型',
|
||||
prop: 'projectType',
|
||||
component: shallowRef(fvSelect),
|
||||
props: {},
|
||||
colProps: {}
|
||||
},
|
||||
{
|
||||
label: '研发主体',
|
||||
prop: 'productMainBody',
|
||||
component: shallowRef(fvSelect),
|
||||
props: {},
|
||||
colProps: {}
|
||||
},
|
||||
{
|
||||
label: '项目影响',
|
||||
prop: 'projectEffect',
|
||||
component: shallowRef(fvSelect),
|
||||
props: {},
|
||||
colProps: {}
|
||||
},
|
||||
{
|
||||
label: '起止时间',
|
||||
prop: 'time',
|
||||
component: 'el-date-picker',
|
||||
props: {},
|
||||
colProps: {}
|
||||
},
|
||||
{
|
||||
label: '最小金额',
|
||||
prop: 'minMoney',
|
||||
component: 'el-input',
|
||||
colProps: {}
|
||||
},
|
||||
{
|
||||
label: '最大金额',
|
||||
prop: 'maxMoney',
|
||||
component: 'el-input',
|
||||
colProps: {}
|
||||
},
|
||||
])
|
||||
|
||||
const tableConfig = reactive({
|
||||
columns: [
|
||||
{
|
||||
type: 'selection',
|
||||
prop: 'selection'
|
||||
},
|
||||
{
|
||||
prop: 'name',
|
||||
label: '名称',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'company',
|
||||
label: '所属公司',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'projectType',
|
||||
label: '项目类型',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'productMainBody',
|
||||
label: '研发主体',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'projectEffect',
|
||||
label: '项目影响',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'survey',
|
||||
label: '经营概况',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'time',
|
||||
label: '起止时间',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'status',
|
||||
label: '发布状态',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'oper',
|
||||
label: '操作',
|
||||
align: 'center',
|
||||
currentRender: ({row, index}) => {
|
||||
return (
|
||||
<div>
|
||||
<el-button type={'primary'} link onClick={()=>{}}>详情</el-button>
|
||||
<el-button type={'primary'} link onClick={()=>{}}>上报</el-button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
Reference in New Issue
Block a user