Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev

This commit is contained in:
kongjun 2022-06-24 09:33:26 +08:00
commit 37fd83aee7
39 changed files with 2082 additions and 385 deletions

2
.gitignore vendored
View File

@ -2,3 +2,5 @@ back/dist-西海岸-后台管理.zip
back/public/index.html
back/dist-西海岸-后台管理-带配置文件.zip
back/dist-市局-后台管理-带配置文件.zip
back/dist-包头-后台管理.zip
back/dist-市局-后台管理.zip

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 10:11:40
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-20 16:20:34
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-23 18:30:45
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -27,10 +27,10 @@
'isTab': true, // 是否通过tab展示内容?
'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配)
};
// window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/#/vueTemplateDemo';
window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/#/vueTemplateDemo';
// window.SITE_CONFIG['frontUrl'] = 'http://124.222.94.39:9796/#/vueTemplateDemo';
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/#/vueTemplateDemo';
window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9797/#/vueTemplateDemo';
// window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9797/#/vueTemplateDemo';
window.SITE_CONFIG['menuList'] = []; // 左侧菜单列表(后台返回,未做处理)
window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理)
window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表
@ -42,7 +42,8 @@
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<script>
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.166:8888/renren-admin';
window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://15.2.23.141:8000/renren-admin';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
@ -71,8 +72,9 @@
// window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,97 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 16:30:04
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-06 13:14:02
* @Description: 告诉大家这是什么
-->
<template>
<div shadow="never" class="aui-card--fill">
<!-- 流转详情 -->
<h3 class="titleH3">{{ $t('process.circulation') }}</h3>
<div class="mod-sys__dict">
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
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-pagination
v-if="dataForm.pid === '0'"
: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>
</div>
</template>
<style scoped>
.image {
width: 60%;
display: block;
margin: 0 auto 30px auto;
}
.titleH3{
font-size: 16px;
color: #212121;
padding:20px 0;
margin-bottom:0;
}
</style>
<script>
import Cookies from 'js-cookie'
import qs from 'qs'
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
name: 'RenProcessDetail',
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getTaskHandleDetailInfo',
getDataListIsPage: false,
createdIsNeed: false,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
dataForm: {
processInstanceId: ''
}
}
},
created () {
this.dataForm.processInstanceId = this.$route.params.processInstanceId
this.getResourceURL()
this.getDataList()
},
methods: {
// (xml/image)url
getResourceURL () {
const params = qs.stringify({
token: Cookies.get('ucsToken'),
processInstanceId: this.dataForm.processInstanceId
})
return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}`
}
}
}
</script>

View File

@ -0,0 +1,110 @@
<template>
<div class='container'>
<span class='title-style'>应用资源</span>
<span class='page-introduction'>发布情况统计</span>
<div class='container-body'>
<div class='container-body1'>
<span style='font-size:18px;color;#000000;'>评分发布情况</span>
</div>
<div class='container-body2'>
<span style='font-size:18px;color;#000000;'>发布量情况分布</span>
</div>
<div class='container-body3'>
<span style='font-size:18px;color;#000000;'>应用领域分布情况</span>
</div>
<div class='container-body4'>
<span style='font-size:18px;color;#000000;'>被调用组件及数量</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div class='container-body5'>
<span style='font-size:18px;color;#000000;'>被申请组件及数量</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div class='container-body6'>
<span style='font-size:18px;color;#000000;'>评分发布情况</span>
</div>
<div class='container-body7'>
<span style='font-size:18px;color;#000000;'>评分发布情况</span>
</div>
</div>
</div>
</template>
<style scoped>
.container{
padding-top: 15px;
}
.title-style{
font-size: 24px;
color:#000000;
font-weight: bold;
}
.page-introduction{
font-size: 18px;
color:#666666;
margin-left: 20px;
}
.container-body{
width:1300px;
margin-top:30px;
display: flex;
flex-wrap:wrap
}
.container-body1{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
}
.container-body2{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
}
.container-body3{
width:420px;
height:250px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
}
.container-body4{
width:640px;
height:300px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
margin-right: 20px;
}
.container-body5{
width:640px;
height:300px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
}
.container-body6{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
}
.container-body7{
width:860px;
height:250px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
}
</style>

View File

@ -0,0 +1,358 @@
<template>
<div class='container'>
<span class='title-style'>组件服务</span>
<span class='page-introduction'>发布情况统计</span>
<div class='container-body'>
<div class='container-body1'>
<span style='font-size:18px;color;#000000;'>评分发布情况</span>
<div id="main1" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body2'>
<span style='font-size:18px;color;#000000;'>发布量情况分布</span>
<div id="main2" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body3'>
<span style='font-size:18px;color;#000000;'>应用领域分布情况</span>
<div id="main3" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body4'>
<span style='font-size:18px;color;#000000;'>被调用组件及数量</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div class='container-body5'>
<span style='font-size:18px;color;#000000;'>被申请组件及数量</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
</div>
<div class='footer'>
<div class='footer-left' ></div>
<span style='color:#b7c2d1;font-size:16px'>到底啦</span>
<div class='footer-right'></div>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts';
export default {
mounted(){
this.myEcharts1()
this.myEcharts2()
this.myEcharts3()
},
methods:{
myEcharts1(){
var chartDom = document.getElementById('main1');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '14%',
left: '55%',
width:"auto",
height:"auto",
orient: "vertical",
itemGap: 15,
itemWidth: 14,
// 使
formatter: function(name) {
var data = option.series[0].data;
var total = 0;
var tarValue;
for (var i = 0; i < data.length; i++) {
total += data[i].value;
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var v = tarValue;
var p = Math.round(((tarValue / total) * 100));
return `${name} ${p}%`;
},
itemStyle:{},
textStyle: {
color: "#666666",
padding:[0,8,0,18]
},
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
type: 'pie',
radius: ['40%', '60%'],
center:['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1048, name: '1分' },
{ value: 735, name: '2分' },
{ value: 580, name: '3分' },
{ value: 484, name: '4分' },
{ value: 300, name: '5分' }
]
}
]
};
option && myChart.setOption(option);
},
myEcharts2(){
var chartDom = document.getElementById('main2');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '22%',
left: '50%',
width:"auto",
height:"auto",
orient: "vertical",
itemGap: 15,
itemWidth: 14,
// 使
formatter: function(name) {
var data = option.series[0].data;
var total = 0;
var tarValue;
for (var i = 0; i < data.length; i++) {
total += data[i].value;
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var v = tarValue;
var p = Math.round(((tarValue / total) * 100));
return `${name} ${p}%`;
},
itemStyle:{},
textStyle: {
color: "#666666",
padding:[0,8,0,18]
},
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
// name: 'Access From',
type: 'pie',
radius: ['40%', '60%'],
center:['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1048, name: '算法' },
{ value: 735, name: '图层' },
{ value: 580, name: '开发' },
{ value: 484, name: '业务' },
]
}
]
};
option && myChart.setOption(option);
},
myEcharts3(){
var chartDom = document.getElementById('main3');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '22%',
left: '50%',
width:"auto",
height:"auto",
orient: "vertical",
itemGap: 15,
itemWidth: 14,
// 使
formatter: function(name) {
var data = option.series[0].data;
var total = 0;
var tarValue;
for (var i = 0; i < data.length; i++) {
total += data[i].value;
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var v = tarValue;
var p = Math.round(((tarValue / total) * 100));
return `${name} ${p}%`;
},
itemStyle:{},
textStyle: {
color: "#666666",
padding:[0,8,0,18]
},
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
// name: 'Access From',
type: 'pie',
radius: ['40%', '60%'],
center:['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1048, name: '应用领域' },
{ value: 735, name: '应用领域2' },
{ value: 580, name: '应用领域3' },
{ value: 484, name: '应用领域4' },
]
}
]
};
option && myChart.setOption(option);
}
}
}
</script>
<style scoped>
.container{
padding-top: 15px;
}
.title-style{
font-size: 24px;
color:#000000;
font-weight: bold;
}
.page-introduction{
font-size: 18px;
color:#666666;
margin-left: 20px;
}
.container-body{
width:1300px;
margin-top:30px;
display: flex;
flex-wrap:wrap
}
.container-body1{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
}
.container-body2{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
}
.container-body3{
width:420px;
height:250px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
}
.container-body4{
width:640px;
height:300px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
margin-right: 20px;
}
.container-body5{
width:640px;
height:300px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
}
.footer{
display: flex;
margin-top:50px;
margin-left:365px;
}
.footer-left{
width:250px;
height:1px;
background-color:#e0eaf8;
margin-right:10px;
margin-top:8px
}
.footer-right{
width:250px;
height:1px;
background-color:#e0eaf8;
margin-left:10px;
margin-top:8px
}
</style>

View File

@ -0,0 +1,250 @@
<template>
<div>
<el-card shadow="never" class="aui-card--fill" v-if='homeIsShow'>
<div class="mod-demand__bsdemand">
<div class='top-box'>
<span class='title'>能力统计</span>
<div class='title-list-style'>
<div v-for="(item,index) in titleList" :key='index' class='title-single' :class="{'choseStyle':choseId=== index}" @click="choseBtn(index)">
<span class='box-style'>{{item.name}}</span>
</div>
</div>
</div>
<div class='second-title'>
<span style='margin-right:30px' :class="[departmentId===1?'departmentStyle':'']" @click="handleChose(1)">
部门发布情况
</span>
<span :class="[departmentId===2?'departmentStyle':'']" @click="handleChose(2)">
部门使用情况
</span>
</div>
<div class='line-style'></div>
<el-table
:data="tableData"
border
style="width: 100%">
<el-table-column
prop="name"
label="部门名称"
min-width="100%">
</el-table-column>
<el-table-column
prop="releaseNum"
label="发布总数"
min-width="100%">
</el-table-column>
<el-table-column
prop="applyNum"
label="被申请总数"
min-width="100%">
</el-table-column>
<el-table-column
prop="browseNmu"
label="浏览总量"
min-width="100%">
</el-table-column>
<el-table-column
prop="collectNum"
label="收藏量"
min-width="100%">
</el-table-column>
<el-table-column
prop="transferNum"
label="被调用总数"
min-width="100%">
</el-table-column>
<el-table-column
prop="applicationNum"
label="被应用总数"
min-width="100%">
</el-table-column>
<el-table-column
prop="needApplicationNum"
label="需申请数量"
min-width="100%">
</el-table-column>
<el-table-column
prop="reductionNum"
label="免批数量"
min-width="100%">
</el-table-column>
<el-table-column
label="操作"
min-width="92%">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">查看详情</el-button>
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[10, 20, 30, 40]"
layout="total, prev, pager, next, jumper"
:total="40">
</el-pagination>
</div>
</div>
</el-card>
<component-services v-if='servicesIsShow' ></component-services>
<application-resources v-if='resourcesIsShow'></application-resources>
</div>
</template>
<script>
import componentServices from './componentServices.vue'
import applicationResources from './applicationResources.vue'
export default {
components:{componentServices,applicationResources},
data(){
return{
choseId:null,
departmentId:1,
currentPage4: 4,
homeIsShow:true,
servicesIsShow:false,
resourcesIsShow:false,
titleList:[
{name:'组件服务',key:1}, {name:'应用资源',key:2}, {name:'基础设施',key:3}, {name:'数据资源',key:3}, {name:'知识库',key:3},
],
tableData: [{
name: '部门名称一',
releaseNum: 111,
applyNum: 222,
browseNmu: 333,
collectNum:444,
transferNum:555,
applicationNum:666,
needApplicationNum:777,
reductionNum:888,
},{
name: '部门名称一',
releaseNum: 111,
applyNum: 222,
browseNmu: 333,
collectNum:444,
transferNum:555,
applicationNum:666,
needApplicationNum:777,
reductionNum:888,
},{
name: '部门名称一',
releaseNum: 111,
applyNum: 222,
browseNmu: 333,
collectNum:444,
transferNum:555,
applicationNum:666,
needApplicationNum:777,
reductionNum:888,
},{
name: '部门名称一',
releaseNum: 111,
applyNum: 222,
browseNmu: 333,
collectNum:444,
transferNum:555,
applicationNum:666,
needApplicationNum:777,
reductionNum:888,
},
]
}
},
methods: {
handleClick(row) {
console.log(row);
},
//
choseBtn(index){
this.choseId=index
if (index===0){
this.homeIsShow=false
this.servicesIsShow=true
} else if(index===1){
this.homeIsShow=false
this.servicesIsShow=false
this.resourcesIsShow=true
}
},
//or使
handleChose(index){
this.departmentId=index
},
//
handleSizeChange(val) {
console.log(`每页 ${val}`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
}
},
}
</script>
<style lang="scss" scoped>
.top-box{
height:80px;
background-color: #fafafc;
}
.title{
display: flex;
font-size:20px;
color:#000000;
font-weight: bold;
padding-left:15px;
padding-top:10px;
}
.title-list-style{
display: flex;
margin-top:10px;
}
.title-single{
font-size:14px;
width:90px;
color:#666666;
height:24px;
margin-left:10px;
border:1px solid #cccccc;
border-radius: 12px;
cursor:pointer
}
.box-style{
width:90px;
height:24px;
display:flex;
justify-content: center;
align-items: center;
padding-bottom: 2px;
}
.second-title{
margin-top:20px;
font-size: 14px;
color:#979eb9;
cursor:pointer
}
.line-style{
width:100%;
height:1px;
background-color:#f5f6fa;
margin-top:15px;
margin-bottom:15px;
}
.aui-card--fill{
width:100% !important;
padding: 0px !important;
}
.choseStyle{
color:#526aff;
border:1px solid #526aff
}
.departmentStyle{
color:#526aff
}
</style>

View File

@ -1,106 +1,134 @@
<!-- 流程业务表单 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"
>
<el-form-item label="申请人" prop="user">
<el-input
v-model="dataForm.applyUserName"
:disabled="fieldDisabled"
placeholder="请输入申请人"
></el-input>
</el-form-item>
<el-form-item label="申请电话" prop="phone">
<el-input
v-model="dataForm.applyUserPhone"
:disabled="fieldDisabled"
placeholder="请输入申请人电话"
></el-input>
</el-form-item>
<el-form-item label="申请单位" prop="unit">
<el-input
v-model="dataForm.applyUserDeptName"
:disabled="fieldDisabled"
placeholder="请输入申请单位"
></el-input>
</el-form-item>
<el-form-item label="需求标题" prop="area">
<el-input
v-model="dataForm.demandSubject"
:disabled="fieldDisabled"
placeholder="需求标题"
></el-input>
</el-form-item>
<el-form-item label="需求类型" prop="system">
<el-input
v-model="dataForm.detailsType"
:disabled="fieldDisabled"
placeholder="需求类型"
></el-input>
</el-form-item>
<el-form-item label="应用领域" prop="scene">
<el-input
v-model="dataForm.detailsField"
:disabled="fieldDisabled"
placeholder="应用领域"
></el-input>
</el-form-item>
<el-form-item label="需求描述" prop="basis">
<el-tooltip class="item" effect="dark" popper-class="kuandukuandukuandu" :content="dataForm.demandDetails" placement="top">
<el-input
v-model="dataForm.demandDetails"
:disabled="fieldDisabled"
placeholder="需求描述"
></el-input>
</el-tooltip>
</el-form-item>
<el-form-item v-if="dataForm.enclosure" label="申请附件" prop="enclosure">
<el-button @click="downloadFile(dataForm.enclosure, '申请附件')">附件下载</el-button>
</el-form-item>
</el-form>
<!-- 申请人详情 -->
<div>
<h3>申请人信息</h3>
<div class="big-BOX">
<p>
<span>申请人<span> {{dataForm.content.applyUserName || '--'}}</span></span>
<span>电话<span>{{dataForm.content.applyUserPhone || '--'}}</span></span>
<span>单位<span>{{dataForm.content.applyUserDeptName || '--'}}</span></span>
</p>
<p>
<span>应用领域<span>{{dataForm.content.detailsField || '--'}}</span></span>
<span> 需求类型<span> {{dataForm.content.detailsType || '--'}}</span></span>
<span> 需求标题 <span> {{dataForm.content.demandSubject || '--'}}</span></span>
</p>
<p>
<span> 需求描述<span> {{dataForm.content.demandDetails|| '--'}}</span></span>
</p>
<p>
<span> 申请附件<span> {{dataForm.content.enclosure|| '--'}}<button @click="downloadFile(dataForm.content.enclosure)">下载</button></span></span>
</p>
</div>
</div>
<!-- 申请能力 -->
<div class="AbilityApply">
<h3>申请能力</h3>
<ul v-for="item in dataList" :key="item.id">
<li class="title">{{item.address}}</li>
<li class="clearfix">
<img
src="~@/assets/img/imgLeft.png"
/>
<div>
<h2>{{item.name}}<span>{{item.type}}</span></h2>
<p>{{item.describe}}</p>
</div>
</li>
</ul>
</div>
<!-- 流程综合组件 -->
<ren-process-multiple
<!-- <ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple>
></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr">
<h3>审批</h3>
<div>
<el-radio-group v-model="agreeOrList" style="width:230px;">
<el-radio-button label="同意" class="blueAll">同意</el-radio-button>
<el-radio-button label="退回" class="redAll">退回</el-radio-button>
</el-radio-group>
<el-input v-if="agreeOrList ==='同意' " v-model="inputAgree" placeholder="请输入同意内容"></el-input>
<el-input v-if="agreeOrList ==='退回'" v-model="inputNo" placeholder="请输入退回内容"></el-input>
<el-button class="inputBule" @click="agreeOrNot">提交</el-button>
</div>
</div>
<!-- 流程详情 -->
<ren-process-detail-import></ren-process-detail-import>
</el-card>
</template>
<script>
//
import processModule from '@/mixins/process-module'
import qs from 'qs'
import RenProcessDetailImport from '@/components/ren-process-detail/src/ren-process-detail-import'
export default {
//
mixins: [processModule],
data () {
return {
visible: false,
visible: true,
//
fieldDisabled: false,
// fieldDisabled: false,
// dataForm: {
// id: '',
// user: '',
// phone: '',
// unit: '',
// area: '',
// system: '',
// scene: '',
// basis: ''
// }
dataForm: {
id: '',
user: '',
phone: '',
unit: '',
area: '',
system: '',
scene: '',
basis: ''
content: []
},
dataList: [
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
},
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
},
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
}
],
inputAgree: '',
inputNo: '',
agreeOrList: '同意'
}
},
created () {
// KEY
this.dataForm.id = this.$route.params.businessKey
console.log(this.$route.params)
console.log(this.dataForm, 'ela')
this.init()
//
var callbacks = {
@ -115,37 +143,30 @@ export default {
this.initProcessMultiple(callbacks)
},
computed: {
dataRule () {
return {
user: [{ required: true, message: '请输入申请人', trigger: 'blur' }],
phone: [
{ required: true, message: '请输入申请人电话', trigger: 'blur' },
{
type: 'string',
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
trigger: 'blur'
}
],
unit: [{ required: true, message: '请输入申请单位', trigger: 'blur' }],
area: [{ required: true, message: '请输入所在地区', trigger: 'blur' }],
system: [
{ required: true, message: '请输入申请应用', trigger: 'blur' }
],
scene: [{ required: true, message: '请输入应用场景', trigger: 'blur' }],
basis: [{ required: true, message: '请输入申请依据', trigger: 'blur' }]
}
}
// dataRule () {
// return {
// inputAgree: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// inputNo: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ]
// }
// }
},
components: {
RenProcessDetailImport
},
methods: {
init () {
this.visible = true
// this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
// this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
// KEY
this.fieldDisabled = true
// this.fieldDisabled = true
this.getInfo()
console.log(this.dataForm, 'init')
}
})
},
@ -155,21 +176,242 @@ export default {
.get(`/demanData/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
console.log(res.data)
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
console.log(res.data, 'elas')
this.dataForm.content = res.data
console.log(this.dataForm, 'ela')
})
.catch(() => {})
},
//
applyData () {
this.$http
.get(`/resource/select/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
console.log(res.data, 'wh')
// return this.$message.error(res.msg)
}
// console.log(res.data, 'elas')
// this.dataForm.content = res.data
// console.log(this.dataForm, 'ela')
})
.catch(() => {})
},
// 退
agreeOrNot () {
if (this.agreeOrList === '同意') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.dataForm.content.instanceId,
comment: this.inputAgree
})
console.log(params)
this.$http.post('/act/task/complete?' + params).then(({ data: res }) => {
if (res.code !== 0) {
console.log(res)
this.$message.error(res.msg)
}
}).catch(() => {})
} else if (this.agreeOrList === '退回') {
const params = qs.stringify({
taskId: this.dataForm.content.instanceId,
comment: this.inputNo
})
this.$http.post('/act/task/backToFirst?', params).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
}
})
}
},
//
startProcessErrorCallback (data) {
console.log(data)
},
//
taskHandleErrorCallback (data) {}
},
mounted () {
this.applyData()
}
}
</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:78%;
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;
}
}
}
p:last-of-type{
margin-top:16px;
width:100%;
span{
display:flex;
span{
padding-left: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:#0558e1;
color:#ffffff;
border:1px solid #0558e1;
}
}
.inputBule{
width:55px;
height:32px;
line-height:32px;
padding:0;
border-radius:2px;
background:#0558e1;
color:#ffffff;
border:1px solid #0558e1;
}
::v-deep .is-active{
background:#ffffff;
color:#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__inner{
box-shadow: unset;
}
}
.blueInput{
width:55px;
}
</style>

View File

@ -0,0 +1,175 @@
<!-- 流程业务表单 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"
>
<el-form-item label="申请人" prop="user">
<el-input
v-model="dataForm.applyUserName"
:disabled="fieldDisabled"
placeholder="请输入申请人"
></el-input>
</el-form-item>
<el-form-item label="申请电话" prop="phone">
<el-input
v-model="dataForm.applyUserPhone"
:disabled="fieldDisabled"
placeholder="请输入申请人电话"
></el-input>
</el-form-item>
<el-form-item label="申请单位" prop="unit">
<el-input
v-model="dataForm.applyUserDeptName"
:disabled="fieldDisabled"
placeholder="请输入申请单位"
></el-input>
</el-form-item>
<el-form-item label="需求标题" prop="area">
<el-input
v-model="dataForm.demandSubject"
:disabled="fieldDisabled"
placeholder="需求标题"
></el-input>
</el-form-item>
<el-form-item label="需求类型" prop="system">
<el-input
v-model="dataForm.detailsType"
:disabled="fieldDisabled"
placeholder="需求类型"
></el-input>
</el-form-item>
<el-form-item label="应用领域" prop="scene">
<el-input
v-model="dataForm.detailsField"
:disabled="fieldDisabled"
placeholder="应用领域"
></el-input>
</el-form-item>
<el-form-item label="需求描述" prop="basis">
<el-tooltip class="item" effect="dark" popper-class="kuandukuandukuandu" :content="dataForm.demandDetails" placement="top">
<el-input
v-model="dataForm.demandDetails"
:disabled="fieldDisabled"
placeholder="需求描述"
></el-input>
</el-tooltip>
</el-form-item>
<el-form-item v-if="dataForm.enclosure" label="申请附件" prop="enclosure">
<el-button @click="downloadFile(dataForm.enclosure, '申请附件')">附件下载</el-button>
</el-form-item>
</el-form>
<!-- 流程综合组件 -->
<ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple>
</el-card>
</template>
<script>
//
import processModule from '@/mixins/process-module'
export default {
//
mixins: [processModule],
data () {
return {
visible: false,
//
fieldDisabled: false,
dataForm: {
id: '',
user: '',
phone: '',
unit: '',
area: '',
system: '',
scene: '',
basis: ''
}
}
},
created () {
// KEY
this.dataForm.id = this.$route.params.businessKey
console.log(this.$route.params)
this.init()
//
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
startProcessErrorCallback: this.startProcessErrorCallback,
taskHandleSuccessCallback: this.closeCurrentTab,
taskHandleErrorCallback: this.taskHandleErrorCallback,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
//
this.initProcessMultiple(callbacks)
},
computed: {
dataRule () {
return {
user: [{ required: true, message: '请输入申请人', trigger: 'blur' }],
phone: [
{ required: true, message: '请输入申请人电话', trigger: 'blur' },
{
type: 'string',
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
trigger: 'blur'
}
],
unit: [{ required: true, message: '请输入申请单位', trigger: 'blur' }],
area: [{ required: true, message: '请输入所在地区', trigger: 'blur' }],
system: [
{ required: true, message: '请输入申请应用', trigger: 'blur' }
],
scene: [{ required: true, message: '请输入应用场景', trigger: 'blur' }],
basis: [{ required: true, message: '请输入申请依据', trigger: 'blur' }]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
// KEY
this.fieldDisabled = true
this.getInfo()
}
})
},
//
getInfo () {
this.$http
.get(`/demanData/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
})
.catch(() => {})
},
//
startProcessErrorCallback (data) {
console.log(data)
},
//
taskHandleErrorCallback (data) {}
}
}
</script>

