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:
2024-05-09 10:27:32 +00:00
7 changed files with 296 additions and 66 deletions

View File

@@ -68,7 +68,7 @@ const filterConfig = computed(()=>{
// 搜索功能表单元素默认值 // 搜索功能表单元素默认值
const setDefaultFormValues = () => { const setDefaultFormValues = () => {
filterConfig.value.forEach(item=>{ filterConfig.value.forEach(item=>{
form.value[item.prop] = item.props.defaultValue || null form.value[item.prop] = item.props?.defaultValue || null
}) })
} }

View File

@@ -1,37 +1,37 @@
<template> <template>
<div> <div>
<el-popover <!-- <el-popover-->
:width="300" <!-- :width="300"-->
trigger="click" <!-- trigger="click"-->
placement="bottom" <!-- 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;" <!-- 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> <!-- <template #reference>-->
<el-badge :hidden="total===0" :value="total" class="item"> <!-- <el-badge :hidden="total===0" :value="total" class="item">-->
<el-icon size="22px" style="cursor: pointer"> <!-- <el-icon size="22px" style="cursor: pointer">-->
<Bell/> <!-- <Bell/>-->
</el-icon> <!-- </el-icon>-->
</el-badge> <!-- </el-badge>-->
</template> <!-- </template>-->
<template #default> <!-- <template #default>-->
<div v-if="total===0" style="height: 100px;display: flex;align-items: center;justify-content: center"> <!-- <div v-if="total===0" style="height: 100px;display: flex;align-items: center;justify-content: center">-->
暂无数据~ <!-- 暂无数据~-->
</div> <!-- </div>-->
<ul v-else> <!-- <ul v-else>-->
<li v-for="(notice,index) in noticeList" :key="index"> <!-- <li v-for="(notice,index) in noticeList" :key="index">-->
<span @click="handleToNotifyDetail(notice,index)">{{ notice.noticeTitle }}</span> <!-- <span @click="handleToNotifyDetail(notice,index)">{{ notice.noticeTitle }}</span>-->
<span v-if="notice.state==='0'" @click="handleRead(notice)">已读</span> <!-- <span v-if="notice.state==='0'" @click="handleRead(notice)">已读</span>-->
</li> <!-- </li>-->
</ul> <!-- </ul>-->
<div class="notify-btn"> <!-- <div class="notify-btn">-->
<el-button type="primary" @click="handlePrevious" :disabled="pageInfo.pageNum===1" link>上一页</el-button> <!-- <el-button type="primary" @click="handlePrevious" :disabled="pageInfo.pageNum===1" link>上一页</el-button>-->
<span @click="handleMoreRead">本页已读</span> <!-- <span @click="handleMoreRead">本页已读</span>-->
<el-button type="primary" @click="handleNext" :disabled="pageInfo.pageNum*pageInfo.pageSize>total" link>下一页 <!-- <el-button type="primary" @click="handleNext" :disabled="pageInfo.pageNum*pageInfo.pageSize>total" link>下一页-->
</el-button> <!-- </el-button>-->
</div> <!-- </div>-->
</template> <!-- </template>-->
</el-popover> <!-- </el-popover>-->
<el-dialog width="1200px" title="通知公告详情" v-model="visible" @close="visible=false"> <el-dialog width="1200px" title="通知公告详情" v-model="visible" @close="visible=false">
<el-form :model="viewForm" label-width="100px"> <el-form :model="viewForm" label-width="100px">
<el-row> <el-row>

View File

@@ -6,8 +6,8 @@
<bell-socket/> <bell-socket/>
<div class="user-box"> <div class="user-box">
<div> <div>
<img :src="userInfo.avatar" alt="" @click.stop="handleVisitedP"> <!-- <img :src="userInfo.avatar" alt="" @click.stop="handleVisitedP">-->
<span>{{userInfo.userName}}</span> <span>欢迎回来{{userInfo.userName}}</span>
</div> </div>
<div class="person" v-if="visitedP"> <div class="person" v-if="visitedP">
<ul> <ul>

View File

@@ -107,7 +107,17 @@ export const usePermisstionStroe = defineStore('permisstion', () => {
} }
const removeMenu = () => { const removeMenu = () => {
menuList.value.length = 0 menuList.value = [
{
name: 'home',
path: '/home',
icon: 'home',
title: '首页',
meta: {
breadcrumb: true
}
}
]
asyncRouters.value.length = 0 asyncRouters.value.length = 0
} }

View File

@@ -21,12 +21,12 @@
</el-col> </el-col>
<el-col :xs="24" :sm="8" :md="6" :lg="4" :xl="4"> <el-col :xs="24" :sm="8" :md="6" :lg="4" :xl="4">
<div class="right"> <div class="right">
<div class="right-top"> <!-- <div class="right-top">-->
<h3>欢迎回来 Sunshine</h3> <!-- <h3>欢迎回来 Sunshine</h3>-->
<div>科技创新项目需求征集中 要求参见OA内部信</div> <!-- <div>科技创新项目需求征集中 要求参见OA内部信</div>-->
</div> <!-- </div>-->
<!-- <div class="right-gap"></div>--> <!-- <div class="right-gap"></div>-->
<div class="right-down"> <div class="right-top ">
<div> <div>
<h3>帮助文档</h3> <h3>帮助文档</h3>
<span>查看更多</span> <span>查看更多</span>
@@ -36,6 +36,14 @@
{{ item.title }} {{ item.title }}
</div> </div>
</div> </div>
<div class="right-down">
<div>
<h3>工具下载</h3>
<span>常用网站</span>
</div>
<el-divider/>
</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@@ -103,10 +111,11 @@ const tableConfig = reactive({
align: 'center', align: 'center',
}, },
{ {
prop: 'state', prop: 'type',
label: '状态', label: '类型',
align: 'center', 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', prop: 'createTime',
@@ -119,6 +128,7 @@ const tableConfig = reactive({
fixed: 'right', fixed: 'right',
width: '150', width: '150',
align: 'center', align: 'center',
showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {
return ( return (
<div> <div>
@@ -232,20 +242,20 @@ const headBtnClick = (key) => {
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
.right-top { //.right-top {
h3 { // h3 {
text-align: center; // text-align: center;
margin-bottom: 15px; // margin-bottom: 15px;
} // }
//
div { // div {
color: #909399; // color: #909399;
font-size: 14px; // font-size: 14px;
margin: 0 20px; // margin: 0 20px;
letter-spacing: 1px; // letter-spacing: 1px;
line-height: 25px; // line-height: 25px;
} // }
} //}
.right-top, .right-down { .right-top, .right-down {
flex: 0.5; flex: 0.5;
@@ -254,8 +264,7 @@ const headBtnClick = (key) => {
background-color: #ffffff; background-color: #ffffff;
} }
.right-down,.right-top {
.right-down {
flex: 0.48; flex: 0.48;
> div:first-child { > div:first-child {

View File

@@ -1,13 +1,108 @@
<template> <template>
<div> <fvSearchForm :searchConfig="searchConfig" @search="search"></fvSearchForm>
需求征集 <fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick"></fvTable>
</div>
</template> </template>
<script setup lang="jsx"> <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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>

View File

@@ -1,11 +1,127 @@
<template> <template>
<div> <fvSearchForm :searchConfig="searchConfig"></fvSearchForm>
需求汇总 <fvTable :table-config="tableConfig"></fvTable>
</div>
</template> </template>
<script setup lang="jsx"> <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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>