Compare commits

..

17 Commits

Author SHA1 Message Date
a0049873 14f660a532 Merge branch 'hi-ucs-dev' into release
# Conflicts:
#	front/public/static/config/basicConfig.js
2023-01-13 11:22:38 +08:00
a0049873 654e76e352 添加运维管理员 权限 2023-01-13 09:44:32 +08:00
gongjiale ddf78f3b6b no message 2023-01-12 16:52:35 +08:00
wangwei 9dd4399f80 后台管理系统-能力统计-能力使用统计-查看详情bug 2023-01-12 15:28:54 +08:00
wangwei ed499a6886 后台管理系统-能力统计-能力使用统计-查看详情bug 2023-01-12 15:19:03 +08:00
gongjiale 20e237ff6a Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2023-01-12 14:00:56 +08:00
gongjiale 23196b42a1 提交修改 2023-01-12 14:00:46 +08:00
wangwei 6e5de0544b 融合服务增加重置按钮。 2023-01-12 10:56:34 +08:00
a0049873 3f19913e5a 样式 2023-01-10 18:29:39 +08:00
a0049873 b057d781ef 评价修改 2023-01-10 18:25:12 +08:00
a0049873 1425e5c635 评价需求修改 2023-01-10 18:23:18 +08:00
a0049873 d5b2125f39 评价功能开发 2023-01-10 17:51:20 +08:00
a0049873 ea66cc2228 BUG修改 2023-01-10 14:08:47 +08:00
gongjiale bc5ee885e0 添加默认图片 2023-01-10 13:56:56 +08:00
gongjiale 3906b9ea0f 提交代码 2023-01-10 12:09:53 +08:00
gongjiale 31f3c10abb Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2023-01-10 11:19:32 +08:00
gongjiale 054e538477 提交区市 2023-01-10 11:19:23 +08:00
17 changed files with 1014 additions and 161 deletions

View File