View File

@ -0,0 +1,114 @@
<template>
<div class="wrapper">
<div>
<el-form
:model="dataForm"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'"
>
<el-form-item label="评论内容">
<el-input
v-model="dataForm.comment"
:disabled="fieldDisabled"
placeholder="评论内容"
></el-input>
</el-form-item>
</el-form>
</div>
<!-- 流程综合组件 -->
<ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple>
</div>
</template>
<script>
import processModule from '@/mixins/process-module'
export default {
//
mixins: [processModule],
components: {},
props: {
// fromList: {
// // type: Array,
// // default: () => {
// // return []
// // }
// }
},
data () {
return {
// processVisible: true,
visible: false,
//
fieldDisabled: false,
dataForm: [],
id: '',
shifoushizujian: true
}
},
watch: {},
computed: {},
methods: {
init () {
this.visible = true
// this.getInfo(this.$router.currentRoute.params.params.params.resourceDTO.id)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
// this.id=this.$router.currentRoute
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
// if (this.dataForm.id) {
// KEY
this.fieldDisabled = true
// this.id = this.$router.currentRoute.businessKey
this.getInfo(this.$router.currentRoute.params.businessKey)
console.log('id', this.$router.currentRoute.params.businessKey)
// }
})
},
getInfo (id) {
this.$http.get('/resourceMountApply/' + id).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = res.data.resourceDTO
if (this.dataForm.type != '应用资源') {
this.shifoushizujian = false
} else {
this.shifoushizujian = true
}
console.log('this.dataForm', this.dataForm)
})
}
},
created () {
// this.dataForm = this.$router.currentRoute.params.id
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
startProcessErrorCallback: this.startProcessErrorCallback,
taskHandleSuccessCallback: this.closeCurrentTab,
taskHandleErrorCallback: this.taskHandleErrorCallback,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
//
this.initProcessMultiple(callbacks)
},
mounted () {}
}
</script>
<style lang="scss">
.kuandukuandukuandu{
max-width:1500px;
}
.wrapper {
}
</style>

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-27 19:34:30
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-04-28 19:26:07
* @LastEditTime: 2022-06-23 21:08:01
* @Description: 告诉大家这是什么
-->
<template>
@ -46,7 +46,8 @@
(scope.row.params && scope.row.params.user) ||
(scope.row.params && scope.row.params.applyUserName) ||
(scope.row.params && scope.row.params.userName) ||
(scope.row.params && scope.row.params.undercarriageUserName)
(scope.row.params && scope.row.params.undercarriageUserName)||
(scope.row.params && scope.row.params.name)
}}</span>
</template>
</el-table-column>
@ -62,7 +63,8 @@
(scope.row.params &&
scope.row.params.resourceDTO &&
scope.row.params.resourceDTO.name) ||
(scope.row.params && scope.row.params.undercarriageReason)
(scope.row.params && scope.row.params.undercarriageReason)||
(scope.row.params && scope.row.params.comment)
}}</span>
</template>
</el-table-column>
@ -126,41 +128,42 @@
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
import processModule from "@/mixins/process-module";
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
export default {
mixins: [mixinViewModule, processModule],
data() {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: "/act/task/myToDoTaskPage",
getDataListURL: '/act/task/myToDoTaskPage',
getDataListIsPage: true,
activatedIsNeed: true,
deleteIsBatch: true,
deleteIsBatchKey: "deploymentId",
deleteIsBatchKey: 'deploymentId'
},
dataForm: {
taskName: "",
taskId: "",
taskName: '',
taskId: ''
},
processInstanceId: "",
};
processInstanceId: ''
}
},
components: {},
methods: {
//
taskHandle(row) {
taskHandle (row) {
console.log('row======================>', row, this.forwardHandleUrl)
if (!row.businessKey) {
return this.$message.error(this.$t("task.businessKeyError"));
return this.$message.error(this.$t('task.businessKeyError'))
}
this.getProcDefRouteSet(row, this.forwardHandleUrl);
this.getProcDefRouteSet(row, this.forwardHandleUrl)
},
taskDetail(row) {
taskDetail (row) {
if (!row.businessKey) {
return this.$message.error(this.$t("task.detailError"));
return this.$message.error(this.$t('task.detailError'))
}
this.getProcDefRouteSet(row, this.forwardTaskDetail);
},
},
};
this.getProcDefRouteSet(row, this.forwardTaskDetail)
}
}
}
</script>

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-21 17:21:23
* @LastEditTime: 2022-06-23 14:37:03
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -32,11 +32,12 @@
// window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
// 包头
// window.SITE_CONFIG['backUrl'] = 'http://10.110.205.1:8001';
// window.SITE_CONFIG['previewUrl'] = 'http://10.110.205.1:8002/';
// window.SITE_CONFIG['frontUrl'] = 'http://10.110.205.1:8002/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://10.110.205.1:8000/renren-admin';
window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
// 西海岸版本
// window.SITE_CONFIG['backUrl'] = 'http://10.134.135.9:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://10.134.135.9:9796/';
@ -48,10 +49,10 @@
// window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
// 穿透版本
// window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/';
// window.SITE_CONFIG['frontUrl'] = 'http://124.222.94.39:9796/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';
window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/';
window.SITE_CONFIG['frontUrl'] = 'http://124.222.94.39:9796/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
</script>
<link href="./leaflet/libs/leaflet/1.3.1/leaflet.css" rel="stylesheet">

