Compare commits

..

28 Commits

Author SHA1 Message Date
wuhongjian 4a6416de51 二级路由登录 2022-11-22 10:45:32 +08:00
wuhongjian 8e53d92898 展厅问题修改 2022-11-21 20:38:14 +08:00
gongjiale 82a188251a 新增说明文档和下载图标 2022-09-27 09:20:48 +08:00
gongjiale 1f44d96460 部分问题修改 2022-09-27 09:20:09 +08:00
unknown 43b36362c0 按钮显示修改 2022-09-26 09:26:47 +08:00
unknown 7438e98f19 能力统计明细 2022-09-24 13:20:18 +08:00
unknown 479b96ee06 添加政务云资源申请 2022-09-24 12:24:10 +08:00
wuhongjian ff971b798b 合并版本v0.8.7.2 2022-08-29 18:02:43 +08:00
wuhongjian 754b6ebdec gitignore 2022-08-29 18:01:27 +08:00
wuhongjian 0c78639afa 配置文件更新 2022-08-29 09:58:43 +08:00
wuhongjian 48097bdd54 合并版本v0.8.7.2 2022-08-29 09:58:12 +08:00
wuhongjian cd832f3f90 合并版本v0.8.7.2 2022-08-24 09:20:04 +08:00
wuhongjian 931e3a0e0a 合并版本v0.8.7.1 2022-08-23 16:38:48 +08:00
wuhongjian 31e81a258c 配置文件更新 2022-08-16 16:28:26 +08:00
wuhongjian 307bd6c020 合并版本v0.8.6.1 2022-08-16 09:57:36 +08:00
wuhongjian 8a58e70fc6 合并版本v0.8.4.3 2022-08-08 09:19:39 +08:00
wuhongjian 9601541628 合并版本v0.8.4.1 2022-08-02 16:06:08 +08:00
wuhongjian 0a16dd5e84 合并版本v0.8.4.1 2022-08-02 10:19:04 +08:00
wuhongjian ff44fd4691 测试环境配置更新 2022-08-02 10:18:01 +08:00
wuhongjian dbb6d55bce 合并版本v0.8.3.2 2022-07-29 09:12:15 +08:00
wuhongjian c9a5bf9f69 合并版本v0.8.3.2 2022-07-28 16:58:01 +08:00
wuhongjian bab0689c4c 合并版本v0.8.3.1 2022-07-26 18:56:46 +08:00
wuhongjian 13622255f8 合并版本v0.8.3.1 2022-07-26 18:08:52 +08:00
wuhongjian e8dc08504c 合并版本v0.8.3.1 2022-07-26 16:34:23 +08:00
a0049873 ba195e1758 配置修改 2022-07-22 18:45:32 +08:00
wuhongjian a53121649a 合并版本 2022-07-04 11:50:01 +08:00
wuhongjian 676a738518 上传配置文件修改 2022-06-16 17:04:52 +08:00
wuhongjian 36b8fec5a0 上传配置文件修改 2022-06-16 17:04:20 +08:00
94 changed files with 9044 additions and 10563 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
back/dist-西海岸-后台管理.zip
back/*.zip
back/public/index.html
back/dist-西海岸-后台管理-带配置文件.zip
back/dist-市局-后台管理-带配置文件.zip

View File

@ -2,14 +2,14 @@
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 14:37:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-27 14:25:39
* @LastEditTime: 2022-08-29 09:57:52
* @Description: 告诉大家这是什么
*/
var _global = {}
var CONFIGITEM = {
// version: 'qingdao', // 青岛
version: 'xihaian', // 西海岸
// version: 'test', // 测试
// version: 'xihaian', // 西海岸
version: 'test', // 测试
// version: 'frp', // 内网穿透
// version: 'dev', // 开发
vNum: 'v0.8.7.2',
@ -23,8 +23,7 @@ var CONFIGITEM = {
// 西海岸大数据局
xihaian: {
previewUrl: 'http://10.134.135.9:9796/',
// apiURL: 'http://10.134.135.9:8888/renren-admin',
apiURL: 'http://10.16.5.35:8888/renren-admin', // 李志成
apiURL: 'http://10.134.135.9:8888/renren-admin',
websocketURL: 'ws://10.134.135.9:8888/renren-admin/websocket'
},
// 测试

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 10:11:40
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 14:51:36
* @LastEditTime: 2022-08-29 09:54:59
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>

View File

@ -715,14 +715,3 @@ img {
.aui-navbar__header {
width: 268px;
}
// 统一更改弹框高度树形控件高度
.el-dialog__body {
max-height: 600px;
overflow-y: auto;
}
.el-tree {
max-height: 450px;
overflow-y: auto;
}

View File

@ -1,13 +1,12 @@
/*
* @Author: hisense.liangjunhua
* @Date: 2022-08-23 10:30:11
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-01 16:06:05
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 21:05:18
* @Description: 告诉大家这是什么
*/
const returnLocationStr = () => {
// return 'qingdao'
return 'xihaian'
return 'qingdao1'
}
export default returnLocationStr

View File

@ -293,7 +293,7 @@ export default {
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
}).catch(err => {
this.$message.error('未搜索到相关数据资源')
this.$message.error(err)
})
}
},
@ -316,7 +316,6 @@ export default {
title: this.type,
list: this.selectedArray
})
console.log(this.selectedArray, this.displayList, 'this.displayList')
},
getDisplay (displayList) {
this.displayList = []

View File

@ -1,6 +1,6 @@
<template>
<div >
<div class="container">
<div class='container'>
<!-- <div class='container-left' v-if='homeIsShow'>
<div class='left-search'>
<div>
@ -31,8 +31,8 @@
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
format='yyyy-MM-dd HH:mm:ss'
value-format='yyyy-MM-dd HH:mm:ss'
>
</el-date-picker>
</el-form-item>
@ -43,8 +43,14 @@
placeholder="请选审核状态"
clearable
>
<el-option label="审核完成" value="1"></el-option>
<el-option label="审核中" value="0"></el-option>
<el-option
label="审核完成"
value="1"
></el-option>
<el-option
label="审核中"
value="0"
></el-option>
</el-select>
</el-form-item>
@ -56,25 +62,19 @@
clearable
>
<el-option label="全部" value=""></el-option>
<el-option
v-for="item in departmentSelects"
:key="item.label"
v-bind="item"
></el-option>
<el-option v-for="item in departmentSelects" :key="item.label" v-bind="item"></el-option>
</el-select>
</el-form-item>
<!--类型-->
<el-form-item>
<el-select v-model="abilityType" placeholder="请选择类型" clearable>
<el-select
v-model="abilityType"
placeholder="请选择类型"
clearable
>
<el-option label="全部" value=""></el-option>
<el-option
v-for="item in typeOptions"
:key="item.name"
:label="item.name"
:value="item.name"
v-bind="item"
></el-option>
<el-option v-for="item in typeOptions" :key="item.value" :label="item.name" v-bind="item"></el-option>
</el-select>
</el-form-item>
@ -84,12 +84,10 @@
</el-form-item>
<!--操作按钮重置-->
<el-form-item>
<el-button type="primary" @click="resetDataList()">{{
$t('reset')
}}</el-button>
<el-button type="primary" @click="resetDataList()">{{ $t('reset') }}</el-button>
</el-form-item>
</el-form>
<el-card shadow="never" class="aui-card--fill" v-if="homeIsShow">
<el-card shadow="never" class="aui-card--fill" v-if='homeIsShow'>
<div class="mod-demand__bsdemand">
<!-- <div class='top-box'>
<span class='title'>能力统计</span>
@ -100,26 +98,11 @@
</div>
</div> -->
<div class="second-title">
<span
style="margin-right: 30px"
:class="[
departmentId === 1 || departmentId === 3
? 'departmentStyle'
: ''
]"
@click="handleChose(1)"
>
<div class='second-title'>
<span style='margin-right:30px' :class="[departmentId===1?'departmentStyle':'']" @click="handleChose(1)">
能力上架统计
</span>
<span
:class="[
departmentId === 2 || departmentId === 4
? 'departmentStyle'
: ''
]"
@click="handleChose(2)"
>
<span :class="[departmentId===2?'departmentStyle':'']" @click="handleChose(2)">
能力使用统计
</span>
<!-- <span v-if='this.choseId===0' :class="[departmentId===3?'departmentStyle':'']" @click="handleChose(3)">
@ -131,57 +114,87 @@
<span v-if="detailFlag" class="detail-button" @click="goToDetail()">
明细
</span>
<span v-else class="detail-button" @click="goToBack()"> 返回 </span>
<span v-else class="detail-button" @click="goToBack()">
返回
</span>
</div>
<div class="line-style"></div>
<div class='line-style'></div>
<!--统计表-->
<el-table
:data="tableData"
:header-cell-style="{textAlign:'center'}"
:cell-style="{textAlign:'center'}"
border
style="width: 100%"
v-show="this.departmentId === 1 || this.departmentId === 2"
>
<el-table-column prop="name" label="部门名称" min-width="100%">
style="width: 100%" v-if='this.departmentId===1 ||this.departmentId===2'>
<el-table-column
prop="name"
label="部门名称"
min-width="100%">
</el-table-column>
<el-table-column label="组件">
<el-table-column prop="znsf" label="智能算法" min-width="100%">
<el-table-column
prop="znsf"
label="智能算法"
min-width="100%">
</el-table-column>
<el-table-column prop="tcfw" label="图层服务" min-width="100%">
<el-table-column
prop="tcfw"
label="图层服务"
min-width="100%">
</el-table-column>
<el-table-column
prop="kfzj"
label="通用开发组件"
min-width="100%"
>
min-width="100%">
</el-table-column>
<el-table-column
prop="ywzj"
label="业务能力组件"
min-width="100%"
>
min-width="100%">
</el-table-column>
</el-table-column>
<el-table-column prop="yyzy" label="应用资源" min-width="100%">
<el-table-column
prop="yyzy"
label="应用资源"
min-width="100%">
</el-table-column>
<el-table-column prop="zj" label="总计" min-width="100%">
<el-table-column
prop="zj"
label="总计"
min-width="100%">
</el-table-column>
</el-table>
<!--明细表-->
<el-table
:data="tableData"
style="width: 100%"
v-show="this.departmentId === 3 || this.departmentId === 4"
>
<el-table-column prop="deptName" label="部门" width="180">
:header-cell-style="{textAlign:'center'}"
:cell-style="{textAlign:'center'}"
border
style="width: 100%" v-if='this.departmentId===3 ||this.departmentId===4'>
<el-table-column
prop="deptName"
label="部门"
min-width="100%">
</el-table-column>
<el-table-column prop="resourceName" label="资源名称" width="180">
<el-table-column
prop="resourceName"
label="资源名称"
min-width="100%">
</el-table-column>
<el-table-column prop="type" label="类型"> </el-table-column>
<el-table-column prop="createDate" label="日期"> </el-table-column>
<el-table-column prop="approveStatus" label="状态">
<el-table-column
prop="type"
label="类型"
min-width="100%">
</el-table-column>
<el-table-column
prop="createDate"
label="日期"
min-width="100%">
</el-table-column>
<el-table-column
prop="approveStatus"
label="状态"
min-width="100%">
</el-table-column>
</el-table>
<div class="block">
@ -197,24 +210,9 @@
</div>
</el-card>
</div>
<component-used
v-if="UsedIsShow"
:tableId="tableId"
:fatherId="fatherId"
@closeChild2="closeChild2"
></component-used>
<component-services
v-if="servicesIsShow"
:tableId="tableId"
:fatherId="fatherId"
@closeChild="closeChild"
></component-services>
<application-resources
v-if="resourcesIsShow"
:tableId="tableId"
:fatherId="fatherId"
@closeApplication="closeApplication"
></application-resources>
<component-used v-if='UsedIsShow' :tableId='tableId' :fatherId='fatherId' @closeChild2='closeChild2'></component-used>
<component-services v-if='servicesIsShow' :tableId='tableId' :fatherId='fatherId' @closeChild='closeChild'></component-services>
<application-resources v-if='resourcesIsShow' :tableId='tableId' :fatherId='fatherId' @closeApplication='closeApplication'></application-resources>
</div>
</template>
<script>
@ -229,63 +227,41 @@ export default {
inputTxt: '',
tableId: '',
fatherId: '',
treeData: [
{
treeData: [{
label: '一级 1',
children: [
{
children: [{
label: '二级 1-1',
children: [
{
children: [{
label: '三级 1-1-1'
}
]
}
]
},
{
}]
}]
}, {
label: '一级 2',
children: [
{
children: [{
label: '二级 2-1',
children: [
{
children: [{
label: '三级 2-1-1'
}
]
},
{
}]
}, {
label: '二级 2-2',
children: [
{
children: [{
label: '三级 2-2-1'
}
]
}
]
},
{
}]
}]
}, {
label: '一级 3',
children: [
{
children: [{
label: '二级 3-1',
children: [
{
children: [{
label: '三级 3-1-1'
}
]
},
{
}]
}, {
label: '二级 3-2',
children: [
{
children: [{
label: '三级 3-2-1'
}
]
}
]
}
],
}]
}]
}],
total: null,
defaultProps: {
children: 'children',
@ -299,26 +275,13 @@ export default {
resourcesIsShow: false,
UsedIsShow: false,
titleList: [
{ name: '组件服务', key: 1 },
{ name: '应用资源', key: 2 },
{ name: '基础设施', key: 3 },
{ name: '数据资源', key: 3 },
{ name: '知识库', key: 3 }
{ name: '组件服务', key: 1 }, { name: '应用资源', key: 2 }, { name: '基础设施', key: 3 }, { name: '数据资源', key: 3 }, { name: '知识库', key: 3 }
],
tableData: [{ deptName: '部门', resourceNum: 222 }],
tableData2: [
{
approveStatus: '',
createDate: '',
deptName: '',
resourceName: '',
type: ''
}
],
examineStatus: '0',//
value1:[],//
abilityDepartment: '', //
abilityType: '', //
abilityDepartment:"",//
abilityType:"",//
beginTime: '',//
endTime: '',//
typeOptions:[
@ -326,25 +289,22 @@ export default {
{ name: '图层服务', value: 2 },
{ name: '通用开发组件', value: 3 },
{ name: '页面开发组件', value: 4 },
{ name: '应用资源', value: 5 }
], //
{ name: '应用资源', value: 5 }],//
detailFlag:true,//
startDate: '', //
endDate: '' //
}
},
created () {
//
const d = new Date()
let year1, month1, day1
;[year1, month1, day1] = [d.getFullYear(), d.getMonth(), d.getDate()]
const date1 = new Date(year1, month1, day1, 7)
let d = new Date
let year1,month1,day1;
[year1,month1,day1] = [d.getFullYear(),d.getMonth(),d.getDate()]
let date1 = new Date(year1, month1, day1,7)
this.value1.push(date1)
//
let year2,month2,day2
d.setTime(d.getTime() - 24 * 60 * 60 * 1000)
;[year2, month2, day2] = [d.getFullYear(), d.getMonth(), d.getDate()]
const date2 = new Date(year2, month2, day2, 7)
d.setTime(d.getTime()-24*60*60*1000);
[year2,month2,day2] = [d.getFullYear(),d.getMonth(),d.getDate()]
let date2 = new Date(year2,month2,day2,7)
this.value1.unshift(date2)
},
mounted () {
@ -372,16 +332,14 @@ export default {
}
},
getTreeName (data) {
this.$http
.get('/census/center/v3/treeList/', {
this.$http.get('/census/center/v3/treeList/', {
params: {
keywords: data.name,
deptId: '1067246875800000066'
// pageNo: pageNo || 1,
// pageSize: 20
}
})
.then((res) => {
}).then(res => {
this.tableData = res.data.data
})
},
@ -402,20 +360,17 @@ export default {
// --
getFirstTree (page) {
this.$http
.get('/census/center/selectDeptDetailTypeCountList/', {
this.$http.get('/census/center/selectDeptDetailTypeCountList/', {
params: {
page: page || 1,
limit: 5,
approveStatus: this.examineStatus,
deptId: this.abilityDepartment,
approveStatus: '',
deptId: '',
params: '',
startDate: this.startDate,
endDate: this.endDate
startDate: ''
}
})
.then((res) => {
const result = res.data.data
}).then(res => {
let result= res.data.data
for(let i=0;i<result.length;i++){
if(!result[i].hasOwnProperty('yyzy') ){
result[i].yyzy= 0
@ -432,12 +387,7 @@ export default {
if(!result[i].hasOwnProperty('ywzj') ){
result[i].ywzj= 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw)
result[i].zj=parseInt(result[i].yyzy)+ parseInt(result[i].kfzj)+parseInt(result[i].znsf)+parseInt(result[i].ywzj)+parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
@ -445,20 +395,17 @@ export default {
},
// 使-使
getSecondTree () {
this.$http
.get('/census/center/selectApplyDeptDetailTypeCountList', {
this.$http.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: {
// page: page || 1,
// limit: 5,
approveStatus: this.examineStatus,
deptId: this.abilityDepartment,
limit: 5,
approveStatus: '',
deptId: '',
params: '',
startDate: this.startDate,
endDate: this.endDate
startDate: ''
}
})
.then((res) => {
const result = res.data.data
}).then(res => {
let result= res.data.data
for(let i=0;i<result.length;i++){
if(!result[i].hasOwnProperty('yyzy') ){
result[i].yyzy= 0
@ -475,12 +422,7 @@ export default {
if(!result[i].hasOwnProperty('ywzj') ){
result[i].ywzj= 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw)
result[i].zj=parseInt(result[i].yyzy)+ parseInt(result[i].kfzj)+parseInt(result[i].znsf)+parseInt(result[i].ywzj)+parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
@ -488,58 +430,7 @@ export default {
},
//
getOneDetail (page) {
var passAndReview = '' // ""
if (this.examineStatus === '审核完成') {
passAndReview = '通过'
} else {
passAndReview = this.examineStatus
}
this.$http
.get('/census/center/selectCensusResourceTable', {
params: {
// limit: 5,
// page: page || 1,
approveStatus: passAndReview,
deptId: this.abilityDepartment,
type: '',
startDate: this.startDate,
endDate: this.endDate
}
})
.then((res) => {
console.log('111111', this.tableData, res.data.data)
this.tableData = res.data.data
this.total = res.data.data.total
})
},
// 使
getTwoDetail (page) {
var passAndReview = '' // ""
if (this.examineStatus === '审核完成') {
passAndReview = '通过'
} else {
passAndReview = this.examineStatus
}
this.$http
.get('/census/center/selectCensusApplyTable', {
params: {
// limit: 5,
// page: page || 1,
approveStatus: this.examineStatus,
deptId: this.abilityDepartment,
type: '',
startDate: this.startDate,
endDate: this.endDate
}
})
.then((res) => {
this.tableData = res.data.data
this.total = res.data.data.total
})
},
getReleaseTree (page) {
this.$http
.get('/census/center/selectApplyDeptDetailTypeCountList/', {
this.$http.get('/census/center/selectCensusResourceTable/', {
params: {
limit: 5,
// page: page || 1,
@ -548,9 +439,39 @@ export default {
params: '',
startDate: ''
}
}).then(res => {
this.tableData = res.data.data
this.total = res.data.data.total
})
.then((res) => {
const result = res.data.data
},
// 使
getTwoDetail (page) {
this.$http.get('/census/center/selectCensusApplyTable/', {
params: {
limit: 5,
// page: page || 1,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
this.tableData = res.data.data
this.total = res.data.data.total
})
},
getReleaseTree (page) {
this.$http.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: {
limit: 5,
// page: page || 1,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
let result= res.data.data
for(let i=0;i<result.length;i++){
if(!result[i].hasOwnProperty('yyzy') ){
result[i].yyzy= 0
@ -567,12 +488,7 @@ export default {
if(!result[i].hasOwnProperty('ywzj') ){
result[i].ywzj= 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw)
result[i].zj=parseInt(result[i].yyzy)+ parseInt(result[i].kfzj)+parseInt(result[i].znsf)+parseInt(result[i].ywzj)+parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
@ -580,16 +496,14 @@ export default {
},
// 使
getUsedTree () {
this.$http
.get('/census/center/v3/resourceReleaseDetails/', {
this.$http.get('/census/center/v3/resourceReleaseDetails/', {
params: {
limit: 5,
page: 1,
// id:'1067246875800000066',
resourceType: '应用资源'
}
})
.then((res) => {
}).then(res => {
this.tableData = res.data.data.list
})
},
@ -634,23 +548,18 @@ export default {
this.departmentId = index
if (index === 1) {
if (this.choseId === 0) {
if (!this.detailFlag) {
this.detailFlag = !this.detailFlag
}
this.getFirstTree()
} else if (this.choseId === 1) {
//this.getReleaseTree()
}
} else if (index === 2) {
if (this.choseId === 0) {
if (!this.detailFlag) {
this.detailFlag = !this.detailFlag
}
this.getSecondTree()
} else {
//this.getUsedTree()
}
} else if (index === 3) {
}
else if (index === 3) {
if (this.choseId === 0) {
this.getOneDetail()
} else {
@ -685,143 +594,24 @@ export default {
},
////////////
goToDetail(){
this.detailFlag = !this.detailFlag
this.detailFlag = !this.detailFlag;
if(this.departmentId===1){
this.handleChose(3)
this.handleChose(3);
//this.departmentId = 1;
}else if(this.departmentId===2){
this.handleChose(4)
this.handleChose(4);
//this.departmentId = 2;
}else{
}
},
//
goToBack(){
//departmentId 13 24
this.detailFlag = !this.detailFlag
if (this.departmentId === 3) {
this.handleChose(1)
// this.departmentId = 1;
} else if (this.departmentId === 4) {
this.handleChose(2)
// this.departmentId = 2;
} else {
this.detailFlag = !this.detailFlag;
}
},
//
getDataList () {
if (this.value1.length > 0) {
this.startDate = this.handleTime(this.value1[0], 'yyyy-MM-dd HH:mm:ss')
this.endDate = this.handleTime(this.value1[1], 'yyyy-MM-dd HH:mm:ss')
}
if (this.examineStatus == 0) {
this.examineStatus = '审核中'
} else {
this.examineStatus = '审核完成'
}
if (this.abilityDepartment) {
this.abilityDepartment = this.abilityDepartment
} else {
this.abilityDepartment = ''
}
if (this.abilityType) {
this.abilityType = this.abilityType
} else {
this.abilityType = ''
}
console.log('查询参数开始时间1', this.startDate)
console.log('查询参数结束时间2', this.endDate)
console.log('查询参数审核状态', this.examineStatus)
console.log('查询参数部门', this.abilityDepartment)
console.log('查询参数类型', this.abilityType)
if (this.departmentId === 1) {
if (this.detailFlag) {
this.handleChose(3)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(1)
this.detailFlag = !this.detailFlag
}
// this.departmentId = 1;
} else if (this.departmentId === 2) {
if (this.detailFlag) {
this.handleChose(4)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(2)
this.detailFlag = !this.detailFlag
}
} else if (this.departmentId === 3) {
this.handleChose(3)
} else {
this.handleChose(4)
}
},
//
resetDataList () {
this.startDate = ''
this.endDate = ''
this.examineStatus = '审核中'
this.abilityDepartment = ''
this.abilityType = ''
if (this.departmentId === 1) {
if (this.detailFlag) {
this.handleChose(3)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(1)
this.detailFlag = !this.detailFlag
}
// this.departmentId = 1;
} else if (this.departmentId === 2) {
if (this.detailFlag) {
this.handleChose(4)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(2)
this.detailFlag = !this.detailFlag
}
} else if (this.departmentId === 3) {
this.handleChose(3)
} else {
this.handleChose(4)
}
},
//
handleTime (time, format) {
if (time == null || time == undefined || time == '') {
return ''
}
var t = new Date(time)
var tf = function (i) {
return (i < 10 ? '0' : '') + i
}
return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) {
switch (a) {
case 'yyyy':
return tf(t.getFullYear())
break
case 'MM':
return tf(t.getMonth() + 1)
break
case 'mm':
return tf(t.getMinutes())
break
case 'dd':
return tf(t.getDate())
break
case 'HH':
return tf(t.getHours())
break
case 'ss':
return tf(t.getSeconds())
break
}
})
}
}
}
</script>
<style lang="scss" scoped>

View File

@ -2,7 +2,7 @@
<el-card shadow="never" class="roomBox">
<div class="roomExamineSearch">
<el-input
v-model="roomNameA"
v-model="roomName"
style="width: 160px"
placeholder="请输入会议室名称"
></el-input>
@ -195,17 +195,6 @@
<el-input type="textarea" v-model="desc"></el-input>
</el-col>
</el-row>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="2">附件</el-col>
<el-col :span="16">
<el-button
v-if="file != ''"
size="mini"
@click="downloadTemplate(file)"
>下载</el-button
>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="No"> </el-button>
<el-button type="primary" @click="ok"> </el-button>
@ -243,9 +232,6 @@ export default {
id: '',
num: '',
file: '',
name: '',
creator: '',
roomNameA: '',
}
},
mounted() {
@ -255,9 +241,10 @@ export default {
getSerach() {
this.$http
.get(
`/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomNameA}&state=${this.value}`
`/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomName}&state=${this.value}`
)
.then(({ data: res }) => {
console.log(res, 7777777)
this.tableData = res.data.list
this.total = res.data.total
})
@ -281,15 +268,13 @@ export default {
if (num == '1') {
this.dialogVisibleChuli = true
this.id = item.id
this.name = item.name
this.roomName = item.roomName
this.creator = item.creator
} else {
this.dialogVisible = true
}
this.$http.get(`bookMeeting/${item.id}`).then(({ data: res }) => {
console.log(55555555)
this.file = res.data.file
})
}
this.lookData = item
},
@ -298,9 +283,6 @@ export default {
auditViem: this.desc,
state: this.radio,
id: this.id,
name: this.name,
roomName: this.roomName,
creator: this.creator,
}
this.$http.put('/bookMeeting', query).then(({ data: res }) => {
this.dialogVisibleChuli = false

View File

@ -1,171 +0,0 @@
<!--
* @Author: hisense.guoyue
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-09-27 14:23:29
* @Description: 设备审批
-->
<template>
<el-card shadow="never" class="aui-card--fill" style="position:relative">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.deviceName" :placeholder="$t('process.name')" clearable></el-input>
</el-form-item>
<el-select v-model="dataForm.state" placeholder="请选择" style="margin-right: 10px">
<el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{
$t('query')
}}</el-button>
</el-form-item>
</el-form>
<div class="mod-activiti__process">
<el-table v-loading="dataListLoading" :data="dataList" border style="width: 100%">
<el-table-column prop="title" label="申请标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="申请人信息" header-align="center" align="center"></el-table-column>
<el-table-column label="设备名称" header-align="center" align="center">
<template slot-scope="scope">
<span class="demand-text">{{
(scope.row && scope.row.tbDeviceDTO && scope.row.tbDeviceDTO.name)
}}</span>
</template>
</el-table-column>
<el-table-column prop="state" label="审批状态" header-align="center" align="center">
<template slot-scope="scope">
<span>{{wrjStateObj[scope.row.state]}}</span>
</template>
</el-table-column>
<el-table-column label="应用领域" header-align="center" align="center">
<template slot-scope="scope" v-if="scope.row.applicationArea">
<span class="area-text" v-for="(x,i) in JSON.parse(scope.row.applicationArea)"
:key="i">{{x}}</span>
</template>
</el-table-column>
<el-table-column label="需求依据" header-align="center" align="center" width="200">
<template slot-scope="scope">
<el-tooltip placement="top-start">
<div class="tooltip-box" slot="content">{{(scope.row && scope.row.demand)}}</div>
<span class="demand-text">{{
(scope.row && scope.row.demand)
}}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<el-dialog title="审批" :visible.sync="centerDialogVisible" width="30%" center>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="审批意见">
<el-input type="textarea" v-model="form.auditViem" placeholder="请输入审批意见"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="through(3)">不通过</el-button>
<el-button type="primary" @click="through(2)">通过</el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import bus from '@/views/bus.js'
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
import { addDynamicRoute } from '@/router'
export default {
mixins: [mixinViewModule, processModule],
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/deviceApply/myDonePage',
getDataListIsPage: true,
activatedIsNeed: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
centerDialogVisible: false,
form: {
auditViem: ''
},
dataForm: {
state: '',
deviceName: null
},
wrjStateObj: {
0: '待审批',
1: '未申请',
2: '通过',
3: '未通过'
},
//
detailInfo: {},
//
deviceDetailInfo: {}
}
},
computed: {
stateOptions() {
let arr = []
Object.keys(this.wrjStateObj).map(v => {
arr.push({
label: this.wrjStateObj[v],
value: v,
})
})
return arr
},
},
methods: {
showDetail(row) {
this.forwardDetail(row)
},
//
forwardDetail(data) {
console.log('data------------>', data);
console.log('this.$route------------>', this.$route);
var routeParams = {
routeName: `${this.$route.name}__detail_${data.id}`,
menuId: `${this.$route.meta.menuId}`,
title: `${this.$route.meta.title} - 详情`,
path: 'hasToDoTasks/deviceApprovalDetail',
params: {
params: data,
id: data.id,
}
}
console.log('routeParams------------>', routeParams);
addDynamicRoute(routeParams, this.$router)
},
},
}
</script>
<style scoped>
.demand-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.area-text {
padding: 0 4px;
}
.tooltip-box {
width: 400px;
}
</style>

View File

@ -1,319 +0,0 @@
<!--
* @Author: hisense.guoyue
* @Date: 2022-06-29 15:59:51
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-09-27 18:08:00
* @Description: 设备审批详情
-->
<!-- 设备审批详情 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<!-- 申请人详情 -->
<div>
<h3>申请人信息</h3>
<div class="big-BOX">
<p>
<span class="text">申请人<span> {{ detailInfo.name || '--' }}</span></span>
<span class="text">电话<span>{{ detailInfo.phone || '--' }}</span></span>
<span class="text">部门<span>{{ detailInfo.dept || '--' }}</span></span>
</p>
<p>
<span class="text">
能力申请标题<span>
{{ detailInfo.title || '--' }}</span></span>
<span class="text" v-if="detailInfo.applicationSystem">应用系统<span>{{
detailInfo.applicationSystem || '--'
}}</span></span>
<span class="text"></span>
</p>
<p>
<span v-if="detailInfo.applicationArea">
应用领域
<span class="area-item" v-for="(area, i) in JSON.parse(detailInfo.applicationArea)" :key="i">{{ area || '--'
}}</span>
</span>
</p>
<p>
<span>
需求依据<span>
{{ detailInfo.demand || '--' }}</span></span>
</p>
</div>
</div>
<!-- 申请能力 -->
<div class="AbilityApply">
<h3>申请能力</h3>
</div>
<el-card shadow="never" class="aui-card--fill">
<h4>{{ $t('process.circulation') }}</h4>
<el-table :data="dataList" border style="width: 100%;">
<!-- 任务名称 -->
<el-table-column prop="activityName" :label="$t('process.taskName')" header-align="center" align="center">
</el-table-column>
<!-- 处理人 -->
<el-table-column prop="assigneeName" :label="$t('process.assignee')" header-align="center" align="center">
</el-table-column>
<!-- 流程开始时间 -->
<el-table-column prop="startTime" :label="$t('task.startTime')" header-align="center" align="center">
</el-table-column>
<!-- 流程结束时间 -->
<el-table-column prop="endTime" :label="$t('task.endTime')" header-align="center" align="center">
</el-table-column>
<!-- 审核意见 -->
<el-table-column prop="comment" :label="$t('process.comment')" header-align="center" align="center">
</el-table-column>
<!-- 任务时长 -->
<el-table-column prop="durationInSeconds" :label="$t('task.durationInSeconds')" header-align="center"
align="center" width="180"></el-table-column>
</el-table>
</el-card>
</el-card>
</template>
<script>
import * as moment from 'moment';
export default {
data() {
return {
//
detailInfo: {},
dataList: [],
}
},
created() {
this.detailInfo = this.$route.params.params || {};
console.log('this.detailInfo------------>', this.detailInfo);
//
let durationInSeconds = ''
if (this.detailInfo.auditTime && this.detailInfo.auditTime) {
durationInSeconds = moment(this.detailInfo.auditTime).diff(moment(this.detailInfo.createDate), 'seconds')
}
let _obj = {
activityName: this.detailInfo.title || '',
assigneeName: this.detailInfo.auditorName || '',
startTime: this.detailInfo.createDate || '',
endTime: this.detailInfo.auditTime,
comment: this.detailInfo.auditViem,
durationInSeconds: durationInSeconds,
}
this.dataList.push(_obj)
}
}
</script>
<style scoped lang="scss">
::v-deep .big-BOX {
background: rgba(244, 245, 248, 0.8);
padding: 24px;
h3 {
font-size: 16px;
color: #212121;
}
p {
width: 100%;
display: flex;
justify-content: space-between;
color: #212121;
font-size: 14px;
span {
display: inline-block;
margin-left: 8px;
line-height: 32px;
span {
font-weight: bold;
}
}
.text {
width: 500px;
}
}
.lastP {
margin-top: 16px;
width: 100%;
span {
display: flex;
span {
padding: 0 12px;
height: 32px;
background: rgba(232, 234, 239, 1);
border-radius: 2px;
button {
background: unset;
border: 0;
color: #0558e1;
font-size: 14px;
}
}
}
}
}
::v-deep .AbilityApply {
margin-top: 32px;
h3 {
font-size: 16px;
color: #212121;
border-bottom: 1px solid #dddee1;
padding-bottom: 10px;
}
ul {
padding-left: 0px;
li {
list-style: none;
padding: 30px 0;
border-bottom: 1px solid #dddee1;
display: flex;
img {
width: 100px;
height: 100px;
}
div {
margin-left: 16px;
display: flex;
flex-direction: column;
justify-content: center;
h2 {
margin-bottom: 20px;
font-size: 20px;
color: #000;
display: flex;
span {
display: block;
font-size: 14px;
color: #ffffff;
margin-left: 8px;
background: rgba(0, 184, 230, 0.8);
display: flex;
align-items: center;
padding: 0 5px;
border-radius: 4px;
}
}
p {
margin-bottom: 0;
}
}
}
.clearfix:after {
display: block;
content: "";
clear: both;
}
.title {
color: #0558e1;
font-size: 18px;
padding-bottom: 0;
border-bottom: 0;
}
.title:before {
content: "";
width: 6px;
height: 6px;
display: inline-block;
border-radius: 50%;
background: #0558e1;
vertical-align: middle;
margin-right: 10px;
margin-top: 6px;
}
}
}
::v-deep .agreeOr>div {
display: flex;
align-items: center;
.el-input {
margin-right: 10px;
margin-left: 32px;
}
}
::v-deep .agreeOr>div:last-of-type {
margin-top: 15px;
}
.blueAll {
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
background: #ffffff;
color: #0558e1;
border: 1px solid #0558e1;
}
::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
box-shadow: unset !important;
background: #0558e1;
color: #ffffff;
}
}
.inputBule {
width: 55px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
background: #0558e1;
color: #ffffff;
border: 1px solid #0558e1;
}
.redAll {
margin-left: 10px;
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
border: 1px solid #e83a48;
background: #ffffff;
color: #e83a48;
margin-left: 10px;
}
::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
box-shadow: unset !important;
color: #ffffff;
background: #e83a48;
}
}
.blueInput {
width: 55px;
}
.area-item {
padding-right: 10px;
}
</style>

View File

@ -228,10 +228,10 @@ export default {
ruleForm: {
name: '',
num: '',
area: 0,
area: '',
capacity: '',
pic: '',
id: ''
id: '',
},
limit: 10,
page: 1,
@ -242,11 +242,11 @@ export default {
rules: {
name: [
{ required: true, message: '请输入会议室名称', trigger: 'blur' },
{ min: 1, trigger: 'blur' }
{ min: 1, trigger: 'blur' },
],
area: [
{ required: true, message: '请输入会议室面积', trigger: 'blur' }
// { min: 1, message: '', type: 'number', trigger: 'blur' }
{ required: true, message: '请输入会议室面积', trigger: 'blur' },
{ min: 1, type: 'number', trigger: 'blur' },
],
description: [
{ required: true, message: '请填写描述内容', trigger: 'blur' },
@ -254,14 +254,14 @@ export default {
min: 1,
max: 500,
message: '长度在 1 到 500 个字符',
trigger: 'blur'
}
]
trigger: 'blur',
},
],
},
formLabelWidth: '120px',
checkImgSuccess: true,
dialogVisible: false,
flge: ''
flge: '',
}
},
mounted() {
@ -337,9 +337,9 @@ export default {
})
} else if (i === 'edit') {
this.dialogFormVisible = false
this.$http.put('/meeting', this.ruleForm).then(({ data: res }) => {
this.$http.put(`/meeting`, this.ruleForm).then(({ data: res }) => {
this.ruleForm = res.data
const imgUrl = { name: res.data.name, url: res.data.pic }
let imgUrl = { name: res.data.name, url: res.data.pic }
this.fileList.push(imgUrl)
})
}
@ -373,7 +373,7 @@ export default {
this.flge = 'edit'
this.ruleForm = row
if (row.pic != null) {
const imgUrl = { name: row.name, url: row.pic }
let imgUrl = { name: row.name, url: row.pic }
this.fileList.push(imgUrl)
} else {
this.fileList = []
@ -384,27 +384,27 @@ export default {
this.$confirm('此操作将永久删除该会议室, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
type: 'warning',
})
.then(() => {
this.$http.put('/meeting', { delFlag: 1, id: row.id }).then(() => {
this.$http.put(`/meeting`, { delFlag: 1, id: row.id }).then(() => {
this.queryData()
this.$message({
type: 'success',
message: '删除成功!'
message: '删除成功!',
})
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
message: '已取消删除',
})
})
},
//
outDialog () {}
}
outDialog() {},
},
}
</script>
<style scoped lang="scss">

View File

@ -1,149 +0,0 @@
<!--
* @Author: hisense.guoyue
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-09-21 10:37:29
* @Description: 设备审批
-->
<template>
<!-- @selection-change="dataListSelectionChangeHandle" -->
<!-- @sort-change="dataListSortChangeHandle" -->
<el-card shadow="never" class="aui-card--fill" style="position:relative">
<div class="mod-activiti__process">
<el-table v-loading="dataListLoading" :data="dataList" border style="width: 100%">
<el-table-column prop="title" label="申请标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="申请人信息" header-align="center" align="center"></el-table-column>
<el-table-column prop="state" label="审批状态" header-align="center" align="center">
<template slot-scope="scope">
<span>{{wrjStateObj[scope.row.state]}}</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="dept" label="单位" header-align="center" align="center"></el-table-column>
<el-table-column prop="applicationSystem" label="应用系统" header-align="center" align="center">
</el-table-column>
<el-table-column label="应用领域" header-align="center" align="center">
<template slot-scope="scope" v-if="scope.row.applicationArea">
<span class="area-text" v-for="(x,i) in JSON.parse(scope.row.applicationArea)"
:key="i">{{x}}</span>
</template>
</el-table-column>
<el-table-column label="需求依据" header-align="center" align="center" width="200">
<template slot-scope="scope">
<el-tooltip placement="top-start">
<div class="tooltip-box" slot="content">{{(scope.row && scope.row.demand)}}</div>
<span class="demand-text">{{
(scope.row && scope.row.demand)
}}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="taskHandle(scope.row)">审批</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<el-dialog title="审批" :visible.sync="centerDialogVisible" width="30%" center>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="审批意见">
<el-input type="textarea" v-model="form.auditViem" placeholder="请输入审批意见"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="through(3)">不通过</el-button>
<el-button type="primary" @click="through(2)">通过</el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import bus from '@/views/bus.js'
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
export default {
mixins: [mixinViewModule, processModule],
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/deviceApply/auditPage',
getDataListIsPage: true,
activatedIsNeed: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
centerDialogVisible: false,
form: {
auditViem: ''
},
dataForm: {
state: 0
},
rowData: {},
wrjStateObj: {
0: '待审批',
1: '未申请',
2: '通过',
3: '未通过'
}
}
},
methods: {
taskHandle(row) {
this.form.auditViem = '';
this.rowData = row;
this.centerDialogVisible = true
},
through(state) {
// 2- 3-
this.handlePut(state)
},
handlePut(state) {
this.$http.put(`/deviceApply`, {
...this.rowData,
state: state,
...this.form
}).then(({ data: res }) => {
console.log('res------------>', res);
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.centerDialogVisible = false
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.query()
}
})
}).catch((err) => {
console.log('err------------>', err);
})
}
},
}
</script>
<style scoped>
.demand-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.area-text {
padding: 0 4px;
}
.tooltip-box {
width: 400px;
}
</style>

View File

@ -38,15 +38,6 @@
@click="videoAndImg(itemsonson.note1)"
>
浏览
</div>
<div
class="videoAndImgCss"
v-if="
itemsonson.name === '上传附件'
"
@click="videoAndImg(itemsonson.note1)"
>
下载
</div>
<div
v-else-if="itemsonson.type === ' multipleAdditions'"
@ -519,7 +510,7 @@ export default {
color: #333333;
font-size: 22px;
margin-bottom: 20px;
background: url("~@/assets/img/sj-jx.png") no-repeat;
background: url('~@/assets/img/sj-jx.png') no-repeat;
background-position-x: 15px;
}
.multipleAdditionsClass {

View File

@ -36,10 +36,8 @@
tip="支持文件类型大小不超过100M"></upload>
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.mp4' :list="item" v-else-if="item.type == 'video'" type="视频" btnName="上传视频" :maxCount="1" :dataList="item"
tip="支持视频类型大小不超过100M"></upload>
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.zip' :list="item" v-else-if="item.type == 'package' &&item.name != '上传附件'" type="安装包" btnName="上传安装包" :maxCount="1" :dataList="item"
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.zip' :list="item" v-else-if="item.type == 'package'" type="安装包" btnName="上传安装包" :maxCount="1" :dataList="item"
tip="支持.zip类型大小不超过100M"></upload>
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.pdf,.ppt,.xlsx,.doc,.docx,.zip' :list="item" v-else-if="item.name == '上传附件'" type="附件" btnName="上传附件" :maxCount="1" :dataList="item"
tip="支持.doc,.docx,.zip,.ppt,.pdf类型大小不超过100M"></upload>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'AbilityType'" type="disabled" :data="item" :name="item.name" :value="typeInput"></input-select-checkbox>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'ComponentType'" type="disabled" :data="item" :name="item.name" :value="type"></input-select-checkbox>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'input'" type="input" :data="item" :name="item.name"></input-select-checkbox>

View File

@ -15,25 +15,16 @@
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:post:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
<el-button v-if="$hasPermission('sys:post:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:post:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:post:reset')" type="primary" @click="resetHandle()">{{ $t('reset') }}
</el-button>
<el-button v-if="$hasPermission('sys:post:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
style="width: 100%;">
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="postCode" :label="$t('post.postCode')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="postName" :label="$t('post.postName')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="postCode" :label="$t('post.postCode')" header-align="center" align="center"></el-table-column>
<el-table-column prop="postName" :label="$t('post.postName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="sort" :label="$t('post.sort')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('post.status')" header-align="center" align="center">
<template slot-scope="scope">
@ -42,15 +33,18 @@
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('sys:post:update')" type="text" size="small"
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:post:delete')" type="text" size="small"
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
<el-button v-if="$hasPermission('sys:post:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:post:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
@ -83,14 +77,6 @@ export default {
},
components: {
AddOrUpdate
},
methods: {
resetHandle() {
Object.keys(this.dataForm).map(v => this.dataForm[v] = '')
this.$nextTick(() => {
this.getDataList()
})
},
}
}
</script>

View File

@ -14,9 +14,6 @@
<el-form-item>
<el-button v-if="$hasPermission('sys:role:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:role:reset')" type="primary" @click="resetHandle()">{{ $t('reset') }}</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
@ -71,14 +68,6 @@ export default {
},
components: {
AddOrUpdate
},
methods: {
resetHandle() {
this.dataForm.name = '';
this.$nextTick(() => {
this.getDataList()
})
},
}
}
</script>

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 11:18:05
* @LastEditTime: 2022-11-21 20:17:38
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -85,7 +85,7 @@
properly without JavaScript enabled. Please enable it to continue.
</strong>
</noscript>
<div id="app">
<div id="app" style="background: #010519">
<div class="first-loading-wrp">
<div class="loading-wrp">
<span class="dot dot-spin">

View File

@ -1,17 +1,16 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-19 09:36:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-11-21 19:37:54
* @Description: 系统静态参数配置
*/
var _global = {}
var CONFIGITEM = {
//version: 'qingdao', //
version: 'xihaian', // 西
//version: 'xihaian', // 西
//version: 'dev', //
// version: 'zhanTingDev', // dev (2022-09-13:)
//version: 'test', //
version: 'test', //
//version: 'frp', // 穿
vNum: 'v0.8.7.2',
configData: {
@ -32,25 +31,6 @@ var CONFIGITEM = {
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
//
zhanTingDev: {
loginInfo: {
//
loginIp: '10.132.191.3',
loginPort: '8320',
userName: 'ynszdz',
userPwd: 'Admin@123',
},
backUrl: 'http://15.72.183.90:8001',
previewUrl: 'http://15.72.183.90:7008/',
//frontUrl: 'http://15.72.183.90:7008/document/#/devModelFile/',
//apiURL: 'http://15.72.183.90:8000/renren-admin',
// websocketURL: '10.16.5.146:8888/renren-admin', //
websocketURL: '10.18.1.99:8889/renren-admin',
// websocketURL: '10.16.5.35:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
// 西
xihaian: {
loginInfo: {
@ -62,10 +42,7 @@ var CONFIGITEM = {
},
backUrl: 'http://10.134.135.9:9797',
previewUrl: 'http://10.134.135.9:9796/',
// websocketURL: '10.134.135.9:8888/renren-admin', //
// websocketURL: '10.134.135.92:8888/renren-admin', //
websocketURL: '192.168.124.254:8888/renren-admin', // -
// websocketURL: '10.18.1.99:8889/renren-admin', //
websocketURL: '10.134.135.9:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
@ -81,7 +58,6 @@ var CONFIGITEM = {
backUrl: 'http://localhost:8001',
previewUrl: 'http://192.168.124.236:9796/',
websocketURL: '192.168.124.236:8888/renren-admin',
// websocketURL: '10.18.1.99:8889/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
@ -96,7 +72,7 @@ var CONFIGITEM = {
},
backUrl: 'http://192.168.124.243:9797',
previewUrl: 'http://192.168.124.243:9796/',
websocketURL: '192.168.124.243:8888/renren-admin',
websocketURL: '221.0.232.149:7082/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},

View File

@ -37,7 +37,7 @@ if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
{ name: '新手指南', key: 'instructionManual' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
{ name: '区市站点', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
// { name: '', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' },

View File

@ -20,6 +20,14 @@ import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus'
const router = useRouter()
// export default {
// name: 'App',
// data() {
// return {
// ,
// }
// },
// }
const locale = zhCN
const token = Cookies.get('ucsToken')
console.log('token=================>', token)
@ -52,7 +60,6 @@ onBeforeUnmount(() => {
</script>
<style lang="less">
@import '~@/vab/styles/vab.less';
#vue-admin-beautiful {
max-width: 1920px;
// max-height: 1080px;
@ -61,7 +68,6 @@ onBeforeUnmount(() => {
position: relative;
background-color: #fff;
}
body {
font-size: 0.14rem;
}

View File

@ -99,11 +99,17 @@ export function getHls(params) {
}
//-
export function getCameraInfoByAreaId(params) {
return axios.get(`http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`,
return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=' +
params.areaId,
config2
)
}
//-
export function getCameraByCondition(params) {
return axios.post('http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition', params, config2)
return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition?' +
params,
config2
)
}

View File

@ -74,8 +74,7 @@ export function getHls(params) {
//
export function sgcInsert(data) {
return request({
// url: '/resourcecar/insert',
url: '/resourcecar/batchInsert', // 西-
url: '/resourcecar/insert',
method: 'post',
data,
})
@ -369,16 +368,6 @@ export function getIntegrationServicesList(params) {
params,
})
}
// --
export function updateIntegrationServices(data) {
return request({
url: '/fuse',
method: 'put',
data,
})
}
//
export function getCountByFuzzyQuery(params) {
return request({
@ -445,26 +434,3 @@ export function selectAppList(params) {
params,
})
}
// 西-
export function getSoldierList(params) {
return request({
url: '/device/page',
method: 'get',
params,
})
}
// 西-
export function soldierApply(data) {
return request({
url: '/deviceApply',
method: 'post',
data,
})
}
// 西--
export function getMaxApplyNum(number) {
return request({
url: '/processForm/tabilityapplication/canApply/' + number,
method: 'get',
})
}

View File

@ -284,20 +284,3 @@ export function endProcess(params) {
params,
})
}
// 西--
export function deviceApplylist(params) {
return request({
url: '/deviceApply/page',
method: 'get',
params,
})
}
// 西----
export function getDeviceDetail(deviceId) {
return request({
url: `/device/${deviceId}`,
method: 'get',
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 987 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 931 B

View File

@ -505,7 +505,3 @@ export const RECOURCE_G_ICON = {
resourceProtection:
'/src/assets/resourceManageMap/pic/point-resettlement-circle.png',
}
// -tab
// 西-
export const DETAIL_PAGE_CONTENT_DEFAULT_TAB = whoShow.itShowXiHaiAn ? '基础设施' : '应用资源'

View File

@ -85,7 +85,7 @@ export const constantRoutes = [
{
path: '/',
component: Layout,
redirect: whoShow.itShowXiHaiAn ? '/DetailsPageconetent' : '/home',
redirect: '/home',
meta: {
title: '能力管理平台编目',
icon: 'apps-line',

View File

@ -60,7 +60,7 @@ export function MapFun(mapObj) {
/**
* 定义地物编辑服务
*/
const featureService = L.supermap && L.supermap.featureService && L.supermap.featureService(
const featureService = L.supermap.featureService(
_mapConfig.config.EDITORDATA_URL
)
@ -1657,16 +1657,14 @@ export function MapFun(mapObj) {
features,
url,
layerName,
createPopupFun,
url2
createPopupFun
) {
console.log(
'_addResourceOnMapWithoutSuperMapCluster===============>',
features,
url,
layerName,
createPopupFun,
url2
createPopupFun
)
// 0
// if (features.length < 1) {
@ -1687,19 +1685,14 @@ export function MapFun(mapObj) {
let layers = null
//
layers = createMarkerClusterLayer()
const icon1 = createDefaultFeatureStyle({
const icon = createDefaultFeatureStyle({
img: url,
iconSize: [33, 33],
})
const icon2 = createDefaultFeatureStyle({
img: url2,
iconSize: [33, 33],
iconSize: [36, 36],
})
features.map((feature) => {
var bounds = map.getBounds()
// console.log("",feature.latLng);
if ( feature.hasOwnProperty('latLng')) {
let icon = feature.active?icon2:icon1
const marker = L.marker(feature.latLng, { icon })
if (createPopupFun !== null) {
marker.uuid = feature.uuid || ''
@ -1735,8 +1728,6 @@ export function MapFun(mapObj) {
}
marker.on('click', e=>{
console.log('点位数据', e)
mybus.emit('pointMarkerClick', feature)
})
layers.addLayer(marker)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -123,7 +123,7 @@ export function HieimpMap() {
// debugger;
//
L.supermap && L.supermap.layerInfoService && L.supermap
L.supermap
.layerInfoService(_mapConfig.config.QUERY_URL)
.getLayersInfo(function (result) {
// doSomething

View File

@ -1,14 +1,14 @@
/*
* @Author: hisense.liangjunhua
* @Date: 2022-08-22 18:22:16
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-01 16:05:31
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 21:05:32
* @Description: 告诉大家这是什么
*/
const returnLocationStr = () => {
// eslint-disable-next-line no-undef
return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao'
return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao1'
}
export default returnLocationStr

View File

@ -11,14 +11,8 @@ import store from '@/store'
import qs from 'qs'
import router from '@/router'
// import { isArray } from '@/utils/validate'
import {
message
} from 'ant-design-vue'
import {
getAccessToken,
setAccessToken
} from '@/utils/accessToken'
import { message } from 'ant-design-vue'
import { getAccessToken, setAccessToken } from '@/utils/accessToken'
let loadingInstance
@ -32,20 +26,14 @@ const handleCode = (code, msg, res) => {
// debugger
switch (code) {
case 401:
debugger
store.dispatch('user/resetAll').catch(() => {})
break
case 403:
router.push({
path: '/401'
}).catch(() => { })
router.push({ path: '/401' }).catch(() => {})
break
case 500:
message.error(msg || '接口异常')
break
case 505:
message.error(msg || '该时段已被预约')
break
case 302:
// window.location.href = redirect
break
@ -103,22 +91,16 @@ instance.interceptors.response.use(
console.log('接口返回headers', response.headers)
console.log('接口返回REDIRECT', response.headers.redirect)
response['Access-Control-Expose-Headers'] = 'redirect'
const {
code,
message
} = response.data
const { code, message } = response.data
if (response.headers.token) {
setAccessToken(response.headers.token)
}
if (response.headers.redirect) {
const _old_href = window.location.href.split('#')[0];
const _new_href = response.headers.redirect.split('#')[0];
window.location.replace(response.headers.redirect)
// url
if (_old_href === _new_href) {
// setTimeout(() => {
location.reload()
}
// }, 1000)
return response
}
if (response.headers.redirect === '/#/login') {
@ -144,7 +126,7 @@ instance.interceptors.response.use(
location.reload()
}, 1000)
}
handleCode(code, message || response.data.msg, response.headers)
handleCode(code, message, response.headers)
if (loadingInstance) loadingInstance.close()
// const { data, config } = response
// const { code, msg } = data
@ -164,14 +146,11 @@ instance.interceptors.response.use(
// }
},
(error) => {
// debugger
debugger
console.log('接口error', error)
if (loadingInstance) loadingInstance.close()
const {
response,
message
} = error
const { response, message } = error
if (error.response) {
console.log('接口返回', response)
console.log('接口返回headers', response.headers)
@ -180,20 +159,23 @@ instance.interceptors.response.use(
setAccessToken(response.headers.token)
}
if (response.headers.redirect) {
if (response.headers.redirect === '/#/login') {
setAccessToken('')
window.location.replace('/ucs/#/login')
setTimeout(() => {
location.reload()
}, 1000)
return Promise.resolve()
}
window.location.replace(response.headers.redirect)
return Promise.resolve()
}
const {
status,
data
} = response
const { status, data } = response
handleCode(status, data.msg || message, response.headers.redirect)
return Promise.reject(error)
} else {
let {
message
} = error
let { message } = error
if (message === 'Network Error') {
message = '后端接口连接异常'
}

View File

@ -11,18 +11,28 @@
<span class="title">基础设施</span>
</div>
<div class="infrastructure-content">
<div class="infrastructure-content-son" v-for="(item, index) in myDataList" :key="index">
<div class="num-class"
:style="`background:url(${item.img}) no-repeat;background-position:top left;background-size:40%`">
<div
class="infrastructure-content-son"
v-for="(item, index) in myDataList"
:key="index"
>
<div
class="num-class"
:style="`background:url(${item.img}) no-repeat;background-position:top left;background-size:40%`"
>
<div>{{ item.title }}</div>
<div>{{ item.snum }}</div>
</div>
<div class="health-degree">
<div class="health-degree-title">健康度</div>
<a-progress :stroke-color="{
<a-progress
:stroke-color="{
'0%': '#108ee9',
'100%': '#87d068',
}" :percent="item.percentage" :show-info="false" />
}"
:percent="item.percentage"
:show-info="false"
/>
</div>
<div class="percentage" :style="fontFormat(item.title)">
{{ item.percentage }}%
@ -34,8 +44,6 @@
<script setup>
import { ref } from 'vue'
import { infrastructureInfo } from '@/api/capabilityCloud'
const itShowXiHaiAn = whoShow.itShowXiHaiAn
let myDataList = ref([
{
title: '视频资源数量',
@ -44,15 +52,15 @@ let myDataList = ref([
img: require('../../../assets/capabilityCloud/infrastructure_sz.png'),
},
{
title: itShowXiHaiAn ? '单兵设备' : '云资源',
snum: itShowXiHaiAn ? '2' : 0,
percentage: itShowXiHaiAn ? '100' : '0',
title: '云资源',
snum: '0',
percentage: '0',
img: require('../../../assets/capabilityCloud/infrastructure_yz.png'),
},
{
title: itShowXiHaiAn ? '无人机' : '感知资源',
snum: itShowXiHaiAn ? '2' : 0,
percentage: itShowXiHaiAn ? '100' : '0',
title: '感知资源',
snum: '0',
percentage: '0',
img: require('../../../assets/capabilityCloud/infrastructure_gz.png'),
},
])
@ -61,10 +69,10 @@ function fontFormat(name) {
case '视频资源数量':
return 'color: #32ff91;'
break
case itShowXiHaiAn ? '单兵设备' : '云资源':
case '云资源':
return 'color: #f4fd25;'
break
case itShowXiHaiAn ? '无人机' : '感知资源':
case '感知资源':
return 'color: #ff1d18;'
break
}
@ -87,8 +95,6 @@ infrastructureInfo().then((res) => {
val.snum = obj.amount
}
})
}).catch(err => {
console.log('err------------>', err);
})
</script>
<style lang="less" scoped>
@ -106,27 +112,24 @@ infrastructureInfo().then((res) => {
-webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out;
transition: all 100ms ease-out;
.infrastructure-top {
width: 4.4rem;
height: 0.44rem;
position: absolute;
top: 0;
background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
background: url('~@/assets/capabilityCloud/infrastructure_title.png')
no-repeat;
background-size: cover;
background-position: center;
line-height: 0.44rem;
text-align: center;
.title {
font-size: 0.24rem;
}
}
.infrastructure-content {
width: 4rem;
margin-top: 0.62rem;
.infrastructure-content-son {
display: flex;
width: 4rem;
@ -136,13 +139,11 @@ infrastructureInfo().then((res) => {
margin-bottom: 0.14rem;
padding-left: 0.1rem;
}
.num-class {
width: 1.5rem;
height: 1rem;
text-align: center;
margin-right: 0.2rem;
& > div:first-child {
font-size: 0.18rem;
color: #ffffff;
@ -150,39 +151,32 @@ infrastructureInfo().then((res) => {
line-height: 0.18rem;
margin-top: 0.3rem;
}
& > div:last-child {
font-size: 0.36rem;
line-height: 0.36rem;
color: #1ce2e5;
}
}
.health-degree {
width: 1.35rem;
.health-degree-title {
font-size: 0.14rem;
color: rgba(255, 255, 255, 0.6);
margin-bottom: 0.08rem;
}
:deep(.ant-progress-outer) {
height: 0.27rem;
}
:deep(.ant-progress-inner) {
height: 0.27rem;
border-radius: 0.14rem;
border: 0.01rem solid rgba(8, 153, 231, 0.6);
background: rgba(21, 65, 123, 0.6);
div {
height: 0.27rem !important;
}
}
}
// .health-degree:
.percentage {
height: 0.57rem;
@ -195,29 +189,23 @@ infrastructureInfo().then((res) => {
}
}
}
.infrastructure:hover {
border: 2px solid;
animation: turn 5s linear infinite;
}
@keyframes turn {
0% {
border-image: linear-gradient(to right, #003194, #00ffea) 1;
}
25% {
border-image: linear-gradient(to bottom, #003194, #00ffea) 1;
}
50% {
border-image: linear-gradient(to left, #003194, #00ffea) 1;
}
75% {
border-image: linear-gradient(to top, #003194, #00ffea) 1;
}
100% {
border-image: linear-gradient(to right, #003194, #00ffea) 1;
}

View File

@ -1,34 +0,0 @@
<template>
<div class="detail-back" @click="previousPage" :style="{ color: textColor }">
返回
</div>
</template>
<script setup>
import { reactive, ref, watch, defineProps } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const props = defineProps({
textColor: { type: String, default: '' },
})
const previousPage = () => {
window.history.go(-1)
}
</script>
<style scoped lang="less">
.detail-back {
position: absolute;
opacity: 0.7;
top: 0.5rem;
left: 100px;
font-size: 0.20rem;
cursor: pointer;
background: -webkit-linear-gradient(90deg, #99a8d0, #fff);
font-weight: 600;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>

View File

@ -7,7 +7,6 @@
-->
<template>
<div class="capability-cloud">
<capability-cloud-back></capability-cloud-back>
<div class="header">
<span class="title" @click="goHome">数字能力超市</span>
</div>
@ -30,7 +29,6 @@
import Infrastructure from '@/views/capabilityCloud/components/Infrastructure.vue'
import DataResources from '@/views/capabilityCloud/components/DataResources.vue'
import KnowledgeBase from '@/views/capabilityCloud/components/KnowledgeBase.vue'
import capabilityCloudBack from '@/views/capabilityCloud/components/capabilityCloudBack.vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const goHome = () => {

View File

@ -69,7 +69,6 @@
:dataFrom="dataFrom"
:fileList="fileList"
:packageList="packageList"
:accessoryList="accessoryList"
:imgList="imgList"
:externalField="['接口服务', '接口请求方式']"
:configure="bs"
@ -371,7 +370,6 @@
const navList2 = ref([])
const fileList = ref({})
const packageList = ref({})
const accessoryList = ref({})
const imgList = ref({})
const videoList = ref({})
const data = ref({})
@ -789,9 +787,6 @@
mybus.on('chagePackageList', (obj) => {
packageList.value = obj
})
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
mybus.on('chageImgList', (obj) => {
imgList.value = obj
})
@ -841,7 +836,6 @@
mybus.off('chageDataFromDwon')
mybus.off('chageVideoList')
mybus.off('chagePackageList')
mybus.off('chageAccessory')
})
</script>
<style lang="less" scoped>

View File

@ -69,7 +69,6 @@
:dataFrom="dataFrom"
:fileList="fileList"
:fileList2="fileList2"
:accessoryList="accessoryList"
:imgList="imgList"
:configure="bs"
@submit="submit()"
@ -340,7 +339,6 @@
const navList2 = ref([])
const fileList = ref({})
const fileList2 = ref({})
const accessoryList = ref({})
const imgList = ref({})
const videoList = ref({})
const data = ref({})
@ -753,9 +751,6 @@
mybus.on('chageVideoList', (obj) => {
videoList.value = obj
})
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
//datafrom
mybus.on('chageDataFromDwon', (obj) => {
switch (obj.attrType) {
@ -798,7 +793,6 @@
mybus.off('chageFileList2')
mybus.off('chageImgList')
mybus.off('chageDataFromDwon')
mybus.off('chageAccessory')
})
</script>
<style lang="less" scoped>

View File

@ -69,7 +69,6 @@
:dataFrom="dataFrom"
:fileList="fileList"
:fileList2="fileList2"
:accessoryList="accessoryList"
:configure="bs"
@submit="submit()"
@back="back()"
@ -339,7 +338,6 @@
const navList2 = ref([])
const fileList = ref({})
const fileList2 = ref({})
const accessoryList = ref({})
const imgList = ref({})
const videoList = ref({})
const data = ref({})
@ -750,9 +748,6 @@
mybus.on('chageVideoList', (obj) => {
videoList.value = obj
})
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
//datafrom
mybus.on('chageDataFromDwon', (obj) => {
switch (obj.attrType) {
@ -795,7 +790,6 @@
mybus.off('chageFileList2')
mybus.off('chageImgList')
mybus.off('chageDataFromDwon')
mybus.off('chageAccessory')
})
</script>
<style lang="less" scoped>

View File

@ -66,7 +66,6 @@
:dataFrom="dataFrom"
:fileList="fileList"
:fileList2="fileList2"
:accessoryList="accessoryList"
:configure="bs"
@submit="submit()"
@back="back()"
@ -238,7 +237,6 @@
const navList2 = ref([])
const fileList = ref({})
const fileList2 = ref({})
const accessoryList = ref({})
const imgList = ref({})
const videoList = ref({})
const data = ref({})
@ -620,9 +618,6 @@
mybus.on('chageVideoList', (obj) => {
videoList.value = obj
})
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
//datafrom
mybus.on('chageDataFromDwon', (obj) => {
switch (obj.attrType) {
@ -665,7 +660,6 @@
mybus.off('chageFileList2')
mybus.off('chageImgList')
mybus.off('chageDataFromDwon')
mybus.off('chageAccessory')
})
</script>
<style lang="less" scoped>

View File

@ -301,16 +301,6 @@
:list="props.fileList2"
tip="支持文件类型大小不超过100M"
></upload>
<upload
v-else-if="item.type == 'package' && item.name == '上传附件'"
type="附件"
btnName="上传附件"
:maxCount="1"
:data="item"
:busType="2"
:list="props.fileList2"
tip="支持.doc,.docx,.zip,.ppt,.pdf类型大小不超过100M"
></upload>
<upload
v-else-if="item.type == 'package'"
type="压缩包"
@ -692,29 +682,27 @@
data.value.list.push(item)
}
})
} else if (item.name === '部门联系人') {
if (!item.note1) {
getUserInfo().then(({ data: res1 }) => {
console.log(res1.data)
item.note1 = res1.data.realName || ''
})
data.value.list.push(item)
} else {
data.value.list.push(item)
}
// else if (item.name === '') {
// if (!item.note1) {
// getUserInfo().then(({ data: res1 }) => {
// console.log(res1.data)
// item.note1 = res1.data.realName || ''
// })
// data.value.list.push(item)
// } else {
// data.value.list.push(item)
// }
// } else if (item.name === '') {
// if (!item.note1) {
// getUserInfo().then(({ data: res1 }) => {
// console.log(res1.data)
// item.note1 = res1.data.mobile || ''
// })
// data.value.list.push(item)
// } else {
// data.value.list.push(item)
// }
// }
else if (item.name === '来源应用') {
} else if (item.name === '部门联系人电话') {
if (!item.note1) {
getUserInfo().then(({ data: res1 }) => {
console.log(res1.data)
item.note1 = res1.data.mobile || ''
})
data.value.list.push(item)
} else {
data.value.list.push(item)
}
} else if (item.name === '来源应用') {
queryApplicationRelByResourceId({
referenceId: 0,
}).then((res) => {

View File

@ -1,18 +1,6 @@
<!-- 智能算法 -->
<template>
<div class="algorithm">
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
</div>
</div>
</div>
<div class="algorithm-class">
<div
v-for="(item, index) in dataList"
@ -39,25 +27,9 @@
</div>
</template>
<script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue'
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
})
const params = {
deptIds: [],
districtId: '',
@ -68,19 +40,6 @@
pageSize: 9,
type: '组件服务',
}
const getList2 = (val) => {
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '智能算法' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '智能算法' },
{ attrType: '应用领域', attrValue: val },
]
}
selectFlag2.value = false
pageWithAttrsFunction()
}
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true)
@ -150,67 +109,9 @@
<style lang="less" scoped>
.algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
height: 0.85rem;
font-weight: 600;
text-align: center;
padding-top: 0.1rem;
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
top: 0.5rem;
left: 0.9rem;
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
height: 5px;
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background-size: 100%;
}
& > div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
}
}
}
.algorithm-class {
// margin-top: 0.6rem;
margin-bottom: 0.18rem;
margin-top: 0.6rem;
margin-bottom: 0.59rem;
display: grid;
grid-template-columns: repeat(3, 33%);
height: 8.8rem;

View File

@ -2,12 +2,11 @@
* @Author: hisense.liangjunhua
* @Date: 2022-08-09 09:31:25
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-19 10:19:02
* @LastEditTime: 2022-08-10 14:29:05
* @Description: 应用资源
-->
<template>
<div class="application">
<div style="display: flex">
<div class="select">
<div class="top" @click="selectFlag = true">
{{ typeName }}
@ -21,19 +20,6 @@
<div @click="getList('企业')">企业</div>
</div>
</div>
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
</div>
</div>
</div>
</div>
<div class="item-box">
<div class="item" v-for="item in data.list" :key="item.id">
<a-image
@ -52,7 +38,6 @@
</div>
</template>
<script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { onMounted, reactive, onBeforeUnmount, ref, nextTick } from 'vue'
import { selectAppList } from '@/api/home'
import { useRouter } from 'vue-router'
@ -60,25 +45,9 @@
const pageNum = ref(1)
const flag = ref(true)
const type = ref(null)
const area = ref(null)
const typeName = ref('全市')
const typeName2 = ref('全部')
const dictList = ref([])
const data = reactive({ list: [] })
const selectFlag = ref(false)
const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
})
let dom = null
const goToView = (id) => {
const newpage = router.resolve({
@ -113,14 +82,7 @@
pageNum.value = 1
data.list = []
}
getData(str)
}
const getData = (str) => {
selectAppList({
pageNum: pageNum.value,
type: type.value,
area: area.value,
}).then((res) => {
selectAppList({ pageNum: pageNum.value, type: type.value }).then((res) => {
if (res.data.data.length < 9) {
dom.removeEventListener('scroll', viewMonitor, true)
}
@ -160,20 +122,6 @@
}
}
}
const getList2 = (val) => {
dom.scrollTop = 0
typeName2.value = val
pageNum.value = 1
data.list = []
if (val == '全部') {
area.value = null
getData()
} else {
area.value = val
getData()
}
selectFlag2.value = false
}
onMounted(() => {
dom = document.querySelector('.item-box')
console.log('box============', dom)

View File

@ -1,18 +1,6 @@
<!-- 图层服务 -->
<template>
<div class="algorithm">
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
</div>
</div>
</div>
<div class="algorithm-class">
<div
v-for="(item, index) in dataList"
@ -39,25 +27,10 @@
</div>
</template>
<script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue'
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
})
let algorithmclass = null
const params = {
deptIds: [],
districtId: '',
@ -68,20 +41,6 @@
pageSize: 9,
type: '组件服务',
}
const getList2 = (val) => {
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '图层服务' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '图层服务' },
{ attrType: '应用领域', attrValue: val },
]
}
selectFlag2.value = false
pageWithAttrsFunction()
}
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo2.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
@ -144,67 +103,9 @@
<style lang="less" scoped>
.algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
height: 0.85rem;
font-weight: 600;
text-align: center;
padding-top: 0.1rem;
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
top: 0.5rem;
left: 0.9rem;
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
height: 5px;
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background-size: 100%;
}
& > div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
}
}
}
.algorithm-class {
// margin-top: 0.6rem;
margin-bottom: 0.18rem;
margin-top: 0.6rem;
margin-bottom: 0.59rem;
display: grid;
grid-template-columns: repeat(3, 33%);
height: 8.8rem;

View File

@ -26,8 +26,6 @@
import layer from './components/layer.vue'
import application from './components/application.vue'
import { useRouter } from 'vue-router'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const router = useRouter()
const abilityToType = router.currentRoute.value.query.abilityToType
const show = ref('algorithm')
@ -49,8 +47,7 @@
const newpage = router.resolve({
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
window.location.href = newpage.href

View File

@ -8,7 +8,7 @@
<template>
<a-upload
v-model:file-list="fileList"
:action="`${apiURL}/upload`"
:action="`${window.SITE_CONFIG.apiURL}/upload`"
list-type="picture"
class="upload-list-inline"
:maxCount="props.maxCount"
@ -38,6 +38,7 @@
// import { baseURL } from '@/config'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
const props = defineProps({
btnName: { type: String, default: '' },
type: { type: String, default: '' },
@ -78,13 +79,6 @@
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
} else if (props.type === '压缩包') {
flag = file.type === 'application/x-zip-compressed'
} else if (props.type === '附件') {
flag =
file.type === 'application/pdf' ||
file.type === 'application/msword' ||
file.type ===
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||
file.type === 'application/x-zip-compressed'
}
console.log(flag)
if (!flag) {
@ -138,8 +132,6 @@
}
} else if (props.type === '压缩包') {
mybus.emit('chagePackageList', fileList.value)
} else if (props.type === '附件') {
mybus.emit('chageAccessory', fileList.value)
} else if (props.type === '视频') {
console.log(fileList.value)
mybus.emit('chageVideoList', fileList.value)

View File

@ -8,7 +8,9 @@
></DetalsTitle>
</div>
<!-- 青岛市局 -->
<div style="width: 100%; display: flex; justify-content: center"
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'">
@ -160,6 +162,127 @@
</div>
</div> -->
</div>
<!-- 其他 -->
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>{{ item.link.value }}</template>
<span>{{ item.link.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.postMethod.name }}</span>
<span>{{ item.postMethod.value }}</span>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<!-- <div @click="SDKClick()">SDK安装包</div> -->
</div>
</div>
<div class="content-left" v-else-if="item.titleType === '平台对接'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.linkPlatform.name }}</span>
<a-tooltip v-if="approveStatus == '通过'">
<template #title>{{ item.linkPlatform.value }}</template>
<span>{{ item.linkPlatform.value }}</span>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看平台地址</template>
<span>****************</span>
</a-tooltip>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<!-- <div @click="SDKClick()">SDK安装包</div> -->
</div>
</div>
<div class="content-left" v-else-if="item.titleType === 'SDK'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<div @click="SDKClick()">SDK安装包</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>{{ item.phone.value }}</template>
<span>{{ item.phone.value }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -11,38 +11,51 @@
<div class="main">
<div class="main-left">
<p>{{ dataFrom.linkName }}</p>
<a-tooltip>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.link }}</template>
<p style="cursor: pointer" @click="clickLink(dataFrom.link)">
{{ dataFrom.link || '暂无' }}
</p>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看</template>
<!-- <p style="cursor: pointer; filter: blur(4px)">
{{ dataFrom.link }}
</p> -->
<p style="cursor: pointer;"
:class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">
<p style="cursor: pointer; filter: blur(4px)">
{{ dataFrom.link }}
</p>
</a-tooltip>
</div>
<div class="main-center">
<p>{{ dataFrom.numberName }}</p>
<a-tooltip>
<template #title>请申请后查看</template>
<!-- <p style="filter: blur(4px)">{{ dataFrom.number }}</p> -->
<p :class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">{{ dataFrom.number
}}</p>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.number }}</template>
<p>{{ dataFrom.number || '暂无' }}</p>
</a-tooltip>
<div @click="copyFunction(dataFrom.number, '复制账号')" v-if="dataFrom.number != '' && flag">
<a-tooltip v-else>
<template #title>请申请后查看</template>
<p style="filter: blur(4px)">{{ dataFrom.number }}</p>
</a-tooltip>
<div
@click="copyFunction(dataFrom.number, '复制账号')"
v-if="dataFrom.number != '' && flag"
>
复制账号
</div>
<!-- <div v-else id="zanwu">暂无</div> -->
</div>
<div class="main-right">
<p>{{ dataFrom.passwordName }}</p>
<a-tooltip>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.password }}</template>
<p>{{ dataFrom.password || '暂无' }}</p>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看</template>
<p style="filter: blur(4px)">{{ dataFrom.password }}</p>
<p style="filter: blur(4px)" :class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">{{ dataFrom.password }}</p>
</a-tooltip>
<div @click="copyFunction(dataFrom.password2, '复制密码')" v-if="dataFrom.password2 != '' && flag">
<div
@click="copyFunction(dataFrom.password2, '复制密码')"
v-if="dataFrom.password2 != '' && flag"
>
复制密码
</div>
<!-- <div v-else id="zanwu">暂无</div> -->
@ -69,12 +82,8 @@ const dataFrom = ref({
password: '**************************',
password2: '',
})
console.log('props.dataList------------>', props.dataList);
const approveStatus = ref('')
if (props.dataList.infoList) {
let obj = props.dataList.approveStatus;
approveStatus.value = props.dataList.approveStatus
let obj = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
@ -125,7 +134,6 @@ watch(
(val) => {
if (val) {
let obj = props.dataList.approveStatus
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
@ -150,7 +158,6 @@ watch(
display: flex;
flex-direction: column;
align-items: center;
.main {
margin-top: 0.3rem;
width: 13rem;
@ -159,12 +166,10 @@ watch(
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center;
.main-left {
border-right: 0.01rem #ffffff solid;
padding-left: 0.7rem;
padding-right: 1rem;
& > p {
overflow: hidden;
text-overflow: ellipsis;
@ -174,34 +179,28 @@ watch(
-webkit-box-orient: vertical;
}
}
.main-center {
padding-left: 1rem;
padding-right: 1rem;
}
.main-right {
padding-right: 0.7rem;
}
& > div > p:first-child {
font-size: 0.26rem;
color: #ffffff;
font-weight: bold;
}
& > div > p:nth-child(2) {
font-size: 0.22rem;
color: #ffffff;
line-height: 0.34rem;
}
& > div:first-child > p:last-child {
text-decoration: underline;
word-wrap: break-word;
word-break: normal;
}
& > div > div:last-child {
height: 0.34rem;
width: 1.1rem;
@ -214,7 +213,6 @@ watch(
line-height: 0.34rem;
}
}
#zanwu {
height: 0.34rem;
width: 1.1rem;
@ -223,10 +221,6 @@ watch(
border: 0;
}
}
.blur-word {
filter: blur(4px);
}
</style>
<style>
.custom-class {

View File

@ -41,8 +41,6 @@
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue'
const itShowXiHaiAn = whoShow.itShowXiHaiAn
console.log('2222', itShowXiHaiAn)
let dataFrom = ref({
title: '部署与安全',
@ -64,7 +62,7 @@
dataList: { type: Object, default: null },
})
if (props.dataList.infoList) {
if (!whoShow1.value.itShowQingDao && !whoShow1.value.itShowXiHaiAn) {
if (!whoShow1.value.itShowQingDao) {
let obj = {
attrType: '访问地址',
attrValue: props.dataList.link || '------',
@ -121,7 +119,7 @@
if (val) {
dataFrom.value.content[0].childrenContent = []
dataFrom.value.content[1].childrenContent = []
if (!whoShow1.value.itShowQingDao && !itShowXiHaiAn) {
if (!whoShow1.value.itShowQingDao) {
let obj = {
attrType: '访问地址',
attrValue: props.dataList.link || '------',

View File

@ -8,7 +8,9 @@
></DetalsTitle>
</div>
<!-- 青岛市局 -->
<div style="width: 100%; display: flex; justify-content: center"
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content">
<div
@ -48,6 +50,29 @@
</div>
</div> -->
</div>
<!-- 其他 -->
<div v-else>
<div class="content">
<div
v-for="(item, index) in dataFrom.content"
:key="index"
class="content-card"
>
<div class="card-title">{{ item.childrenTitle }}</div>
<div class="card-content">
<div v-for="carditem in item.childrenContent" :key="carditem">
<div style="display: flex">
<span>{{ carditem.attrType }}</span>
<a-tooltip>
<template #title>{{ carditem.attrValue }}</template>
<span>{{ carditem.attrValue }}</span>
</a-tooltip>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -7,7 +7,9 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div style="width: 100%; display: flex; justify-content: center"
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
@ -115,6 +117,84 @@
</div>
</div> -->
</div>
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>{{ item.linkValue }}</template>
<span>{{ item.linkValue }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<div @click="technicalNew()">新手指引</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>{{ item.phone.value }}</template>
<span>{{ item.phone.value }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -7,7 +7,9 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div style="width: 100%; display: flex; justify-content: center"
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content">
<div class="content-card">
@ -71,6 +73,41 @@
</div>
</div> -->
</div>
<div v-else>
<div class="content">
<div class="content-card">
<div class="left">
<p>{{ dataFrom.linkName }}</p>
<a-tooltip>
<template #title>{{ dataFrom.link }}</template>
<p>{{ dataFrom.link }}</p>
</a-tooltip>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<div @click="technicaltow()">新手指引</div>
</div>
</div>
<div class="content-card">
<div v-for="(item, index) in dataFrom.content" :key="index">
<div class="card-title">
{{ item.childrenTitle }}
</div>
<div class="card-content">
<div v-for="carditem in item.childrenContent" :key="carditem">
<div>
<span>{{ carditem.attrType }}</span>
<a-tooltip>
<template #title>{{ carditem.attrValue }}</template>
<span>{{ carditem.attrValue }}</span>
</a-tooltip>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -116,11 +116,6 @@ if (props.dataList.infoList) {
// dataFrom.value.content[0].facilitator.value = props.dataList.deptContacts
console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => {
handleInfoList(item)
})
}
}
const handleInfoList = (item) => {
if (item.attrType === '服务类型') {
dataFromLeft.value.content[0].values = item.attrValue || '123'
} else if (item.attrType === '覆盖区域') {
@ -138,9 +133,9 @@ const handleInfoList = (item) => {
} else if (item.attrType === '图层类型') {
dataFromRight.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '最大级别') {
if (dataFromRight.value.content && dataFromRight.value.content[2]) {
dataFromRight.value.content[2].values = item.attrValue || '--'
}
})
}
}
watch(
@ -162,30 +157,29 @@ watch(
if (!obj) {
flag.value = false
} else {
// dataFrom.value.content[0].link.value = val.apiUrl
// dataFrom.value.content[0].facilitator.value = val.deptContacts
console.log('dataList', val)
val.infoList.map((item) => {
handleInfoList(item)
// if (item.attrType === '') {
// dataFromLeft.value.content[0].values = item.attrValue || '123'
// } else if (item.attrType === '') {
// dataFromLeft.value.content[1].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFromLeft.value.content[2].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFromCenter.value.content[0].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFromCenter.value.content[1].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFromCenter.value.content[2].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFromRight.value.content[0].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFromRight.value.content[1].values = item.attrValue || '--'
// } else if (item.attrType === '') {
// if (dataFromRight.value.content && dataFromRight.value.content[2]) {
// dataFromRight.value.content[2].values = item.attrValue || '--'
// }
// }
if (item.attrType === '服务类型') {
dataFromLeft.value.content[0].values = item.attrValue || '123'
} else if (item.attrType === '覆盖区域') {
dataFromLeft.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '切片策略') {
dataFromLeft.value.content[2].values = item.attrValue || '--'
} else if (item.attrType === '坐标系') {
dataFromCenter.value.content[0].values = item.attrValue || '--'
} else if (item.attrType === '切片尺寸') {
dataFromCenter.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '最小级别') {
dataFromCenter.value.content[2].values = item.attrValue || '--'
} else if (item.attrType === '数据范围') {
dataFromRight.value.content[0].values = item.attrValue || '--'
} else if (item.attrType === '图层类型') {
dataFromRight.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '最大级别') {
dataFromRight.value.content[2].values = item.attrValue || '--'
}
})
}
}
@ -199,11 +193,9 @@ watch(
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.content {
margin-top: 0.3rem;
display: flex;
.content-left {
height: 2.8rem;
width: 13rem;
@ -224,12 +216,10 @@ watch(
display: flex;
justify-content: space-between;
align-items: center;
ul {
padding: 0;
margin: 0;
}
ul li {
list-style: none;
display: flex;
@ -237,13 +227,11 @@ watch(
margin-bottom: 0.3rem;
line-height: 0.25rem;
}
img {
margin: 0 0.2rem 0 0;
width: 0.15rem;
height: 0.15rem;
}
span {
font-size: 0.2rem;
color: #666666;
@ -251,7 +239,6 @@ watch(
margin-right: 0.5rem;
width: 120px;
}
p {
width: 2rem;
margin-bottom: 0;

View File

@ -7,7 +7,9 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div style="width: 100%; display: flex; justify-content: center"
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
@ -126,6 +128,86 @@
</div>
</div> -->
</div>
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
<div class="left">
<a-tooltip>
<template #title>{{ item.linkValue }}</template>
<p @click="ServiceAddressFunction(item.linkValue)">
服务地址
{{ item.linkValue }}
</p>
</a-tooltip>
<a-tooltip>
<template #title>{{ item.csslinkValue }}</template>
<p @click="ServiceAddressFunction(item.csslinkValue)">
样式服务地址
{{ item.csslinkValue }}
</p>
</a-tooltip>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<div @click="technicalNew()">新手指引</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>{{ item.phone.value }}</template>
<span>{{ item.phone.value }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -89,15 +89,11 @@
</span>
<span>{{ val.type }}</span>
</div>
<!-- (item.note1 && JSON.parse(item.note1) &&
JSON.parse(item.note1)[0] &&
JSON.parse(item.note1)[0].channelName -->
<div class="description">
{{
val.description ||
((val.note1 || '') &&
(JSON.parse(val.note1) && JSON.parse(val.note1)[0] && JSON.parse(val.note1)[0].channelName || '--') +
(JSON.parse(val.note1)[0].channelName || '--') +
'等' +
JSON.parse(val.note1).length +
'个摄像头') ||

File diff suppressed because it is too large Load Diff

View File

@ -156,11 +156,8 @@
class="modal-box"
title="请选择"
:visible="showAddModal"
ok-text="确认"
cancel-text="取消"
@ok="handleOk"
@cancel="handleCancel"
:onOk="handleOk"
:onCancel="handleCancel"
>
<a-table
:columns="columns"
@ -655,14 +652,7 @@
}
</script>
<style>
.ant-modal-footer {
display: block;
}
</style>
<style lang="less" scoped>
.bg {
background: #fff;
height: 100vh;

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,19 @@
<template>
<div class="box">
<div class="CanCase">
<div class="caseBox" v-for="(item, index) in caseList" :key="index" @click="toView(item)">
<a-image :preview="false" :src="
<div
class="caseBox"
v-for="(item, index) in caseList"
:key="index"
@click="toView(item)"
>
<a-image
:preview="false"
:src="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue
" />
"
/>
<h3>{{ item.name }}</h3>
<p>发布时间 {{ item.updateDate }}</p>
</div>
@ -13,7 +21,8 @@
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, watch, defineProps, defineEmits } from 'vue'
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { defineProps } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
@ -27,17 +36,14 @@ const props = defineProps({
default: '组件服务',
},
})
const emits = defineEmits(['saveSearchCodition'])
const caseList = ref([])
onMounted(() => {
caseList.value = props.resourceList.data
console.log('caseList.value------------>', caseList.value);
console.log(caseList.value, 'caseList.value')
})
onBeforeUnmount(() => {})
function toView(item) {
emits('saveSearchCodition', 1)
router.push({
path: '/integrationServicesDetails',
query: {
@ -45,15 +51,6 @@ function toView(item) {
},
})
}
watch(
() => props.resourceList.data,
(val) => {
if (val) {
caseList.value = val
}
}
)
</script>
<style lang="less" scoped>
.box {
@ -63,7 +60,6 @@ watch(
grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center;
justify-items: center;
.caseBox {
width: 3.5rem;
height: 3rem;
@ -73,18 +69,15 @@ watch(
padding: 0.2rem;
margin-bottom: 0.2rem;
cursor: pointer;
img {
width: 3rem;
height: 1.8rem;
}
h3 {
font-size: 0.18rem;
font-weight: bold;
margin-top: 0.1rem;
}
p {
font-size: 0.16rem;
color: #797979;

View File

@ -1,46 +0,0 @@
<template>
<div class="tag-box">
<div class="tag-item" v-for="(item, index) in tagList" :key="index">
{{item}}
</div>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, watch, defineProps, defineEmits } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const props = defineProps({
componentServiceTagList: {
type: Object,
default: () => { },
},
})
const tagList = ref([])
onMounted(() => {
tagList.value = props.componentServiceTagList
})
watch(
() => props.componentServiceTagList,
(val) => {
if (val) {
tagList.value = val
}
}
)
</script>
<style lang="less" scoped>
.tag-item {
font-family: 'Alibaba PuHuiTi';
font-weight: 400;
border-radius: 0.12rem;
margin: 0 10px;
padding: 2px 8px;
font-size: 12px;
color: #0087ff;
background: rgba(0, 88, 225, 0.1);
}
</style>

View File

@ -23,8 +23,8 @@
>
{{ item.name }}
</div>
<a-badge :count="sgcNum">
<!-- 购物车 -->
<!-- <a-badge :count="sgcNum">
<svg
t="1650455446850"
class="icon"
@ -42,7 +42,8 @@
p-id="2070"
></path>
</svg>
</a-badge> -->
<!-- <a-avatar shape="square" size="large" /> -->
</a-badge>
<a-badge :count="mynoticeNum" style="margin-left: 0.2rem">
<!-- 消息提醒 -->
<svg
@ -130,13 +131,21 @@
import { getSgcTotal } from '@/api/home'
import Cookies from 'js-cookie'
import mybus from '@/myplugins/mybus'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { message } from 'ant-design-vue'
const store = useStore()
const router = useRouter()
const route = useRoute()
// const navListManagement = ref([
// { name: '', key: 'home' },
// { name: '', key: 'DetailsPageconetent' },
// { name: '', key: 'capabilityCloud' },
// { name: '', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' },
// { name: '', key: 'demandCenter' },
// // { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
// // { name: '', key: 'houtaiguanli' },
// { name: '', key: 'assignCase' },
// ])
const whoShow1 = whoShow
const user = ref({
username: store.getters['user/username'],
@ -181,10 +190,6 @@
}
//
const jumpPage = (item) => {
let _arr = ['共享门户', '能力云图', '能力统计', '需求中心', '赋能案例']
if(_arr.includes(item.name)) {
return message.warn('正在建设中!')
}
// console.log(item)
select.value = item.key
switch (item.name) {
@ -203,7 +208,7 @@
router.push({
path: '/DetailsPageconetent',
query: {
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
break
@ -250,6 +255,10 @@
case '融合服务':
router.push({
path: '/integrationServices',
// path: '/DetailsPageconetent',
query: {
select: '融合服务',
},
})
break
case 'CIM专区':

View File

@ -1,100 +0,0 @@
<template>
<ul class="integrationServiceOrder">
<li v-for="(item, i) in integrationOrderList" :key="i" @click="
changeOrder(i, item.value, item.orderType == 'DESC' ? 'ASC' : 'DESC')
">
{{ item.name }}
<span class="arrow" :class="
integrationOrder.orderType == 'ASC' &&
integrationOrder.orderField == item.value
? 'down'
: ''
"></span>
</li>
</ul>
</template>
<script setup>
import { ref, reactive, nextTick, defineExpose } from 'vue'
import mybus from '@/myplugins/mybus'
const orderList = [
{
value: 'apply_count',
name: '申请量',
orderType: 'DESC',
},
{
value: 'collectCount',
name: '收藏量',
orderType: 'DESC',
},
{
value: 'create_date',
name: '发布时间',
orderType: 'DESC',
},
{
value: 'update_date',
name: '更新时间',
orderType: 'DESC',
},
]
const integrationOrderList = ref(JSON.parse(JSON.stringify(orderList)))
const integrationOrder = reactive({
orderField: '',
orderType: '',
})
// --
const changeOrder = (i, val, type) => {
console.log('i, val, type------------>', i, val, type);
integrationOrder.orderField = val
integrationOrder.orderType = type;
// 0 apply_count ASC
let _index = integrationOrderList.value.findIndex(x => x.value = val)
if (_index > -1) {
integrationOrderList.value[_index].orderType = type
}
mybus.emit('changeCondition', {
orderField: val,
orderType: type,
})
}
const reset = () => {
integrationOrderList.value = JSON.parse(JSON.stringify(orderList))
integrationOrder.orderField = ''
integrationOrder.orderType = ''
}
defineExpose({
reset,
})
</script>
<style lang="less" scoped>
.integrationServiceOrder {
display: flex;
li {
width: 90px;
height: 12px;
text-align: center;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
.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;
}
}
}
</style>

View File

@ -10,51 +10,89 @@
}}
</div>
<div class="condition" :key="showKey">
<IntegrationServiceOrder ref="integrationServiceOrderDom" v-if="
<ul
v-if="
selectCardsname === '融合服务' || selectCardsname === '赋能场景'
"></IntegrationServiceOrder>
"
>
<li
v-for="(item, i) in orderList"
:key="item.value"
@click="changeOrder(i, item.value, item.orderType)"
>
{{ item.name }}
<span
class="arrow"
:class="item.orderType == 'ASC' ? 'down' : ''"
></span>
</li>
</ul>
<ul v-else>
<li v-for="(item, i) in selList" :key="i" @click="changeCondition(item)" v-show="
<li
v-for="item in selList"
:key="item.value"
@click="changeCondition(item.value)"
v-show="
item.show &&
item.name !== '评分' &&
selectCardsname !== '数据资源'
">
"
>
{{ item.name }}
<span class="arrow" :class="
orderObj.orderType == 'ASC' &&
orderObj.orderField == item.value
? 'down'
: ''
"></span>
<span
class="arrow"
:class="item.value == selData ? 'down' : ''"
></span>
</li>
</ul>
</div>
</div>
<div class="result-list" v-for="(item, index) in resourceList.data" :key="item.index">
<div
class="result-list"
v-for="(item, index) in resourceList.data"
:key="item.index"
>
<div class="item" :key="showKey">
<div class="left" style="display: flex; align-items: center" v-if="
<div
class="left"
style="display: flex; align-items: center"
v-if="
item.type === '应用资源' &&
item.infoList &&
item.infoList.filter((val) => val.attrType == '应用图片')[0]
">
<a-image :width="106" :preview="false" :src="
"
>
<a-image
:width="106"
:preview="false"
:src="
item.infoList.filter((val) => val.attrType == '应用图片')[0]
.attrValue
" />
"
/>
</div>
<div class="left" style="display: flex; align-items: center" v-else-if="
<div
class="left"
style="display: flex; align-items: center"
v-else-if="
(selectCardsname === '融合服务' ||
selectCardsname === '赋能场景') &&
item.fuseAttrList &&
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
">
<a-image :width="106" :preview="false" :src="
"
>
<a-image
:width="106"
:preview="false"
:src="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue
" />
"
/>
</div>
<div class="left" :class="
<div
class="left"
:class="
item.type == '应用资源'
? 'yyzy'
: !item.type
@ -79,33 +117,55 @@
.attrValue == '业务组件'
? 'ywzj'
: ''
" @click="toView('details', item)" v-else-if="
"
@click="toView('details', item)"
v-else-if="
selectCardsname !== '基础设施' &&
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景'
"></div>
"
></div>
<div class="left jcss" v-else-if="selectCardsname === '基础设施'"></div>
<div class="left rhfw" v-else-if="
<div
class="left rhfw"
v-else-if="
selectCardsname === '融合服务' || selectCardsname === '赋能场景'
"></div>
"
></div>
<div class="right" @click="toView('details', item)">
<div class="header">
<span style="display: flex; align-items: center; width: 680px">
{{ item.name }}
<!-- 已申请--通过 -->
<svg t="1652322568870" class="icon" viewBox="0 0 3072 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="3062" width="40" height="40" v-if="
<svg
t="1652322568870"
class="icon"
viewBox="0 0 3072 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3062"
width="40"
height="40"
v-if="
item.applyState == '已申请' && item.approveStatus == '通过'
" style="margin-left: 10px; min-width: 40px">
"
style="margin-left: 10px; min-width: 40px"
>
<path
d="M2958.222222 0a113.777778 113.777778 0 0 1 113.777778 113.777778v796.444444a113.777778 113.777778 0 0 1-113.777778 113.777778H500.053333a113.777778 113.777778 0 0 1-85.617777-38.798222L32.824889 549.432889a56.888889 56.888889 0 0 1 0-74.922667L414.435556 38.798222A113.777778 113.777778 0 0 1 499.996444 0H2958.222222z m0 56.888889H500.053333a56.888889 56.888889 0 0 0-42.837333 19.399111L75.605333 512l381.610667 435.712a56.888889 56.888889 0 0 0 42.780444 19.399111H2958.222222a56.888889 56.888889 0 0 0 56.888889-56.888889V113.777778a56.888889 56.888889 0 0 0-56.888889-56.888889z"
fill="#d81e06" p-id="3063"></path>
fill="#d81e06"
p-id="3063"
></path>
<path
d="M398.222222 398.222222a113.777778 113.777778 0 1 1 0 227.555556 113.777778 113.777778 0 0 1 0-227.555556z m0 56.888889a56.888889 56.888889 0 1 0 0 113.777778 56.888889 56.888889 0 0 0 0-113.777778z"
fill="#d81e06" p-id="3064"></path>
fill="#d81e06"
p-id="3064"
></path>
<path
d="M1309.582222 491.064889v-273.066667h-505.173333v47.786667h455.338667v178.176h-378.88V342.926222h-49.152v358.4c0 55.978667 27.306667 84.650667 82.602666 84.650667h370.005334c28.672-1.365333 51.2-8.874667 66.218666-23.210667 16.384-17.749333 27.989333-68.266667 34.816-152.917333l-47.786666-15.018667-1.706667 26.737778c-4.664889 58.766222-12.970667 93.582222-24.917333 104.334222-10.24 8.192-23.893333 12.288-40.277334 12.288h-342.698666c-31.402667 0-47.104-15.701333-47.104-45.738666v-201.386667h428.714666z m430.08-307.2v102.4h-219.136v386.389333h48.469334v-46.421333h170.666666v178.858667h50.517334v-178.858667h167.936v41.642667h48.469333V286.264889h-216.405333v-102.4h-50.517334z m-170.666666 395.946667v-102.4h170.666666v102.4h-170.666666z m221.184 0v-102.4h167.936v102.4h-167.936z m-221.184-146.773334V332.003556h170.666666v101.034666h-170.666666z m221.184 0V332.003556h167.936v101.034666h-167.936z m733.866666-251.221333v44.373333h-165.205333v40.277334h165.205333v45.738666h-137.898666v39.594667h137.898666V398.222222h-184.32v40.96h417.792V398.222222h-186.368v-46.421333h144.725334v-39.594667h-144.725334v-45.738666h169.301334v-40.277334h-169.301334v-44.373333h-47.104z m-85.333333 429.397333h220.501333v49.834667h-220.501333v-49.834667z m220.501333-38.229333h-220.501333v-50.517333h220.501333v50.517333z m-220.501333 126.293333h220.501333v38.912c0 15.701333-8.874667 23.893333-25.258666 23.893334l-54.613334-2.048 11.605334 43.690666h57.344c38.229333 0 58.026667-18.432 58.026666-55.296v-266.24H2391.608889V807.822222h47.104v-108.544z m-222.549333-509.952l-34.816 33.450667c49.152 36.864 88.064 71.68 116.736 104.448l33.450666-34.133333a795.079111 795.079111 0 0 0-115.370666-103.765334z m-82.602667 201.386667h144.725333v299.690667c20.48-19.114667 41.642667-40.277333 64.853334-64.170667l12.970666 51.882667a923.932444 923.932444 0 0 1-121.514666 105.813333l-19.114667-43.690667c10.24-9.557333 15.701333-19.797333 15.701333-31.402666V437.816889h-97.621333v-47.104z"
fill="#d81e06" p-id="3065"></path>
fill="#d81e06"
p-id="3065"
></path>
</svg>
<!-- 审核中 -->
<!-- <svg
@ -151,19 +211,28 @@
</span> -->
</span>
<div class="header-right">
<div v-if="
<div
v-if="
selectCardsname === '融合服务' ||
selectCardsname === '赋能场景'
" class="label-content">
<template v-if="
"
class="label-content"
>
<template
v-if="
item.fuseAttrList &&
item.fuseAttrList.filter(
(val) => val.attrType == '应用领域'
)[0]
">
<span class="label" v-for="(data, index) in item.fuseAttrList
"
>
<span
class="label"
v-for="(data, index) in item.fuseAttrList
.filter((val) => val.attrType == '应用领域')[0]
.attrValue.split(';')" :key="index">
.attrValue.split(';')"
:key="index"
>
{{ data }}
</span>
</template>
@ -181,15 +250,21 @@
</div>
</div>
<div class="dec">
<div v-if="
<div
v-if="
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' &&
selectCardsname !== '基础设施'
">
"
>
<span>{{ item.deptName || '--' }}</span>
</div>
</div>
<div v-if="selectCardsname !== '基础设施'" style="margin-top: 0.1rem" class="description">
<div
v-if="selectCardsname !== '基础设施'"
style="margin-top: 0.1rem"
class="description"
>
<a-tooltip>
<template #title>{{ item.description }}</template>
{{ item.description || '--' }}
@ -198,26 +273,32 @@
<div class="btn">
<div class="bottom" v-if="selectCardsname !== '基础设施'">
<div>
<div v-if="
<div
v-if="
selectCardsname !== '数据资源' &&
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景'
">
"
>
浏览量{{ item.visits || 0 }}
</div>
<div v-if="
<div
v-if="
selectCardsname !== '数据资源' &&
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' &&
(selectCardsname !== '应用资源' || whoShow1.itShowQingDao)
">
"
>
申请量{{ item.applyCount || 0 }}
</div>
<div v-if="
<div
v-if="
selectCardsname === '数据资源' &&
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景'
">
"
>
数据量{{ item.sjlCount || 0 }}
</div>
<div v-if="selectCardsname !== '数据资源'">
@ -227,39 +308,75 @@
</div>
<div class="right" v-if="selectCardsname !== '基础设施'">
<div class="shopping" :key="shoppingKey">
<template v-if="
<template
v-if="
(selectCardsname == '组件服务' &&
item.infoList.filter(
(val) => val.attrType == '外部服务地址'
).length === 0) ||
(selectCardsname == '应用资源' && whoShow1.itShowQingDao)
">
<span class="shopping-down" v-if="item.isInShoppingCart"></span>
<span class="shopping-on" v-else @click.stop="addShoppingCart(item, index)"></span>
"
>
<span
class="shopping-down"
v-if="item.isInShoppingCart"
></span>
<span
class="shopping-on"
v-else
@click.stop="addShoppingCart(item, index)"
></span>
</template>
</div>
<div class="sc">
<span class="sc-down" v-if="item.isCollect == 'false'" @click.stop="addCollect(item)"></span>
<span class="sc-on" v-if="item.isCollect == 'true'" @click.stop="addCollect(item)"></span>
<span
class="sc-down"
v-if="item.isCollect == 'false'"
@click.stop="addCollect(item)"
></span>
<span
class="sc-on"
v-if="item.isCollect == 'true'"
@click.stop="addCollect(item)"
></span>
</div>
<div class="shopping pk" :key="pk" v-show="
<div
class="shopping pk"
:key="pk"
v-show="
cardType == '组件服务' && findComponentName(item, '智能算法')
">
<span class="pk-on" @click.stop="goComparePk(item, index)"></span>
"
>
<span
class="pk-on"
@click.stop="goComparePk(item, index)"
></span>
</div>
<a-button type="primary" @click.stop="toView('details', item)" v-if="!whoShow1.itShowBaoTou">
<a-button
type="primary"
@click.stop="toView('details', item)"
v-if="!whoShow1.itShowBaoTou"
>
查看详情
</a-button>
<a-button style="margin-left: 10px" v-show="
<a-button
style="margin-left: 10px"
v-show="
selectCardsname === '融合服务' ||
selectCardsname === '赋能场景'
" @click.stop="handleAKeyApplication(item)">
"
@click.stop="handleAKeyApplication(item)"
>
一键申请
</a-button>
<a-button type="primary" @click.stop="toView('apply', item)" v-show="
<a-button
type="primary"
@click.stop="toView('apply', item)"
v-show="
cardType == '组件服务' ||
(cardType == '应用资源' && whoShow1.itShowQingDao)
">
"
>
{{
item.shareCondition == '免批申请' ? '免批申请' : '立即申请'
}}
@ -274,7 +391,12 @@
</div>
</div>
</div>
<a-modal v-model:visible="visible" title="视频预览" :width="750" destroyOnClose>
<a-modal
v-model:visible="visible"
title="视频预览"
:width="750"
destroyOnClose
>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%">
@ -292,10 +414,9 @@ import { getUser, sgcInsert } from '@/api/home'
import { scInsert, scDel } from '@/api/personalCenter'
import mybus from '@/myplugins/mybus'
import { getHls } from '@/api/home.js'
import IntegrationServiceOrder from './integrationServiceOrder.vue';
import ComponentServiceTag from './ComponentServiceTag.vue';
export default {
name: '',
// props: ['resourceList', 'resourceTotal', 'selectCardsname'],
props: {
resourceList: {
type: Object,
@ -307,22 +428,116 @@ export default {
},
selectCardsname: {
type: String,
default: '应用资源',
default: '组件服务',
},
},
components: {
IntegrationServiceOrder,
ComponentServiceTag,
computed: {
dataList() {
const newArr = []
for (let i = 0; i < this.resourceList.data.length; i++) {
let arr = [
{
name: '应用名称',
value: '',
},
setup(props, context) {
{
name: '应用ID',
value: '',
dataResourceId: '',
},
{
name: '应用领域',
value: '',
},
{
name: '组件类型',
value: '',
},
{
name: '技术领域',
value: '',
},
{
name: '共享类型',
value: '',
},
{
name: '共享条件',
value: '',
},
]
arr.map((item) => {
if (item.name === '应用名称') {
item.value = this.resourceList.data[i].name
}
if (item.name === '应用ID') {
item.value = this.resourceList.data[i].id
item.dataResourceId =
this.resourceList.data[i].infoList[0].dataResourceId
}
if (item.name === '应用领域') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '应用领域' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '组件类型') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '组件类型' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '技术领域') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '技术领域' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '共享类型') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '共享类型' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '共享条件') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '共享条件' ? (item.value = aa.attrValue) : ''
})
}
})
newArr.push(arr)
}
console.log(
'dataList======================>',
newArr,
this.resourceList
)
return newArr
},
isShoppingCartOrNot() {
return ''
},
},
components: {},
setup(props) {
// eslint-disable-next-line no-undef
const whoShow1 = whoShow
const showKey = ref(0)
let shoppingKey = ref(1)
let orderObj = reactive({
orderField: '',
orderType: '',
})
const integrationServiceOrderDom = ref(null)
//
const orderList = ref([
{
value: 'collectCount',
name: '收藏量',
orderType: 'DESC',
},
{
value: 'create_date',
name: '发布时间',
orderType: 'DESC',
},
// {
// value: 'update_date',
// name: '',
// orderType: 'DESC',
// },
])
// id
const selList = ref([
{ name: '发布时间', value: 'tdr.create_date', show: true },
@ -331,10 +546,6 @@ export default {
{ name: '收藏量', value: 'collectCount', show: true },
{ name: '评分', value: 'score', show: true },
])
// 西-
if (whoShow1.itShowXiHaiAn) {
selList.value = selList.value.filter(v => v.name !== '浏览量')
}
if (props.selectCardsname === '基础设施') {
selList.value.map((val) => (val.show = false))
} else if (props.selectCardsname === '数据资源') {
@ -351,14 +562,6 @@ export default {
})
}
}
// 西----
const showTagArray = ['已落地', '需要计算支持']
const getTagList = (item) => {
let _arr = item.infoList.filter((x) => showTagArray.includes(x.attrValue)) || []
let tagArray = _arr.map(v => v.attrValue)
return tagArray
}
console.log('this.resourceList', props.resourceList.data)
props.resourceList.data.map((val) => {
if (val.infoList) {
@ -413,7 +616,6 @@ export default {
)
}
} else if (props.selectCardsname === '融合服务') {
context.emit('saveSearchCodition')
//
router.push({
path: '/packagingDetails',
@ -480,7 +682,11 @@ export default {
})
}
} else {
context.emit('saveSearchCodition')
console.log(
'111111111111111111===========>',
router,
props.selectCardsname
)
router.push({
path: '/details',
query: {
@ -542,28 +748,29 @@ export default {
}
}
}
//
const changeCondition = (val) => {
selData.value = selData.value == val ? 'total' : val
const orderType = selData.value == val ? 'ASC' : 'DESC'
mybus.emit('changeCondition', {
orderField: val,
orderType: orderType,
})
console.log('选择===========》', val, selData.value)
}
/**
* val: 排序字段值
* isFromFather: 是否来自父组件传值
*/
const changeCondition = (item, isFromFather = false) => {
console.log('item, isFromFather------------>', item, isFromFather);
let newType = item.orderType == 'DESC' ? 'ASC' : 'DESC';
if (isFromFather) {
newType = item.orderType;
}
orderObj.orderField = item.value;
orderObj.orderType = newType;
let _index = selList.value.findIndex(x => x.value == item.value)
if (_index > -1) {
selList.value[_index].orderType = newType
}
selList.value = selList.value.splice(0);
mybus.emit('changeCondition', orderObj)
// --
const changeOrder = (i, val, type) => {
let newType = type === 'DESC' ? 'ASC' : 'DESC'
orderList.value[i].orderType = newType
mybus.emit('changeCondition', {
orderField: val,
orderType: newType,
})
}
// --
//
const handleAKeyApplication = (item) => {
let _applyList = []
let fuseResourceList = item.fuseResourceList || []
@ -594,6 +801,7 @@ export default {
}
otherArray.map((v) => {
let resource = v.resource || {}
console.log('resource------------>', resource)
let obj = {
arr: [
{
@ -614,25 +822,64 @@ export default {
localStorage.setItem('applyList', JSON.stringify(_applyList))
router.push({
path: '/apply',
query: {
integrationServicesId: item.id,
},
})
}
// const handleAKeyApplication = (item) => {
// let _applyList = []
// ; (item.fuseResourceList || []).map((v) => {
// let resource = v.resource || {}
// let obj = {
// arr: [
// {
// delFlag: resource.delFlag,
// description: resource.description,
// resourceId: resource.id,
// resourceName: resource.name,
// time: resource.createDate,
// type: resource.type,
// },
// ],
// deptId: resource.deptId,
// deptName: resource.deptName,
// }
// _applyList.push(obj)
// })
// localStorage.setItem('applyList', JSON.stringify(_applyList))
// router.push({
// path: '/apply',
// })
// }
mybus.on('chongzhi', (typeObj) => {
console.log('typeObj------------>', typeObj)
if (!typeObj) {
selData.value = 'total'
}
if (
typeObj &&
(typeObj.type === '融合服务' || typeObj.type === '打包模式')
(typeObj.type === '融合服务' || typeObj.type === '赋能场景')
) {
integrationServiceOrderDom.value.reset &&
integrationServiceOrderDom.value.reset()
orderList.value = [
{
value: 'collectCount',
name: '收藏量',
orderType: 'DESC',
},
{
value: 'create_date',
name: '发布时间',
orderType: 'DESC',
},
{
value: 'update_date',
name: '更新时间',
orderType: 'DESC',
},
]
}
})
let videoUrl = ref('')
const options = reactive({
width: '700px', //
@ -703,10 +950,9 @@ export default {
goComparePk,
whoShow1,
showKey,
orderList,
handleAKeyApplication,
integrationServiceOrderDom,
orderObj,
getTagList,
changeOrder,
}
},
beforeUnmount() {

View File

@ -1,12 +1,12 @@
export const titleNameArray = [
{
photo: require('@/assets/newHome/banner-yy.png'),
name: '应用资源',
},
{
photo: require('@/assets/newHome/banner-zj.png'),
name: '组件服务',
},
{
photo: require('@/assets/newHome/banner-yy.png'),
name: '应用资源',
},
{
photo: require('@/assets/newHome/banner-jc.png'),
name: '基础设施',

View File

@ -1,34 +0,0 @@
<template>
<div class="detail-back" @click="previousPage" :style="{ color: textColor }">
</div>
</template>
<script setup>
import { reactive, ref, watch, defineProps } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
console.log('router------------>', router)
const props = defineProps({
textColor: { type: String, default: '' },
})
const previousPage = () => {
window.history.go(-1)
}
</script>
<style scoped lang="less">
.detail-back {
position: absolute;
top: 0.85rem;
left: 100px;
font-size: 0.18rem;
color: #fff;
cursor: pointer;
width: 50px;
height: 50px;
background-image: url('~@/assets/detailsAll/back.png');
background-size: 100% 100%;
}
</style>

View File

@ -9,7 +9,6 @@
<div>
<div id="apply-container">
<home-header :showView="showView"></home-header>
<detail-back></detail-back>
<details-view v-if="showView === 'details-view'"></details-view>
<algorithm-details
v-else-if="showView === 'algorithm-details'"
@ -39,7 +38,6 @@
import DeveloperComponents from '@/views/detailsAll/DeveloperComponents'
import BusinessDetails from '@/views/detailsAll/BusinessDetails'
import LayerService from '@/views/detailsAll/LayerService'
import detailBack from '@/views/home/detailBack.vue'
import { selectOne } from '@/api/home'
import { useRouter } from 'vue-router'
export default defineComponent({
@ -54,7 +52,6 @@
DeveloperComponents,
BusinessDetails,
LayerService,
detailBack
},
setup() {
const formState = reactive({
@ -166,7 +163,6 @@
}
}
init()
return {
formState,
options,

View File

@ -100,8 +100,6 @@
import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
export default defineComponent({
setup() {
const selectedKeys = ref([])
@ -120,7 +118,7 @@
'router.currentRoute.value.query.select',
router.currentRoute.value.query.select
)
let select = router.currentRoute.value.query.select || DETAIL_PAGE_CONTENT_DEFAULT_TAB
let select = router.currentRoute.value.query.select
if (select === '123') {
select = ''
}

File diff suppressed because it is too large Load Diff

View File

@ -5,8 +5,13 @@
<div class="top">
<div class="top-title">
全部
<div v-for="(item, index) in titleName" :key="index" class="tabAll" @click="changeCards(index)"
:class="{ sel: index == number }">
<div
v-for="(item, index) in titleName"
:key="index"
class="tabAll"
@click="changeCards(index)"
:class="{ sel: index == number }"
>
<span>
{{ item.name === '赋能场景' ? '典型赋能场景' : '打包模式' }}
</span>
@ -15,26 +20,54 @@
<div class="resultListSearchInput-father" v-if="number === 0">
<div class="resultListSearchInput-son">
模糊搜索
<a-input-search v-model:value="searchValue" placeholder="请输入关键词" enter-button="搜索" size="large"
@search="getIntegrationList" @change="onSearch" class="resultListSearchInput" />
<button class="button-reset" @click="resetAction()">重置</button>
<a-input-search
v-model:value="searchValue"
placeholder="请输入关键词"
enter-button="搜索"
size="large"
@search="getAppResources"
@change="onSearch"
class="resultListSearchInput"
/>
<button class="button-reset" @click="chongzhi()">重置</button>
<div class="hengxian"></div>
</div>
</div>
<div v-loading="loadingData">
<searchResultList v-if="number === 0" v-show="resourceList.data && resourceList.data.length > 0"
:resourceList="resourceList" :resourceTotal="resourceTotal" @saveSearchCodition="saveSearchCodition"
ref="searchResultListDom" :selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
<CanAssignCase v-else v-show="resourceList.data && resourceList.data.length > 0" :resourceList="resourceList"
@saveSearchCodition="saveSearchCodition" :resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
<searchResultList
v-if="number === 0"
v-show="resourceList.data && resourceList.data.length > 0"
:key="listKey2"
:resourceList="resourceList"
:resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<CanAssignCase
v-else
v-show="resourceList.data && resourceList.data.length > 0"
:key="listKey2"
:resourceList="resourceList"
:resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<div class="pagination">
<a-pagination v-if="resourceList.data && resourceList.data.length > 0" v-model:current="currentPage"
v-model:pageSize="currentPageSize" show-size-changer show-less-items show-quick-jumper
:total="resourceTotal" :page-size-options="pageSizeOptions" @change="pageChange"
@showSizeChange="onShowSizeChange" />
<a-pagination
v-if="resourceList.data && resourceList.data.length > 0"
v-model:current="currentPage"
v-model:pageSize="currentPageSize"
show-size-changer
show-less-items
show-quick-jumper
:total="resourceTotal"
:page-size-options="pageSizeOptions"
@change="pageChange"
@showSizeChange="onShowSizeChange"
/>
</div>
<div v-if="resourceList.data && resourceList.data.length <= 0" style="margin-top: 2rem">
<div
v-if="resourceList.data && resourceList.data.length <= 0"
style="margin-top: 2rem"
>
<a-empty />
</div>
</div>
@ -45,7 +78,8 @@
<script>
import HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus'
import { defineComponent, reactive, ref, toRefs, onMounted, nextTick } from 'vue'
import { defineComponent, reactive, ref, toRefs, onMounted, watch } from 'vue'
import { getIntegrationServicesList } from '@/api/home.js'
import { useRouter } from 'vue-router'
import HomeHeader from '@/views/home/components/header'
@ -54,27 +88,19 @@ import CanAssignCase from '@/views/home/components/CanAssignCase.vue'
import { message } from 'ant-design-vue'
export default defineComponent({
beforeRouteLeave(to, from, next) {
console.log('to---integrationServices--beforeRouteLeave------->', to)
console.log('from---integrationServices--beforeRouteLeave------->', from)
console.log('next---integrationServices--beforeRouteLeave------->', next)
if (to.name !== 'packagingDetails' && to.name !== 'integrationServicesDetails') {
localStorage.removeItem('integrationServices')
}
next()
},
setup() {
//
const loading = ref(true)
const currentPage = ref(1)
const currentPageSize = ref(5)
const pageSizeOptions = ref(['2', '5', '10', '20', '50'])
const currentPageSize = ref(10)
const pageSizeOptions = ref(['5', '10', '20', '50'])
const router = useRouter()
const select = router.currentRoute.value.query.select
const searchValue = ref('')
const Cardsname = ref(select)
const resourceList = reactive({ data: [] })
const resourceTotal = ref(0)
const current = ref(1)
const loadingData = ref(false)
//
const titleName = ref([
@ -85,84 +111,80 @@ export default defineComponent({
name: '赋能场景',
},
])
const number = ref(0)
//
let listKey = ref(0)
//
const listKey2 = ref(0)
//
const paramsGetResources = {
page: currentPage.value,
limit: currentPageSize.value,
pageNum: 1,
pageSize: currentPageSize.value,
type: titleName.value[number.value].name,
name: searchValue.value,
orderField: 'create_date',
name: '',
orderField: 'create_date', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
const searchResultListDom = ref(null)
const storageSearchInfo = JSON.parse(localStorage.getItem('integrationServices'))
//
const handleSetSearchData = () => {
if (storageSearchInfo) {
number.value = storageSearchInfo.type == '打包模式' ? 0 : 1;
//
searchValue.value = storageSearchInfo.name;
currentPage.value = storageSearchInfo.page;
currentPageSize.value = storageSearchInfo.limit;
paramsGetResources.limit = storageSearchInfo.limit;
paramsGetResources.page = storageSearchInfo.page;
paramsGetResources.type = storageSearchInfo.type;
// 使
nextTick(() => {
searchResultListDom.value && searchResultListDom.value.changeCondition && searchResultListDom.value.changeCondition({
value: storageSearchInfo.orderField,
orderType: storageSearchInfo.orderType,
}, true)
})
getIntegrationList()
}
}
const changeCards = (val) => {
//
number.value = val;
paramsGetResources.type = titleName.value[number.value].name;
resetAction()
console.log(val)
number.value = val
chongzhi()
}
//
const onSearch = () => {
loading.value = true
currentPage.value = 1
getIntegrationList()
}
//
const resetAction = () => {
const chongzhi = () => {
loading.value = true
//
searchValue.value = ''
//
currentPage.value = 1
currentPageSize.value = 5
currentPageSize.value = 10
//
paramsGetResources.page = 1
paramsGetResources.limit = 5
paramsGetResources.pageNum = 1
paramsGetResources.pageSize = 10
paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC'
mybus.emit('resetAction', {
mybus.emit('chongzhi', {
type: titleName.value[number.value].name,
})
getAppResources()
}
const getAppResources = () => {
getIntegrationList()
}
//
const getIntegrationList = () => {
loadingData.value = true
paramsGetResources.name = searchValue.value;
console.log('paramsGetResources------参数下发------>', paramsGetResources);
getIntegrationServicesList(paramsGetResources).then(
console.log('获取融合服务列表------------>')
let postData = {
limit: currentPageSize.value,
page: currentPage.value,
orderField: paramsGetResources.orderField,
orderType: paramsGetResources.orderType,
name: searchValue.value,
type: titleName.value[number.value].name,
}
getIntegrationServicesList(postData).then(
(res) => {
loadingData.value = false
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
console.log('res.data------------>', res.data)
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || 0
listKey2.value++
},
(err) => {
loadingData.value = false
@ -177,81 +199,75 @@ export default defineComponent({
} else {
delete paramsGetResources.deptIds
}
getIntegrationList()
getAppResources()
console.log('paramsGetResources', paramsGetResources)
})
mybus.on('changePage', (page) => {
paramsGetResources.page = page
getIntegrationList()
paramsGetResources.pageNum = page
getAppResources('分页查询')
})
mybus.on('changeSelcted', () => {
getIntegrationList()
getAppResources()
})
mybus.on('refresh', () => {
paramsGetResources.page = 1
paramsGetResources.pageNum = 1
currentPage.value = 1
getIntegrationList()
getAppResources()
})
mybus.on('changeCondition', (condition) => {
paramsGetResources.orderField = condition.orderField
paramsGetResources.orderType = condition.orderType
getIntegrationList()
getAppResources()
})
const pageChange = (val) => {
console.log(val)
loading.value = true
currentPage.value = val
paramsGetResources.page = val
getIntegrationList() //
paramsGetResources.pageNum = val
let params = '分页查询' //
getAppResources(params)
}
onMounted(() => {
console.log('222----onMounted-------->', 222)
listKey2.value++
getAppResources()
})
//
const onShowSizeChange = (current, pageSize) => {
currentPage.value = current
currentPageSize.value = pageSize
paramsGetResources.page = current
paramsGetResources.limit = pageSize
getIntegrationList()
}
//
const saveSearchCodition = (n) => {
console.log('融合服务-----存储查询条件到本地------->', paramsGetResources);
localStorage.setItem(
'integrationServices',
JSON.stringify(paramsGetResources)
)
}
onMounted(() => {
if (storageSearchInfo) {
handleSetSearchData()
} else {
getIntegrationList()
paramsGetResources.pageNum = current
paramsGetResources.pageSize = pageSize
getAppResources()
}
watch(currentPageSize, () => {
console.log('pageSize', currentPageSize.value)
})
return {
listKey,
searchValue,
currentPage,
resourceList,
resourceTotal,
pageChange,
listKey2,
Cardsname,
getIntegrationList,
resetAction,
getAppResources,
chongzhi,
onSearch,
currentPageSize,
pageSizeOptions,
current,
loading,
titleName,
changeCards,
number,
loadingData,
onShowSizeChange,
saveSearchCodition,
searchResultListDom,
}
},
components: {
@ -273,6 +289,8 @@ export default defineComponent({
background: #f3f5f9;
padding: 0.2rem;
// padding-left: 0.2rem;
// padding-top: 0.2rem;
.resultListSearchInput-son {
background: #fff;
padding: 0.2rem 0.2rem 0rem 0.3rem;

View File

@ -2,15 +2,21 @@
<template>
<div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }">
<home-header></home-header>
<detail-back></detail-back>
<!-- 头部基本信息 -->
<application-top-details :dataList="detailInfoObj" :navList="navList"></application-top-details>
<application-top-details
:dataList="detailInfoObj"
:navList="navList"
></application-top-details>
<!-- 导航 -->
<div :class="{ fixed: scrollTop >= 600 }">
<div class="application-navigation">
<template v-for="nav in navList" :key="nav.key">
<div class="nav" :class="{ selectNow: nav.key == selectNow }" @click="selectNav(nav.key)">
<div
class="nav"
:class="{ selectNow: nav.key == selectNow }"
@click="selectNav(nav.key)"
>
{{ nav.name }}
<span class="line"></span>
</div>
@ -24,16 +30,19 @@
<DetalsTitle title="场景痛点" type="PAIN POINT"></DetalsTitle>
</div>
<div class="flex-row-center">
<div class="bg cjtd">
<a-image :preview="false" :src="bgImg" />
</div>
<div class="bg cjtd"><a-image :preview="false" :src="bgImg" /></div>
<div class="content" style="margin-left: 0.5rem">
<div class="content-item" v-for="(item, i) in painPoint" :key="i" style="
<div
class="content-item"
v-for="(item, i) in painPoint"
:key="i"
style="
margin-bottom: 0.2rem;
font-size: 0.18rem;
line-height: 0.3rem;
">
"
>
{{ i + 1 + '、' + item.description }}
</div>
</div>
@ -41,17 +50,26 @@
</div>
<!-- 解决方案 -->
<div id="integration-solution" class="solution scrollBox" style="background: #eee">
<div
id="integration-solution"
class="solution scrollBox"
style="background: #eee"
>
<div class="title-1">
<DetalsTitle title="解决方案" type="SOLUTION"></DetalsTitle>
</div>
<div class="flex-row-center">
<div class="content" style="background: #fff; margin-top: 0.2rem">
<div class="content-item" v-for="(item, i) in solution" :key="i" style="
<div
class="content-item"
v-for="(item, i) in solution"
:key="i"
style="
margin-bottom: 0.2rem;
font-size: 0.18rem;
line-height: 0.3rem;
">
"
>
{{ i + 1 + '、' + item.description }}
</div>
</div>
@ -63,20 +81,48 @@
<div class="title-1">
<DetalsTitle title="使用能力" type="ABILITY"></DetalsTitle>
</div>
<div class="flex-row-center combine-content" v-for="(item, i) in combineList" :key="i" style="display: block">
<div class="top" style="font-size: 0.24rem; text-align: center; margin-bottom: 0.3rem">
<div
class="flex-row-center combine-content"
v-for="(item, i) in combineList"
:key="i"
style="display: block"
>
<div
class="top"
style="font-size: 0.24rem; text-align: center; margin-bottom: 0.3rem"
>
{{ i == 0 ? '基础设施' : i == 1 ? '组件服务' : '数据资源' }}
</div>
<div class="bottom" style="display: flex; align-items: flex-start">
<div class="title" :class="'title' + i"></div>
<div class="table-box">
<el-table class="table" :data="item.list" stripe :header-cell-style="{ 'text-align': 'center' }">
<el-table-column prop="name" label="数据" align="center" width="200" show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="dept" label="能力来源" align="center" width="300" show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="platform" label="申请平台" align="center" width="100" show-overflow-tooltip="true">
</el-table-column>
<div>
<el-table
class="table"
:data="item.list"
stripe
:header-cell-style="{ 'text-align': 'center' }"
>
<el-table-column
prop="name"
label="数据"
align="center"
width="200"
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="dept"
label="能力来源"
align="center"
width="300"
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="platform"
label="申请平台"
align="center"
width="100"
show-overflow-tooltip="true"
></el-table-column>
</el-table>
</div>
</div>
@ -90,7 +136,12 @@
</div>
<div class="flex-row-center step-content">
<el-steps direction="vertical" :space="150" :active="step.length">
<el-step v-for="(item, i) in step" :key="i" :title="item.question" :description="item.answer"></el-step>
<el-step
v-for="(item, i) in step"
:key="i"
:title="item.question"
:description="item.answer"
></el-step>
</el-steps>
</div>
</div>
@ -104,7 +155,6 @@ import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' //
import HomeFooter from '@/views/newHome/components/Footer'
import HomeHeader from '@/views/home/components/header'
import detailBack from '@/views/home/detailBack.vue'
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router'
import { getIntegrationDetail } from '@/api/home'
@ -215,14 +265,6 @@ const selectNav = (key) => {
mybus.emit('flyToView', selectNow.value)
}
const getAttrValue = (fuseAttrList, data, text) => {
let _obj = fuseAttrList.find((v) => v.attrType === text) || {};
data =
JSON.parse(
_obj.attrValue || '[]'
) || []
}
// --
const getIntegrationServicesDeatil = (id) => {
getIntegrationDetail(id).then(
@ -241,9 +283,18 @@ const getIntegrationServicesDeatil = (id) => {
attrType: '常见问题',
attrValue: questionValue.attrValue || '[]',
}
getAttrValue(fuseAttrList, painPoint.value, '场景痛点');
getAttrValue(fuseAttrList, solution.value, '解决方案');
getAttrValue(fuseAttrList, step.value, '使用步骤');
painPoint.value =
JSON.parse(
fuseAttrList.find((v) => v.attrType === '场景痛点').attrValue
) || []
solution.value =
JSON.parse(
fuseAttrList.find((v) => v.attrType === '解决方案').attrValue
) || []
step.value =
JSON.parse(
fuseAttrList.find((v) => v.attrType === '使用步骤').attrValue
) || []
bgImg.value =
fuseAttrList.find((v) => v.attrType === '服务图片').attrValue || ''
let areaObj = {
@ -447,9 +498,11 @@ onBeforeUnmount(() => {
height: 1.5rem;
width: 6.2rem;
border-radius: 0.2rem;
background: linear-gradient(to right,
background: linear-gradient(
to right,
rgba(113, 132, 252, 0.4),
rgba(148, 163, 252, 0.4));
rgba(148, 163, 252, 0.4)
);
padding: 0 0.3rem;
display: flex;
justify-content: center;
@ -485,7 +538,6 @@ onBeforeUnmount(() => {
.pain-point {
padding: 0.8rem 0;
background: rgb(247, 248, 250);
.bg {
height: 3rem;
width: 3rem;
@ -493,20 +545,17 @@ onBeforeUnmount(() => {
// background-size: 100%;
margin-top: 0.3rem;
}
.cjtd {
width: 5.75rem;
height: 3.4rem;
background: url('~@/assets/home/fn/cjtd.png') no-repeat;
background-size: 100%;
}
.content {
overflow: auto;
height: 3rem;
width: 7rem;
margin-top: 0.3rem;
.content-item {
font-size: 16px;
margin: 0rem 0rem 0.1rem 0.1rem;
@ -517,10 +566,8 @@ onBeforeUnmount(() => {
.solution {
padding: 0.8rem 0;
background: rgb(247, 248, 250);
.content {
width: 11rem;
.content-item {
font-size: 16px;
margin: 0.3rem;
@ -531,22 +578,18 @@ onBeforeUnmount(() => {
.step {
padding: 0.8rem 0;
background: rgb(247, 248, 250);
.step-content {
margin: 0.3rem 4.5rem;
padding: 0.3rem;
background: #fff;
:deep(.el-step__description.is-finish) {
color: #333;
line-height: 0.24rem;
margin-top: 0.05rem;
}
/deep/ .el-step__title {
font-size: 18px;
}
/deep/ .el-step__description {
font-size: 14px;
}
@ -565,49 +608,38 @@ onBeforeUnmount(() => {
margin-top: 0.3rem;
align-items: flex-start;
border-bottom: 1px solid #ccc;
margin: 0.2rem 3.5rem 0;
margin: 0.2rem 4rem 0;
padding: 0.2rem 0;
.title {
height: 3rem;
width: 3rem;
margin-right: 0.4rem;
margin-right: 0.5rem;
background: url('~@/assets/home/rhfw_square.png') no-repeat;
background-size: 100% 100%;
background-size: 100%;
}
.title0 {
width: 5.6rem;
height: 3.45rem;
background: url('~@/assets/home/fn/jcss.png') no-repeat;
background-size: 100% 100%;
background-size: 100%;
}
.title1 {
width: 5.6rem;
height: 3.45rem;
background: url('~@/assets/home/fn/zjfw.png') no-repeat;
background-size: 100% 100%;
background-size: 100%;
}
.title2 {
width: 5.6rem;
height: 3.45rem;
background: url('~@/assets/home/fn/sjzy.png') no-repeat;
background-size: 100% 100%;
background-size: 100%;
}
.table-box {
height: 3.45rem;
flex: 1;
overflow-y: auto;
}
.table {
// width: 100%;
width: 100%;
font-size: 16px;
}
}
.name-box {
display: flex;
flex-direction: row;

View File

@ -35,8 +35,6 @@
import { useRouter } from 'vue-router'
import { ref } from 'vue'
import { selectNewest } from '@/api/home'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
export default {
name: 'latestAbility',
components: {},
@ -47,8 +45,7 @@
router.push({
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
}

View File

@ -2,7 +2,6 @@
<!-- 青岛 -->
<div class="details-pageconetent">
<home-header></home-header>
<detail-back></detail-back>
<div class="content-box" v-loading="loadingPage">
<div class="package-title">打包模式</div>
<div class="basic-info">
@ -71,7 +70,6 @@ import { message } from 'ant-design-vue'
import { getIntegrationDetail } from '@/api/home'
import HomeHeader from '@/views/home/components/header'
import { scInsert, scDel } from '@/api/personalCenter'
import detailBack from '@/views/home/detailBack.vue'
const router = useRouter()
const id = router.currentRoute.value.query.id
@ -112,6 +110,7 @@ const getIntegrationServicesDeatil = (id) => {
}
detailInfoObj.value = res.data.data || {}
console.log('detailInfoObj------------>', detailInfoObj);
let fuseResourceList = detailInfoObj.value.fuseResourceList || []
abilityList.value.map(v => {
let list = fuseResourceList.filter(x => x.type == v.name) || [];
@ -198,6 +197,7 @@ const addCollect = () => {
}
})
.catch(err => {
console.log('err------------>', err);
message.success(err)
})
} else {
@ -216,13 +216,16 @@ const addCollect = () => {
}
})
.catch(err => {
console.log('err------------>', err);
message.success(err)
})
}
}
}
getIntegrationServicesDeatil(id)
</script>
<style lang="less" scoped>
.flex-row-start {

View File

@ -65,8 +65,6 @@
data-spm-anchor-id="a313x.7781069.0.i0"
></path>
</svg>
<img class="icon-poylon" @click="areaMode()" src="~@/supermap/image/icon-poylon.png">
</div>
<video-play
v-if="openVideo"
@ -94,7 +92,6 @@
} from '@/api/videoSurveillance'
import { getCameraByCondition } from '@/api/file'
import mybus from '@/myplugins/mybus'
import * as turf from '@turf/turf';
export default {
data() {
@ -115,7 +112,6 @@
openVideo: false,
channelCode: [],
circleModeFlag: false,
areaModeFlag: false,
addressMatchUrl: '',
address: '',
whoShow1: whoShow,
@ -128,10 +124,7 @@
gpsX: '',
gpsY: '',
radius: '',
borderPolygonList: [],
type: 0, //012
},
pointAllData:[],
}
},
components: {
@ -165,20 +158,6 @@
this.mapSearchParam.parentId = parentId
this.getCameraByParentId()
})
//
mybus.off('selectTablePoint')
mybus.on('selectTablePoint', (pointlist) => {
console.log("mounted -> pointlist", pointlist);
for(let i=0;i<this.pointAllData.length;i++){
this.pointAllData[i].active = false
for(let j=0;j<pointlist.length;j++){
if(this.pointAllData[i].channelCode == pointlist[j].channelCode){
this.pointAllData[i].active = true
}
}
}
this.addResourceTomap('videoMap', this.pointAllData);
})
},
methods: {
selectedAddress(item, index) {
@ -190,46 +169,6 @@
}
this.hiMapFun.mapFlyTo(latLng)
},
//
areaSelectResource(){
//
L.drawLocal.draw.handlers.polygon.tooltip.start = '单击开始绘制形状'
L.drawLocal.draw.handlers.polygon.tooltip.cont = '单击继续绘制形状'
L.drawLocal.draw.handlers.polygon.tooltip.end =
'单击继续绘制形状,双击结束绘制'
this.hiMap.mapObj.map.off('draw:created')
this.hiMap.mapObj.drawPolygon.enable()
this.hiMap.mapObj.map.once('draw:created', (e) => {
const type = e.layerType
const circleLayer = e.layer
console.log('查询图层draw:created', e)
if (type === 'polygon') {
const polygonLayer = e.layer;
this.hiMap.mapObj.featureGroup.addLayer(polygonLayer);
this.hiMap.mapObj.layerGroup.set('rectangleSelectLayer', polygonLayer);
const arr = [];
const latlngs = []; //
polygonLayer._latlngs[0].map(item => {
// const bdLonLat = wgs84LL2bdLL();
arr.push(turf.point([item.lng, item.lat]));
latlngs.push([item.lat,item.lng])
});
const points = turf.featureCollection(arr);
const rect = turf.convex(points);
this.mapSearchParam.borderPolygonList = latlngs
this.mapSearchParam.type = 2
const params = {
borderPolygonList: latlngs,
type: this.mapSearchParam.type,
}
// mybus.emit('getListByMap', params);
this.getCameraByParentId('map');
console.log("areaSelectResource -> latlngs", latlngs)
}
})
},
//
circleSelectResource() {
L.drawLocal.draw.handlers.circle.tooltip.start = '请圈选区域'
@ -257,20 +196,18 @@
this.mapSearchParam.gpsX = e.layer._latlng.lng
this.mapSearchParam.gpsY = e.layer._latlng.lat
this.mapSearchParam.radius = radius
this.mapSearchParam.type = 1
const params = {
gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY,
radius: radius,
type: this.mapSearchParam.type,
}
// mybus.emit('getListByMap', params)
this.getCameraByParentId('map')
mybus.emit('getListByMap', params)
this.getCameraByParentId()
}
}
})
},
getCameraByParentId(type) {
getCameraByParentId() {
if (!this.whoShow1.itShowXiHaiAn) {
debugger
getCameraByParentId(this.mapSearchParam).then((res) => {
@ -284,13 +221,12 @@
this.mapSearchParam.parentId ||
'70be8c5b664f4bcf869d82f2e8335051',
pageNum: this.mapSearchParam.pageNum,
pageSize: this.mapSearchParam.type!=0?this.mapSearchParam.pageSize:10,
pageSize: this.mapSearchParam.pageSize,
name: this.mapSearchParam.cameraName || '',
longitude: this.mapSearchParam.gpsX || '',
latitude: this.mapSearchParam.gpsY || '',
radius: this.mapSearchParam.radius || '',
type: this.mapSearchParam.type,
borderPolygonList: this.mapSearchParam.borderPolygonList || [],
status: 1,
}
let paramsFather = ''
let i = 1
@ -307,19 +243,9 @@
}
}
}
getCameraByCondition(params).then((res) => {
getCameraByCondition(paramsFather).then((res) => {
console.log('根据parent查询摄像头', res.data.data)
if(type=='map'){
let params = this.mapSearchParam;
params.dataSource = res.data.data||0;
params.total = res.data.count||0;
mybus.emit('getListByMap', params);
}
this.pointAllData = res.data.data;
if(this.mapSearchParam.type!=0)
this.addResourceTomap('videoMap', res.data.data)
else
this.addResourceTomap('videoMap', []) //
})
}
},
@ -330,65 +256,27 @@
this.addressMatchUrl
)
},
areaMode(){
//
if(this.circleModeFlag){
this.resetCircle();
this.circleModeFlag = false;
}
this.areaModeFlag = !this.areaModeFlag;
if (this.areaModeFlag) {
//
this.areaSelectResource()
} else {
this.resetArea();
}
},
circleMode() {
if(this.areaModeFlag){
this.resetArea();
this.areaModeFlag = false;
}
//
this.circleModeFlag = !this.circleModeFlag
if (this.circleModeFlag) {
//
this.circleSelectResource()
} else {
this.resetCircle();
}
},
resetCircle(){
//
this.hiMapFun.removeLayerByLayerName('circlePloygonLayer')
//
this.mapSearchParam.gpsX = ''
this.mapSearchParam.gpsY = ''
this.mapSearchParam.radius = ''
this.mapSearchParam.type = 0;
this.getCameraByParentId()
const params = {
gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY,
radius: this.mapSearchParam.radius,
type: this.mapSearchParam.type
}
this.getCameraByParentId('map')
// mybus.emit('getListByMap', params);
},
resetArea(){
//
this.hiMapFun.removeLayerByLayerName('rectangleSelectLayer');
//
this.mapSearchParam.borderPolygonList = [];
this.mapSearchParam.type = 0;
const params = {
borderPolygonList: this.mapSearchParam.borderPolygonList,
type: this.mapSearchParam.type
mybus.emit('getListByMap', params)
}
this.getCameraByParentId('map')
// mybus.emit('getListByMap', params);
},
//
async searchAddressByKeyWord(queryString, cb, indexX) {
@ -464,21 +352,18 @@
addResourceTomap(type, data) {
const dataEvent = []
if(data&&data.length>0){
data.forEach((item) => {
const arr = [0, 0.0, '', '0', '0.0']
if (arr.indexOf(item.gpsX) == -1) {
dataEvent.push({
latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) },
data: item,
active: item.active,
type: 'videoSurveillance',
})
}
})
}
console.log('上图数据', dataEvent)
this.getMapPoint(dataEvent, 'icon_camare.png', type)
this.getMapPoint(dataEvent, 'videoSurveillance.png', type)
},
getMapPoint(data, img, type) {
// this.hiMapFun.clearAllLayers();
@ -488,8 +373,7 @@
features,
img,
type,
createCameraDetailsPop,
'icon_camare_active.png'
createCameraDetailsPop
)
},
@ -659,17 +543,13 @@
.leaflet-control-attribution {
display: none;
}
svg,.icon-poylon {
svg {
position: absolute;
bottom: 0.1rem;
right: 0.1rem;
z-index: 988;
z-index: 1001;
cursor: pointer;
}
.icon-poylon {
width: 0.46rem;
bottom: 0.6rem;
}
.address-auto-complete-input {
width: 2.4rem;
}

View File

@ -26,7 +26,7 @@ import {
ref,
watch,
defineProps,
defineEmits,
nextTick,
} from 'vue'
import { getDevelopDocTree } from '@/api/home'
import { message } from 'ant-design-vue'

View File

@ -118,7 +118,6 @@
import TheOverallProcess from './TheOverallProcess.vue'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const router = useRouter()
const seviceList = ref([
{
@ -256,8 +255,7 @@
const newpage = router.resolve({
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
window.location.href = newpage.href

View File

@ -15,16 +15,22 @@
</a-input>
</a-form-item>
<a-form-item>
<a-input v-model:value="form.password" type="password" placeholder="Password">
<a-input
v-model:value="form.password"
type="password"
placeholder="Password"
>
<template v-slot:prefix>
<LockOutlined style="color: rgba(0, 0, 0, 0.25)" />
</template>
</a-input>
</a-form-item>
<a-form-item>
<!-- IE Chrome || judgeAgent() !== 'Chrome'-->
<a-button type="primary" html-type="submit"
:disabled="form.username === '' || form.password === '' || !canOpen.includes(judgeAgent())">
<a-button
type="primary"
html-type="submit"
:disabled="form.username === '' || form.password === ''"
>
登录
</a-button>
</a-form-item>
@ -40,10 +46,7 @@ import { dependencies, devDependencies } from '*/package.json'
import { mapActions, mapGetters } from 'vuex'
import { Encrypt } from '@/utils/crypto'
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
import { message, Modal } from 'ant-design-vue'
// 西
const isXiHaiAn = whoShow.itShowXiHaiAn
import { message } from 'ant-design-vue'
export default {
name: 'Login',
@ -60,9 +63,6 @@ export default {
redirect: undefined,
dependencies: dependencies,
devDependencies: devDependencies,
is360: false,
isIE: false,
canOpen: ['FF', 'Chrome']
}
},
computed: {
@ -82,52 +82,14 @@ export default {
mounted() {
this.form.username = ''
this.form.password = ''
if (!this.canOpen.includes(this.judgeAgent())) {
Modal.warning({
title: '提示',
content: '请使用谷歌或火狐浏览器!',
});
}
/* setTimeout(() => {
this.handleSubmit()
}, 3000) */
},
methods: {
...mapActions({
login: 'user/login',
}),
//
judgeAgent() {
let userAgent = navigator.userAgent // userAgent
console.log('userAgent------------>', userAgent);
let isOpera = userAgent.indexOf('Opera') > -1
//Opera
if (isOpera) {
return 'Opera'
}
//Firefox
if (userAgent.indexOf('Firefox') > -1) {
return 'FF'
}
//chorme
if (userAgent.indexOf('Chrome') > -1) {
return 'Chrome'
}
//Safari
if (userAgent.indexOf('Safari') > -1) {
return 'Safari'
}
//IE
if (
userAgent.indexOf('compatible') > -1 &&
userAgent.indexOf('MSIE') > -1 &&
!isOpera
) {
return 'IE'
}
//Edge
if (userAgent.indexOf('Trident') > -1) {
return 'Edge'
}
},
handleRoute() {
return this.redirect === '/404' || this.redirect === '/403'
? '/home'
@ -148,19 +110,7 @@ export default {
window.sessionStorage.setItem('visits', JSON.stringify([]))
console.log('添加visits========================================>')
// console.log(this.handleRoute())
// 西
if (isXiHaiAn) {
await this.$router.push({
path: '/DetailsPageconetent',
query: {
select: '基础设施',
tecHnosphere: '',
appLiCation: ''
}
})
} else {
await this.$router.push('/home')
}
} catch (error) {
message.error('登陆失败,用户名或密码错误!')
}
@ -174,7 +124,6 @@ export default {
height: 100vh;
background: url('~@/assets/login_images/login_background.png');
background-size: cover;
&-form {
width: calc(100% - 40px);
height: 380px;
@ -187,18 +136,15 @@ export default {
border-radius: 10px;
box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06);
}
&-hello {
font-size: 32px;
color: #fff;
}
&-title {
margin-bottom: 30px;
font-size: 20px;
color: #fff;
}
&-tips {
position: fixed;
bottom: @vab-margin;
@ -207,16 +153,13 @@ export default {
color: rgba(255, 255, 255, 0.856);
text-align: center;
}
.ant-col {
width: 100%;
padding: 0 10px 0 10px;
}
.ant-input {
height: 35px;
}
.ant-btn {
width: 100%;
height: 45px;

View File

@ -2,7 +2,7 @@
<div class="capability-convergence">
<div class="main">
<div class="top">
能力分类
能力汇聚
<span class="line"></span>
</div>
<div class="bottom">
@ -84,8 +84,7 @@
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import { updateVisits, browsingInsert } from '@/api/home'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
@ -128,23 +127,6 @@
pageSize: paramsGetResources.pageSize, //
}).then((res) => {
console.log('数据资源==================>', res.data.data)
if (whoShow1.value.itShowQingDao) {
res.data.data.data.forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
obj.value = res.data.data.data || []
object.sjNum = res.data.data.rows
// interfaceSuccess.value++
// if (interfaceSuccess.value == 5) {
// mybus.emit('chagneNum', object)
// }
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
@ -160,52 +142,26 @@
// if (interfaceSuccess.value == 5) {
// mybus.emit('chagneNum', object)
// }
}
})
} else {
let type = paramsGetResources.type
if (type == '基础设施') {
jcList.value = []
selectInfrastructureList().then((res) => {
console.log('基础设施==========>', res.data.data)
for (const key in res.data.data) {
if (whoShow1.value.itShowXiHaiAn) {
if (key === '视频资源') {
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
} else {
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
}
// 西-
if (whoShow1.value.itShowXiHaiAn) {
getSoldierData('无人机')
.then((res) => {
let { total = 0 } = res.data.data
if (uavAndIndividualSoldier.num) {
jcList.value.push({
name: '无人机',
num: total,
num: uavAndIndividualSoldier.uavList.length,
})
})
.catch((err) => {
console.log('err--无人机---------->', err)
})
getSoldierData('单兵设备')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '单兵设备',
num: total,
})
})
.catch((err) => {
console.log('err--单兵设备---------->', err)
num: uavAndIndividualSoldier.individualSoldier.length,
})
}
})
@ -232,28 +188,6 @@
}
}
// todo
const getSoldierData = (name) => {
let _params = {
type: name,
page: 1,
limit: 10,
}
return new Promise((resolve, reject) => {
getSoldierList(_params)
.then((res) => {
resolve(res)
console.log('res---获取无人机、单兵设备--------->', res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
})
.catch((err) => {
reject(err)
})
})
}
const openHref = (item) => {
console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo')
@ -346,14 +280,12 @@
background-size: 100%;
display: flex;
justify-content: center;
.main {
width: 13rem;
margin-top: 1.8rem;
display: flex;
flex-direction: column;
flex-wrap: wrap;
.top {
font-size: 0.3rem;
color: #212121;
@ -363,7 +295,6 @@
flex-wrap: wrap;
justify-content: center;
align-items: center;
.line {
width: 0.34rem;
height: 0.03rem;
@ -371,12 +302,10 @@
margin-top: 0.08rem;
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 0.4rem;
.item {
width: 2.44rem;
height: 3.91rem;
@ -385,7 +314,6 @@
border-radius: 0.02rem;
box-shadow: 0 0.05rem 0.2rem #ccc;
position: relative;
div:nth-of-type(1) {
height: 1.02rem;
line-height: 1.02rem;
@ -394,27 +322,21 @@
padding-left: 0.15rem;
background-size: 100%;
}
.jc {
background: url('~@/assets/newHome/Convergence-jc.png') no-repeat;
}
.sj {
background: url('~@/assets/newHome/Convergence-sj.png') no-repeat;
}
.zj {
background: url('~@/assets/newHome/Convergence-zj.png') no-repeat;
}
.yy {
background: url('~@/assets/newHome/Convergence-yy.png') no-repeat;
}
.zs {
background: url('~@/assets/newHome/Convergence-zs.png') no-repeat;
}
.name {
height: 0.47rem;
line-height: 0.47rem;
@ -427,16 +349,13 @@
-webkit-box-orient: vertical;
word-break: break-all;
}
.name:hover {
color: #0058e1;
cursor: pointer;
}
.name-last {
border-bottom: none;
}
.btn {
cursor: pointer;
width: 0.8rem;
@ -451,13 +370,11 @@
position: absolute;
bottom: 0.2rem;
}
.btn:hover {
background: rgba(0, 88, 225, 0.3);
color: #000;
}
}
.item:hover {
border-radius: 0.02rem;
border: 0.01rem solid #0058e1;

View File

@ -32,7 +32,6 @@
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore()
const router = useRouter()
const productServiceData = ref([])
@ -77,8 +76,7 @@
router.push({
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
}

View File

@ -1,7 +1,5 @@
<template>
<div class="navigation2">
<a-tooltip>
<template #title>点击进入组件服务</template>
<div class="item" @click="jumpPage('组件服务')">
<div class="img zj"></div>
<div class="name">组件服务</div>
@ -10,9 +8,6 @@
</div>
</div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入应用资源</template>
<div class="item" @click="jumpPage('应用资源')">
<div class="img yy"></div>
<div class="name">应用资源</div>
@ -21,9 +16,6 @@
</div>
</div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入基础设施</template>
<div class="item" @click="jumpPage('基础设施')">
<div class="img jc"></div>
<div class="name">基础设施</div>
@ -32,9 +24,6 @@
</div>
</div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入数据资源</template>
<div class="item" @click="jumpPage('数据资源')">
<div class="img sj"></div>
<div class="name">数据资源</div>
@ -43,9 +32,6 @@
</div>
</div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入知识库</template>
<div class="item" @click="jumpPage('知识库')">
<div class="img zs"></div>
<div class="name">知识库</div>
@ -54,7 +40,6 @@
</div>
</div>
</a-tooltip>
</div>
</template>
<script setup>

View File

@ -61,7 +61,6 @@
import { pageWithAttrs } from '@/api/home.js'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore()
const router = useRouter()
const select = ref('浏览量')
@ -135,11 +134,11 @@
'选中===================>',
store.getters['home/selectCardsnum']
)
// router.push({ path: '/DetailsPageconetent' })
router.push({
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
}

View File

@ -47,7 +47,6 @@
import { selectRecommend } from '@/api/home.js'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore()
const router = useRouter()
let dataList = ref([])
@ -95,7 +94,7 @@
router.push({
path: '/DetailsPageconetent',
query: {
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: '组件服务',
},
})
}

View File

@ -1,6 +1,6 @@
<template>
<div class="work-dynamics">
<!-- <div class="title">
<div class="title">
<div>工作动态</div>
<div class="title-son"></div>
</div>
@ -51,7 +51,7 @@
<div class="bottom" @click="jumpPage()">
查看更多
<span class="gengduo"></span>
</div> -->
</div>
<div class="fixedmount">
<div @click="applyResource()">
<p></p>
@ -59,7 +59,7 @@
</div>
<div @click="toView()">
<p></p>
<p>需求</p>
<p>需求申请</p>
</div>
<div @click="showModal">
<p></p>
@ -432,8 +432,8 @@
display: flex;
flex-direction: column;
align-items: center;
// padding-bottom: 0.8rem;
// padding-top: 0.78rem;
padding-bottom: 0.8rem;
padding-top: 0.78rem;
.title {
font-size: 0.3rem;
font-family: 'convergence-typeface';
@ -592,11 +592,11 @@
}
.fixedmount {
height: 3rem;
height: 2.4rem;
display: flex;
position: fixed;
bottom: 1.56rem;
right: 0rem;
right: calc(100% - 19rem);
z-index: 10;
flex-direction: column;
justify-content: space-between;
@ -604,52 +604,50 @@
}
.fixedmount div {
width: 0.96rem;
height: 0.96rem;
// border-radius: 0.04rem;
// border: 0.01rem #94aac9 solid;
width: 0.7rem;
height: 0.7rem;
border-radius: 0.04rem;
border: 0.01rem #94aac9 solid;
display: flex;
flex-direction: column;
// justify-content: center;
align-items: center;
padding-top: 0.16rem;
margin-bottom: 2px;
padding-top: 0.13rem;
position: relative;
cursor: pointer;
// background: #e3edfc;
background: url('~@/assets/home/bg-right.png');
background: #e3edfc;
}
.fixedmount div p:nth-child(2) {
position: absolute;
bottom: 0rem;
height: 0.2rem;
font-size: 0.2rem;
line-height: 0.2rem;
color: #fff;
height: 0.14rem;
font-size: 0.14rem;
line-height: 0.14rem;
color: #000000;
// margin-top: .08rem;
}
.fixedmount div:nth-child(1) p:nth-child(1) {
height: 0.32rem;
width: 0.32rem;
height: 0.24rem;
width: 0.24rem;
//background: url('~@/assets/home/shenqing.png') no-repeat;
background: url('~@/assets/home/sq.png') no-repeat;
background: url('~@/assets/newHome/banner-yy.png') no-repeat;
background-size: contain;
background-position: center;
}
.fixedmount div:nth-child(2) p:nth-child(1) {
height: 0.32rem;
width: 0.32rem;
background: url('~@/assets/home/xq.png') no-repeat;
height: 0.24rem;
width: 0.24rem;
background: url('~@/assets/home/shangjia.png') no-repeat;
background-size: contain;
background-position: center;
}
.fixedmount div:nth-child(3) p:nth-child(1) {
height: 0.32rem;
width: 0.32rem;
background: url('~@/assets/home/sj.png') no-repeat;
height: 0.24rem;
width: 0.24rem;
background: url('~@/assets/home/abilitysquare.png') no-repeat;
background-size: 140% 126%;
background-position: center;
}

View File

@ -52,18 +52,30 @@
<span class="img"></span>
<span>{{ item.name }}</span>
</div>
<div style="
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
">
"
>
<div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div style="display: flex; align-items: center">
<a-button type="primary" @click="modify(props.refObj.id, item)" v-if="item.backToFirst">
<a-button
type="primary"
@click="modify(props.refObj.id, item)"
v-if="item.backToFirst"
>
修改
</a-button>
<a-popconfirm v-if="!item.ended" title="是否终止此流程?" ok-text="" cancel-text=""
@confirm="endThis(item.instanceId)" @cancel="cancel">
<a-popconfirm
v-if="!item.ended"
title="是否终止此流程?"
ok-text="是"
cancel-text="否"
@confirm="endThis(item.instanceId)"
@cancel="cancel"
>
<a-button type="primary" danger style="margin-left: 10px">
流程终止
</a-button>
@ -72,9 +84,10 @@
</div>
<div class="box" v-if="item.list.length > 0">
<div class="ability" v-for="val in item.list" :key="val.id"
:class="item.approveStatus === '通过' ? 'clickCursor' : ''">
<div class="left" :class="
<div class="ability" v-for="val in item.list" :key="val.id">
<div
class="left"
:class="
val.type == '应用资源'
? 'yyzy'
: val.infoList.filter(
@ -94,7 +107,8 @@
)[0].attrValue == '业务组件'
? 'ywzj'
: 'yyzy'
"></div>
"
></div>
<div class="right">
<div class="ability-top">
<div class="name">
@ -134,17 +148,6 @@
申请结果{{
item.ended ? item.approveStatus || '审核完成' : '审核中'
}}
<a-button v-if="
item.approveStatus === '通过' &&
val.infoList.filter(
(item) => item.attrType == '上传附件'
)[0]
" @click.stop="downloadFile(item, '附件下载')" class="DownloadAttachment">
附件下载
</a-button>
<a-button v-if="item.approveStatus === '通过'" @click.stop="switchFunction(item)">
查看详情
</a-button>
</div>
</div>
</div>
@ -159,11 +162,6 @@
<span class="channelName">{{ val.channelName }}</span>
<span class="type">基础设施</span>
</div>
<a-button type="primary" v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn"
@click.stop="openVideo(val)">
视频预览
</a-button>
</div>
<div class="ability-bottom">
<div class="dec2">位置{{ val.nodeName }}</div>
@ -176,7 +174,7 @@
';' +
'视频流地址:' +
backUrl +
'resource/hls/getHls/?key=' +
'resource/hls/getHls/?channelId=' +
val.channelId
}}
</div>
@ -186,71 +184,19 @@
</div>
</div>
</div>
<!-- 单个预览弹窗 -->
<a-modal wrapClassName="single-preview-modal" v-model:visible="visible" title="视频预览" :width="960" destroyOnClose>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%;position: relative">
<!-- 预览视频--遮罩 -->
<div class="waterMark waterMark-left-top">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-top">{{userInfo.realNameShow}}</div>
<div class="waterMark waterMark-left-bottom">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-bottom">{{userInfo.realNameShow}}</div>
<vue3VideoPlay v-bind="options" />
</div>
</div>
</a-modal>
</div>
</template>
<script setup>
import { ref, defineProps, reactive, onMounted } from 'vue'
import { ref, defineProps, reactive } from 'vue'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
import { endProcess, getApplyForm } from '@/api/personalCenter.js'
import { useRouter } from 'vue-router'
import {
getStreamByChannelCode,
} from '@/api/videoSurveillance'
import {
getUser,
} from '@/api/home'
const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({
refObj: { type: Object, default: null },
})
const whoShow1 = ref(whoShow)
let visible = ref(false)
const options = reactive({
width: '912px', //
height: '513px', //
color: '#409eff', //
title: '', //
src: '', //
type: 'm3u8', //
muted: false, //
webFullScreen: false,
speedRate: ['0.75', '1.0', '1.25', '1.5', '2.0'], //
autoPlay: true, //
loop: false, //
mirror: false, //
ligthOff: false, //
volume: 0.3, //
control: true, //
controlBtns: [
'audioTrack',
'quality',
'speedRate',
'volume',
'setting',
'pip',
'pageFullScreen',
'fullScreen',
], //,
})
const dept = reactive({})
// eslint-disable-next-line no-undef
if (infrastructure) {
@ -367,91 +313,6 @@ if (props.refObj.resourceApplication) {
}
}
}
const switchFunction = (data) => {
if (data.approveStatus === '通过') {
let id = data.list[0].id
const applypage = router.resolve({
path: '/details', //
query: {
id: id,
},
})
window.open(applypage.href, '_blank')
}
}
const downloadFile = (data, name) => {
let path = data.list[0].infoList.filter(
(item) => item.attrType === '上传附件'
)[0].attrValue
console.log(path, 'obj')
const xhr = new XMLHttpRequest()
xhr.open('get', path)
xhr.responseType = 'blob'
xhr.send()
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// IE10downloadmsSaveOrOpenBlobIE10msSaveOrOpenBlob
if ('msSaveOrOpenBlob' in navigator) {
navigator.msSaveOrOpenBlob(this.response, name)
return
}
// const blob = new Blob([this.response], { type: xhr.getResponseHeader('Content-Type') });
// const url = URL.createObjectURL(blob);
const url = URL.createObjectURL(this.response)
const a = document.createElement('a')
a.style.display = 'none'
a.href = url
a.download = name
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
URL.revokeObjectURL(url)
}
}
}
//
const openVideo = (item) => {
console.log('打开视频', item)
if (item && item.status != 1) {
return message.error('当前视频离线不可预览!')
}
const param = {
key: item.cameraId,
}
getStreamByChannelCode(param).then((res) => {
console.log('视频预览------------>', res);
console.log(res)
visible.value = true
options.src = res.data.data || ''
}).catch(err => {
message.error(err)
})
// --
// visible.value = true
// options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8'
}
onMounted(() => {
handleUser()
})
//
const userInfo = ref(null)
const handleUser = () => {
getUser().then(res => {
console.log('res-----获取用户信息------->', res);
if (res.data.code != 0) {
return message.warning(res.data.msg)
}
userInfo.value = res.data.data || {}
userInfo.value.usernameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.username || '');
userInfo.value.realNameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.realName || '');
}).catch(err => {
message.warning(err)
})
}
</script>
<style lang="less" scoped>
.title {
@ -462,22 +323,17 @@ const handleUser = () => {
padding-left: 0.1rem;
border-left: 0.06rem #0058e1 solid;
}
.top {
margin-bottom: 0.1rem;
.main {
background: #eee;
padding: 0.2rem 0.2rem 0.1rem;
p {
display: flex;
justify-content: space-between;
& > span {
width: 100%;
}
.enclosure {
width: 95%;
padding: 0.05rem 0.1rem;
@ -486,13 +342,11 @@ const handleUser = () => {
justify-content: space-between;
margin-top: 0.05rem;
}
.btn:hover {
color: #0058e1;
cursor: pointer;
}
}
.item {
span {
width: 2.5rem;
@ -500,19 +354,16 @@ const handleUser = () => {
}
}
}
.bottom {
.main {
.item {
border-top: 1px #eee solid;
.deptName {
color: #0058e1;
font-size: 0.16rem;
margin-top: 0.1rem;
display: flex;
align-items: center;
.img {
width: 0.05rem;
height: 0.05rem;
@ -521,20 +372,16 @@ const handleUser = () => {
margin-right: 0.1rem;
}
}
.oddNumbers {
margin: 0.1rem 0 0 0.15rem;
}
.box {
margin-left: 0.1rem;
.ability {
height: 1.3rem;
display: flex;
border-bottom: 1px #eee solid;
padding: 0.1rem 0;
.left {
display: inline-block;
width: 1.1rem;
@ -548,7 +395,6 @@ const handleUser = () => {
background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%;
}
.yyzy {
background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%;
@ -573,7 +419,6 @@ const handleUser = () => {
background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%;
}
.btn {
cursor: pointer;
color: #0087ff;
@ -582,22 +427,18 @@ const handleUser = () => {
border: 1px #0087ff solid;
border-radius: 0.2rem;
}
.right {
flex: 1;
margin-left: 0.15rem;
.ability-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.name {
width: 6rem;
height: 0.2rem;
display: flex;
.channelName {
max-width: 5rem;
height: 0.2rem;
@ -608,7 +449,6 @@ const handleUser = () => {
-webkit-box-orient: vertical;
word-break: break-all;
}
.type {
background: #0087ff;
color: #fff;
@ -619,10 +459,8 @@ const handleUser = () => {
}
}
}
.ability-bottom {
margin-top: 0.15rem;
// display: flex;
// justify-content: space-between;
.dec {
@ -635,7 +473,6 @@ const handleUser = () => {
-webkit-box-orient: vertical;
word-break: break-all;
}
.dec2 {
width: 7rem;
height: 0.22rem;
@ -646,92 +483,15 @@ const handleUser = () => {
-webkit-box-orient: vertical;
word-break: break-all;
}
// .result:hover {
// color: #0058e1;
// cursor: pointer;
// }
.result {
position: relative;
}
}
}
.DownloadAttachment {
position: absolute;
right: 10px;
top: -150px;
}
.DownloadAttachment2 {
position: absolute;
right: 10px;
top: -110px;
}
}
.clickCursor {
cursor: pointer;
}
}
}
}
}
.single-preview-modal {
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
}
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
}
.anticon {
color: #ffffff;
}
}
//
.waterMark-left-top {
left: 50px;
top: 100px;
text-align: left;
}
//
.waterMark-right-top {
right: 50px;
top: 100px;
text-align: right;
}
//
.waterMark-left-bottom {
left: 50px;
bottom: 100px;
text-align: left;
}
//
.waterMark-right-bottom {
right: 50px;
bottom: 100px;
text-align: right;
}
.waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
font-size: 22px;
font-weight: bold;
opacity: 0.4;
transform: rotate(-25deg);
width: 470px
}
</style>

View File

@ -1,12 +1,24 @@
<template>
<DeviceApplyDetail v-if="showType === '设备申请'" :refObj="refObj"></DeviceApplyDetail>
<div class="form-container" v-else>
<AbilityApplication :refObj="refObj" v-if="showType === '能力申请'"></AbilityApplication>
<PutOnTheShelf :refObj="refObj" v-else-if="showType === '能力上架'"></PutOnTheShelf>
<OffTheShelf :refObj="refObj" v-else-if="showType === '能力下架'"></OffTheShelf>
<div class="form-container">
<AbilityApplication
:refObj="refObj"
v-if="showType === '能力申请'"
></AbilityApplication>
<PutOnTheShelf
:refObj="refObj"
v-else-if="showType === '能力上架'"
></PutOnTheShelf>
<OffTheShelf
:refObj="refObj"
v-else-if="showType === '能力下架'"
></OffTheShelf>
<Demand :refObj="refObj" v-else-if="showType === '能力需求'"></Demand>
<Comment :refObj="refObj" v-else-if="showType === '需求评论'"></Comment>
<OtherApplications :refObj="refObj" v-else></OtherApplications>
<!-- <div class="title">流程图</div>
<div>
<img :src="getResourceURL()" alt="" />
</div> -->
<div>
<div class="title">审批详情</div>
<template v-for="item in dataSource.data" :key="item">
@ -28,7 +40,6 @@ import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue'
import Demand from './Demand.vue'
import Comment from './Comment.vue'
import DeviceApplyDetail from './DeviceApplyDetail.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import { onMounted, reactive, defineProps, ref } from 'vue'
import Cookies from 'js-cookie'
@ -58,8 +69,6 @@ refObj.value = props.refObj
showType.value = props.showType
//
const dataSource = reactive({ data: [] })
console.log('refObj------------>', refObj);
// console.log(props.refObj, '---------------------------------------')
const downloadFile = (path, name) => {
@ -246,7 +255,6 @@ const getResourceURL = () => {
height: 6rem;
overflow-y: scroll;
padding: 20px 20px 30px 20px;
.title {
font-size: 18px;
color: #000;
@ -257,7 +265,6 @@ const getResourceURL = () => {
border-left: 6px #0058e1 solid;
}
}
:deep(.ant-table-thead) > tr > .ant-table-cell {
background: #0087ff;
color: #fff;
@ -265,7 +272,6 @@ const getResourceURL = () => {
text-align: center;
font-size: 16px;
}
:deep(.ant-table-tbody) > tr > .ant-table-cell:nth-child(5) {
// width: 110px;
// display: inline-block;
@ -273,7 +279,6 @@ const getResourceURL = () => {
// overflow: hidden;
// text-overflow: ellipsis;
}
.oddNumbers {
margin-bottom: 0.05rem;
}

View File

@ -1,43 +0,0 @@
<!--
* @Description: 我的申请 设备申请 查看详情
-->
<template>
<div class="device-detail-box">
<div v-for="(db, key) in wrjData" :key="key">
<template v-if="typeof db == 'object'">
<div style="
font-size: 20px;
font-weight: 600;
margin: 10px 0;
text-align: center;
">
{{ db.attrType || '--' }}
</div>
<template v-if="db.attrValue">
<div style="padding: 0 30px" v-for="(value, key2) in JSON.parse(db.attrValue)" :key="value">
{{ key2 + '' + value }}
</div>
</template>
</template>
</div>
</div>
</template>
<script setup>
import { ref, defineProps, watch } from 'vue'
const props = defineProps({
refObj: { type: Object, default: null },
})
const wrjData = ref([])
wrjData.value = props.refObj.deviceAttrDTOList || []
watch(() => props.refObj, (val) => {
wrjData.value = val.deviceAttrDTOList || []
}, { immediate: true, deep: true })
</script>
<style lang="less" scoped>
.device-detail-box {
height: 6rem;
overflow-y: auto;
}
</style>

View File

@ -1,6 +1,23 @@
<template>
<div class="on-the-right-side-of-the-list">
<div class="title" style="margin-bottom: 0.2rem">我的申请</div>
<!-- <div class="sousuokuang">
<a-input-search
v-model:value="name"
placeholder="请输入关键词"
enter-button="搜索"
size="large"
@change="onSearch"
@search="getApplyList(name)"
/>
<a-button
type="primary"
style="width: 90px; height: 36px; margin-left: 10px"
@click="replacement"
>
重置
</a-button>
</div> -->
<div class="tab" style="margin-bottom: 0.1rem">
<span>类型</span>
<div
@ -16,7 +33,7 @@
<span>申请状态</span>
<div
:class="tabIndex == index ? 'tabclass' : ' '"
@click="changeApplyState(item, index)"
@click="tabqiehuan(item, index)"
v-for="(item, index) in tabList"
:key="index"
>
@ -47,36 +64,140 @@
{{ item.cameraList ? item.system : item.title }}
</template>
<div class="content-body-title">
<!-- <span
v-if="item.cameraList && item.ended"
@click="showVideoList(item)"
>
名称{{ item.cameraList ? item.system : item.title }}
</span> -->
<span>
名称{{ item.cameraList ? item.system : item.title }}
</span>
<div></div>
</div>
</a-tooltip>
<!-- <div class="content-body-content">
<p class="content-body-content-son">
流程类型{{ item.processDefinitionName }}
</p>
</div> -->
<div class="content-body-content">
<p class="content-body-content-son" v-if="typeName !== '设备申请'">
<p class="content-body-content-son">
审核结果{{ item.ended ? '审核完成' : '审核中' }}
</p>
<p class="content-body-content-son" v-else>
审核结果{{ item.state === 0 ? '审核中' : '审核完成' }}
</p>
</div>
<!-- <div class="content-body-content" v-if="item.currentTaskList">
<p class="content-body-content-son" v-if="!item.backToFirst">
当前节点{{ item.currentTaskList[0].taskName }}
</p>
</div> -->
<!-- <div>
<p
class="content-body-content-son"
v-if="item.name === '申请摄像头列表'"
>
<span>
申请结果{{
'列表地址:' +
backUrl +
'resource/getApplyCameraList/' +
item.processInstanceId +
';' +
'视频流地址:' +
backUrl +
'/resource/hls/getHls/?channelId='
}}
</span>
<a-button
type="primary"
size="small"
@click="
copyComment(
'列表地址:' +
backUrl +
'resource/getApplyCameraList/' +
item.processInstanceId +
';' +
'视频流地址:' +
backUrl +
'/resource/hls/getHls/?channelId='
)
"
>
复制
</a-button>
</p>
<template v-else>
<p
class="content-body-content-son"
v-if="item.approveStatus == '通过'"
>
<span>申请结果{{ item.comment || '暂无' }}</span>
<a-button
v-if="item.comment"
type="primary"
size="small"
@click="copyComment(item.comment)"
>
复制
</a-button>
</p>
</template>
</div> -->
<!-- <div class="content-body-title"></div>
<div class="content-body-content">
<p class="content-body-content-son"></p>
<div></div>
</div> -->
<!-- <div class="content-body-bottom" v-if="item.currentTaskList">
<div>申请日期{{ item.currentTaskList[0].createTime }}</div>
<div>审批人{{ item.currentTaskList[0].assigneeName }}</div>
</div> -->
<div class="content-body-bottom">
<div>申请日期{{ item.createDate || item.startTime }}</div>
<div></div>
</div>
<div class="button-box">
<div
class="button"
v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@click="showPhoneModal(item)"
>
联系方式
</div>
<div class="button" @click="showDetail(item)">查看详情</div>
<div class="button" @click="showAdd(item)" v-if="item.backToFirst">
修改
</div>
<!-- <div
v-if="
!(
(item.processDefinitionName == '能力需求申请' ||
item.processDefinitionName == '能力资源上架') &&
item.ended == false
)
"
v-show="
item.resourceStatusTip == '正常' &&
item.ended &&
item.processDefinitionName !== '能力申请'
"
class="button button-details"
@click="
viewDetail(
item.processDefinitionName,
item.resourceId,
item.ended,
item.businessKey
)
"
>
查看详情
</div> -->
<!-- <div
class="button button-state"
:class="{
buttonAgree: item.ended,
backToFirst: item.backToFirst,
}"
>
{{
item.ended ? '审核完成' : item.backToFirst ? '被驳回' : '审核中'
}}
</div> -->
<svg
t="1652233950228"
class="icon"
@ -179,29 +300,20 @@
</a-table>
</a-modal>
</div>
<!-- 联系方式弹框 -->
<a-modal
v-model:visible="phoneVisible"
title="提示"
@ok="phoneVisible = false"
>
<!-- 工业信息化局那个号电话配这个号199 6399 0996 -->
<p>请联系工业信息化局电话199 6399 0996</p>
</a-modal>
</template>
<script setup>
import { onMounted, reactive, ref, onBeforeUnmount, h } from 'vue'
// import qs from 'qs'
import { onMounted, reactive, ref, onBeforeUnmount } from 'vue'
import {
getMyProcessInstancePage,
// getTaskHandleDetailInfo,
getTabilityapplication,
getByApplyFlag,
nengliziyuanshangjiaapply,
getDemandForm,
demandComment,
deviceApplylist,
getDeviceDetail,
// getProcDefBizRoute,
} from '@/api/personalCenter'
import {
updateRes,
@ -214,36 +326,21 @@
import { message } from 'ant-design-vue'
import ApplyDetails from '@/views/personalCenter/components/ApplyDetails'
import mybus from '@/myplugins/mybus'
import * as moment from 'moment'
const router = useRouter()
let typeList = ref([
'能力申请',
'能力评价',
'能力上架',
'能力下架',
'能力需求',
'需求评论',
'能力评价',
])
// 西-
let isXiHaiAn = whoShow.itShowXiHaiAn
const phoneSate = ref([2, 3])
if (isXiHaiAn) {
typeList.value.push('设备申请')
}
const typeStrObj = {
能力上架: 'resourcemountapply',
能力下架: 'resourcundercarriageapply',
能力需求: 'abilitydemandapply',
需求评论: 'comment_review',
}
let tabList = ref(['全部', '审核中', '审核完成'])
const contentList = reactive({ data: [] })
// const contentListClone = reactive({ data: [] })
// let contentListLength = contentList.length
let tabIndex = ref(0)
let typeIndex = ref(0)
let typeName = ref(typeList.value[0])
const videoVisible = ref(false)
const numFlag = ref(true)
const columns = ref([
@ -253,9 +350,8 @@
},
])
const xVideoList = ref([])
//
function changeApplyState(item, index) {
function tabqiehuan(item, index) {
// debugger
tabIndex.value = index
switch (item) {
case '审核中':
@ -277,15 +373,14 @@
}
//
const changeType = (item, index) => {
console.log('item, index-----选择类型------->', item, index)
numFlag.value = true
num.value = []
showType.value = ''
console.log(item, index)
tabIndex.value = 0
ended.value = ''
page.value = 1
typeIndex.value = index
typeName.value = item
getApplyList()
}
let name = ref('')
@ -301,22 +396,13 @@
const taskId = ref('')
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const refObj = ref({})
const showDetail = (item) => {
// 西-
if (isXiHaiAn) {
if (item.expireDate) {
let diff = moment().diff(moment(item.expireDate), 'seconds')
if (diff > 0) {
return message.error('当前申请已过期!')
}
}
}
if (typeName.value == '能力申请' && item.applyFlag) {
console.log('showDetail', item)
// getProcDefBizRoute(item.processDefinitionId)
if (typeIndex.value == 0 && item.applyFlag) {
getByApplyFlag(item.applyFlag).then((res) => {
if (res.data.code == 0) {
refObj.value = res.data.data
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
businessKey.value = item.businessKey
@ -326,23 +412,7 @@
message.error('数据请求失败!')
}
})
} else if (typeName.value == '设备申请') {
getDeviceDetailInfo(item.deviceId)
.then((res) => {
if (res.data.code == 0) {
refObj.value = res.data.data
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
// businessKey.value = item.businessKey
// processInstanceId.value = item.processInstanceId
// resourceId.value = item.resourceId
}
})
.catch((err) => {})
} else if (
Object.keys(typeStrObj).includes(typeName.value) ||
typeName.value == '能力评价'
) {
} else if (typeIndex.value !== 1) {
refObj.value = item
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
@ -376,6 +446,10 @@
oInput.remove()
}
const showAdd = (item) => {
// resourcemountapply
// resourcundercarriageapply
// abilitydemandapply
// abilityprocess
if (item.processDefinitionKey == 'resourcemountapply') {
const data = {
id: item.resourceId,
@ -508,7 +582,7 @@
if (ended.value === '') {
delete params.ended
}
if (typeName.value == '能力申请') {
if (typeIndex.value == 0) {
getTabilityapplication(params).then((res) => {
contentList.data = []
console.log('获取我的申请===============>', res.data.data)
@ -517,32 +591,25 @@
showType.value = '能力申请'
initNum2()
})
} else if (typeName.value == '能力评价') {
contentList.data = []
num.value = []
showType.value = ''
} else if (typeName.value == '设备申请') {
let _state =
ended.value === ''
? '全部'
: ended.value === true
? '审核完成'
: '审核中'
getDeviceApply(_state)
.then((res) => {
if (res.data.code == 0) {
contentList.data = []
contentList.data = res.data.data.list || []
total.value = res.data.data.total
showType.value = '设备申请'
//
getDeviceNum()
} else if (typeIndex.value !== 1) {
switch (typeIndex.value) {
case 2:
params.processDefinitionKey = 'resourcemountapply'
processDefinitionKey.value = 'resourcemountapply'
break
case 3:
params.processDefinitionKey = 'resourcundercarriageapply'
processDefinitionKey.value = 'resourcundercarriageapply'
break
case 4:
params.processDefinitionKey = 'abilitydemandapply'
processDefinitionKey.value = 'abilitydemandapply'
break
case 5:
params.processDefinitionKey = 'comment_review'
processDefinitionKey.value = 'comment_review'
break
}
})
.catch((err) => {})
} else if (Object.keys(typeStrObj).includes(typeName.value)) {
processDefinitionKey.value = typeStrObj[typeName.value]
params.processDefinitionKey = processDefinitionKey.value
getMyProcessInstancePage(params).then((res) => {
contentList.data = []
// initNum(name.value)
@ -570,6 +637,7 @@
showType.value = '能力下架'
})
})
// params.processDefinitionKey = 'resourcundercarriageapply'
break
case 4:
contentList.data.map((val) => {
@ -581,6 +649,7 @@
showType.value = '能力需求'
})
})
// params.processDefinitionKey = 'abilitydemandapply'
break
case 5:
contentList.data.map((val) => {
@ -592,8 +661,31 @@
showType.value = '需求评论'
})
})
// params.processDefinitionKey = 'comment_review'
break
}
// if (contentList.data && contentList.data.length > 0) {
// contentList.data.map((item) => {
// const param = {
// page: 1,
// limit: 4,
// processInstanceId: item.processInstanceId,
// }
// getTaskHandleDetailInfo(qs.stringify(param)).then((res) => {
// console.log('', res.data.data, res.data.data[0].comment)
// const result = res.data.data
// if (result && result.length > 2) {
// item.comment =
// result[0].comment.length > result[1].comment.length
// ? result[0].comment
// : result[1].comment
// } else {
// item.comment = result[0].comment
// }
// })
// return item
// })
// }
})
} else {
contentList.data = []
@ -664,67 +756,6 @@
}
})
}
// 西 todo
const getDeviceApply = (state) => {
return new Promise((resolve, reject) => {
let _data = {
page: page.value,
limit: 4,
state,
}
deviceApplylist(_data)
.then((res) => {
resolve(res)
console.log('res----设备申请-------->', res)
})
.catch((err) => {
reject(err)
console.log('err------------>', err)
})
})
}
// 西--
const getDeviceDetailInfo = (deviceId) => {
return new Promise((resolve, reject) => {
getDeviceDetail(deviceId)
.then((res) => {
resolve(res)
console.log('res----查询详情-------->', res)
})
.catch((err) => {
reject(err)
console.log('err------------>', err)
})
})
}
// 西-,
const getDeviceNum = () => {
if (!numFlag.value) {
return
}
num.value = []
Promise.all([getDeviceApply('审核中'), getDeviceApply('审核完成')])
.then((res) => {
console.log('res-----数量------->', res)
let unfinished = res[0] && res[0].data && res[0].data.data
let finished = res[1] && res[1].data && res[1].data.data
num.value.unfinished = unfinished.total || ''
num.value.finished = finished.total || ''
numFlag.value = false
})
.catch((err) => {
console.log('err------------>', err)
})
}
const phoneVisible = ref(false)
const showPhoneModal = () => {
phoneVisible.value = true
}
mybus.on('closeModal', (obj) => {
detailsVisible.value = false
changeType(obj.type, obj.index)
@ -750,21 +781,17 @@
flex-direction: column;
font-size: 16px;
justify-content: left;
.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;
@ -772,11 +799,9 @@
color: #b2b2b2;
background: #f5f5f5;
}
:deep(.ant-input-group-addon) {
display: inline-block;
margin-left: 10px;
.ant-input-search-button {
width: 80px;
height: 36px;
@ -785,12 +810,10 @@
}
}
}
.tab {
display: flex;
font-size: 14px;
color: #999999;
div {
// width: 70px;
padding: 5px 10px;
@ -803,17 +826,14 @@
color: #666666;
cursor: pointer;
}
.tabclass {
border: 1px solid #0087ff;
color: #0087ff;
}
}
.content {
padding-right: 10px;
height: 510px;
.content-body {
padding-bottom: 20px;
padding-top: 20px;
@ -821,7 +841,6 @@
height: 150px;
border-bottom: #cccccc 1px solid;
position: relative;
.content-body-title {
min-width: 100px;
max-width: 900px;
@ -834,7 +853,6 @@
text-overflow: ellipsis;
white-space: nowrap;
}
.content-body-content {
margin-top: 10px;
margin-bottom: 10px;
@ -842,7 +860,6 @@
/* width: 720px; */
display: inline-block;
}
.content-body-content-son {
line-height: 16px;
font-size: 12px;
@ -855,7 +872,6 @@
// -webkit-box-orient: vertical;
display: flex;
color: #999999;
span {
overflow: hidden;
text-overflow: ellipsis;
@ -867,19 +883,16 @@
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;
@ -906,16 +919,13 @@
line-height: 30px;
cursor: pointer;
}
.buttonAgree {
background-color: #49c988;
}
.backToFirst {
background-color: rgb(214, 91, 91);
}
}
:deep(.ant-badge-count) {
top: -5px;
right: -10px;

View File

@ -2,32 +2,58 @@
<div class="on-the-right-side-of-the-list">
<div class="title">我的发布</div>
<div class="sousuokuang">
<a-input-search v-model:value="name" placeholder="请输入关键词" enter-button="搜索" size="large" @change="onSearch"
@search="getApplyList(tabname)" />
<a-button type="primary" style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem" @click="showModal2">
<a-input-search
v-model:value="name"
placeholder="请输入关键词"
enter-button="搜索"
size="large"
@change="onSearch"
@search="getApplyList(tabname)"
/>
<a-button
type="primary"
style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem"
@click="showModal2"
>
能力上架
</a-button>
<a-button type="primary" style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem" @click="replacement">
<a-button
type="primary"
style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem"
@click="replacement"
>
重置
</a-button>
</div>
<div class="tab">
<span>能力类型</span>
<div :class="tabIndex == index ? 'tabclass' : ' '" @click="tabqiehuan(item, index)"
v-for="(item, index) in tabList" :key="index">
<div
:class="tabIndex == index ? 'tabclass' : ' '"
@click="tabqiehuan(item, index)"
v-for="(item, index) in tabList"
:key="index"
>
{{ item }}
</div>
</div>
<div class="tab" style="margin-top: 0.1rem">
<span>能力状态</span>
<div :class="tabIndex2 == index ? 'tabclass' : ' '" @click="tabqiehuan2(item, index)"
v-for="(item, index) in tabList2" :key="index">
<div
:class="tabIndex2 == index ? 'tabclass' : ' '"
@click="tabqiehuan2(item, index)"
v-for="(item, index) in tabList2"
:key="index"
>
{{ item }}
</div>
</div>
<div v-if="dataList.data.length > 0">
<div class="content">
<div class="content-body" v-for="item in dataList.data" :key="item.index">
<div
class="content-body"
v-for="item in dataList.data"
:key="item.index"
>
<div class="content-body-title" v-if="item.currentTaskList">
<!-- {{ item.currentTaskList[0].taskName }} -->
</div>
@ -45,27 +71,57 @@
<!-- <div></div> -->
</div>
<div class="button">
<div @click="showModal(item)" v-if="item.delFlag != 2" :class="item.delFlag != 0 ? 'del' : ''">
<div
@click="showModal(item)"
v-if="item.delFlag != 2"
:class="item.delFlag != 0 ? 'del' : ''"
>
能力下架
</div>
<div @click="showDetail(item)" v-if="item.delFlag != 2" :class="item.delFlag != 0 ? 'del' : ''">
<div
@click="showDetail(item)"
v-if="item.delFlag != 2"
:class="item.delFlag != 0 ? 'del' : ''"
>
查看详情
</div>
<svg t="1652233950228" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="5970" data-spm-anchor-id="a313x.7781069.0.i8" width="80" height="80"
v-if="item.delFlag == 4 || item.delFlag == 5" style="position: absolute; top: 0.2rem; left: 0.1rem">
<svg
t="1652233950228"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5970"
data-spm-anchor-id="a313x.7781069.0.i8"
width="80"
height="80"
v-if="item.delFlag == 4 || item.delFlag == 5"
style="position: absolute; top: 0.2rem; left: 0.1rem"
>
<path
d="M955.22053 256C813.82053 11.2 500.72053-72.6 255.92053 68.8S-72.67947 523.2 68.72053 768 523.22053 1096.6 768.02053 955.2c244.7-141.2 328.6-454.1 187.4-698.8 0-0.1-0.1-0.3-0.2-0.4zM762.02053 944.7c-239 138.1-544.8 56.2-682.9-182.8S22.92053 217.1 261.92053 79.1s544.8-56.2 682.9 182.8c137.9 239 56.1 544.6-182.8 682.8z"
fill="#515151" opacity=".5" p-id="5971"></path>
fill="#515151"
opacity=".5"
p-id="5971"
></path>
<path
d="M898.12053 289.2C775.02053 76 502.42053 2.9 289.22053 126 76.02053 249.1 3.02053 521.6 126.02053 734.8 249.12053 948 521.62053 1021.1 734.82053 898 947.92053 774.9 1021.02053 502.4 898.12053 289.2zM731.62053 892.8C521.32053 1014.3 252.42053 942.2 131.02053 731.9 9.52053 521.6 81.62053 252.7 291.92053 131.3 502.12053 9.9 771.02053 81.8 892.42053 292c121.5 210.3 49.5 479.3-160.8 600.8z"
fill="#515151" opacity=".5" p-id="5972"></path>
fill="#515151"
opacity=".5"
p-id="5972"
></path>
<path
d="M323.62053 176.8c3.6-2 6 0.8 8.8 2.8 6 4.4 12.4 8.8 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.4 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.6 0.6-2zM200.72053 289.2c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 14.8 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.4-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.4-1.2 0-1.6 0.8-2.4l0.2 0.4z m276.6-159.6c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.8-1.2-0.4-1.6 0.4-2.4l0.2 0.4z m141.9 29.6c3.6-2 6 0.8 8.8 2.8l18.8 12.8c7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4-7.7 0.4-15.2 0.8-22.4 0.8-4.4 6.8-8.4 13.2-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.5-1.2 0.2-1.6 0.6-2zM150.02053 430c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-4 14-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.5 0.6-2z m558.9 414.4c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.1 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-1.1 0.8-1.1 1.6-1.1h0.1z m-158.8 50c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.1-3.7-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2-1 4.2-1.7 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.4-0.8 0.8-0.8 1.7-0.7z m276.5-159.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8s-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.2 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0-0.8 0.8-1.2 1.6-1.2l0.1 0.1z m45.6-137.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.2-0.7 0.6-0.7 1.4-0.7h0.3zM402.72053 868c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-0.8 1-1.1 1.7-1.1z"
fill="#515151" opacity=".5" p-id="5973"></path>
fill="#515151"
opacity=".5"
p-id="5973"
></path>
<path
d="M386.42053 590.4l-43.8-75.9L207.02053 592.7l10.2 17.7L334.02053 543l23.4 40.4-90.5 52.2-13.5-23.4-18.7 10.8 53.1 92c9.1 15.8 21.2 19.5 36.4 10.7l98.8-57c6.2-3.6 11-9.3 13.4-16.1-1.4-15.9-6.2-31.2-14.2-45l-21.4 4.8c6.7 10.3 11 21.9 12.8 34-1 3.3-3.2 6-6.1 7.8l-88.3 51c-6.2 3.6-11.1 2.1-14.8-4.3l-27.3-47.4 109.3-63.1z m2.9-103.2l10.4 18.1 65.6-37.9 79.9 138.4 18.6-10.8-55.9-96.9c18.8-0.9 43.2-0.6 73 0.7l1.5-23.1c-29.8-0.3-58.4 0.4-86 2.6l-12.5-21.6 74.9-43.2-10.4-18.1-159.1 91.8zM669.52053 329l38.2 66.2 61.4-35.4-38.1-66.1-61.5 35.3z m72.4 24.2l-26.3 15.2-19-33 26.3-15.2 19 33zM599.02053 356.7l7.9 13.7-23.3 13.5 9.8 17 21.8-12.6c7.5 18.7 6.6 39.6-2.5 57.6l20.7 4.4c10.3-23.1 10.3-49.4 0-72.5l18.8-10.9c6 9.2 10.7 19.2 14.2 29.7 0.3 5-2.6 9.7-7.2 11.7-2.9 1.2-6.4 2.8-10.9 4.9l14.1 14.1c3.7-1.3 7.3-2.9 10.7-4.8 8.6-3.9 14.4-12.2 15.2-21.6-5.4-22.1-14.6-43-27.4-61.8l-36.1 20.8-7.9-13.7-17.9 10.5z m29.9 108.1l10 17.4 53.2-30.7c-7.8 23.7-20.6 45.4-37.5 63.6l20.6 11.1c18.6-24.2 30-53.1 33-83.4l29.8 51.5 18.4-10.7-29.8-51.5c27.4 11.5 57.2 16.3 86.9 14.1l3.5-23.5c-24.7 5.1-50.1 5-74.8-0.1l53.5-30.9-10-17.3-69.3 40-7.3-12.6-18.4 10.7L698.02053 425l-69.1 39.8z"
fill="#515151" opacity=".5" p-id="5974"></path>
fill="#515151"
opacity=".5"
p-id="5974"
></path>
</svg>
<!-- <div v-if="item.delFlag == 0" class="button-son">审核通过</div>
<div v-if="item.delFlag != 0">未审核</div> -->
@ -76,24 +132,56 @@
</div>
</div>
<div class="bottom">
<a-pagination size="small" :total="total" show-size-changer show-quick-jumper @change="handleCurrentChange"
@showSizeChange="handlePageSizeChange" />
<a-pagination
size="small"
:total="total"
show-size-changer
show-quick-jumper
@change="handleCurrentChange"
@showSizeChange="handlePageSizeChange"
/>
</div>
</div>
<a-empty v-else />
<a-modal v-model:visible="detailsVisible" :title="tabname" style="width: 9rem" :footer="null" destroyOnClose="true"
:maskClosable="false">
<publish-details :businessKey="businessKey" :processInstanceId="processInstanceId"></publish-details>
<a-modal
v-model:visible="detailsVisible"
:title="tabname"
style="width: 9rem"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<publish-details
:businessKey="businessKey"
:processInstanceId="processInstanceId"
></publish-details>
</a-modal>
<a-modal v-model:visible="increasedVisible" :title="tabname" style="width: 9rem" :footer="null"
destroyOnClose="true" :maskClosable="false">
<a-modal
v-model:visible="increasedVisible"
:title="tabname"
style="width: 9rem"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<the-new-release></the-new-release>
</a-modal>
<a-modal v-model:visible="visible" width="12.1rem" @ok="del()" @cancel="reason = ''" footer="">
<a-modal
v-model:visible="visible"
width="12.1rem"
@ok="del()"
@cancel="reason = ''"
footer=""
>
<TheShelvesAbility v-if="visible" :delObj="delObj"></TheShelvesAbility>
<!-- <a-input v-model:value="reason" placeholder="请输入下架原因" /> -->
</a-modal>
<a-modal v-model:visible="visible2" @ok="handleOk" class="shangjia-class" @cancel="handlecancel">
<a-modal
v-model:visible="visible2"
@ok="handleOk"
class="shangjia-class"
@cancel="handlecancel"
>
<div class="ant-modal-title" id="vcDialogTitle1">
<div class="showBg"></div>
能力上架申请
@ -101,14 +189,22 @@
<div class="ability-to-type">
<div class="title">能力类型选择</div>
<div class="content">
<div v-for="item in abilityToType" :key="item" @click="abilityToTypeFunction(item)" :class="
<div
v-for="item in abilityToType"
:key="item"
@click="abilityToTypeFunction(item)"
:class="
abilityToTypeFunctionData == item ? 'ability-to-type-down' : ''
">
"
>
{{ item }}
</div>
</div>
</div>
<div class="component-type" v-if="abilityToTypeFunctionData == '组件服务'">
<div
class="component-type"
v-if="abilityToTypeFunctionData == '组件服务'"
>
<div class="title">组件类型选择</div>
<div class="content">
<!-- <a-checkbox-group
@ -117,7 +213,12 @@
:options="componentType"
/> -->
<a-radio-group v-model:value="componentTypeValue">
<a-radio @click="componentTypeValueFunction(item)" v-for="item in componentType" :key="item" :value="item">
<a-radio
@click="componentTypeValueFunction(item)"
v-for="item in componentType"
:key="item"
:value="item"
>
{{ item }}
</a-radio>
</a-radio-group>
@ -355,13 +456,12 @@ const handlePageSizeChange = (current, size) => {
//
const del = () => {
console.log('下架================》', delObj.value)
let fileObj = delObj2.value.fileList && delObj2.value.fileList[0] || {}
undercarriage({
reason: delObj2.value.reason,
title: delObj2.value.title,
phone: delObj2.value.phone,
enclosure: fileObj.response && fileObj.response.data,
enclosureName: fileObj.name,
enclosure: delObj2.value.fileList[0].response.data,
enclosureName: delObj2.value.fileList[0].name,
resource: [
{ resourceId: delObj.value.id, resourceName: delObj.value.name },
],
@ -419,21 +519,17 @@ onMounted(() => {
flex-direction: column;
font-size: 0.16rem;
justify-content: left;
.title {
font-size: 0.2rem;
color: #000000;
font-family: 'Alibaba PuHuiTi';
font-weight: 500;
}
.sousuokuang {
margin: 0.2rem 0rem 0.21rem 0rem;
.ant-input-search {
max-width: 4.9rem;
}
:deep(.ant-input) {
width: 4rem;
height: 0.36rem;
@ -441,11 +537,9 @@ onMounted(() => {
color: #b2b2b2;
background: #f5f5f5;
}
:deep(.ant-input-group-addon) {
display: inline-block;
margin-left: 0.1rem;
.ant-input-search-button {
width: 0.8rem;
height: 0.36rem;
@ -454,12 +548,10 @@ onMounted(() => {
}
}
}
.tab {
display: flex;
font-size: 0.14rem;
color: #999999;
div {
width: 0.7rem;
height: 0.24rem;
@ -470,18 +562,15 @@ onMounted(() => {
color: #666666;
cursor: pointer;
}
.tabclass {
border: 0.01rem solid #0087ff;
color: #0087ff;
}
}
.content {
padding-right: 0.1rem;
height: 5.1rem;
overflow: auto;
.content-body {
padding-bottom: 0.2rem;
padding-top: 0.2rem;
@ -489,19 +578,16 @@ onMounted(() => {
// height: 1.20rem;
border-bottom: #cccccc 0.01rem solid;
position: relative;
.content-body-title {
font-size: 0.14rem;
color: #333333;
font-family: 'Alibaba PuHuiTi';
font-weight: 500;
}
.content-body-content {
margin-top: 0.1rem;
margin-bottom: 0.1rem;
width: 7.2rem;
.content-body-content-son {
line-height: 0.16rem;
font-size: 0.12rem;
@ -516,19 +602,16 @@ onMounted(() => {
color: #999999;
}
}
.content-body-bottom {
display: flex;
color: #cccccc;
font-size: 0.12rem;
div:first-child {
margin-right: 0.3rem;
}
}
}
}
.bottom {
position: absolute;
bottom: 0.3rem;
@ -542,7 +625,6 @@ onMounted(() => {
width: 0.96rem;
// background: #0087ff;
cursor: pointer;
div {
margin-top: 0.2rem;
height: 0.3rem;
@ -553,20 +635,16 @@ onMounted(() => {
text-align: center;
line-height: 0.3rem;
}
.del {
background: #ccc;
}
.button-son {
background: #49c988;
}
}
.button-state {
top: 0.6rem;
}
.buttonAgree {
background-color: #49c988;
}
@ -582,27 +660,22 @@ onMounted(() => {
margin-top: -1.44rem;
font-size: 0.14rem;
font-weight: 500;
.ant-radio-inner {
height: 0.16rem;
width: 0.16rem;
}
.ant-radio-inner::after {
background-color: unset;
background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat;
background-size: cover;
background-position: center;
}
.ant-modal-content {
border-radius: 0.1rem;
.ability-to-type,
.component-type {
display: flex;
margin-top: 0.2rem;
.title {
white-space: nowrap;
margin-right: 0.2rem;
@ -610,10 +683,8 @@ onMounted(() => {
align-items: center;
height: 0.26rem;
}
.content {
width: 100%;
.ant-radio-group {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
@ -621,12 +692,10 @@ onMounted(() => {
}
}
}
.ability-to-type {
.content {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
div {
margin-right: 0.15rem;
cursor: pointer;
@ -642,7 +711,6 @@ onMounted(() => {
align-items: center;
font-weight: 500;
}
.ability-to-type-down {
background: #0087ff;
color: #fff;
@ -650,23 +718,19 @@ onMounted(() => {
}
}
}
.ant-modal-title {
display: flex;
align-items: center;
}
.ant-modal-footer {
border: 0;
text-align: center;
padding-bottom: 0.2rem;
button {
margin-right: 0.2rem;
border-radius: 0.08rem;
}
}
.showBg {
height: 0.24rem;
width: 0.24rem;

View File

@ -93,10 +93,7 @@
:checked="val.checked"
@click.stop="checkedDept(val)"
></a-checkbox>
<span style="margin-left: 0.2rem" v-if="itShowXiHaiAn">
{{ val.deptName}}
</span>
<span style="margin-left: 0.2rem" v-else>
<span style="margin-left: 0.2rem">
{{ val.deptName + '(' + val.count + ')' }}
</span>
</div>
@ -116,13 +113,13 @@
<a-list-item-meta
:description="
item.description ||
(item.note1 && JSON.parse(item.note1) &&
(JSON.parse(item.note1) &&
JSON.parse(item.note1)[0] &&
JSON.parse(item.note1)[0].channelName +
'等' +
JSON.parse(item.note1).length +
'个摄像头') ||
''
'--'
"
style="position: relative"
>
@ -147,9 +144,8 @@
</a-tooltip>
<span class="type">{{ item.type }}</span>
</div>
<!-- // todo -->
<span class="time">
<span v-if="!itShowXiHaiAn">加购时间:{{ item.time }}</span>
加购时间:{{ item.time }}
<a-popconfirm
title="是否删除该记录?"
ok-text="是"
@ -322,7 +318,6 @@
const name = ref('')
const type = ref('')
const list = ref([])
const itShowXiHaiAn = whoShow.itShowXiHaiAn;
//
onMounted(() => {
getList('init')
@ -503,8 +498,6 @@
pageSize: pageSize.value,
name: name.value,
}).then((res) => {
console.log('res---获取信息--------->', res);
let statistics = 0
res.data.data.list.map((val) => {
val.initLoading = true
@ -531,13 +524,30 @@
}
// console.log('===============>', load.value)
//
debugger
list.value = res.data.data.list
if (index || index === 0) {
debugger
list.value[index].show = true
// console.log('1111', list.value[index])
showNew(list.value[index])
// showBottom()
}
// list.value = res.data.data.list
console.log(
'重新请求值',
index,
// res.data.data.list[index].show,
list.value
)
total.value = res.data.data.deptCount
console.log(
'重新请求值2',
index,
// res.data.data.list[index].show,
list.value
)
showKey.value++
if (type == 'init' || type == 'changePage') {
getListByDeptId(list.value[0])
@ -548,18 +558,12 @@
const getListByDeptId = (item) => {
console.log(item, 'item')
if (item.children.length == 0) {
let _obj = {
selectResourceListByDept({
pageNum: item.pageNum,
pageSize: item.pageSize,
deptId: item.deptId || '',
deptId: item.deptId,
name: name.value,
}
// 西 todo
if(whoShow.itShowXiHaiAn) {
_obj.key = item.deptName
}
selectResourceListByDept(_obj).then((res) => {
console.log('res----根据部门查询-------->', res);
}).then((res) => {
// console.log(
// '=============>',
// item,
@ -637,17 +641,16 @@
}
//
const checkedDept = (item) => {
console.log(
'点击部门多选框==================>',
item,
checkedList.value,
checkAll.value
)
// console.log(
// '==================>',
// item,
// checkedList.value,
// checkAll.value
// )
item.checked = !item.checked
if (item.checked) {
if (item.children.length > 0) {
item.children.map((val) => {
console.log('val.id------------>', val.id);
if (checkedListAbility.value.indexOf(val.id) == -1) {
checkedListAbility.value.push(val.id)
item.checkedList.push(val.id)
@ -835,15 +838,8 @@
} else {
let arr = []
let delArr = []
console.log('list.value------------>', list.value);
list.value.map((val) => {
val.arr = val.children.filter((item) => {
if(whoShow.itShowXiHaiAn) {
item.type = '基础设施';
item.resourceName = '摄像头列表';
item.resourceId = '1522550195055828996';
}
console.log('选择的数据=============>', item)
if (checkedListAbility.value.indexOf(item.id) > -1) {
if (item.delFlag == 0) {
@ -861,7 +857,6 @@
if (arr.length > 0) {
console.log('一键申请===================>', arr)
localStorage.setItem('applyList', JSON.stringify(arr))
return;
router.push({
path: '/apply',
})

View File

@ -1,31 +1,45 @@
<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="{
<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>
}"
></i>
<span>{{ item.title }}</span>
</a-menu-item>
</a-menu>
</div>
</template>
<script>
import { defineComponent, ref, onMounted } from 'vue'
import { defineComponent, ref } from 'vue'
import mybus from '@/myplugins/mybus'
export default defineComponent({
components: {},
setup() {
const menuList = [
// {
// title: '',
// img: require('@/assets/personalCenter/demand.png'),
// imgActive: require('@/assets/personalCenter/demandactive.png'),
// key: 'PurchaseVehicle',
// },
{
title: '申购车',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'PurchaseVehicle',
},
{
title: '我的发布',
img: require('@/assets/personalCenter/push.png'),
@ -38,12 +52,12 @@ export default defineComponent({
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
},
// {
// title: '',
// img: require('@/assets/personalCenter/collect.png'),
// imgActive: require('@/assets/personalCenter/collectactive.png'),
// key: 'collect',
// },
{
title: '我的收藏',
img: require('@/assets/personalCenter/collect.png'),
imgActive: require('@/assets/personalCenter/collectactive.png'),
key: 'collect',
},
{
title: '我的浏览',
img: require('@/assets/personalCenter/recent.png'),
@ -63,12 +77,7 @@ export default defineComponent({
key: 'remark',
},
]
// 西
// if() {
// }
const selectedKeys = ref(['apply'])
const selectedKeys = ref(['PurchaseVehicle'])
const type = JSON.parse(window.sessionStorage.getItem('type'))
if (type) {
selectedKeys.value = [type]
@ -78,10 +87,6 @@ export default defineComponent({
mybus.emit('tabsChange', item)
}
onMounted(() => {
handleClick(menuList[1])
})
return {
menuList,
selectedKeys,
@ -101,17 +106,14 @@ export default defineComponent({
height: 60px;
font-size: 16px;
color: #333;
&:hover {
color: #0087ff;
background-color: #edf4fc;
}
}
:deep(.ant-menu-title-content) {
display: flex;
align-items: center;
.icon {
display: block;
width: 24px;
@ -120,17 +122,14 @@ export default defineComponent({
margin-right: 30px;
}
}
:deep(.ant-menu-item-selected) {
background-color: #edf4fc;
color: #0087ff;
&::after {
display: none;
}
}
}
#aside-menu-container::-webkit-scrollbar {
width: 0 !important;
}