@ -373,7 +373,7 @@ export default {
this.$nextTick(() => {
for (const key in this.refsParseArray) {
console.log('11111111111', data)
this.$refs[key] && this.$refs[key].getDataInfo && this.$refs[key].getDataInfo(data)
this.$refs[key] && this.$refs[key].IntegratedServicesGetDataInfo && this.$refs[key].IntegratedServicesGetDataInfo(data)
}
const _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {}
this.imageUrl = _imgObj.attrValue
@ -387,7 +387,7 @@ export default {
// })
// console.log('2', arr2)
// this.abilityListObj[k] = arr2
this.$refs['abilityAdd' + (index + 1)].getDataInfo(data)
this.$refs['abilityAdd' + (index + 1)].IntegratedServicesGetDataInfo(data)
})
console.log('this.dataForm----详情-------->', this.dataForm)

View File

@ -90,7 +90,7 @@ export default {
areaVisible: {
handler (newVal) {
this.getSceneArea()
this.getArea()
// this.getArea()
this.areaVisibleCopy = newVal
if (this.modalType == 'add' && newVal) {
this.getDetail(this.dataForm)
@ -112,7 +112,8 @@ export default {
data () {
return {
areas: [], //
areas: [{'name':'市南区'},{'name':'市北区'},{'name':'李沧区'},{'name':'崂山区'},{'name':'西海岸新区'},
{'name':'城阳区'},{'name':'即墨区'},{'name':'胶州市'},{'name':'平度市'},{'name':'莱西市'}], //
sceneAreas: [],
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
dataForm: {

View File

@ -1,6 +1,7 @@
<template>
<div>
<div class="info-title">{{ title }}</div>
<el-form :inline="true">
<el-form-item label="使用总数">
<el-input
@ -140,6 +141,35 @@ export default {
this.dataInfo.splice(row, 1)
},
getDataInfo (dataForm) {
let arr = []
if (dataForm && (dataForm.id || dataForm.id === 0)) {
if (this.title === '基础设施') {
this.count = dataForm.infrastructureCount
}
if (this.title === '组件服务') {
this.count = dataForm.componentCount
}
if (this.title === '数据资源') {
this.count = dataForm.dataSourceCount
}
const fuseAttrList = dataForm.fuseAttrList || []
const obj = fuseAttrList.find((v) => v.attrType === this.title) || {}
const attrValue = JSON.parse(obj.attrValue || '[]')
if (attrValue.length > 0) {
attrValue.map((v) => {
arr.push(v)
})
} else {
arr = []
}
} else {
arr = []
}
this.dataInfo = arr
},
IntegratedServicesGetDataInfo (dataForm) {
let arr = []
if (dataForm && (dataForm.id || dataForm.id === 0)) {
if (this.title === '基础设施') {

View File

@ -177,6 +177,7 @@ export default {
},
//
addServe () {
debugger
// this.addOrUpdateVisible = true
this.modalType = 'add'
if (this.choose === 0) {

View File

@ -629,8 +629,11 @@ export default {
})
} else if (this.departmentId === 4) { // 使
this.detailType = '能力使用'
const params = {
resourceDeptName:row.resourceDeptName
}
this.$http
.get('/processForm/tabilityapplication/getByApplyFlag/' + applyNumber)
.get('/processForm/tabilityapplication/getByApplyFlag/' + applyNumber,{params})
.then((res) => {
if (res.data.code == 0) {
if (res.data.data != null) {

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2023-01-05 09:23:54
* @LastEditors: Light
* @LastEditTime: 2023-01-13 11:22:30
* @Description: 系统静态参数配置
*/
var _global = {}

View File

@ -379,3 +379,37 @@ export function treminders(data) {
data,
})
}
//
export function pageForScore(params) {
return request({
url: '/processForm/tabilityapplication/page_for_score',
method: 'get',
params,
})
}
//
export function resourcescoreInsert(data) {
return request({
url: '/resourcescore/insert',
method: 'post',
data,
})
}
//
export function resourcescoreUpdate(data) {
return request({
url: '/resourcescore/update',
method: 'put',
data,
})
}
//
export function resourcescoreSelect(data) {
return request({
url: '/resourcescore/select/' + data,
method: 'get',
data,
})
}

View File

@ -21,12 +21,14 @@
<a-tooltip>
<template #title>
{{
approveStatus === '通过'
approveStatus === '通过' || role
? item.link.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
<span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.link.value }}
</span>
</a-tooltip>

View File

@ -16,7 +16,7 @@
<template #title>
{{ approveStatus === '通过' ? dataFrom.link : '请申请后查看' }}
</template>
<p :class="{ 'blur-word': approveStatus !== '通过' }">
<p :class="{ 'blur-word': approveStatus !== '通过' && !role }">
{{ dataFrom.link }}
</p>
</a-tooltip>

View File

@ -6,7 +6,7 @@
<div class="caseBox" v-for="(item, index) in caseList" :key="index" @click="toView(item)">
<a-image :preview="false" style="width:300px;height:200px" :src="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue
.attrValue || imgSrcYyzy
" />
<h3>{{ item.name }}</h3>
<p>发布时间 {{ item.createDate }}</p>
@ -30,7 +30,7 @@ const props = defineProps({
default: '组件服务',
},
})
const imgSrcYyzy = ref(require('@/assets/home/fn/cjtd.png'))
const orderArray = ref([
{
value: 'create_date',

View File

@ -195,7 +195,7 @@
flex-direction: column;
justify-content: space-between;
}
.detail-content {
/* .detail-content {
margin-top: 90px;
}
} */
</style>

View File

@ -61,6 +61,16 @@
>
重置
</a-button> -->
</div>
<div class="order">
申请时间
<span @click="changeOrder(orderType) "
class="arrow" :class="
orderType == 'ASC'
? 'down'
: ''
"></span>
</div>
</div>
<div v-if="roomYuyue">
@ -114,6 +124,7 @@
{{ item.description }}
</a-tooltip> -->
</div>
<div style="font-size:14px;margin-top:40px">申请量{{item.applyCount}}</div>
</div>
<a-button
style="
@ -976,6 +987,7 @@
const fileList = ref([])
const useForm = Form.useForm
const roomInput = ref('')
let orderType = ref('ASC')
const rulesRef = reactive({
bookDate: [
{
@ -1059,6 +1071,7 @@
let roomStr = router.currentRoute.value.query.str
if (roomStr) {
roomInput.value = roomStr
getCamera()
}
//
@ -1198,7 +1211,16 @@
tabList.value[0].content.push('无人机')
tabList.value[0].content.push('单兵设备')
}
//
const changeOrder = (type) => {
if(type == 'DESC'){
type='ASC'
}else{
type = 'DESC'
}
orderType.value = type
searchData()
}
//
const rowClickData = ref(null)
//
@ -1268,6 +1290,7 @@
page: roomPage.value,
limit: roomLimit.value,
roomName: roomInput.value,
}
getYuyue(query).then(({ data: res }) => {
dataRoom.value = res.data.list
@ -1584,6 +1607,8 @@
name: roomInput.value, //
page: roomPage.value, //
limit: roomLimit.value, //
orderField: "applyCount",
orderType: orderType.value
}
getRoomSearch(query).then(({ data: res }) => {
roomList.value = res.data.list
@ -2786,7 +2811,21 @@
.roomSearch {
display: flex;
align-items: center;
.order{
margin-left: 629px;
.arrow {
display: inline-block;
width: 12px;
height: 12px;
background: url('~@/assets/newHome/arrow.png');
margin-left: 10px;
}
.down {
background: url('~@/assets/newHome/down.png');
margin-top: 6px;
}
}
.searchInput {
display: flex;
margin-right: 0.2rem;

View File

@ -31,7 +31,7 @@
<a-input-search v-model:value="searchValue" placeholder="请输入关键字" enter-button="搜索" size="large"
@search="getIntegrationList" @change="onSearch" class="resultListSearchInput" />
<i class="searchImg" aria-hidden="true"></i>
<!-- <button class="button-reset" @click="resetAction()">重置</button> -->
<button class="button-reset" @click="resetAction()">重置</button>
</div>
<div>
@ -119,8 +119,8 @@ export default defineComponent({
//
const loading = ref(true)
const currentPage = ref(1)
const currentPageSize = ref(10)
const pageSizeOptions = ref(['2', '5', '10', '20', '50'])
const currentPageSize = ref(9)
const pageSizeOptions = ref(['3', '6', '9', '18', '27'])
const router = useRouter()
const select = router.currentRoute.value.query.select
const returnType = router.currentRoute.value.query.returnType
@ -156,7 +156,8 @@ export default defineComponent({
}
let cityOrArea = ref(0)//0 1
let senses = ref([])//
let areas = ref([])//
let areas = ref([{'name':'市南区'},{'name':'市北区'},{'name':'李沧区'},{'name':'崂山区'},{'name':'西海岸新区'},
{'name':'城阳区'},{'name':'即墨区'},{'name':'胶州市'},{'name':'平度市'},{'name':'莱西市'}])//
let clickSensesList = ref([])//
let clickAreasList = ref([])//
const searchResultListDom = ref(null)
@ -170,7 +171,8 @@ export default defineComponent({
//
searchValue.value = storageSearchInfo.name
currentPage.value = storageSearchInfo.page
currentPageSize.value = storageSearchInfo.limit
// currentPageSize.value = storageSearchInfo.limit
currentPageSize.value = 9
paramsGetResources.limit = storageSearchInfo.limit
paramsGetResources.page = storageSearchInfo.page
paramsGetResources.type = storageSearchInfo.type
@ -230,12 +232,14 @@ export default defineComponent({
searchValue.value = ''
//
currentPage.value = 1
currentPageSize.value = 10
currentPageSize.value = 9
//
paramsGetResources.page = 1
paramsGetResources.limit = 10
paramsGetResources.limit = 9
paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC'
clickSensesList.value=[]
clickAreasList.value=[]
mybus.emit('resetAction', {
type: titleName.value[number.value].name,
})
@ -254,11 +258,11 @@ export default defineComponent({
const params1 = {
pid: '250000'
}
getRegion(params1).then(
(res) => {
// getRegion(params1).then(
// (res) => {
areas.value = res.data.data
})
// areas.value = res.data.data
// })
}
//
@ -622,7 +626,7 @@ export default defineComponent({
//color: #0087ff;
color: #fff;
line-height: 0.32rem;
margin-left: 2.5rem;
margin-left: 1.74rem;
cursor: pointer;
}
@ -660,7 +664,7 @@ export default defineComponent({
.pagination {
background: #f3f5f9;
padding-top: 10px;
padding-bottom: 23px;
padding-bottom: 23px;
}

View File

@ -297,7 +297,7 @@
const returnType = router.currentRoute.value.query.type
const districtType = router.currentRoute.value.query.districtType
const hiddenBackFlag = router.currentRoute.value.query.hiddenBackFlag
const imgSrcYyzy = ref(require('@/assets/newHome/empty.png'))
const imgSrcYyzy = ref(require('@/assets/home/fn/cjtd.png'))
document.documentElement.style.transition = 'all 0.3s ease'
document.documentElement.scrollTop = 0
document.body.style.transition = 'all 0.3s ease'

View File

@ -0,0 +1,711 @@
<template>
<div class="on-the-right-side-of-the-list">
<div class="title" style="margin-bottom: 0.2rem">能力评价</div>
<!--类型-->
<div class="top-title" v-show="chooseTab == 0">
<div
v-for="(item, index) in typeList"
:key="index"
:class="index === typeIndex ? 'sel' : ''"
@click="changeType(item, index)"
>
<span
class="photo"
:style="{
backgroundImage: `url(${item.photo}) `,
backgroundSize: 'cover',
}"
></span>
<span>
{{ item.name }}
</span>
</div>
</div>
<div v-if="contentList.data.length > 0">
<div class="content">
<div
class="content-body"
v-for="item in contentList.data"
:key="item.index"
>
<a-tooltip>
<template #title>
{{ item.system }}
</template>
<div class="content-body-title">
<span>{{ item.system }}</span>
<div></div>
</div>
</a-tooltip>
<div class="description">
<span>描述{{ item.description || '--' }}</span>
<div></div>
</div>
<div class="content-body-content" style="display: flex">
<div style="margin-right: 20px">
申请日期{{ item.createDate }}
</div>
<div style="margin-right: 20px">类型{{ item.resourceTYpe }}</div>
<div>提供单位{{ item.resourceDept }}</div>
</div>
<div class="button-box">
<div class="button" @click="showDetail(item)">查看详情</div>
<div
class="button"
@click="showEvaluate(item, '评价')"
v-if="typeName === '待评价' && item.approveStatus === '通过'"
>
评价
</div>
<div
class="button"
@click="showEvaluate(item, '修改')"
v-else-if="typeName === '已评价'"
>
修改
</div>
</div>
</div>
</div>
<div class="bottom">
<a-pagination
size="small"
pageSize="4"
:total="total"
:current="page"
:showTotal="(total) => `共 ${total} 项`"
@change="handleCurrentChange"
:showSizeChanger="false"
/>
</div>
</div>
<div style="height: 640px; background: #fff; padding-top: 200px" v-else>
<a-empty />
</div>
<a-modal
v-model:visible="visible"
width="30%"
:title="type"
@ok="handleOk"
@cancel="handleCancel"
:maskClosable="false"
>
<div class="modal">
<a-form
ref="formRef"
:model="fromData"
name="formRef"
:label-col="{ span: 6 }"
:wrapper-col="{ span: 18 }"
autocomplete="off"
>
<a-form-item
label="综合评价"
name="score"
:rules="[{ required: true, message: '请填写综合评价!' }]"
>
<a-rate v-model:value="fromData.score" />
</a-form-item>
<a-form-item
v-if="resourceTYpe === '应用资源'"
label="产品质量"
name="qualityScore"
:rules="[{ required: true, message: '请填写产品质量!' }]"
>
<a-rate v-model:value="fromData.qualityScore" />
</a-form-item>
<a-form-item
v-else-if="resourceTYpe === '智能算法'"
label="算法准确度"
name="algorithmExactScore"
:rules="[{ required: true, message: '请填写算法准确度!' }]"
>
<a-rate v-model:value="fromData.algorithmExactScore" />
</a-form-item>
<a-form-item
v-else
label="组件服务质量"
name="assemblyQualityScore"
:rules="[{ required: true, message: '请填写组件服务质量!' }]"
>
<a-rate v-model:value="fromData.assemblyQualityScore" />
</a-form-item>
<a-form-item
label="评价内容"
name="comment"
:rules="[{ required: true, message: '请填写评价内容!' }]"
>
<a-textarea
v-model:value="fromData.comment"
placeholder="请输入评价内容"
:auto-size="{ minRows: 3, maxRows: 3 }"
/>
</a-form-item>
</a-form>
<!-- <div>
<span>综合评价</span>
<a-rate v-model:value="fromData.score" />
</div>
<div v-if="resourceTYpe === '应用资源'">
<span>产品质量</span>
<a-rate v-model:value="fromData.qualityScore" />
</div>
<div v-else-if="resourceTYpe === '智能算法'">
<span>算法准确度</span>
<a-rate v-model:value="fromData.algorithmExactScore" />
</div>
<div v-else>
<span>组件服务质量</span>
<a-rate v-model:value="fromData.assemblyQualityScore" />
</div>
<div>
<span>评价内容</span>
<a-textarea
v-model:value="fromData.comment"
placeholder="请输入评价内容"
:auto-size="{ minRows: 3, maxRows: 3 }"
/>
</div> -->
</div>
</a-modal>
</div>
</template>
<script setup>
import { onMounted, reactive, ref, defineProps } from 'vue'
import { useRouter } from 'vue-router'
import { getUserInfo } from '@/api/user'
import {
pageForScore,
resourcescoreInsert,
resourcescoreUpdate,
resourcescoreSelect,
} from '@/api/personalCenter'
import { message } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
import * as moment from 'moment'
const props = defineProps({
tabTypeName: { type: String, default: '' },
})
const router = useRouter()
const userName = ref('')
getUserInfo().then((res) => {
userName.value = res.data.data.username
})
const formState = ref({ name: '' })
//Tab
let chooseTab = ref(0)
let typeList = ref([
{
photo: require('@/assets/newHome/nengli1.png'),
name: '待评价',
},
{
photo: require('@/assets/newHome/nengli2.png'),
name: '已评价',
},
])
const contentList = reactive({ data: [] })
let tabIndex = ref(0)
let typeIndex = ref(0)
let typeName = ref('待评价')
if (router.currentRoute.value.query.tabTypeName) {
typeName.value = router.currentRoute.value.query.tabTypeName
}
const numFlag = ref(true)
const num = ref({
finished: 0,
unfinished: 0,
})
const total = ref('')
const showType = ref('')
const page = ref('1')
const ended = ref('')
//
const changeType = (item, index) => {
contentList.data = []
formState.value.name = ''
numFlag.value = true
num.value = []
showType.value = ''
tabIndex.value = 0
ended.value = ''
page.value = 1
typeIndex.value = index
typeName.value = item.name
getApplyList()
}
const getApplyList = () => {
pageForScore({
page: page.value,
limit: 4,
score: typeName.value === '已评价',
}).then((res) => {
console.log('评分列表', res.data.data)
contentList.data = res.data.data.list
total.value = res.data.data.total
})
}
const handleCurrentChange = (val) => {
console.log('切换', val)
page.value = val
getApplyList()
}
const showDetail = (item) => {
if (typeName.value === '待评价' && item.approveStatus !== '通过') {
mybus.emit('selectMenu', {
title: '我的申请',
img: require('@/assets/personalCenter/apply.png'),
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
})
} else {
console.log(item)
const detailPage = router.resolve({
path: '/details', //
query: {
id: item.resourceId,
hiddenBackFlag: true,
},
})
window.open(detailPage.href, '_blank')
}
}
//
const formRef = ref()
const visible = ref(false)
const type = ref('')
const resourceTYpe = ref('')
const fromData = ref({
resourceId: '',
score: null,
qualityScore: null,
algorithmExactScore: null,
assemblyQualityScore: null,
comment: '',
})
const showEvaluate = (item, str) => {
type.value = str
resourceTYpe.value = item.resourceTYpe
fromData.value.resourceId = item.resourceId
if (str === '修改') {
resourcescoreSelect(item.resourceId).then((res) => {
fromData.value.id = res.data.data.id
fromData.value.score = res.data.data.score
fromData.value.qualityScore = res.data.data.qualityScore
fromData.value.algorithmExactScore = res.data.data.algorithmExactScore
fromData.value.assemblyQualityScore = res.data.data.assemblyQualityScore
fromData.value.comment = res.data.data.comment
visible.value = true
})
} else {
visible.value = true
}
}
const handleOk = () => {
console.log(fromData.value, type.value)
formRef.value.validate().then(() => {
if (type.value === '评价') {
resourcescoreInsert(fromData.value).then((res) => {
if (res.data.code != 0) {
message.warning('评价失败!')
return
}
message.success('评价成功!')
handleCancel()
page.value = 1
getApplyList()
})
} else {
resourcescoreUpdate(fromData.value).then((res) => {
if (res.data.code != 0) {
message.warning('评价失败!')
return
}
message.success('评价成功!')
handleCancel()
page.value = 1
getApplyList()
})
}
})
}
const handleCancel = () => {
visible.value = false
fromData.value = {
resourceId: '',
score: null,
qualityScore: null,
algorithmExactScore: null,
assemblyQualityScore: null,
comment: '',
}
}
onMounted(() => {
getApplyList()
if (props.tabTypeName) {
let _index = typeList.value.findIndex((v) => v == props.tabTypeName)
changeType(props.tabTypeName, _index != -1 ? _index : 0)
}
})
</script>
<style scoped lang="less">
.top-title {
background: #fff;
display: flex;
justify-content: flex-start;
align-items: center;
font-size: 18px;
font-family: 'Alibaba PuHuiTi';
color: #000000;
line-height: 0.34rem;
margin-bottom: 0.2rem;
.photo {
display: inline-block;
height: 28px;
width: 28px;
margin-right: 0.1rem;
}
div {
padding: 0 0.4rem;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
width: 25%;
}
div:hover {
color: #0058e1;
}
.sel {
font-weight: 600;
color: #0058e1;
border-bottom: 0.024rem solid #0058e1;
}
}
.queryButton {
background: #0058e1;
width: 80px;
height: 32px;
margin-left: 20px;
border: 1px solid #0058e1;
border-radius: 2px;
color: #fff;
}
.on-the-right-side-of-the-list {
background: #fff;
padding: 20px 0px 30px 20px;
position: absolute;
width: 1087px;
height: 810px;
top: 0px;
display: flex;
margin-top: 20px;
flex-direction: column;
font-size: 16px;
justify-content: left;
.second-title {
background: #f4f5f8;
margin-left: 100px;
margin-top: 30px;
// margin-bottom: 22px;
font-size: 18px;
cursor: pointer;
text-align: center;
background: #fff;
width: 820px;
height: 40px;
line-height: 40px;
display: table;
border-top: 1px solid #d9d9d9;
border-bottom: 1px solid #d9d9d9;
}
.second-title div {
border-right: 1px solid #d9d9d9;
}
.second-title div:first-child {
border-left: 1px solid #d9d9d9;
}
.chooseStyle {
display: table-cell;
width: 200px;
color: #fff;
border: 1px solid #0058e1;
background-color: #0058e1;
}
.noChooseStyle {
display: table-cell;
width: 200px;
}
.title {
font-size: 20px;
color: #000000;
font-family: 'Alibaba PuHuiTi';
font-weight: 500;
}
.sousuokuang {
margin: 20px 0px 21px 0px;
.ant-input-search {
max-width: 490px;
}
:deep(.ant-input) {
width: 400px;
height: 36px;
font-size: 14px;
color: #b2b2b2;
background: #f5f5f5;
}
:deep(.ant-input-group-addon) {
display: inline-block;
margin-left: 10px;
.ant-input-search-button {
width: 80px;
height: 36px;
border-radius: 4px;
font-size: 14px;
}
}
}
.tab {
display: flex;
font-size: 16px;
margin-left: 16px;
display: flex;
padding-top: 24px;
//margin-left: 16px;
border-bottom: 1px solid #0058e1;
div {
background: #eeeff1;
height: 40px;
width: 180px;
line-height: 40px;
border-radius: 2px;
text-align: center;
cursor: pointer;
color: #212121;
border-left: 1px solid #dddee1;
}
.tabclass {
background: #fff;
border-left: 1px solid #0087ff;
border-right: 1px solid #0087ff;
border-top: 1px solid #0087ff;
}
}
.content-cloud {
padding: 0px 10px;
overflow-y: scroll;
height: 658px;
background: #fff;
margin-left: 16px;
.content-cloud-body {
margin-bottom: 10px;
height: 100px;
height: 100px;
margin-bottom: 10px;
border-bottom: 1px solid #cccccc;
.content-body-left {
width: 85%;
float: left;
.content-body-left-one {
display: table;
height: 50px;
width: 80%;
div {
display: table-cell;
width: 50%;
font-size: 14px;
}
}
.content-body-left-two {
width: 80%;
height: 50px;
display: table;
div {
display: table-cell;
width: 30%;
font-size: 14px;
}
}
}
.content-body-right {
width: 15%;
float: left;
}
}
}
.content {
margin-left: 16px;
padding-left: 12px;
padding-right: 10px;
height: 610px;
overflow-y: scroll;
background: #fff;
.content-body {
padding-bottom: 10px;
padding-top: 10px;
margin-right: 10px;
height: 130px;
border-bottom: #cccccc 1px solid;
position: relative;
.content-body-title {
min-width: 100px;
max-width: 900px;
width: fit-content;
font-size: 18px;
color: #333333;
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.description {
min-width: 100px;
max-width: 900px;
font-size: 14px;
height: 40px;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.content-body-content {
margin-top: 10px;
margin-bottom: 10px;
margin-right: 40px;
/* width: 720px; */
display: inline-block;
}
.content-body-content-son {
line-height: 16px;
font-size: 12px;
width: 100%;
// text-overflow: -o-ellipsis-lastline;
// overflow: hidden;
// text-overflow: ellipsis;
// display: -webkit-box;
// -webkit-line-clamp: 3;
// -webkit-box-orient: vertical;
display: flex;
color: #999999;
span {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
max-width: 8.1rem;
line-height: 24px;
word-break: break-all;
}
}
.content-body-bottom {
display: flex;
color: #cccccc;
font-size: 12px;
div:first-child {
margin-right: 30px;
}
}
}
}
.bottom {
position: absolute;
bottom: 30px;
right: 20px;
}
.button-box {
position: absolute;
right: 20px;
top: 10px;
display: flex;
flex-direction: column;
}
.button {
width: 80px;
height: 32px;
margin: 5px 0;
background: #0058e1;
font-size: 14px;
color: #fff;
border-radius: 1px;
text-align: center;
line-height: 32px;
cursor: pointer;
}
.buttonAgree {
background-color: #49c988;
}
.backToFirst {
background-color: rgb(214, 91, 91);
}
}
:deep(.ant-badge-count) {
top: -5px;
right: -10px;
}
.modal {
& > div {
display: flex;
align-items: center;
margin-bottom: 10px;
& > span {
width: 100px;
}
textarea {
margin-left: 15px;
}
}
}
</style>

View File

@ -1,154 +1,180 @@
<template>
<div id="aside-menu-container">
<a-menu id="aside-menu" v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" mode="inline">
<a-menu-item class="aside-menu-item" v-for="item in menuList" :key="item.key" @click="handleClick(item)">
<i class="icon" :style="{
backgroundImage:
selectedKeys == item.key
? 'url(' + item.imgActive + ')'
: 'url(' + item.img + ')',
}"></i>
<a-menu
id="aside-menu"
v-model:openKeys="openKeys"
v-model:selectedKeys="selectedKeys"
mode="inline"
>
<a-menu-item
class="aside-menu-item"
v-for="item in menuList"
:key="item.key"
@click="handleClick(item)"
>
<i
class="icon"
:style="{
backgroundImage:
selectedKeys == item.key
? 'url(' + item.imgActive + ')'
: 'url(' + item.img + ')',
}"
></i>
<span>{{ item.title }}</span>
</a-menu-item>
</a-menu>
</div>
</template>
<script>
import { defineComponent, ref, onMounted } from 'vue'
import mybus from '@/myplugins/mybus'
import { defineComponent, ref, onMounted, onBeforeUnmount } from 'vue'
import mybus from '@/myplugins/mybus'
export default defineComponent({
components: {},
setup() {
const itShowXiHaiAn = whoShow.itShowXiHaiAn;
const car = {
title: '申购车',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'PurchaseVehicle',
}
const apply = {
title: '我的申请',
img: require('@/assets/personalCenter/apply.png'),
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
}
const push = {
title: '我的发布',
img: require('@/assets/personalCenter/push.png'),
imgActive: require('@/assets/personalCenter/pushactive.png'),
key: 'push',
}
let menuList = [
car,
apply,
push,
{
title: '我的收藏',
img: require('@/assets/personalCenter/collect.png'),
imgActive: require('@/assets/personalCenter/collectactive.png'),
key: 'collect',
},
{
title: '我的浏览',
img: require('@/assets/personalCenter/recent.png'),
imgActive: require('@/assets/personalCenter/recentactive.png'),
key: 'recent',
},
{
title: '我的需求',
export default defineComponent({
components: {},
setup() {
const itShowXiHaiAn = whoShow.itShowXiHaiAn
const car = {
title: '申购车',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'demand',
},
{
title: '我的评论',
img: require('@/assets/personalCenter/remark.png'),
imgActive: require('@/assets/personalCenter/remarkactive.png'),
key: 'remark',
},
]
// 西
if (itShowXiHaiAn) {
menuList = [car, apply, push]
}
const selectedKeys = ref(['apply'])
const type = JSON.parse(window.sessionStorage.getItem('type'))
if (type) {
selectedKeys.value = [type]
console.log('selectedKeys------------>', selectedKeys);
}
const handleClick = (item) => {
console.log('click', item)
mybus.emit('tabsChange', item)
}
onMounted(() => {
if (type) {
console.log('type---------->', type)
let _obj = menuList.find(v => v.key == type)
handleClick(_obj)
} else {
if (menuList[1]) {
handleClick(menuList[1])
} else {
handleClick(menuList[0])
}
key: 'PurchaseVehicle',
}
})
const apply = {
title: '我的申请',
img: require('@/assets/personalCenter/apply.png'),
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
}
const push = {
title: '我的发布',
img: require('@/assets/personalCenter/push.png'),
imgActive: require('@/assets/personalCenter/pushactive.png'),
key: 'push',
}
let menuList = [
car,
apply,
{
title: '能力评价',
img: require('@/assets/personalCenter/remark.png'),
imgActive: require('@/assets/personalCenter/remarkactive.png'),
key: 'evaluate',
},
push,
{
title: '我的收藏',
img: require('@/assets/personalCenter/collect.png'),
imgActive: require('@/assets/personalCenter/collectactive.png'),
key: 'collect',
},
{
title: '我的浏览',
img: require('@/assets/personalCenter/recent.png'),
imgActive: require('@/assets/personalCenter/recentactive.png'),
key: 'recent',
},
{
title: '我的需求',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'demand',
},
{
title: '我的评论',
img: require('@/assets/personalCenter/remark.png'),
imgActive: require('@/assets/personalCenter/remarkactive.png'),
key: 'remark',
},
]
// 西
if (itShowXiHaiAn) {
menuList = [car, apply, push]
}
const selectedKeys = ref(['apply'])
return {
menuList,
selectedKeys,
handleClick,
}
},
})
const type = JSON.parse(window.sessionStorage.getItem('type'))
if (type) {
selectedKeys.value = [type]
console.log('selectedKeys------------>', selectedKeys)
}
const handleClick = (item) => {
console.log('click', item)
mybus.emit('tabsChange', item)
}
mybus.on('selectMenu', (obj) => {
selectedKeys.value = [obj.key]
console.log('selectMenu', obj)
handleClick(obj)
})
onBeforeUnmount(() => {
mybus.off('selectMenu')
})
onMounted(() => {
if (type) {
console.log('type---------->', type)
let _obj = menuList.find((v) => v.key == type)
handleClick(_obj)
} else {
if (menuList[1]) {
handleClick(menuList[1])
} else {
handleClick(menuList[0])
}
}
})
return {
menuList,
selectedKeys,
handleClick,
}
},
})
</script>
<style lang="less" scoped>
#aside-menu-container {
margin-top: 20px;
height: 790px;
overflow-y: scroll;
overflow-x: hidden;
#aside-menu-container {
margin-top: 20px;
height: 790px;
overflow-y: scroll;
overflow-x: hidden;
:deep(.ant-menu-item) {
height: 60px;
font-size: 16px;
color: #333;
:deep(.ant-menu-item) {
height: 60px;
font-size: 16px;
color: #333;
&:hover {
color: #0087ff;
&:hover {
color: #0087ff;
background-color: #edf4fc;
}
}
:deep(.ant-menu-title-content) {
display: flex;
align-items: center;
.icon {
display: block;
width: 24px;
height: 24px;
background: no-repeat center;
margin-right: 30px;
}
}
:deep(.ant-menu-item-selected) {
background-color: #edf4fc;
color: #0087ff;
&::after {
display: none;
}
}
}
:deep(.ant-menu-title-content) {
display: flex;
align-items: center;
.icon {
display: block;
width: 24px;
height: 24px;
background: no-repeat center;
margin-right: 30px;
}
#aside-menu-container::-webkit-scrollbar {
width: 0 !important;
}
:deep(.ant-menu-item-selected) {
background-color: #edf4fc;
color: #0087ff;
&::after {
display: none;
}
}
}
#aside-menu-container::-webkit-scrollbar {
width: 0 !important;
}
</style>

View File

@ -15,6 +15,7 @@
></my-apply-xha>
<my-apply v-else :tabTypeName="tabTypeName"></my-apply>
</template>
<Evaluate v-else-if="showFlag === 'evaluate'"></Evaluate>
<!-- 我的发布 -->
<my-publish v-if="showFlag === 'push'"></my-publish>
<!-- 申购车 -->
@ -40,6 +41,7 @@
import asideMenu from '@/views/personalCenter/components/asideMenu'
// import OnTheRightSideOfTheList from './OnTheRightSideOfTheList'
import MyApply from '@/views/personalCenter/components/MyApply'
import Evaluate from '@/views/personalCenter/components/Evaluate'
import MyApplyXha from '@/views/personalCenter/components/MyApplyXha'
import MyApplication from '@/views/personalCenter/components/MyApplication'
import MyComments from '@/views/personalCenter/components/MyComments'