View File

@ -1,19 +1,21 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-22 16:18:47
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-23 17:55:06
* @Description: 数据资源参数配置
*/
// const newLocation = 'qingdao'
// const newLocation = 'baotou'
const newLocation = 'qingdao'
// const newLocation = 'baotou'
// const newLocation = 'xihaian'
//
const whoShow = {}
const launchedDataNumObject = {}
//
const navListManagement = {}
//
const mapTestNum = {}
//
const footerDataList = {}
// qingdao
@ -51,6 +53,45 @@ if (newLocation === 'qingdao') {
},
],
}
mapTestNum.lsNum = [
{
name: '基础设施',
key: 'lsjcss',
num: 20135,
},
{
name: '数据资源',
key: 'lsjcss',
num: 857,
},
{
name: '应用资源',
key: 'lsjcss',
num: 28,
},
]
mapTestNum.xhaNum = [
{
name: '基础设施',
key: 'xhajcss',
num: 35282,
},
{
name: '数据资源',
key: 'xhajcss',
num: 11,
},
{
name: '应用资源',
key: 'xhajcss',
num: 23,
},
{
name: '组件服务',
key: 'xhazjfw',
num: 8,
},
]
}
// baotou
else if (newLocation === 'baotou') {
@ -80,21 +121,21 @@ else if (newLocation === 'baotou') {
]
footerDataList.footerList = {
company: {
left: '青岛西海岸新区大数据发展促进局建设',
right: 'v0.81',
left: '包头市工业和信息化局大数据中心建设',
right: '海信网络科技股份有限公司',
},
address: [
{
name: '鲁IC备00000000号',
value: '政府标识码3702000106',
name: '蒙ICP备05003330-1号',
value: '政府标识码1502000040',
},
{
name: '版权所有:青岛西海岸新区大数据发展促进局',
value: '地址:青岛市西海岸新区长江中路369号',
name: '版权所有:包头市工业和信息化局大数据中心',
value: '地址:内蒙古自治区包头市九原区开元大街1号',
},
{
name: '电话0532-86986596',
value: '传真0532-86986596',
name: '电话0472-5618235',
value: '传真0472-5618235',
},
],
}

View File

@ -1,3 +1,10 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-06-14 09:43:30
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-23 20:04:39
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
export function demandComment(data) {
@ -7,6 +14,13 @@ export function demandComment(data) {
data,
})
}
export function demandCommentApply(data) {
return request({
url: '/comment/center/apply',
method: 'post',
data,
})
}
export function demandCommentPage(params) {
return request({

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-22 15:27:36
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-22 18:59:03
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -62,7 +62,14 @@ export function pageWithAttrs(data) {
data,
})
}
// hls
export function getHls(params) {
return request({
url: '/resource/hls/getHls',
method: 'get',
params,
})
}
//
export function sgcInsert(data) {
return request({

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -90,6 +90,30 @@ instance.interceptors.response.use(
console.log('接口返回', response)
console.log('接口返回headers', response.headers)
console.log('接口返回REDIRECT', response.headers.redirect)
if (response.headers.redirect === '/#/login') {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
if (keys) {
for (var i = keys.length; i--; ) {
document.cookie =
keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() //,m.kevis.com
document.cookie =
keys[i] +
'=0;path=/;domain=' +
document.domain +
';expires=' +
new Date(0).toUTCString() // .m.kevis.com
document.cookie =
keys[i] +
'=0;path=/;domain=kevis.com;expires=' +
new Date(0).toUTCString() // .kevis.com
}
}
console.log('已清除')
setTimeout(() => {
location.reload()
}, 1000)
}
response['Access-Control-Expose-Headers'] = 'redirect'
const { code, message } = response.data
if (response.headers.token) {
@ -129,7 +153,30 @@ instance.interceptors.response.use(
if (error.response && error.response.data) {
console.log('接口返回', response)
console.log('接口返回headers', response.headers)
console.log('接口返回REDIRECT', response.headers.redirect)
console.log('接口返回REDIRECT1111', response.headers.redirect)
if (response.headers.redirect === '/#/login') {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
if (keys) {
for (var i = keys.length; i--; ) {
document.cookie =
keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() //,m.kevis.com
document.cookie =
keys[i] +
'=0;path=/;domain=' +
document.domain +
';expires=' +
new Date(0).toUTCString() // .m.kevis.com
document.cookie =
keys[i] +
'=0;path=/;domain=kevis.com;expires=' +
new Date(0).toUTCString() // .kevis.com
}
}
console.log('已清除')
setTimeout(() => {
location.reload()
}, 1000)
}
if (response.headers.redirect) {
window.location.href = response.headers.redirect
return Promise.reject(error)

View File

@ -89,7 +89,7 @@
dataList.value.dataList = res.data.data
res.data.data.map((item, index) => {
if (dataList.value.dataList[index].type === '数据资源') {
dataList.value.dataList[index].amount = dataSourceNum.value || 10433
dataList.value.dataList[index].amount = dataSourceNum.value || 0
}
dataList.value.dataList[index].organization = '个'
dataList.value.dataList[index].photo = photo.value[index]

View File

@ -1,3 +1,10 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-06-22 19:37:44
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-22 19:44:19
* @Description: 告诉大家这是什么
-->
<template>
<div>
<new-home-header></new-home-header>
@ -18,6 +25,6 @@
import SharingSituation from '@/views/abilityStatistics/components/SharingSituation.vue'
import AbilityRanking from '@/views/abilityStatistics/components/AbilityRanking.vue'
import CapabilityRequirements from '@/views/abilityStatistics/components/CapabilityRequirements.vue'
import HomeFooter from '@/views/abilityStatistics/components/Footer'
import HomeFooter from '@/views/newHome/components/Footer'
</script>
<style lang="less" scoped></style>

View File

@ -41,9 +41,12 @@
:key="index"
@click="tabSwitch(item, index)"
:class="
tabName == item.attrType
(tabName == item.attrType
? 'assign-case-detail-page-content-left-border-click'
: ''
: '') ||
(selectNow == item.id
? 'assign-case-detail-page-content-left-border-click'
: '')
"
>
{{ item.attrType }}
@ -175,7 +178,7 @@
)
//tab
const tabSwitch = (item, index) => {
tabName.value = item.title
tabName.value = item.attrType
if (index != 0 && index != 3) {
let top =
document.querySelector(

View File

@ -168,6 +168,7 @@
tabClickShow.value = true
} else {
let list = []
listBg.value = ''
init(list)
tabClickShow.value = false
}

View File

@ -186,15 +186,14 @@
</div>
<a-list
class="comment-list"
:header="`全部${total} 评论`"
:header="`全部${total || 0} 评论`"
item-layout="horizontal"
:data-source="evaluateData"
>
<template #renderItem="{ item }">
<a-list-item>
<a-comment :author="item.name">
<template v-if="item.name == user.applyUserName" #actions>
<!-- <span @click="evaluateUpdate">修改</span> -->
<!-- <template v-if="item.name == user.applyUserName" #actions>
<a-popconfirm
title="确定删除评论?"
ok-text="确定"
@ -204,7 +203,7 @@
>
<span>删除</span>
</a-popconfirm>
</template>
</template> -->
<template #content>
<p v-if="!evaluateUpdateStatus">
{{ item.comment }}
@ -250,6 +249,7 @@
demandComment,
demandCommentPage,
demandCommentDelete,
demandCommentApply,
} from '@/api/demandCenter'
import { getUser, getUserInfo } from '@/api/home'
import { getDemandForm } from '@/api/personalCenter'
@ -293,10 +293,17 @@
createDeptName: user.applyUserDeptName,
comment: myComment.value,
name: user.applyUserName,
}).then(() => {
}).then((res) => {
console.log(res)
if (res.data.code == '0') {
demandCommentApply({ id: res.data.data.id }).then((res1) => {
if (res1.data.code == '0') {
message.success('提交评价成功!')
myComment.value = ''
evaluateList()
}
})
}
})
}
// const evaluateUpdateStatus = ref(false)

View File

@ -128,6 +128,7 @@
width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
margin-top: -0.3rem;
.top {
display: flex;
align-items: center;
@ -135,10 +136,11 @@
font-size: 14px;
}
.name {
// max-width: 330px;
display: inline-block;
width: 10.2rem;
// overflow: hidden;
// text-overflow: ellipsis;
white-space: nowrap;
// white-space: nowrap;
font-size: 40px;
margin-right: 20px;
}

View File

@ -8,24 +8,24 @@
<div class="content-left">
<div class="content-left-content">
<ul>
<li v-for="(item, index) in dataFromLeft" :key="index">
<li v-for="(item, index) in dataFromLeft.content" :key="index">
<img :src="iconImg" />
<span>{{ item.type }}</span>
<p>{{ item.value }}</p>
<p>{{ item.values }}</p>
</li>
</ul>
<ul>
<li v-for="(item, index) in dataFromCenter" :key="index">
<li v-for="(item, index) in dataFromCenter.content" :key="index">
<img :src="iconImg" />
<span>{{ item.type }}</span>
<p>{{ item.value }}</p>
<p>{{ item.values }}</p>
</li>
</ul>
<ul>
<li v-for="(item, index) in dataFromRight" :key="index">
<li v-for="(item, index) in dataFromRight.content" :key="index">
<img :src="iconImg" />
<span>{{ item.type }}</span>
<p>{{ item.value }}</p>
<p>{{ item.values }}</p>
</li>
</ul>
</div>
@ -38,48 +38,54 @@
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue'
const iconImg = require('@/assets/detailsAll/layer-service/layer-icon.png')
const dataFromLeft = ref([
const dataFromLeft = ref({
content: [
{
type: '服务类型',
value: '服务类型名称',
values: '',
},
{
type: '覆盖区域',
value: '覆盖区域名称',
values: '',
},
{
type: '切片策略',
value: '名称',
values: '',
},
])
const dataFromCenter = ref([
],
})
const dataFromCenter = ref({
content: [
{
type: '坐标系',
value: '名称',
values: '',
},
{
type: '切片尺寸详情',
value: '名称',
values: '',
},
{
type: '最小级别名称',
value: '名称',
values: '',
},
])
const dataFromRight = ref([
],
})
const dataFromRight = ref({
content: [
{
type: '数据范围',
value: '名称',
values: '',
},
{
type: '图层名称',
value: '名称',
values: '',
},
{
type: '最大级别',
value: '名称',
values: '',
},
])
],
})
//
const props = defineProps({
dataList: { type: Object, default: null },
@ -87,25 +93,35 @@
const flag = ref(true)
if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter(
(item) => item.attrType === '图层信息'
(item) => item.attrType === '技术文档'
)[0]
if (!obj) {
flag.value = false
} else {
// dataFrom.value.content[0].link.value = props.dataList.apiUrl
// dataFrom.value.content[0].facilitator.value = props.dataList.deptContacts
// console.log('dataList', props.dataList)
// props.dataList.infoList.map((item) => {
// if (item.attrType === '') {
// dataFrom.value.content[0].linkValue = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFrom.value.content[0].facilitator2.value = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFrom.value.content[0].people2.value = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFrom.value.content[0].phone2.value = item.attrValue || '--'
// }
// })
console.log('dataList', props.dataList)
props.dataList.infoList.map((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 === '最大级别') {
dataFromRight.value.content[2].values = item.attrValue || '--'
}
})
}
}
watch(
@ -118,19 +134,28 @@
} 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) => {
// if (item.attrType === '') {
// dataFrom.value.content[0].linkValue = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFrom.value.content[0].facilitator2.value =
// item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFrom.value.content[0].people2.value = item.attrValue || '--'
// } else if (item.attrType === '') {
// dataFrom.value.content[0].phone2.value = item.attrValue || '--'
// }
// })
console.log('dataList', val)
val.infoList.map((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 === '最大级别') {
dataFromRight.value.content[2].values = item.attrValue || '--'
}
})
}
}
}

View File

@ -67,11 +67,11 @@
if (props.dataList.infoList) {
list.value = []
let arr = [
'组件视频介绍',
'图层信息',
'图层缩略图',
'坐标系',
'应用场景',
'应用案例',
'图层预览',
'是否可预览',
'使用方式',
'常见问题',
]
@ -83,14 +83,18 @@
props.dataList.infoList.map((item) => {
if (
item.attrType === '常见问题' ||
item.attrType === '图层信息' ||
item.attrType === '图层预览' ||
item.attrType === '应用场景' ||
item.attrType === '应用案例'
) {
list.value.push(item.attrType)
} else if (item.attrType === '组件视频介绍') {
} else if (item.attrType === '图层缩略图') {
list.value.push('图层展示')
} else if (item.attrType === '坐标系') {
list.value.push('图层信息')
} else if (item.attrType === '是否可预览') {
if (item.attrValue === '是') {
list.value.push('图层预览')
}
}
})
list.value.push('使用方式')
@ -117,11 +121,11 @@
if (val) {
list.value = []
let arr = [
'组件视频介绍',
'图层信息',
'图层缩略图',
'坐标系',
'应用场景',
'应用案例',
'图层预览',
'是否可预览',
'使用方式',
'常见问题',
]
@ -134,14 +138,18 @@
val.infoList.map((item) => {
if (
item.attrType === '常见问题' ||
item.attrType === '图层信息' ||
item.attrType === '图层预览' ||
item.attrType === '应用场景' ||
item.attrType === '应用案例'
) {
list.value.push(item.attrType)
} else if (item.attrType === '组件视频介绍') {
list.value.push('组件展示')
} else if (item.attrType === '图层缩略图') {
list.value.push('图层展示')
} else if (item.attrType === '坐标系') {
list.value.push('图层信息')
} else if (item.attrType === '是否可预览') {
if (item.attrValue === '是') {
list.value.push('图层预览')
}
}
})
list.value.push('使用方式')

View File

@ -9,7 +9,7 @@
<div class="application-presentation" v-if="flag">
<detals-title title="图层展示" type="IMAGE"></detals-title>
<div class="main">
<img :src="img" />
<img :src="onTrial" />
</div>
</div>
</template>
@ -20,16 +20,16 @@
dataList: { type: Object, default: null },
})
const flag = ref(true)
const img = ref()
const onTrial = ref('')
console.log('111111111111111111111,', props.dataList)
if (props.dataList.infoList) {
let imgindex = props.dataList.infoList.filter(
(item) => item.attrType === '组件图片'
(item) => item.attrType === '图层缩略图'
)[0]
if (!imgindex) {
flag.value = false
} else {
img.value = imgindex.attrValue
onTrial.value = imgindex.attrValue
}
}
watch(
@ -37,12 +37,12 @@
(val) => {
if (val) {
let imgindex = props.dataList.infoList.filter(
(item) => item.attrType === '组件图片'
(item) => item.attrType === '图层缩略图'
)[0]
if (!imgindex) {
flag.value = false
} else {
img.value = imgindex.attrValue
onTrial.value = imgindex.attrValue
}
}
}
@ -72,7 +72,7 @@
cursor: pointer;
}
img {
width: 50%;
width: 100%;
height: 100%;
border-radius: 0.1rem;
}

View File

@ -8,7 +8,14 @@
<template>
<div class="application-presentation" v-if="flag">
<detals-title title="图层预览" type="PREVIEW"></detals-title>
<div class="main" :style="`${img}background-position:center;`"></div>
<div class="main" :style="`${img}background-position:center;`">
<iframe
:src="img"
width="100%"
height="100%"
border-radius="0.1rem"
></iframe>
</div>
</div>
</template>
<script setup>
@ -19,16 +26,16 @@
dataList: { type: Object, default: null },
})
const flag = ref(true)
const img = ref({})
const img = ref('')
console.log('111111111111111111111,', props.dataList)
if (props.dataList.infoList) {
let imgindex = props.dataList.infoList.filter(
(item) => item.attrType === '图层预览'
(item) => item.attrType === '是否可预览' && item.attrValue === '是'
)[0]
if (!imgindex) {
flag.value = false
} else {
img.value = 'background:' + 'url(' + imgindex.attrValue + ') no-repeat;'
img.value = imgindex.attrValue
}
}
watch(
@ -36,13 +43,12 @@
(val) => {
if (val) {
let imgindex = props.dataList.infoList.filter(
(item) => item.attrType === '图层预览'
(item) => item.attrType === '是否可预览' && item.attrValue === '是'
)[0]
if (!imgindex) {
flag.value = false
} else {
img.value =
'background:' + 'url(' + imgindex.attrValue + ') no-repeat;'
img.value = imgindex.attrValue
}
}
}
@ -54,10 +60,6 @@
.main {
height: 5rem;
border-radius: 0.1rem;
// background-image: url('~@/assets/detailsAll/sf_video_bg.png');
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
margin-top: 0.4rem;
display: flex;
justify-content: center;

View File

@ -30,11 +30,11 @@
</div>
<div class="bottom" v-if="props.dataList.id">
<a-button type="primary" @click="toView()">
<!--<template #icon><form-outlined /></template>-->
<template #icon><form-outlined /></template>
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<!--<template #icon><shopping-cart-outlined /></template>-->
<template #icon><shopping-cart-outlined /></template>
加入购物车
</a-button>
<a-button type="primary" @click="goTOCollection()">收藏</a-button>
@ -44,7 +44,7 @@
</div>
</template>
<script setup>
import { ShoppingCartOutlined } from '@ant-design/icons-vue'
import { FormOutlined, ShoppingCartOutlined } from '@ant-design/icons-vue'
import { defineProps, ref, watch } from 'vue'
import { scInsert } from '@/api/personalCenter'
import { sgcInsert } from '@/api/home'
@ -150,7 +150,7 @@
.lable-father {
position: absolute;
min-width: 2.5rem;
right: -2.5rem;
right: -2.8rem;
top: 0;
}
.label {
@ -182,37 +182,21 @@
.bottom {
margin-top: 0.4rem;
display: flex;
.ant-btn {
height: 0.5rem;
margin-right: 0.2rem;
background: #ffffff;
background: #ff8b55;
border-radius: 0.06rem;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
}
.ant-btn-primary {
color: #1890ff;
}
.ant-btn:nth-of-type(1) {
width: 1.8rem;
background-image: url('~@/assets/detailsAll/layer-service/layer-apply-using.png');
background-repeat: no-repeat;
background-position: 24px center;
background-color: #ff8b55;
color: #fff;
padding-left: 26px;
}
.ant-btn:nth-of-type(2) {
width: 2.2rem;
background-image: url('~@/assets/detailsAll/layer-service/layer-shopping-car.png');
background-repeat: no-repeat;
background-position: 24px center;
background-color: #ff8b55;
color: #fff;
padding-left: 26px;
}
.ant-btn:nth-of-type(3) {
width: 1.45rem;

View File

@ -63,8 +63,9 @@
name: '接口地址:',
},
linkValue: '',
csslnkValue: '',
contact: '归属部门',
facilitator: { name: '归属部门:', value: '讯飞科大' },
facilitator: { name: '归属部门:', values: '讯飞科大' },
people: { name: '部门联系人:', value: '李四' },
phone: {
name: '联系人电话:',
@ -87,17 +88,17 @@
} else {
// eslint-disable-next-line vue/no-setup-props-destructure
dataFrom.value.content[0].link.value = props.dataList.apiUrl
dataFrom.value.content[0].facilitator.value = props.dataList.deptContacts
dataFrom.value.content[0].facilitator.values = props.dataList.deptContacts
console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => {
if (item.attrType === '组件地址') {
dataFrom.value.content[0].linkValue = item.attrValue || '--'
} else if (item.attrType === '服务商') {
dataFrom.value.content[0].facilitator2.value = item.attrValue || '--'
dataFrom.value.content[0].facilitator.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系人') {
dataFrom.value.content[0].people2.value = item.attrValue || '--'
dataFrom.value.content[0].people.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系电话') {
dataFrom.value.content[0].phone2.value = item.attrValue || '--'
dataFrom.value.content[0].phone.value = item.attrValue || '--'
}
})
}
@ -117,12 +118,12 @@
if (item.attrType === '组件地址') {
dataFrom.value.content[0].linkValue = item.attrValue || '--'
} else if (item.attrType === '服务商') {
dataFrom.value.content[0].facilitator2.value =
dataFrom.value.content[0].facilitator.value =
item.attrValue || '--'
} else if (item.attrType === '服务商联系人') {
dataFrom.value.content[0].people2.value = item.attrValue || '--'
dataFrom.value.content[0].people.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系电话') {
dataFrom.value.content[0].phone2.value = item.attrValue || '--'
dataFrom.value.content[0].phone.value = item.attrValue || '--'
}
})
}

View File

@ -0,0 +1,125 @@
<template>
<div class="ability-to-apply-for">
<div class="title">申请能力</div>
<div
v-for="(item, index) in dataForm"
:key="index"
class="ability-to-apply-for-content"
>
<div class="dep-name">
<span></span>
{{ item.deptName }}
</div>
<div class="name">
<span>{{ item.name }}</span>
<span>{{ item.type }}</span>
</div>
<div class="description">{{ item.description }}</div>
<div class="remove" @click="removeFunction(item)"></div>
</div>
</div>
</template>
<script setup>
import { useRouter } from 'vue-router'
import { ref, defineProps } from 'vue'
import mybus from '@/myplugins/mybus'
const props = defineProps({
dataList: { type: Array, default: null },
})
let dataForm = ref([])
dataForm.value = props.dataList
const router = useRouter()
const arr =
router.currentRoute.value.query.name instanceof Array
? router.currentRoute.value.query.name
: [router.currentRoute.value.query.name]
const dataResourceId = router.currentRoute.value.query.resourceId
const depList = ref({
Name: [],
depID: [],
})
//
const removeFunction = (data) => {
props.dataList.map((item, index) => {
if (item.name == data.name) {
arr.splice(arr.indexOf(data.name), 1)
dataResourceId.splice(dataResourceId.indexOf(data.id), 1)
depList.value.depID = dataResourceId
depList.value.Name = arr
dataForm.value.splice(index, 1)
mybus.emit('reomveOldData', depList.value)
console.log('depList.value', depList.value)
}
})
}
</script>
<style scoped lang="less">
.ability-to-apply-for {
.title {
font-size: 0.16rem;
color: #212121;
border-bottom: 0.01rem #dddee1 solid;
padding-bottom: 0.1rem;
margin-bottom: 0.2rem;
}
.ability-to-apply-for-content {
margin-bottom: 0.3rem;
border-bottom: 0.01rem #dddee1 solid;
padding-bottom: 0.3rem;
padding-right: 0.5rem;
position: relative;
.dep-name {
color: #0558e1;
font-size: 0.18rem;
display: flex;
align-items: center;
line-height: 0.18rem;
margin-bottom: 0.2rem;
span {
display: inline-block;
width: 0.05rem;
height: 0.05rem;
background: #0558e1;
border-radius: 0.05rem;
margin-right: 0.05rem;
}
}
.name {
margin-bottom: 0.2rem;
span:first-child {
display: inline-block;
margin-right: 0.08rem;
font-size: 0.2rem;
color: #000000;
}
span:last-child {
display: inline-block;
padding: 0 0.05rem;
background: #00b8e6;
color: #fff;
}
}
.description {
color: rgba(0, 0, 0, 0.45);
}
.remove {
width: 0.32rem;
height: 0.32rem;
position: absolute;
right: 0;
top: 50%;
margin-top: -0.16rem;
background: url('~@/assets/home/remove.png') no-repeat;
background-size: cover;
cursor: pointer;
}
.remove:hover {
background: url('~@/assets/home/remove-hover.png') no-repeat;
background-size: cover;
}
}
}
</style>

View File

@ -544,7 +544,6 @@
</div>
</div>
</div>
-->
<div v-if="resourceList.data?.length <= 0" style="margin-top: 2rem">
<a-empty v-if="!(Cardsname == '数据资源')" />
</div>

View File

@ -6,9 +6,11 @@
<aside-menu></aside-menu>
</aside> -->
<article>
<div class="from-card" v-if="applySuccess">
<AbilityToApplyFor :dataList="dataList"></AbilityToApplyFor>
</div>
<div class="form-container">
<div v-if="applySuccess">
<div class="title">基础信息</div>
<a-form
ref="formRef"
:model="formName"
@ -20,7 +22,7 @@
>
<div class="base-info">
<a-form-item
label="申请人"
label="申请人信息"
name="user"
:rules="[{ required: true, message: '请输入申请人' }]"
>
@ -33,7 +35,7 @@
<a-form-item
style="margin: 0 22px"
label="申请人电话"
label="电话"
name="phone"
:rules="[
{
@ -50,31 +52,16 @@
</a-form-item>
<a-form-item
label="申请单位"
label="单位"
name="unit"
:rules="[{ required: true, message: '请输入申请单位' }]"
:rules="[{ required: true, message: '请输入单位' }]"
>
<a-input
placeholder="请输入申请单位"
placeholder="请输入单位"
v-model:value="formName.unit"
/>
</a-form-item>
</div>
<!-- <a-form-item
label="所在地区"
name="area"
:rules="[{ required: true, message: '请输入所在地区' }]"
>
<a-input
style="width: 230px"
placeholder="请输入所在地区"
v-model:value="formName.area"
/>
</a-form-item> -->
<div class="title">更多申请信息</div>
<a-form-item
style="margin-bottom: 10px"
label="申请应用"
@ -146,7 +133,7 @@
<a-upload
v-model:file-list="fileList"
name="file"
:action="`${window.SITE_CONFIG.apiURL}/upload`"
:action="`${baseURL}/upload`"
:headers="headers"
@change="handleChange"
:before-upload="beforeUpload"
@ -232,8 +219,9 @@
</template>
<script>
import AbilityToApplyFor from './AbilityToApplyFor.vue'
import HomeHeader from '@/views/home/components/header'
import { reactive, ref } from 'vue'
import { reactive, ref, watch, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import qs from 'qs'
@ -248,6 +236,7 @@
getUser,
getUserInfo,
relaunch,
selectOne,
} from '@/api/home'
import mybus from '@/myplugins/mybus'
import { sgcDel, getApplyForm } from '@/api/personalCenter'
@ -259,12 +248,15 @@
props: {},
components: {
HomeHeader,
AbilityToApplyFor,
// AsideMenu,
// UploadOutlined,
},
setup() {
const router = useRouter()
const disabled = ref(false)
const baseURL = window.SITE_CONFIG.apiURL
let record = ref('1')
const formName = reactive({
user: '',
userId: '',
@ -277,6 +269,7 @@
formNameSystem: '',
enclosure: '', //
})
const dataList = ref([])
getUser().then((res) => {
formName.user = res.data.data.realName
formName.userId = res.data.data.id
@ -291,13 +284,19 @@
'router传参==================>',
router.currentRoute.value.query.name
)
const arr =
let arr =
router.currentRoute.value.query.name instanceof Array
? router.currentRoute.value.query.name
: [router.currentRoute.value.query.name]
console.log(router.currentRoute.value.query.ids)
const ids = router.currentRoute.value.query.ids
const dataResourceId = router.currentRoute.value.query.resourceId
let dataResourceId = router.currentRoute.value.query.resourceId
dataResourceId.map((item) => {
selectOne(item).then((res) => {
dataList.value.push(res.data.data)
console.log('dataResourceId', dataList.value)
})
})
const businessKey = ref(router.currentRoute.value.query.id)
const taskId = ref(router.currentRoute.value.query.taskId)
if (businessKey.value) {
@ -310,25 +309,8 @@
console.log('回填数据================>', res, formName.phone)
})
}
if (arr && arr.length !== 0) {
disabled.value = true
let str = ''
arr.forEach((val, index) => {
str += val
if (index < arr.length - 1) {
str += '、'
}
})
formName.formNameSystem = str
}
arr.forEach((val, index) => {
formName.system.push({
resourceName: val,
resourceId: dataResourceId[index],
})
})
console.log(formName.system)
console.log(formName.system)
const formRef = ref()
const applySuccess = ref(true)
// const rootObj = null
@ -545,6 +527,35 @@
return isPNG || Upload.LIST_IGNORE
}
const fileList = ref([])
//arr
mybus.on('reomveOldData', (item) => {
debugger
arr = []
formName.system = []
record.value = record.value + '1'
arr = item.Name
dataResourceId = item.depID
if (arr && arr.length !== 0) {
disabled.value = true
let str = ''
arr.forEach((val, index) => {
str += val
if (index < arr.length - 1) {
str += '、'
}
})
formName.formNameSystem = str
}
arr.forEach((val, index) => {
formName.system.push({
resourceName: val,
resourceId: dataResourceId[index],
})
})
})
onBeforeUnmount(() => {
mybus.off('reomveOldData')
})
return {
formRef,
formName,
@ -561,8 +572,9 @@
handleChange,
applySuccess,
disabled,
// baseURL,
baseURL,
beforeUpload,
dataList,
}
},
}
@ -570,7 +582,7 @@
<style scoped lang="less">
#apply-container {
background-color: #f5f8fc;
// background-color: #f5f8fc;
height: 100%;
width: 100%;
margin: 130px auto 0;

View File

@ -209,7 +209,7 @@
import { getUser, sgcInsert } from '@/api/home'
import { scInsert, scDel } from '@/api/personalCenter'
import mybus from '@/myplugins/mybus'
import { getHls } from '@/api/file.js'
import { getHls } from '@/api/home.js'
export default {
name: '',
@ -477,8 +477,7 @@
const openVideo = (item) => {
videoUrl.value = ''
const param = {
cameraId: item.link,
protocol: 'hls',
key: item.link,
}
getHls(param).then((res) => {
console.log('获取视频地址===============>', res)

View File

@ -112,7 +112,7 @@
case '业务组件':
showView.value = 'business-details'
break
case 'GIS图层':
case '图层服务':
showView.value = 'layer-service'
break
default:
@ -146,7 +146,7 @@
case '业务组件':
showView.value = 'business-details'
break
case 'GIS图层':
case '图层服务':
showView.value = 'layer-service'
break
default:

View File

@ -2,7 +2,7 @@
<home-header></home-header>
<div class="survey-left" @click="hidePop()">
<div ref="cityMap" class="city-map-content-echarts"></div>
<div class="box xha" v-show="xhaFlag">
<div class="box xha" v-show="xhaFlag" v-if="xhaList">
<div class="top">
<span>西海岸</span>
<span>
@ -11,12 +11,12 @@
</span>
</div>
<div class="bottom">
<div class="item">
<span>基础设施</span>
<div class="item" v-for="item in xhaList" :key="item.key">
<span>{{ item.name }}</span>
<i></i>
<span>35282</span>
<span>{{ item.num }}</span>
</div>
<div class="item">
<!-- <div class="item">
<span>数据资源</span>
<i></i>
<span>11</span>
@ -30,11 +30,11 @@
<span>组件服务</span>
<i></i>
<span>8</span>
</div>
</div> -->
</div>
<div class="zx"></div>
</div>
<div class="box lsq" v-show="lsqFlag">
<div class="box lsq" v-show="lsqFlag" v-if="lsList">
<div class="top">
<span>崂山区</span>
<span>
@ -43,7 +43,12 @@
</span>
</div>
<div class="bottom">
<div class="item">
<div class="item" v-for="item in lsList" :key="item.key">
<span>{{ item.name }}</span>
<i></i>
<span>{{ item.num }}</span>
</div>
<!-- <div class="item">
<span>基础设施</span>
<i></i>
<span>20135</span>
@ -57,7 +62,7 @@
<span>应用资源</span>
<i></i>
<span>28</span>
</div>
</div> -->
</div>
<div class="zx"></div>
</div>
@ -73,6 +78,15 @@
const echarts = require('echarts')
const xhaFlag = ref(false)
const lsqFlag = ref(false)
const lsList = ref([])
const xhaList = ref([])
// eslint-disable-next-line no-undef
const mapTestNum1 = mapTestNum
if (mapTestNum1) {
lsList.value = mapTestNum1.lsNum
xhaList.value = mapTestNum1.xhaNum
}
console.log('===============>', mapTestNum1)
const areaMenuList = ref([
//
// {

View File

@ -34,24 +34,28 @@
</div>
<div class="item">
<div class="jc">基础设施</div>
<div class="name">1-J1-党建展示区走廊-北向</div>
<div class="name">2-J2-党建数据中心机房</div>
<div class="name">3-J3-党建展示区走廊-南向</div>
<div class="name">4-J4-党建大厅电动门</div>
<div class="name name-last">5-J5-指挥席位东北向</div>
<div
class="name"
v-for="(item, index) in jcList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne(item.id)"
>
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('基础设施')">查看更多</div>
</div>
<div class="item">
<div class="sj">数据资源</div>
<div class="name">1-扬尘数据接口</div>
<div class="name">2-根据证件号码查询全员核酸检测信息(人社专用)</div>
<div class="name">
3-根据身份证号姓名开始日期结束日期获取医保住院结算信息市人社局专用
<div
class="name"
v-for="(item, index) in sjList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne(item.id)"
>
{{ index + 1 }}-{{ item.name }}
</div>
<div class="name">
4-根据身份证号姓名年度查询医保参保缴费信息市委组织部专用
</div>
<div class="name name-last">5-"金种子"人才培养经费查询API</div>
<div class="btn" @click="jumpPage('数据资源')">查看更多</div>
</div>
<div class="item">
@ -72,13 +76,15 @@
</div>
</template>
<script setup>
import { pageWithAttrs } from '@/api/home.js'
import { pageWithAttrs, getDataResource } from '@/api/home.js'
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
@ -93,15 +99,54 @@
orderField: 'total', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const getAppResources = (type, obj) => {
paramsGetResources.type = type
if (type === '数据资源' && !whoShow1.value.itShowBaoTou) {
getDataResource({
serviceName: paramsGetResources.name, //
orderField: whoShow1.value.itShowQingDao ? 'fbrq' : 'createTime', //
orderType: paramsGetResources.orderType.toLowerCase(), //descasc
pageNum: paramsGetResources.pageNum, //
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 //
})
obj.value = res.data.data.data || []
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
obj.value = res.data.data.list || []
}
})
} else {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('知识库查询列表============>', res.data.data.records)
// console.log('============>', res.data.data.records)
obj.value = res.data.data.records
})
}
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
function jumpPage(type) {

View File

@ -47,9 +47,9 @@
import { ref, onMounted } from 'vue'
const yyNum = ref('')
const zjNum = ref('')
const jcNum = ref('23万')
const sjNum = ref('10372')
const zsNum = ref('14')
const jcNum = ref('')
const sjNum = ref('')
const zsNum = ref('')
selectTotal().then((res) => {
console.log('selectTotal===============>', res.data.data)
res.data.data.total.forEach((val) => {