Compare commits

..

32 Commits

Author SHA1 Message Date
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 77d94c2d09 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-29 09:45:58 +08:00
wuhongjian 0f7fd813f2 CIM+算法改为CIM+组件 2022-08-29 09:45:48 +08:00
guoyue 27423a3c14 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-27 16:08:11 +08:00
guoyue 0400fdbbb1 基础设施记住已选择 2022-08-27 15:03:32 +08:00
wuhongjian 13226c8976 版本号更新 2022-08-27 14:26:03 +08:00
wuhongjian 66db5faf1b 详情页模糊化处理 2022-08-27 14:25:03 +08:00
wuhongjian 8a0ac98824 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-26 19:24:20 +08:00
wuhongjian 0e224958ce 配置修改 2022-08-26 19:24:17 +08:00
gaoyuanwei bfc88508d8 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-26 18:55:56 +08:00
gaoyuanwei 244123dd74 赋能案例--数据资源 2022-08-26 18:55:19 +08:00
guoyue 4a0f2eff68 基础设施:去掉tooltip,更改点击弹框不选择数据丢失bug 2022-08-26 17:51:23 +08:00
wuhongjian ca51b29fbc Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-26 11:54:09 +08:00
wuhongjian 84850788d8 解决进入工作台报错的问题 2022-08-26 11:54:07 +08:00
gaoyuanwei cd067cfcc1 赋能场景-典型赋能场景;图片 2022-08-26 10:49:29 +08:00
wuhongjian 64ef4c95a1 bug修复 2022-08-26 09:27:34 +08:00
gaoyuanwei d7d2c56ec7 赋能场景 2022-08-25 20:47:41 +08:00
a0049873 748b3b72ea 隐藏按钮 2022-08-25 20:24:17 +08:00
a0049873 faa639200e 赋能场景 2022-08-25 20:22:33 +08:00
a0049873 9b448c0fcc 赋能场景修改 2022-08-25 19:56:48 +08:00
wuhongjian 7212fd3e7c Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-25 19:06:55 +08:00
wuhongjian 916ea5ecd2 bug修复 2022-08-25 19:06:53 +08:00
gaoyuanwei caef0e672a bug 2022-08-25 17:56:33 +08:00
gaoyuanwei e0ea4a6a2d bug修改 2022-08-25 17:45:34 +08:00
wuhongjian 9b77589c6e 配置文件更新 2022-08-25 15:20:06 +08:00
wuhongjian b923e7ac2d 配置文件更新 2022-08-25 15:07:19 +08:00
gaoyuanwei bae47ea208 使用方式--归属部门与服务商 2022-08-24 18:30:12 +08:00
gaoyuanwei 89d782fa9b 只留已申请标签 2022-08-24 17:42:31 +08:00
wuhongjian 0a55ac7b68 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-24 13:53:48 +08:00
wuhongjian 894db08c4e 市局基础设施只要图片预览 2022-08-24 13:53:45 +08:00
gaoyuanwei f28d12ac88 使用方式-- --申请后查看 2022-08-24 12:54:40 +08:00
48 changed files with 2896 additions and 1573 deletions

View File

@ -0,0 +1,48 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 14:37:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:57:52
* @Description: 告诉大家这是什么
*/
var _global = {}
var CONFIGITEM = {
// version: 'qingdao', // 青岛
// version: 'xihaian', // 西海岸
version: 'test', // 测试
// version: 'frp', // 内网穿透
// version: 'dev', // 开发
vNum: 'v0.8.7.2',
configData: {
// 青岛市大数据局
qingdao: {
previewUrl: 'http://15.72.183.90:7008/',
apiURL: 'http://15.72.183.90:8000/renren-admin',
websocketURL: 'ws://15.72.183.90:8000/renren-admin/websocket'
},
// 西海岸大数据局
xihaian: {
previewUrl: 'http://10.134.135.9:9796/',
apiURL: 'http://10.134.135.9:8888/renren-admin',
websocketURL: 'ws://10.134.135.9:8888/renren-admin/websocket'
},
// 测试
test: {
previewUrl: 'http://192.168.124.243:9796/',
apiURL: 'http://192.168.124.243:8888/renren-admin',
websocketURL: 'ws://192.168.124.243:8888/renren-admin/websocket'
},
// 内网穿透
frp: {
previewUrl: 'http://124.222.94.39:9796/',
apiURL: 'http://124.222.94.39:8888/renren-admin',
websocketURL: 'ws://124.222.94.39:8888/renren-admin/websocket'
},
dev: {
previewUrl: 'http://localhost:8080/',
apiURL: 'http://192.168.124.236:8888/renren-admin',
websocketURL: 'ws://192.168.124.236:8888/renren-admin/websocket'
}
}
}
_global.config = CONFIGITEM.configData[CONFIGITEM.version]

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 10:11:40
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 10:18:38
* @LastEditTime: 2022-08-29 09:54:59
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -11,10 +11,11 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico">
<script type="text/javascript" src="./config/basicConfig.js"></script>
<!-- 站点配置 -->
<script>
window.SITE_CONFIG = {};
window.SITE_CONFIG['version'] = 'v2.9.0';
window.SITE_CONFIG['version'] = CONFIGITEM.vNum;
window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>';
window.SITE_CONFIG['apiURL'] = ''; // api请求地址
window.SITE_CONFIG['storeState'] = {}; // vuex本地储存初始化状态用于不刷新页面的情况下也能重置初始化项目中所有状态
@ -27,61 +28,19 @@
'isTab': true, // 是否通过tab展示内容?
'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配)
};
window.SITE_CONFIG['frontUrl'] = 'http://localhost:8080/#/vueTemplateDemo';
// window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.243: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['menuList'] = []; // 左侧菜单列表(后台返回,未做处理)
window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理)
window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表
window.SITE_CONFIG['dynamicMenuRoutes'] = []; // 动态(菜单)路由列表
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 动态(菜单)路由是否已经添加的状态标示(用于判断是否需要重新拉取数据并进行动态添加操作)
</script>
<!-- 开发环境 -->
<% 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://124.222.94.39:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://10.16.5.35:8888/renren-admin';
window.SITE_CONFIG['apiURL'] = 'http://192.168.124.236:8888/renren-admin';
window.SITE_CONFIG['previewUrl'] = 'http://localhost:8080/';
// window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>
<% } %>
<!-- 集成测试环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %>
<script>
window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/renren-admin';
window.SITE_CONFIG['frontUrl'] = _global.config.previewUrl + '#/vueTemplateDemo';
window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl;
window.SITE_CONFIG['apiURL'] = _global.config.apiURL;
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
window.SITE_CONFIG['socketURL'] =_global.config.socketURL;
</script>
<% } %>
<!-- 验收测试环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:uat') { %>
<script>
window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/renren-admin';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>
<% } %>
<!-- 生产环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod') { %>
<script>
// window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.243:9796/';
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
window.SITE_CONFIG['apiURL'] = 'http://192.168.124.243: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';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>
<% } %>
</head>
<body>
<div id="app"></div>

View File

@ -486,7 +486,7 @@ $--cascader-tag-background: #f0f2f5;
/* Group
-------------------------- */
$--group-option-flex: 0 0 (1/5) * 100% !default;
$--group-option-flex: 0 0 20% !default;
$--group-option-offset-bottom: 12px !default;
$--group-option-fill-hover: rgba($--color-black, 0.06) !default;
$--group-title-color: $--color-black !default;

View File

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

View File

@ -94,24 +94,38 @@
</template>
<script>
import debounce from "lodash/debounce";
import qs from "qs";
import SceneUseStep from './components/scene-use-step.vue';
import SceneOneInput from './components/scene-one-input.vue';
import CombineAbility from '../components/combine-ability.vue';
import CommonQuestion from '../components/common-question.vue';
import debounce from 'lodash/debounce'
import qs from 'qs'
import SceneUseStep from './components/scene-use-step.vue'
import SceneOneInput from './components/scene-one-input.vue'
import CombineAbility from '../components/combine-ability.vue'
import CommonQuestion from '../components/common-question.vue'
import InfrastructureModal from './components/infrastructure-modal.vue'
import Cookies from 'js-cookie'
import upload from '@/views/modules/components/upload'
let btnArray = ['基本信息', '场景痛点', '解决方案', '组合能力', '更多能力', '使用步骤']
const btnArray = ['基本信息', '场景痛点', '解决方案', '组合能力', '更多能力', '使用步骤']
// \
export const getJson = (type) => {
return {
methods: 'get',
url: '/census/center/selectResourceListByType',
postData: {
type
if (type === '组件服务') {
return {
methods: 'get',
url: '/census/center/selectResourceListByType',
postData: {
type
}
}
} else {
return {
methods: 'post',
url: '/resource/getDataResource',
postData: {
serviceName: '', //
orderField: 'fbrq', //
orderType: 'desc',
pageNum: 1, //
pageSize: 15 //
}
}
}
}
@ -120,14 +134,14 @@ export const getDescJson = (text) => {
descObj: {
text: `${text}描述`,
key: 'description'
},
}
}
}
//
export const getListParams = {
'数据资源': getJson('数据资源'),
'组件服务': getJson('组件服务'),
'基础设施': ''
数据资源: getJson('数据资源'),
组件服务: getJson('组件服务'),
基础设施: ''
}
//
export const modalTypeText = {
@ -136,13 +150,13 @@ export const modalTypeText = {
}
export const getFuseResourceList = (abilityListObj) => {
let arr = []
const arr = []
let length = 0
for (const key in abilityListObj) {
if (Object.hasOwnProperty.call(abilityListObj, key)) {
const itemArray = abilityListObj[key];
const itemArray = abilityListObj[key]
itemArray.map((v, i) => {
let index = (i + 1) + length
const index = (i + 1) + length
arr.push({
resourceId: v,
type: key,
@ -162,9 +176,9 @@ export default {
SceneOneInput,
upload,
CommonQuestion,
InfrastructureModal,
InfrastructureModal
},
data() {
data () {
return {
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
moreKeyTextObj: {
@ -172,80 +186,80 @@ export default {
text: '能力名称',
key: 'name'
},
...getDescJson('能力'),
...getDescJson('能力')
},
painKeyTextObj: getDescJson('痛点'),
solutionKeyTextObj: getDescJson('方案'),
dataForm: {
"name": "",
"applicationArea": "",
"description": "",
"fuseAttrList": [
name: '',
applicationArea: '',
description: '',
fuseAttrList: [
{
"attrType": "使用步骤",
"attrValue": [{ question: "", answer: "" }],
attrType: '使用步骤',
attrValue: [{ question: '', answer: '' }]
},
{
"attrType": "更多能力",
"attrValue": [{ name: "", description: "" }],
attrType: '更多能力',
attrValue: [{ name: '', description: '' }]
},
{
"attrType": "场景痛点",
"attrValue": [{ description: "" }],
attrType: '场景痛点',
attrValue: [{ description: '' }]
},
{
"attrType": "解决方案",
"attrValue": [{ description: "" }],
attrType: '解决方案',
attrValue: [{ description: '' }]
},
{
"attrType": "服务图片",
"attrValue": "",
},
attrType: '服务图片',
attrValue: ''
}
],
"fuseResourceList": [],
fuseResourceList: []
},
rules: {
name: [
{
required: true,
message: "请输入名称",
trigger: "change",
},
message: '请输入名称',
trigger: 'change'
}
],
description: [
{
required: true,
message: "请输入描述",
trigger: "change",
},
],
message: '请输入描述',
trigger: 'change'
}
]
},
checkList: JSON.parse(JSON.stringify(btnArray)),
btnList: JSON.parse(JSON.stringify(btnArray)),
addOrUpdateVisibleCopy: this.addOrUpdateVisible,
displayInfo: {
'name': '名称',
'description': '描述',
name: '名称',
description: '描述'
},
modalTypeText: modalTypeText,
refsParseArray: {
'sceneUseUpDom': '使用步骤',
'moreAbilityDom': '更多能力',
'scenePainDom': '场景痛点',
'solutionDom': '解决方案',
'zjfwDom': '组件服务',
'sjzyDom': '数据资源',
'jcssDom': '基础设施',
sceneUseUpDom: '使用步骤',
moreAbilityDom: '更多能力',
scenePainDom: '场景痛点',
solutionDom: '解决方案',
zjfwDom: '组件服务',
sjzyDom: '数据资源',
jcssDom: '基础设施'
},
getListParams: getListParams,
abilityListObj: {},
imgData: [],
//
handleExceed() {
handleExceed () {
this.$message({ type: 'error', message: '最多支持一张图片上传' })
},
imageUrl: '',
};
imageUrl: ''
}
},
props: {
modalType: {
@ -259,47 +273,47 @@ export default {
},
watch: {
dataForm: {
handler(newVal) {
handler (newVal) {
this.dataForm = newVal
},
deep: true,
immediate: true,
immediate: true
},
addOrUpdateVisible: {
handler(newVal) {
this.addOrUpdateVisibleCopy = newVal;
handler (newVal) {
this.addOrUpdateVisibleCopy = newVal
if (this.modalType == 'add' && newVal) {
localStorage.setItem('InfrastructureSearchData', JSON.stringify({}))
this.getDetail(this.dataForm)
}
},
immediate: true,
immediate: true
}
},
methods: {
clearForm() {
this.$refs.dataForm && this.$refs.dataForm.resetFields();
clearForm () {
this.$refs.dataForm && this.$refs.dataForm.resetFields()
},
closeModal() {
closeModal () {
this.$emit('closeModal')
},
//
updateDataForm(data) {
updateDataForm (data) {
if (Object.keys(this.getListParams).includes(data.title)) {
this.abilityListObj[data.title] = data.list;
this.abilityListObj[data.title] = data.list
} else {
// 使
this.operateFuseAttrList(data.title, data)
}
},
getFuseResourceList() {
getFuseResourceList () {
return getFuseResourceList(this.abilityListObj)
},
operateFuseAttrList(title, data) {
operateFuseAttrList (title, data) {
if (this.dataForm.fuseAttrList.every(v => v.attrType !== title)) {
this.dataForm.fuseAttrList.push({
'attrType': title,
'attrValue': JSON.stringify(data.list)
attrType: title,
attrValue: JSON.stringify(data.list)
})
} else {
this.dataForm.fuseAttrList.map(v => {
@ -310,71 +324,71 @@ export default {
}
},
//
changeBtn(data) {
this.checkList = data;
changeBtn (data) {
this.checkList = data
},
//
dataFormSubmitHandle: debounce(
function () {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
this.$message.error("请检查表单是否填写完整");
return false;
this.$message.error('请检查表单是否填写完整')
return false
}
let methodsObj = {
'add': 'post',
'update': 'put'
const methodsObj = {
add: 'post',
update: 'put'
}
this.dataForm.fuseResourceList = this.getFuseResourceList()
if (this.imageUrl == '') {
this.$message.error("请上传图片!");
return;
this.$message.error('请上传图片!')
return
}
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || '';
let _obj = Object.assign({}, this.dataForm, {
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
const _obj = Object.assign({}, this.dataForm, {
type: '赋能场景'
})
console.log('this.dataForm------表单提交------>', this.dataForm);
console.log('this.dataForm------表单提交------>', this.dataForm)
this.$http
[methodsObj[this.modalType]]("/fuse", _obj)
[methodsObj[this.modalType]]('/fuse', _obj)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
return this.$message.error(res.msg)
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.$refs.dataForm && this.$refs.dataForm.resetFields();
this.$emit("refreshDataList");
this.$emit("closeModal");
},
});
this.$refs.dataForm && this.$refs.dataForm.resetFields()
this.$emit('refreshDataList')
this.$emit('closeModal')
}
})
})
.catch((err) => {
this.$message.error(err)
});
});
})
})
},
1000,
{ leading: true, trailing: false }
),
//
getDetail(data) {
console.log('data---详情--------->', data);
this.dataForm = data;
getDetail (data) {
console.log('data---详情--------->', data)
this.dataForm = data
this.$nextTick(() => {
for (const key in this.refsParseArray) {
this.$refs[key] && this.$refs[key].getDataInfo && this.$refs[key].getDataInfo(data)
}
let _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {};
this.imageUrl = _imgObj.attrValue;
const _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {}
this.imageUrl = _imgObj.attrValue
// --
Object.keys(this.getListParams).map(k => {
let arr = data.fuseResourceList.filter(v => v.type == k);
let arr2 = [];
const arr = data.fuseResourceList.filter(v => v.type == k)
const arr2 = []
arr.map(v => {
arr2.push(v.resourceId)
})
@ -382,13 +396,13 @@ export default {
})
})
},
handleAvatarSuccess(res, file) {
handleAvatarSuccess (res, file) {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.imageUrl = res.data
},
beforeAvatarUpload(file) {
beforeAvatarUpload (file) {
const isImage =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
@ -398,11 +412,11 @@ export default {
}
return isImage
},
addUploadRemoveFile(file, fileList) {
addUploadRemoveFile (file, fileList) {
this.$refs.addUpload.clearFiles()
this.imageUrl = ''
},
editBeforeAvatarUpload(file) {
editBeforeAvatarUpload (file) {
const isImage =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
@ -413,21 +427,21 @@ export default {
}
return isImage
},
editUploadRemoveFile(file, fileList) {
editUploadRemoveFile (file, fileList) {
this.$refs.editUpload.clearFiles()
this.imageUrl = ''
},
eidtHandleAvatarSuccess(res, file) {
eidtHandleAvatarSuccess (res, file) {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.imageUrl = res.data
},
}
},
beforeDestroy() {
beforeDestroy () {
this.clearForm()
},
};
}
}
</script>
<style lang="scss" scoped>
@ -466,10 +480,8 @@ export default {
<style lang="scss" scoped>
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
@ -493,11 +505,11 @@ export default {
padding: 0;
margin: -8px 0 0 -8px;
>.el-button {
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
>span {
> span {
display: inline-block;
vertical-align: middle;
width: 18px;

View File

@ -2,11 +2,9 @@
<div class="show-box" v-if="displayList.length > 0">
<div class="list-box">
<div v-for="(item, i) in displayList" :key="i">
<el-tooltip popper-class="testTooltip" effect="dark" :content="item[showKey] || '--'" placement="top">
<div class="list-item">
{{ item[showKey] || '--' }}
</div>
</el-tooltip>
<div class="list-item">
{{ item[showKey] || '--' }}
</div>
</div>
</div>
</div>

View File

@ -44,6 +44,11 @@
<el-button type="primary" style="margin-left:10px;margin-top:4px" size="small" @click="clear">
重置
</el-button>
<el-button type="primary" style="margin-left:10px;margin-top:4px" size="small"
@click="clearSelectArray">
清空已选择
</el-button>
</div>
</div>
@ -115,6 +120,7 @@ export default {
showKey: 0,
showModal: false,
selectedArray: [], // id
selectedArrayCopy: [],
displayList: [], // list
btnList: ['视频资源', '云资源', '感知资源'],
showText: {
@ -210,6 +216,8 @@ export default {
this.displayList = JSON.parse(JSON.stringify(arr));
//
this.selectedArray = arr.map(v => v.idtCameraChannel);
this.selectedArrayCopy = JSON.parse(JSON.stringify(arr));
this.dataList = JSON.parse(JSON.stringify(arr));
this.pageData.total = arr.length;
//
@ -303,29 +311,43 @@ export default {
this.searchData.parentId = parentId;
this.getData(parentId)
},
clearSelectArray() {
this.selectedArrayCopy = []
this.selectedArray = []
this.getData()
},
confirmSubmitHandle() {
if (this.selectedArray.length > this.maxNum) {
//
let idtCameraChannelArray = this.selectedArray.map(v => v.idtCameraChannel)
//
let newIdArray = this.selectedArrayCopy.map(v => v.idtCameraChannel)
let idArray = [...new Set(newIdArray.concat(idtCameraChannelArray))]
if (idArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!');
}
this.showModal = false;
this.displayList = []
let idtCameraChannelArray = this.selectedArray.map(v => v.idtCameraChannel)
this.dataList.map(v => {
if (idtCameraChannelArray.includes(v.idtCameraChannel)) {
let listArray = [].concat(this.selectedArrayCopy, this.dataList);
this.displayList = [];
idArray.map(v => {
let obj = listArray.find(k => k.idtCameraChannel === v)
if (obj) {
this.displayList.push({
channelName: v.channelName
channelName: obj.channelName
})
}
})
this.$emit('update', {
title: this.type,
list: this.selectedArray.map(v => v.idtCameraChannel)
list: idArray,
})
this.showModal = false;
},
close() {
this.showModal = false;
this.searchData.cameraName = ''
this.selectedArray = [];
// this.selectedArray = [];
this.$emit('closeModal');
},
clear() {

View File

@ -2,19 +2,41 @@
<div class="ability-box">
<div class="top">
<div class="type">{{ type }}</div>
<el-button type="primary" size="small" @click="showModal = true">添加</el-button>
<el-button type="primary" size="small" @click="clickOpen">添加</el-button>
</div>
<el-dialog :visible.sync="showModal" title="请选择" @close="close" :close-on-click-modal="false"
:close-on-press-escape="false" :key="showKey" append-to-body>
<div class="relate-application-content">
<el-transfer v-model="selectedArray" filterable :filter-method="filterMethod" filter-placeholder="请输入名称"
<div class="relate-application-content" v-if="type==='组件服务'">
<el-transfer v-model="selectedArray" filterable :filter-method="filterMethod" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
}" :data="transferData">
</el-transfer>
</div>
<div v-else-if="type==='数据资源'" class="dataTransfer">
<el-transfer v-model="selectedArray" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
}" :data="transferData">
</el-transfer>
<el-input
v-model="searchValue"
placeholder="请输入名称"
></el-input>
<el-button @click="rest" class="restClick">重置</el-button>
</div>
<el-pagination
v-if="type==='数据资源'"
:current-page="currentPage"
:page-size="15"
layout="total, prev, pager, next"
:total="total"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
<template slot="footer">
<el-button @click="showModal = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
@ -31,328 +53,423 @@
import InfrastructureModal from '../assignedScene/components/infrastructure-modal.vue'
import DisplayList from '../assignedScene/components/display-list.vue'
let sjzyArray = [
{
"zyname": "城阳区图书馆总分馆、社区图书室明细信息",
"sjcczl": 0.02,
"zycode": "307013110716000007",
"ygxjghjls": 0,
"jghxxjlzs": 0,
"neibukeshi": "",
"xgxt": "城阳区图书馆及总分馆、社区图书室明细信息",
"ygxdsjccl": 0,
"zygszl": "et",
"ykfjghjls": 0,
"syqk": 0,
"zyformat": "电子表格",
"guid": "277c51e0-066b-441d-9262-6e53ce6fc99a",
"TGBM": "城阳区文化和旅游局",
"ykfdsjccl": 0
},
{
"zyname": "2021年度西海岸新区科技型中小企业名单信息",
"sjcczl": 0,
"zycode": "307013109000000010",
"ygxjghjls": 0,
"jghxxjlzs": 0,
"neibukeshi": "高新技术科",
"xgxt": "2021年度西海岸新区科技型中小企业名单信息企业名称入库编号。",
"ygxdsjccl": 0,
"zygszl": "access",
"ykfjghjls": 0,
"syqk": 0,
"zyformat": "数据库",
"guid": "6ed1a478-443a-48ee-8af0-4c7ac2681a94",
"TGBM": "青岛西海岸新区工业和信息化局(区科技局、区大数据局)",
"ykfdsjccl": 0
},
{
"zyname": "西海岸新区高新技术企业名单信息",
"sjcczl": 0,
"zycode": "307013109000000012",
"ygxjghjls": 0,
"jghxxjlzs": 0,
"neibukeshi": "高新技术科",
"xgxt": "西海岸新区高新技术企业名单信息",
"ygxdsjccl": 0,
"zygszl": "access",
"ykfjghjls": 0,
"syqk": 0,
"zyformat": "数据库",
"guid": "770a9127-e7fd-4a6b-ba17-c80cf06ab670",
"TGBM": "青岛西海岸新区工业和信息化局(区科技局、区大数据局)",
"ykfdsjccl": 0
},
{
"zyname": "西海岸新区高新技术企业认定补助名单信息",
"sjcczl": 0,
"zycode": "307013109000000011",
"ygxjghjls": 0,
"jghxxjlzs": 0,
"neibukeshi": "高新技术科",
"xgxt": "西海岸新区高新技术企业认定补助名单信息,企业名称、扶持项目。",
"ygxdsjccl": 0,
"zygszl": "access",
"ykfjghjls": 0,
"syqk": 0,
"zyformat": "数据库",
"guid": "ae52c5f8-ef6e-4ae9-a657-79dcb6f65643",
"TGBM": "青岛西海岸新区工业和信息化局(区科技局、区大数据局)",
"ykfdsjccl": 0
},
{
"zyname": "青岛西海岸新区第六批区级非物质文化遗产代表性项目名录",
"sjcczl": 0,
"zycode": "307013109026000037",
"ygxjghjls": 0,
"jghxxjlzs": 0,
"neibukeshi": "艺术科",
"xgxt": "青岛西海岸新区第六批区级非物质文化遗产代表性项目名录,如项目类别、序号、项目名称、申报单位",
"ygxdsjccl": 0,
"zygszl": "et",
"ykfjghjls": 0,
"syqk": 0,
"zyformat": "电子表格",
"guid": "6d80a3b1-744e-4292-a904-0168d640b1fc",
"TGBM": "青岛西海岸新区文化和旅游局(区新闻出版广电局、区文物局)",
"ykfdsjccl": 0
}
const sjzyArray = [
{
zyname: '城阳区图书馆总分馆、社区图书室明细信息',
sjcczl: 0.02,
zycode: '307013110716000007',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '',
xgxt: '城阳区图书馆及总分馆、社区图书室明细信息',
ygxdsjccl: 0,
zygszl: 'et',
ykfjghjls: 0,
syqk: 0,
zyformat: '电子表格',
guid: '277c51e0-066b-441d-9262-6e53ce6fc99a',
TGBM: '城阳区文化和旅游局',
ykfdsjccl: 0
},
{
zyname: '2021年度西海岸新区科技型中小企业名单信息',
sjcczl: 0,
zycode: '307013109000000010',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '高新技术科',
xgxt: '2021年度西海岸新区科技型中小企业名单信息企业名称入库编号。',
ygxdsjccl: 0,
zygszl: 'access',
ykfjghjls: 0,
syqk: 0,
zyformat: '数据库',
guid: '6ed1a478-443a-48ee-8af0-4c7ac2681a94',
TGBM: '青岛西海岸新区工业和信息化局(区科技局、区大数据局)',
ykfdsjccl: 0
},
{
zyname: '西海岸新区高新技术企业名单信息',
sjcczl: 0,
zycode: '307013109000000012',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '高新技术科',
xgxt: '西海岸新区高新技术企业名单信息',
ygxdsjccl: 0,
zygszl: 'access',
ykfjghjls: 0,
syqk: 0,
zyformat: '数据库',
guid: '770a9127-e7fd-4a6b-ba17-c80cf06ab670',
TGBM: '青岛西海岸新区工业和信息化局(区科技局、区大数据局)',
ykfdsjccl: 0
},
{
zyname: '西海岸新区高新技术企业认定补助名单信息',
sjcczl: 0,
zycode: '307013109000000011',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '高新技术科',
xgxt: '西海岸新区高新技术企业认定补助名单信息,企业名称、扶持项目。',
ygxdsjccl: 0,
zygszl: 'access',
ykfjghjls: 0,
syqk: 0,
zyformat: '数据库',
guid: 'ae52c5f8-ef6e-4ae9-a657-79dcb6f65643',
TGBM: '青岛西海岸新区工业和信息化局(区科技局、区大数据局)',
ykfdsjccl: 0
},
{
zyname: '青岛西海岸新区第六批区级非物质文化遗产代表性项目名录',
sjcczl: 0,
zycode: '307013109026000037',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '艺术科',
xgxt: '青岛西海岸新区第六批区级非物质文化遗产代表性项目名录,如项目类别、序号、项目名称、申报单位',
ygxdsjccl: 0,
zygszl: 'et',
ykfjghjls: 0,
syqk: 0,
zyformat: '电子表格',
guid: '6d80a3b1-744e-4292-a904-0168d640b1fc',
TGBM: '青岛西海岸新区文化和旅游局(区新闻出版广电局、区文物局)',
ykfdsjccl: 0
}
]
let res = {
"code": 0,
"msg": "success",
"data": {
"PageCount": "2115",
"data": sjzyArray,
"rows": "10573"
}
const res = {
code: 0,
msg: 'success',
data: {
PageCount: '2115',
data: sjzyArray,
rows: '10573'
}
}
let keyObj = {
'数据资源': {
idKey: 'zycode',
nameKey: 'zyname'
},
'组件服务': {
idKey: 'id',
nameKey: 'name'
},
const keyObj = {
"数据资源": {
idKey: 'id',
nameKey: 'name'
},
"组件服务": {
idKey: 'id',
nameKey: 'name'
}
}
export default {
props: {
type: {
type: String,
default: ""
},
nameArray: {
type: Array,
default: () => ["未选择名称", "已选择名称"],
},
//
maxNum: {
type: Number,
default: 10
},
getDataParams: {
type: Object,
default: () => {
return {
methods: "get",
url: "",
postData: {}
};
}
}
props: {
type: {
type: String,
default: ''
},
data() {
nameArray: {
type: Array,
default: () => ['未选择名称', '已选择名称']
},
//
maxNum: {
type: Number,
default: 10
},
getDataParams: {
type: Object,
default: () => {
return {
showKey: 0,
showModal: false,
transferData: [],
selectedArray: [],
allData: [],
displayList: [], // list
};
},
watch: {
showModal(newVal) {
if (newVal) {
this.getData();
}
methods: 'get',
url: '',
postData: {}
}
}
}
},
data () {
return {
showKey: 0,
showModal: false,
transferData: [],
selectedArray: [],
allData: [],
displayList: [], // list
total: 0,
currentPage: 1,
newNum: 1,
searchValue: ''
}
},
watch: {
showModal (newVal) {
if (newVal) {
this.getData()
}
},
methods: {
async getDataInfo(dataForm) {
await this.getData();
let arr = [];
let attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type);
if (attrValue.length > 0) {
attrValue.map(val => {
let _obj = {
type: val.type,
id: val.resourceId,
name: val.resource && val.resource.name
};
arr.push(_obj);
});
}
newNum (newVal) {
if (newVal) {
this.getDataParams.postData.pageNum = newVal
this.getData()
}
},
searchValue (newVal) {
if (newVal) {
this.getDataParams.postData.serviceName = newVal
this.getData()
}
}
},
methods: {
async getDataInfo (dataForm) {
await this.getData()
const arr = []
const attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type)
if (attrValue.length > 0) {
attrValue.map(val => {
const _obj = {
type: val.type,
id: val.resourceId,
name: val.resource && val.resource.name
}
arr.push(_obj)
})
}
//
this.displayList = JSON.parse(JSON.stringify(arr));
//
this.selectedArray = arr.map(v => v.id);
this.$nextTick(() => {
console.log(999, this.displayList);
});
},
//
getData() {
if (this.getDataParams.url === '') {
return;
}
this.$http[this.getDataParams.methods](this.getDataParams.url, {
params: this.getDataParams.postData
}).then(res => {
console.log('res.data----获取列表-------->', res.data);
if (res.data.code !== 0) {
return this.$message.error(res.msg);
}
this.transferData = [];
this.allData = [];
(res.data.data || []).map(v => {
this.transferData.push({
type: this.type,
id: v[keyObj[this.type].idKey],
name: v[keyObj[this.type].nameKey] || "--"
});
});
this.allData = JSON.parse(JSON.stringify(this.transferData));
}).catch(err => {
this.$message.error(err);
})
},
filterMethod(query, item) {
return item.name && item.name.indexOf(query) > -1;
},
confirmSubmitHandle() {
if (this.selectedArray.length > this.maxNum) {
return this.$message.error("最多选择十条数据!");
}
this.showModal = false;
this.displayList = [];
this.allData.map(v => {
if (this.selectedArray.includes(v.id)) {
this.displayList.push(v);
}
});
this.$emit("update", {
title: this.type,
list: this.selectedArray
});
},
getDisplay(displayList) {
this.displayList = []
this.displayList = displayList
},
close() {
this.showModal = false;
this.selectedArray = [];
this.allData = [];
this.transferData = [];
},
//
this.displayList = JSON.parse(JSON.stringify(arr))
//
this.selectedArray = arr.map(v => v.id)
this.$nextTick(() => {
console.log(999, this.displayList)
})
},
components: { InfrastructureModal, DisplayList }
//
getData () {
if (this.getDataParams.url === '') {
return
}
if (this.type === '组件服务') {
this.$http[this.getDataParams.methods](this.getDataParams.url, {
params: this.getDataParams.postData
}).then(res => {
console.log('res.data----获取列表-------->', res.data)
if (res.data.code !== 0) {
return this.$message.error(res.msg)
}
this.transferData = []
this.allData = [];
(res.data.data || []).map(v => {
this.transferData.push({
type: this.type,
id: v[keyObj[this.type].idKey],
name: v[keyObj[this.type].nameKey] || '--'
})
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
console.log(this.allData, 'this.transferData')
}).catch(err => {
this.$message.error(err)
})
} else if (this.type === '数据资源') {
this.getDataParams.postData.pageNum = this.newNum
this.$http[this.getDataParams.methods](this.getDataParams.url,
this.getDataParams.postData
).then(res => {
console.log('res.data----获取列表-------->', res.data)
this.total = Number(res.data.data.rows)
if (res.data.code !== 0) {
return this.$message.error(res.msg)
}
this.transferData = []
this.allData = [];
(res.data.data.data || []).map(v => {
this.transferData.push({
type: this.type,
id: v.guid,
name: v.zyname || '--'
})
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
}).catch(err => {
this.$message.error(err)
})
}
},
filterMethod (query, item) {
console.log('1111111111111111111111111')
return item.name && item.name.indexOf(query) > -1
},
confirmSubmitHandle () {
if (this.selectedArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
this.showModal = false
this.displayList = []
this.allData.map(v => {
if (this.selectedArray.includes(v.id)) {
this.displayList.push(v)
}
})
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
},
getDisplay (displayList) {
this.displayList = []
this.displayList = displayList
},
close () {
this.showModal = false
// this.selectedArray = []
this.allData = []
this.transferData = []
},
pageCurrentChangeHandle (val) {
console.log(this.newNum, val, 'wowowo')
this.newNum = val
},
clickOpen () {
this.searchValue = ''
this.getDataParams.postData.serviceName = ''
this.currentPage = 1
this.showModal = true
this.getData()
},
rest () {
this.currentPage = 1
this.searchValue = ''
this.getDataParams.postData.serviceName = ''
this.getData()
}
},
components: { InfrastructureModal, DisplayList },
mounted () {
console.log(this.type, 'this.type')
}
}
</script>
<style lang="scss" scoped>
.ability-box {
margin-bottom: 10px;
margin-bottom: 10px;
.show-box {
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.show-box {
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.top {
display: flex;
align-items: center;
justify-content: flex-start;
}
.top {
display: flex;
align-items: center;
justify-content: flex-start;
}
.type {
padding-right: 12px;
font-size: 14px;
color: #606266;
width: 100px;
box-sizing: border-box;
text-align: right;
line-height: 40px;
height: 40px;
}
.type {
padding-right: 12px;
font-size: 14px;
color: #606266;
width: 100px;
box-sizing: border-box;
text-align: right;
line-height: 40px;
height: 40px;
}
.list-box {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: 100px;
}
.list-box {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: 100px;
}
.list-item {
font-size: 14px;
color: #606266;
width: 380px;
text-align: left;
margin-right: 10px;
line-height: 40px;
height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.list-item {
font-size: 14px;
color: #606266;
width: 380px;
text-align: left;
margin-right: 10px;
line-height: 40px;
height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
</style>
<style lang="scss" scoped>
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
cursor: pointer;
}
::v-deep .el-dialog__body {
height: 580px;
overflow: auto;
height: 580px;
overflow: auto;
}
::v-deep .el-checkbox-button__inner {
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
}
.relate-application-content {
height: 100%;
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__list.is-filterable {
height: calc(100% - 102px);
}
}
.dataTransfer {
position: relative;
height: 100%;
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer-panel__list.is-filterable {
height: calc(100% - 102px);
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__list {
height: calc(100% - 102px);
margin-top: 4rem;
}
::v-deep .el-input {
position: absolute;
font-size: 14px;
display: inline-block;
width: 30%;
top: 52px;
left: 12px;
}
.restClick {
position: absolute;
top: 52px;
left: 284px;
}
}
</style>

View File

@ -1,7 +1,7 @@
// /resource/getByDept
import http from '@/utils/request'
function Request({
function Request ({
methods, url, data, success, fali
}) {
const _key = methods == 'get' ? 'params' : 'data'
@ -15,7 +15,7 @@ function Request({
})
})
}
function RequestPost({
function RequestPost ({
methods, url, data, success, fali
}) {
return new Promise((resolve, reject) => {
@ -114,7 +114,7 @@ export const getResourceByDept = (data, success, fail) => {
Request({
methods: 'get',
// url: '/resource/getByDept',
url: '/workdynamics/getDeptWork',
url: '/workdynamics/page',
data
}).then(res => {
success && success(res)

View File

@ -86,7 +86,8 @@ export default {
getResourceByDept () {
const data = {
limit: 5,
page: 1
page: 1,
name: ''
}
this.loadingDynamic = true
Apis.getResourceByDept(

View File

@ -1,3 +1,10 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-07-05 12:53:03
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-26 10:24:16
* @Description: 告诉大家这是什么
-->
<template>
<div class="center-view">
<!-- 频率 -->
@ -14,7 +21,7 @@ import RiskView from './risk-view.vue'
import TrendView from './trend-view.vue'
export default {
components: { frequencyTop5View, TrendView, RiskView },
components: { frequencyTop5View, TrendView, RiskView }
}
</script>

View File

@ -8,185 +8,185 @@
</template>
<script>
import * as echarts from 'echarts';
import * as echarts from 'echarts'
export default {
data() {
return {
dataListCopy: [],
myChart: null,
}
},
props: {
id: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
dataList: {
type: Array,
default: () => []
},
colorArray: {
type: Array,
default: () => [
'#fe845e', '#ff3e55', '#d5c438', '#ff9999', '#9c78ed', '#48c760', '#48c6c7', '#0058e1',
]
},
},
watch: {
dataList: {
handler(newVal, oldVal) {
if (newVal) {
this.dataListCopy = newVal;
this.initChart()
}
},
deep: true,
immediate: true
},
},
mounted() {
},
methods: {
initChart() {
var chartDom = document.getElementById(this.id);
if (this.myChart) {
this.myChart.dispose()
}
this.myChart = chartDom && echarts.init(chartDom);
let lengendArr = this.dataListCopy.filter(v => v.name);
let total = 0;
this.dataListCopy.map(v => {
if (v.value || v.value === 0) {
total = total + Number(v.value || 0)
}
})
let option = {
"animation": true,
title: [
{
text: '{val|' + total + '} {unit|' + '个' + '}',
top: 'top',
left: 'center',
textStyle: {
rich: {
val: {
fontSize: 20,
fontWeight: 'bold',
color: '#212121',
padding: [80, 0]
},
unit: {
fontSize: 16,
fontWeight: 'normal',
color: '#212121',
padding: [80, 0],
}
},
},
},
],
tooltip: {
triagger: 'item',
formatter: (params) => {
let str = ''
if (params.name == '线') {
str = ''
} else {
str = `<span style="display:inline-block;margin-right:5px;
border-radius:10px;width:10px;height:10px;background-color:${params.color};"></span>${params.name}: ${params.value}`
}
return str;
}
},
"legend": {
type: 'scroll',
"width": "90%",
"left": "center",
"textStyle": {
"color": "#212121",
"fontSize": 12
},
"icon": "circle",
"right": "0",
"bottom": "30",
// "padding": [10, 60],
"itemGap": 10,
"data": lengendArr
},
"series": [{
"type": "pie",
"center": ["50%", "40%"],
"radius": ["50%", "63%"],
"color": this.colorArray,
"startAngle": 135,
label: {
show: false
},
"emphasis": {
"label": {
"show": false,
"formatter": "{b|{b}:} {per|{d}%} ",
"backgroundColor": "rgba(255, 147, 38, 0)",
"borderColor": "transparent",
"borderRadius": 4,
"rich": {
"a": {
"color": "#999",
"lineHeight": 22,
"align": "center"
},
"hr": {
"borderColor": "#aaa",
"width": "100%",
"borderWidth": 1,
"height": 0
},
"b": {
"color": "#fff",
"fontSize": 18,
"lineHeight": 33
},
"c": {
"fontSize": 14,
"color": "#eee"
},
"per": {
"color": "#FDF44E",
"fontSize": 25,
"padding": [5, 6],
"borderRadius": 2
}
}
}
},
data: this.dataListCopy,
},
{
"type": "pie",
"center": ["50%", "40%"],
"radius": ["38%", "39%"],
"label": {
"show": false
},
hoverAnimation: false,
showTooltip: false,
color: ['#d8dde8'],
"data": [{
"value": 0,
"name": "线",
}]
}
]
}
this.myChart && option && this.myChart.setOption(option, true);
}
data () {
return {
dataListCopy: [],
myChart: null
}
},
props: {
id: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
dataList: {
type: Array,
default: () => []
},
colorArray: {
type: Array,
default: () => [
'#fe845e', '#ff3e55', '#d5c438', '#ff9999', '#9c78ed', '#48c760', '#48c6c7', '#0058e1'
]
}
},
watch: {
dataList: {
handler (newVal, oldVal) {
if (newVal) {
this.dataListCopy = newVal
this.initChart()
}
},
deep: true,
immediate: true
}
},
mounted () {
},
methods: {
initChart () {
var chartDom = document.getElementById(this.id)
if (this.myChart) {
this.myChart.dispose()
}
this.myChart = chartDom && echarts.init(chartDom)
const lengendArr = this.dataListCopy.filter(v => v.name)
let total = 0
this.dataListCopy.map(v => {
if (v.value || v.value === 0) {
total = total + Number(v.value || 0)
}
})
const option = {
animation: true,
title: [
{
text: '{val|' + total + '} {unit|' + '个' + '}',
top: 'top',
left: 'center',
textStyle: {
rich: {
val: {
fontSize: 20,
fontWeight: 'bold',
color: '#212121',
padding: [80, 0]
},
unit: {
fontSize: 16,
fontWeight: 'normal',
color: '#212121',
padding: [80, 0]
}
}
}
}
],
tooltip: {
triagger: 'item',
formatter: (params) => {
let str = ''
if (params.name == '线') {
str = ''
} else {
str = `<span style="display:inline-block;margin-right:5px;
border-radius:10px;width:10px;height:10px;background-color:${params.color};"></span>${params.name}: ${params.value}`
}
return str
}
},
legend: {
type: 'scroll',
width: '90%',
left: 'center',
textStyle: {
color: '#212121',
fontSize: 12
},
icon: 'circle',
right: '0',
bottom: '30',
// "padding": [10, 60],
itemGap: 10,
data: lengendArr
},
series: [{
type: 'pie',
center: ['50%', '40%'],
radius: ['50%', '63%'],
color: this.colorArray,
startAngle: 135,
label: {
show: false
},
emphasis: {
label: {
show: false,
formatter: '{b|{b}:} {per|{d}%} ',
backgroundColor: 'rgba(255, 147, 38, 0)',
borderColor: 'transparent',
borderRadius: 4,
rich: {
a: {
color: '#999',
lineHeight: 22,
align: 'center'
},
hr: {
borderColor: '#aaa',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#fff',
fontSize: 18,
lineHeight: 33
},
c: {
fontSize: 14,
color: '#eee'
},
per: {
color: '#FDF44E',
fontSize: 25,
padding: [5, 6],
borderRadius: 2
}
}
}
},
data: this.dataListCopy
},
{
type: 'pie',
center: ['50%', '40%'],
radius: ['38%', '39%'],
label: {
show: false
},
hoverAnimation: false,
showTooltip: false,
color: ['#d8dde8'],
data: [{
value: 0,
name: '线'
}]
}
]
}
this.myChart && option && this.myChart.setOption(option, true)
}
}
}
</script>
<style lang="scss" scoped>

View File

@ -100,7 +100,19 @@ import processModule from '@/mixins/process-module'
export default {
mixins: [mixinViewModule, processModule],
data () {
return {}
return {
mixinViewModuleOptions: {
createdIsNeed: false, //
activatedIsNeed: false, //
getDataListURL: '', // API
getDataListIsPage: false, //
deleteURL: '', // API
deleteIsBatch: false, //
deleteIsBatchKey: 'id', // keypiduid...
exportURL: '', // API
requestCallback: null //
}
}
},
props: {
dataInfo: {

View File

@ -61,7 +61,7 @@ export default {
)
.then((res) => {
console.log(res.data.data)
if (res.data.data) {
if (res.data.data && res.data.data.length > 0) {
this.topData = res.data.data
this.oneData = this.topData[0].count
} else {

View File

@ -91,19 +91,27 @@ export default {
// if (res.data.code !== 0) {
// return
// }
this.data = res.data.data[0].values
this.data.map((item) => {
const time = moment(item[0] * 1000).format('YYYY-MM-DD')
this.ydata.map((itemSon, indexSon) => {
if (itemSon === time) {
this.xaxis[indexSon] = parseInt(item[1])
}
if (res.data.data && res.data.data.length > 0) {
this.data = res.data.data[0].values
this.data.map((item) => {
const time = moment(item[0] * 1000).format('YYYY-MM-DD')
this.ydata.map((itemSon, indexSon) => {
if (itemSon === time) {
this.xaxis[indexSon] = parseInt(item[1])
}
})
})
})
this.trendChartData = {
xaxis: this.ydata,
ydata: this.xaxis
this.trendChartData = {
xaxis: this.ydata,
ydata: this.xaxis
}
} else {
this.trendChartData = {
xaxis: [],
ydata: []
}
}
this.$nextTick(() => {
trendLineChart('trendId', this.trendChartData)
})

View File

@ -37,181 +37,178 @@ import deptTodoView from '../workBench/components/dept-todo-view.vue'
import * as Apis from './api.js'
export default {
components: {
deptTodoView,
BottomView,
CenterView,
DeptChartView,
},
data() {
return {
//
toToData: {
color: '#f86f01',
imgSrc: require('@/assets/img/workBench/todo.png'),
bgColor: 'rgba(228,138,1,0.12)',
borderColor: 'rgba(250,123,12,0.54)',
textColor: '#f86f01',
num: 0,
list: [],
type: 'todo',
url: 'activiti-my-todo-task'
},
//
hasToDodoData: {
noMarginleft: true,
color: '#21b107',
imgSrc: require('@/assets/img/workBench/hasToDo.png'),
bgColor: 'rgba(37,165,13,0.12)',
borderColor: 'rgba(49,194,20,0.54)',
textColor: '#21b107',
num: 0,
list: [],
url: 'activiti-my-join-task'
},
//
resourceData: [],
resourceColor: ['#7b2cff', '#fd5151', , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
//
applyData: [],
applyColor: ["#5085f2", "#e75fc3", "#f87be2", "#f2719a", "#fca4bb", "#f59a8f", "#fdb301", "#57e7ec", "#cf9ef1"],
//
requireData: [],
requireColor: ['#FD866A', '#9E87FF', '#58D5FF', '#73DDFF', '#73ACFF', '#FDD56A', '#FDB36A',],
loadingToDo: false,
loadingHasToDo: false,
loadingResource: false,
loadingApply: false,
loadingRequire: false,
components: {
deptTodoView,
BottomView,
CenterView,
DeptChartView
},
data () {
return {
//
toToData: {
color: '#f86f01',
imgSrc: require('@/assets/img/workBench/todo.png'),
bgColor: 'rgba(228,138,1,0.12)',
borderColor: 'rgba(250,123,12,0.54)',
textColor: '#f86f01',
num: 0,
list: [],
type: 'todo',
url: 'activiti-my-todo-task'
},
//
hasToDodoData: {
noMarginleft: true,
color: '#21b107',
imgSrc: require('@/assets/img/workBench/hasToDo.png'),
bgColor: 'rgba(37,165,13,0.12)',
borderColor: 'rgba(49,194,20,0.54)',
textColor: '#21b107',
num: 0,
list: [],
url: 'activiti-my-join-task'
},
//
resourceData: [],
resourceColor: ['#7b2cff', '#fd5151', , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
//
applyData: [],
applyColor: ['#5085f2', '#e75fc3', '#f87be2', '#f2719a', '#fca4bb', '#f59a8f', '#fdb301', '#57e7ec', '#cf9ef1'],
//
requireData: [],
requireColor: ['#FD866A', '#9E87FF', '#58D5FF', '#73DDFF', '#73ACFF', '#FDD56A', '#FDB36A'],
loadingToDo: false,
loadingHasToDo: false,
loadingResource: false,
loadingApply: false,
loadingRequire: false
}
},
mounted () {
//
this.getToDo()
//
this.getHasToDo()
//
this.getShelvesTotal()
//
this.getApplyTotal()
//
this.getRequireTotal()
},
methods: {
//
getToDo () {
this.loadingToDo = true
const data = {
limit: 5,
page: 1
}
Apis.getToDoTask(data, res => {
this.loadingToDo = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----待办-------->', res.data)
this.toToData.list = res.data.data.records || []
this.toToData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingToDo = false
})
},
mounted() {
//
this.getToDo()
//
this.getHasToDo()
//
this.getShelvesTotal()
//
this.getApplyTotal()
//
this.getRequireTotal()
//
getHasToDo () {
const data = {
limit: 5,
page: 1
}
this.loadingHasToDo = true
Apis.getHasToDoTask(data, res => {
this.loadingHasToDo = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----已办-------->', res.data)
this.hasToDodoData.list = res.data.data.records || []
this.hasToDodoData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingHasToDo = false
console.log('err-----已办------->', err)
})
},
methods: {
//
getToDo() {
this.loadingToDo = true;
let data = {
limit: 5,
page: 1,
}
Apis.getToDoTask(data, res => {
this.loadingToDo = false;
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----待办-------->', res.data);
this.toToData.list = res.data.data.records || []
this.toToData.num = res.data.data.total || 0
}, err => {
this.$message.error(err);
this.loadingToDo = false;
})
},
//
getHasToDo() {
let data = {
limit: 5,
page: 1,
}
this.loadingHasToDo = true;
Apis.getHasToDoTask(data, res => {
this.loadingHasToDo = false;
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----已办-------->', res.data);
this.hasToDodoData.list = res.data.data.records || []
this.hasToDodoData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingHasToDo = false;
console.log('err-----已办------->', err);
})
},
//
getShelvesTotal() {
this.loadingResource = true;
Apis.getTotalByDept({}, res => {
this.loadingResource = false;
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----部门上架-------->', res.data);
this.resourceData = this.formatList(res.data.data.total || [])
this.$nextTick(() => {
this.$refs.resourceChart.initChart(this.resourceData)
})
}, err => {
this.$message.error(err)
this.loadingResource = false;
})
},
//
getApplyTotal() {
this.loadingApply = true;
Apis.getApply({}, res => {
this.loadingApply = false;
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----部门申请-------->', res.data);
this.applyData = this.formatList(res.data.data.total || [])
this.$nextTick(() => {
console.log('this.applyData------------>', this.applyData);
this.$refs.applyChart.initChart(this.applyData)
})
}, err => {
this.$message.error(err)
this.loadingApply = false;
})
},
formatList(list = [], nameStr = 'type') {
let arr = []
list.map(v => {
let obj = {}
obj.name = v[nameStr];
obj.value = v.count;
arr.push(obj)
})
return arr;
},
//
getRequireTotal() {
this.loadingRequire = true;
Apis.getRequire({}, res => {
this.loadingRequire = false;
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----部门需求-------->', res.data);
this.requireData = this.formatList(res.data.data.total || [], 'flag')
this.$nextTick(() => {
this.$refs.requireChart.initChart(this.requireData)
})
}, err => {
this.$message.error(err)
this.loadingRequire = false;
})
},
//
getShelvesTotal () {
this.loadingResource = true
Apis.getTotalByDept({}, res => {
this.loadingResource = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----部门上架-------->', res.data)
this.resourceData = this.formatList(res.data.data.total || [])
this.$nextTick(() => {
this.$refs.resourceChart.initChart(this.resourceData)
})
}, err => {
this.$message.error(err)
this.loadingResource = false
})
},
//
getApplyTotal () {
this.loadingApply = true
Apis.getApply({}, res => {
this.loadingApply = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----部门申请-------->', res.data)
this.applyData = this.formatList(res.data.data.total || [])
this.$nextTick(() => {
console.log('this.applyData------------>', this.applyData)
this.$refs.applyChart.initChart(this.applyData)
})
}, err => {
this.$message.error(err)
this.loadingApply = false
})
},
formatList (list = [], nameStr = 'type') {
const arr = []
list.map(v => {
const obj = {}
obj.name = v[nameStr]
obj.value = v.count
arr.push(obj)
})
return arr
},
//
getRequireTotal () {
this.loadingRequire = true
Apis.getRequire({}, res => {
this.loadingRequire = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----部门需求-------->', res.data)
this.requireData = this.formatList(res.data.data.total || [], 'flag')
this.$nextTick(() => {
this.$refs.requireChart.initChart(this.requireData)
})
}, err => {
this.$message.error(err)
this.loadingRequire = false
})
}
}
}
</script>
<style lang="scss" scoped>
.margin-h-16 {
margin: 0 16px;

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 16:38:21
* @LastEditTime: 2022-08-29 09:55:26
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -26,47 +26,6 @@
<link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" />
<script>
</script>
<!-- 站点配置 -->
<script>
window.SITE_CONFIG = {};
// 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['websocketURL'] = '15.72.183.90:8000/renren-admin';
// window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 包头
// 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://192.168.124.243:9797';
window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.243:9796/';
window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.243:9796/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://192.168.124.243:8888/renren-admin';
window.SITE_CONFIG['websocketURL'] = '192.168.124.243:8888/renren-admin';
// window.SITE_CONFIG['POI_URL'] = 'http://192.168.124.243:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 西海岸版本
// window.SITE_CONFIG['backUrl'] = 'http://10.134.135.9:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://10.134.135.9:9796/';
// window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9796/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// 开发
// window.SITE_CONFIG['backUrl'] = 'http://localhost:8001';
// window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.236:9796/';
// window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.236:9796/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://192.168.124.236:8888/renren-admin';
// window.SITE_CONFIG['websocketURL'] = '192.168.124.236:8888/renren-admin';
// window.SITE_CONFIG['POI_URL'] = 'http://192.168.124.236:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 穿透版本
// 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">
<link href="./leaflet/dist/leaflet/iclient-leaflet.css" rel="stylesheet">
<link href="./leaflet/libs/leaflet/plugins/leaflet.draw/leaflet.draw.css" rel="stylesheet">
@ -74,10 +33,9 @@
<link href="./leaflet/libs/leaflet.markercluster/dist/MarkerCluster.Default.css" rel="stylesheet">
<link href="./supermap/css/supermap.css" rel="stylesheet">
<link href="./static/css/widgets.css" rel="stylesheet">
<!-- 平台配置文件 -->
<script type="text/javascript" src="./static/config/basicConfig.js"></script>
<script type="text/javascript" src="./static/config/mapConfig.js"></script>
<script type="text/javascript" src="./static/config/footerData.js"></script>
<script type="text/javascript" src="./static/config/location.js"></script>
<!-- ==========地图相关配置========== -->
<script type="text/javascript" src="./leaflet/libs/leaflet/1.3.1/leaflet.js"></script>
@ -108,7 +66,16 @@
<!-- 大华平台相关包 -->
<script type="text/javascript" src="./static/js/encrypt.js"></script>
<script type="text/javascript" src="./static/js/DHWs.js"></script>
<!-- 站点配置 -->
<script>
window.SITE_CONFIG = {};
window.SITE_CONFIG['backUrl'] = _global.config.backUrl;
window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl;
window.SITE_CONFIG['frontUrl'] = _global.config.previewUrl + 'document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://'+ _global.config.websocketURL;
window.SITE_CONFIG['websocketURL'] = _global.config.websocketURL;
window.SITE_CONFIG['POI_URL'] = _global.config.POI_URL;
</script>
</head>
<body>

View File

@ -2,55 +2,95 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-04-01 10:51:45
* @LastEditTime: 2022-08-29 09:57:31
* @Description: 系统静态参数配置
*/
var _global = {}
var CONFIGITEM = {
version: 'qingdao',
//version: 'qingdao', //
//version: 'xihaian', // 西
//version: 'dev', //
version: 'test', //
//version: 'frp', // 穿
vNum: 'v0.8.7.2',
configData: {
//
qingdao: {
// bdMapUrl: 'http://15.2.21.238:9890/tiles-sd/tiles',
// bdMapUrl: 'http://15.72.178.129:9890/tiles-sd/tiles',
bdMapUrl: 'http://15.72.178.148:9890/tiles-sd/tiles',
fileService: 'http://15.72.178.148:1080/files/',
websocketService: 'ws://15.72.178.136:8777',
gisService: 'http://15.72.178.148:8585',
pageOfficeService: 'http://15.72.178.136:9393/',
refreshTimerFlag: true,
loginInfo: {
//
// loginIp: '10.132.191.3',
loginPort: '8320',
// userName: 'chengshiyunnao',
// userPwd: 'QDyjj@2021',
loginIp: '10.132.191.3',
loginPort: '8320',
userName: 'ynszdz',
userPwd: 'Admin@123',
channelList: [
'37020002001310000022',
'37020001001310000210',
'37020002001310000026',
'37020002001310000031'
],
channels: [
{ channelId: '37020002001310000022' },
{ channelId: '37020001001310000210' },
{ channelId: '37020002001310000026' },
{ channelId: '37020002001310000031' }
],
name_32:
'General_DSS-LightWeight-Client_x86_V2.1.0.2110.R.20211106.exe',
url_32:
'/static/General_DSS-LightWeight-Client_x86_V2.1.0.2110.R.20211106.exe',
name_64:
'General_DSS-LightWeight-Client_x64_V2.1.0.2110.R.20211106.exe',
url_64:
'/static/General_DSS-LightWeight-Client_x64_V2.1.0.2110.R.20211106.exe'
},
MAX_CIRCLE_RADIUS: 20000,
maxMapZoom: 10
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: '15.72.183.90:8000/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
}
// 西
xihaian: {
loginInfo: {
//
loginIp: '',
loginPort: '',
userName: '',
userPwd: '',
},
backUrl: 'http://10.134.135.9:9797',
previewUrl: 'http://10.134.135.9:9796/',
websocketURL: '10.134.135.9:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
//
dev: {
loginInfo: {
//
loginIp: '',
loginPort: '',
userName: '',
userPwd: '',
},
backUrl: 'http://localhost:8001',
previewUrl: 'http://192.168.124.236:9796/',
websocketURL: '192.168.124.236:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
//
test: {
loginInfo: {
//
loginIp: '',
loginPort: '',
userName: '',
userPwd: '',
},
backUrl: 'http://192.168.124.243:9797',
previewUrl: 'http://192.168.124.243:9796/',
websocketURL: '192.168.124.243:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
// 穿
frp: {
loginInfo: {
//
loginIp: '',
loginPort: '',
userName: '',
userPwd: '',
},
backUrl: 'http://124.222.94.39:9797',
previewUrl: 'http://124.222.94.39:9796/',
websocketURL: '124.222.94.39:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
},
}
_global.config = CONFIGITEM.configData[CONFIGITEM.version]

View File

@ -1,48 +0,0 @@
/*
* @Author: zhangfeihu
* @Date: 2022-06-16 16:37:31
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-20 16:18:04
* @FilePath: \qiantai\front\public\static\config\footerData.js
* @Description: 底部菜单数据配置配置
*/
// const footerDataList = {
//
// company: {
// left: '',
// right: ''
// },
// address: [
// {
// name: 'IC00000000',
// value: '3702000106',
// },
// {
// name: '',
// value: '17',
// },
// {
// name: '0532-8561234',
// value: '0532-2145122',
// },
// ]
// 西
// company: {
// left: '西',
// right: 'v0.81'
// },
// address: [
// {
// name: 'IC00000000',
// value: '3702000106',
// },
// {
// name: '西',
// value: '西369',
// },
// {
// name: '0532-86986596',
// value: '0532-86986596',
// },
// ]
// }

View File

@ -2,12 +2,13 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 16:38:39
* @LastEditTime: 2022-08-29 09:55:56
* @Description: 数据资源参数配置
*/
//const newLocation = 'qingdao'
// eslint-disable-next-line no-undef
const newLocation = CONFIGITEM.version
// const newLocation = 'baotou'
const newLocation = 'qingdao'
// const newLocation = 'xihaian'
//
const whoShow = {}
@ -23,7 +24,7 @@ const mapTestNum = {}
//
const footerDataList = {}
// qingdao
if (newLocation === 'qingdao') {
if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
whoShow.itShowQingDao = true
infrastructure.deptName = '青岛市大数据发展管理局'
infrastructure.deptId = '1067246875800000066'
@ -38,8 +39,8 @@ if (newLocation === 'qingdao') {
// { name: '', key: 'personalCenter' },
{ name: '区市站点', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
{ name: '典型赋能案例', key: 'assignCase' },
// { name: '', key: 'integrationServices' },
// { name: '', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' },
{ name: 'CIM专区', key: 'cimSpecialArea' },
]
footerDataList.footerList = {
@ -502,7 +503,8 @@ else if (newLocation === 'xihaian') {
footerDataList.footerList = {
company: {
left: '青岛西海岸新区大数据发展促进局建设',
right: 'v0.8.3.3',
// eslint-disable-next-line no-undef
right: CONFIGITEM.vNum,
},
address: [
{

View File

@ -2,21 +2,21 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 18:19:32
* @LastEditTime: 2022-08-25 11:16:44
* @Description: 地图静态参数配置
*/
var _mapConfig = {}
;(function () {
var L = window.L || {}
// //
// **********************************************
var CONFIGKEY = 'qingdao_highgo'
// eslint-disable-next-line no-undef
var CONFIGKEY = CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao'
// var CONFIGKEY = 'dev';
// ***********************************************
var BASECONFIGITEM = {
qingdao: {
xihaian: {
base: 'xihaian',
CURRENT_MAP_OPTIONS: {
// crs: CRS_4490,
@ -26,7 +26,7 @@ var _mapConfig = {}
zoom: 10,
},
},
qingdao_highgo: {
qingdao: {
DATABASE_TYPE: 'Highgo',
POI_TYPE: 'Supermap', // POI 'Supermap''Amap''Survey_Institute'
ISERVER_URL: '15.2.21.238:8090',
@ -78,59 +78,6 @@ var _mapConfig = {}
icon: 'other_map.png',
},
},
//
dev: {
DATABASE_TYPE: 'Highgo',
POI_TYPE: 'Supermap', // POI 'Supermap''Amap''Survey_Institute'
ISERVER_URL: '15.2.21.238:8090',
WORKPLACE_NAME: 'HIMAP-HIGHGO',
MAP_NAME: 'QDMAP',
DATASOURCE_NAME: 'HISENSE_map',
ATMOSPHERE_URL: 'http://15.2.21.151:9015/service-main',
CURRENT_MAP_OPTIONS: {
// crs: CRS_4490,
center: [36.17, 120.13],
maxZoom: 7,
minZoom: 0,
zoom: 3,
},
BDMAP_CONFIG: {
location: 'qingdao',
_initpos: {
point: [120.392795, 36.072854],
zoom: 2,
},
_keyframes: [
[121.6011191295479, 36.73422934263509],
[119.83371870221472, 36.082854],
[120.25937000453506, 36.34563716789656],
],
},
MAP_VENDOR: 'Supermap', // Supermap bdmap 3dbdmap
TITLE_LAYER: {
mapUrl:
'http://15.72.177.174:8195/portalproxy/TileServer/arcgis/rest/services/normal2021/MapServer?key=iOgQotfgfyLvhj6WgfDTpq7F',
type: 'tiled',
name: '矢量',
icon: 'vector_map.png',
},
TITLE_LAYER_REMOTE: {
mapUrl:
'http://q3d.qd.gov.cn:8195/portalproxy/s9arfiqe/TileServer/arcgis/rest/services/normal2021_test/MapServer?key=p9PW1ipy9P3QHILzmsNOk8Gc',
type: 'tiled',
name: '矢量',
icon: 'vector_map.png',
},
// TITLE_LAYER_REMOTE: { mapUrl: 'http://15.72.177.174:8195/portalproxy/TileServer/arcgis/rest/services/normal2021/MapServer?key=iOgQotfgfyLvhj6WgfDTpq7F', type: 'tiled', name: '', icon: 'vector_map.png' },
// TITLE_LAYER_REMOTE: { mapUrl: 'http://15.2.21.238:8090/iserver/services/map-ugcv5-QingdaoRemoteImageMap/rest/maps/QingdaoRemoteImageMap', type: 'remote', name: '', icon: 'satellite_map.png' },
TITLE_LAYER_DARK: {
mapUrl:
'http://15.2.21.238:8090/iserver/services/map-ugcv5-shandong/rest/maps/shandong',
type: 'dark',
name: '其他',
icon: 'other_map.png',
},
},
}
var MAPCONFIGMIXTRE = {
CURRENT_SERVER_NAME: CONFIGKEY,

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.liangjunhua
* @Date: 2022-08-19 14:25:45
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-19 15:25:03
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-27 15:52:54
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -27,7 +27,7 @@ export function cimImgResources(params) {
method: 'get',
})
}
// cim+
// CIM+
export function cimAssemblyResources() {
return request({
url: '/resource/cimAssemblyResources',

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-20 17:16:35
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-11 19:02:33
* @LastEditTime: 2022-08-25 14:13:30
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -61,11 +61,11 @@ export function count() {
export function getVideoList(params) {
return axios.get(
'http://10.134.135.9:8001/hx-weather-warning/camera/getCameraListByName?name=' +
params.name +
'&pageNo=' +
params.pageNo +
'&pageSize=' +
params.pageSize,
params.name +
'&pageNo=' +
params.pageNo +
'&pageSize=' +
params.pageSize,
config2
)
}
@ -73,17 +73,17 @@ export function getVideoList(params) {
export function getRecord(params) {
return axios.get(
'http://10.134.135.24:30090/api/share-portal/platform/catalogue/query?serviceName=' +
params.serviceName +
'&orderField=' +
params.orderField +
'&orderType=' +
params.orderType +
'&pageNum=' +
params.pageNum +
'&pageSize=' +
params.pageSize +
'&serviceType=' +
params.serviceType,
params.serviceName +
'&orderField=' +
params.orderField +
'&orderType=' +
params.orderType +
'&pageNum=' +
params.pageNum +
'&pageSize=' +
params.pageSize +
'&serviceType=' +
params.serviceType,
config2
)
}
@ -91,9 +91,9 @@ export function getRecord(params) {
export function getHls(params) {
return axios.get(
'http://10.134.135.9:8001/hx-weather-warning/camera/getCameraLiveStreamByCode?cameraCode=' +
params.cameraId +
'&protocol=' +
params.protocol,
params.cameraId +
'&protocol=' +
params.protocol,
config2
)
}
@ -101,14 +101,15 @@ export function getHls(params) {
export function getCameraInfoByAreaId(params) {
return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=' +
params.areaId,
params.areaId,
config2
)
}
//-
export function getCameraByCondition(params) {
return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition?' + params,
'http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition?' +
params,
config2
)
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 KiB

View File

@ -134,7 +134,7 @@ export function HieimpMap() {
// console.log('', result);
// });
switch (_mapConfig.config.CURRENT_SERVER_NAME) {
case 'qingdao_highgo':
case 'qingdao':
if (type === 'tiled') {
tileMapUrl = _mapConfig.config.TITLE_LAYER.mapUrl
} else if (type === 'remote') {
@ -144,7 +144,7 @@ export function HieimpMap() {
}
renderMapFun(mapId, tileMapUrl, centerPoint)
break
case 'qingdao':
case 'xihaian':
const tileMap = L.map(mapId, {
crs: L.CRS.EPSG4326,
// renderer: L.svg(),

View File

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

View File

@ -0,0 +1,21 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 19:41:20
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 20:14:53
* @Description: 告诉大家这是什么
*/
export function placeHolderWords(name) {
const words = {
坐标系: '服务坐标系如WGS84、CGCS2000等',
覆盖区域: '服务覆盖区域,如全国、青岛、城阳区等',
切片尺寸: '切片尺寸切片服务填写填写瓦片大小如256*256',
切片策略: '切片策略,切片服务填写,如栅格、矢量',
最小级别: '地图缩放最小级别如1、2',
最大级别: '地图缩放最大级别如18、19、20',
图层预览地址: '地址图层预览效果将在详情页展示如http://xxx.com',
服务地址: '服务调用地址',
样式服务地址: '样式服务地址,用于获取图层的展示样式,如不同的地图底色样式',
}
return words[name] || name
}

View File

@ -4,7 +4,8 @@
<div class="banner"></div>
<div class="mainBox">
<div class="top">
<h1>典型赋能案例</h1>
<h1 v-if="whoShow1 && whoShow1.itShowQingDao">典型赋能案例</h1>
<h1 v-else>赋能案例</h1>
<div></div>
<!-- <h3>Enabling Cases</h3> -->
</div>
@ -86,7 +87,7 @@
import { useRouter } from 'vue-router'
// import { pinyin } from 'pinyin-pro'
// import { Empty } from 'ant-design-vue'
const whoShow1 = ref(whoShow)
const router = useRouter()
const listBg = ref('')
const contenBox = ref([])

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua
* @Date: 2022-06-17 14:11:08
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-03 11:47:41
* @LastEditTime: 2022-08-25 19:52:03
* @Description: 上架
-->
<template>
@ -233,7 +233,7 @@
:maxLength="1000"
v-if="item.type == 'input' && item.name.indexOf('名称') == -1"
v-model:value="item.note1"
:placeholder="'请输入' + item.name"
:placeholder="'请输入' + placeHolderWords(item.name)"
@change="changeIiem(item.name, item.note1)"
/>
<a-input
@ -496,6 +496,7 @@
</template>
<script setup>
import VueTemplateDemo from '@/views/personalCenter/VueTemplateDemo'
import { placeHolderWords } from '@/utils/placeHolder'
import {
ref,
defineProps,

View File

@ -7,7 +7,7 @@
-->
<template>
<div class="algorithm">
<div class="header">CIM+算法</div>
<div class="header">CIM+组件</div>
<div class="main">
<div
class="item"

View File

@ -27,7 +27,7 @@
num: 0,
},
{
name: 'CIM+算法',
name: 'CIM+组件',
img: require('@/assets/cimSpecialArea/algorithm.png'),
num: 0,
},

View File

@ -8,13 +8,11 @@
></DetalsTitle>
</div>
<!-- 青岛市局 -->
<div v-if="whoShow1 && whoShow1.itShowQingDao">
<div
class="content"
v-for="item in dataFrom.content"
:key="item.title"
v-show="approveStatus == '通过'"
>
<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 === '调用接口'">
<div class="left">
<div class="content-left-title">
@ -24,8 +22,16 @@
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>{{ item.link.value }}</template>
<span>{{ item.link.value }}</span>
<template #title>
{{
approveStatus === '通过'
? item.link.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.link.value }}
</span>
</a-tooltip>
</p>
<p>
@ -91,15 +97,31 @@
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
<template #title>
{{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ 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>
<template #title>
{{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip>
</p>
</div>
@ -132,9 +154,13 @@
</div>
</div>
</div>
<div v-show="approveStatus !== '通过'" class="contentOther">
请申请后查看
</div>
<!-- <div v-show="approveStatus !== '通过'" class="contentOther">
<img src="~@/assets/detailsAll/uesBefore.png" />
<div class="contentOtherRight">
<p>请在申请能力后返回查看使用方式</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div>
<!-- 其他 -->
<div v-else>
@ -265,6 +291,9 @@
import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过')
const whoShow1 = ref(whoShow)
let dataFrom = ref({
@ -310,6 +339,34 @@
dataList: { type: Object, default: null },
})
const flag = ref(true)
//
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
if (props.dataList.infoList) {
let obj = true
if (!obj) {
@ -451,7 +508,9 @@
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content {
margin-top: 0.3rem;
display: flex;
@ -583,9 +642,37 @@
}
}
.contentOther {
width: 100%;
height: 0.3rem;
background: pink;
width: 80%;
height: 4rem;
border: 1px dashed #7b98fd;
margin-top: 0.3rem;
display: flex;
justify-content: center;
align-items: center;
img {
margin-right: 2rem;
}
.contentOtherRight {
p {
font-weight: bold;
font-size: 0.2rem;
}
div {
width: 1.3rem;
height: 0.4rem;
line-height: 0.4rem;
background: #0885ff;
color: #ffffff;
border-radius: 0.05rem;
font-size: 0.18rem;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
div:hover {
background: #359bff;
}
}
}
}
</style>

View File

@ -1,41 +1,64 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-09 09:29:29
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-13 15:21:26
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-27 15:43:57
* @Description: 应用详情
-->
<template>
<div class="algorithm-on-trial" v-if="flag">
<div class="algorithm-on-trial">
<detals-title title="应用详情" type="PROBATION"></detals-title>
<div class="main">
<div class="main-left">
<p>{{ dataFrom.linkName }}</p>
<p style="cursor: pointer" @click="clickLink(dataFrom.link)">
{{ dataFrom.link }}
</p>
<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>
</a-tooltip>
</div>
<div class="main-center">
<p>{{ dataFrom.numberName }}</p>
<p>{{ dataFrom.number }}</p>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.number }}</template>
<p>{{ dataFrom.number || '暂无' }}</p>
</a-tooltip>
<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 != ''"
v-if="dataFrom.number != '' && flag"
>
复制账号
</div>
<div v-else id="zanwu">暂无</div>
<!-- <div v-else id="zanwu">暂无</div> -->
</div>
<div class="main-right">
<p>{{ dataFrom.passwordName }}</p>
<p>{{ dataFrom.password }}</p>
<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>
</a-tooltip>
<div
@click="copyFunction(dataFrom.password2, '复制密码')"
v-if="dataFrom.password != ''"
v-if="dataFrom.password2 != '' && flag"
>
复制密码
</div>
<div v-else id="zanwu">暂无</div>
<!-- <div v-else id="zanwu">暂无</div> -->
</div>
</div>
</div>
@ -63,19 +86,19 @@
let obj = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
} else {
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
// }
}
const clickLink = (link) => {
window.open(link)
@ -111,20 +134,19 @@
(val) => {
if (val) {
let obj = props.dataList.approveStatus
if (obj !== '通过') {
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
} else {
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
}
}

View File

@ -7,8 +7,12 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div v-if="whoShow1 && whoShow1.itShowQingDao">
<div class="content" v-show="approveStatus == '通过'">
<!-- 青岛市局 -->
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content">
<div
v-for="(item, index) in dataFrom.content"
:key="index"
@ -19,7 +23,17 @@
<div v-for="carditem in item.childrenContent" :key="carditem">
<div style="display: flex">
<span>{{ carditem.attrType }}</span>
<a-tooltip>
<a-tooltip
v-if="
approveStatus !== '通过' &&
(carditem.attrType === '联系人' ||
carditem.attrType === '联系人电话')
"
>
<template #title>请申请后查看</template>
<span class="word-filter">{{ carditem.attrValue }}</span>
</a-tooltip>
<a-tooltip v-else>
<template #title>{{ carditem.attrValue }}</template>
<span>{{ carditem.attrValue }}</span>
</a-tooltip>
@ -28,8 +42,15 @@
</div>
</div>
</div>
<div v-show="approveStatus !== '通过'">请申请后查看</div>
<!-- <div v-show="approveStatus !== '通过'" class="contentOther">
<img src="~@/assets/detailsAll/uesBefore.png" />
<div class="contentOtherRight">
<p>请在申请能力后返回查看归属部门与服务商</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div>
<!-- 其他 -->
<div v-else>
<div class="content">
<div
@ -58,6 +79,8 @@
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过')
const whoShow1 = ref(whoShow)
let dataFrom = ref({
@ -79,6 +102,34 @@
const props = defineProps({
dataList: { type: Object, default: null },
})
//
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
if (props.dataList.infoList) {
let obj = {
attrType: '归属部门',
@ -206,7 +257,9 @@
display: flex;
flex-direction: column;
align-items: center;
.word-filter {
filter: blur(4px);
}
.title {
margin-bottom: 0.3rem;
}
@ -220,10 +273,13 @@
height: 1.5rem;
width: 6.2rem;
border-radius: 0.2rem;
background: url('~@/assets/detailsAll/business/business_usage_mode_bg.png')
no-repeat;
background-position: center;
background-size: 100% 100%;
background: linear-gradient(
to right,
rgba(113, 132, 252, 0.4),
rgba(148, 163, 252, 0.4)
);
// background-position: center;
// background-size: 100% 100%;
padding: 0 0.3rem;
display: flex;
flex-direction: column;
@ -257,11 +313,11 @@
span:last-child {
display: block;
width: 2.3rem;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
word-break: break-all;
// overflow: hidden;
// text-overflow: ellipsis;
// -webkit-box-orient: vertical;
// -webkit-line-clamp: 1;
// word-break: break-all;
}
}
}
@ -272,5 +328,38 @@
}
}
}
.contentOther {
width: 80%;
height: 4rem;
border: 1px dashed #7b98fd;
margin-top: 0.3rem;
display: flex;
justify-content: center;
align-items: center;
img {
margin-right: 2rem;
}
.contentOtherRight {
p {
font-weight: bold;
font-size: 0.2rem;
}
div {
width: 1.3rem;
height: 0.4rem;
line-height: 0.4rem;
background: #0885ff;
color: #ffffff;
border-radius: 0.05rem;
font-size: 0.18rem;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
div:hover {
background: #359bff;
}
}
}
}
</style>

View File

@ -7,13 +7,11 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div v-if="whoShow1 && whoShow1.itShowQingDao">
<div
class="content"
v-for="item in dataFrom.content"
:key="item.title"
v-show="approveStatus == '通过'"
>
<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">
<div class="left">
<div class="content-left-title">
@ -23,8 +21,14 @@
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>{{ item.linkValue }}</template>
<span>{{ item.linkValue }}</span>
<template #title>
{{
approveStatus === '通过' ? item.linkValue : '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.linkValue }}
</span>
</a-tooltip>
</p>
</div>
@ -48,15 +52,31 @@
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
<template #title>
{{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ 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>
<template #title>
{{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip>
</p>
</div>
@ -89,7 +109,13 @@
</div>
</div>
</div>
<div v-show="approveStatus !== '通过'">请申请后查看</div>
<!-- <div v-show="approveStatus !== '通过'" class="contentOther">
<img src="~@/assets/detailsAll/uesBefore.png" />
<div class="contentOtherRight">
<p>请在申请能力后返回查看使用方式</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div>
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
@ -177,6 +203,8 @@
import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过')
const whoShow1 = ref(whoShow)
let dataFrom = ref({
@ -211,6 +239,34 @@
dataList: { type: Object, default: null },
})
const flag = ref(true)
//
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
if (props.dataList.infoList) {
let obj = true
if (!obj) {
@ -320,7 +376,9 @@
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content {
margin-top: 0.3rem;
display: flex;
@ -449,5 +507,38 @@
}
}
}
.contentOther {
width: 80%;
height: 4rem;
border: 1px dashed #7b98fd;
margin-top: 0.3rem;
display: flex;
justify-content: center;
align-items: center;
img {
margin-right: 2rem;
}
.contentOtherRight {
p {
font-weight: bold;
font-size: 0.2rem;
}
div {
width: 1.3rem;
height: 0.4rem;
line-height: 0.4rem;
background: #0885ff;
color: #ffffff;
border-radius: 0.05rem;
font-size: 0.18rem;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
div:hover {
background: #359bff;
}
}
}
}
</style>

View File

@ -7,14 +7,21 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div v-if="whoShow1 && whoShow1.itShowQingDao">
<div class="content" v-show="approveStatus == '通过'">
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<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>
<template #title>
{{ approveStatus === '通过' ? dataFrom.link : '请申请后查看' }}
</template>
<p :class="{ 'blur-word': approveStatus !== '通过' }">
{{ dataFrom.link }}
</p>
</a-tooltip>
</div>
<div class="right">
@ -32,8 +39,25 @@
<div>
<span>{{ carditem.attrType }}</span>
<a-tooltip>
<template #title>{{ carditem.attrValue }}</template>
<span>{{ carditem.attrValue }}</span>
<template #title>
{{
approveStatus !== '通过' &&
(carditem.attrType === '部门联系人' ||
carditem.attrType === '联系人电话')
? '请申请后查看'
: carditem.attrValue
}}
</template>
<span
:class="{
'blur-word':
approveStatus !== '通过' &&
(carditem.attrType === '部门联系人' ||
carditem.attrType === '联系人电话'),
}"
>
{{ carditem.attrValue }}
</span>
</a-tooltip>
</div>
</div>
@ -41,7 +65,13 @@
</div>
</div>
</div>
<div v-show="approveStatus !== '通过'">请申请后查看</div>
<!-- <div v-show="approveStatus !== '通过'" class="contentOther">
<img src="~@/assets/detailsAll/uesBefore.png" />
<div class="contentOtherRight">
<p>请在申请能力后返回查看使用方式</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div>
<div v-else>
<div class="content">
@ -86,6 +116,8 @@
import { ref, defineProps, watch } from 'vue'
import { pinyin } from 'pinyin-pro'
import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过')
const whoShow1 = ref(whoShow)
let flag = ref(true)
@ -136,6 +168,34 @@
const props = defineProps({
dataList: { type: Object, default: null },
})
//
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter(
(item) => item.attrType === '组件地址'
@ -255,6 +315,9 @@
display: flex;
flex-direction: column;
align-items: center;
.blur-word {
filter: blur(4px);
}
.title {
margin-bottom: 0.3rem;
}
@ -360,5 +423,38 @@
}
}
}
.contentOther {
width: 80%;
height: 4rem;
border: 1px dashed #7b98fd;
margin-top: 0.3rem;
display: flex;
justify-content: center;
align-items: center;
img {
margin-right: 2rem;
}
.contentOtherRight {
p {
font-weight: bold;
font-size: 0.2rem;
}
div {
width: 1.3rem;
height: 0.4rem;
line-height: 0.4rem;
background: #0885ff;
color: #ffffff;
border-radius: 0.05rem;
font-size: 0.18rem;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
div:hover {
background: #359bff;
}
}
}
}
</style>

View File

@ -70,27 +70,23 @@
values: '',
},
{
type: '切片尺寸详情',
type: '切片尺寸',
values: '',
},
{
type: '最小级别名称',
type: '最小级别',
values: '',
},
],
})
const dataFromRight = ref({
content: [
{
type: '数据范围',
values: '',
},
{
type: '图层名称',
values: '',
},
{
type: '最大级别名称',
type: '最大级别',
values: '',
},
],

View File

@ -7,31 +7,40 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div v-if="whoShow1 && whoShow1.itShowQingDao">
<div
class="content"
v-for="item in dataFrom.content"
:key="item.title"
v-show="approveStatus == '通过'"
>
<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">
<div class="left">
<a-tooltip>
<template #title>{{ item.linkValue }}</template>
<template #title>
{{ approveStatus === '通过' ? item.linkValue : '请申请后查看' }}
</template>
<p @click="ServiceAddressFunction(item.linkValue)">
服务地址
{{ item.linkValue }}
<span>服务地址</span>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.linkValue }}
</span>
</p>
</a-tooltip>
<a-tooltip>
<template #title>{{ item.csslinkValue }}</template>
<template #title>
{{
approveStatus === '通过' ? item.csslinkValue : '请申请后查看'
}}
</template>
<p @click="ServiceAddressFunction(item.csslinkValue)">
样式服务地址
{{ item.csslinkValue }}
<span>样式服务地址</span>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.csslinkValue }}
</span>
</p>
</a-tooltip>
</div>
<div class="right">
<div class="right" v-show="approveStatus === '通过'">
<div @click="technical()">技术文档</div>
<div @click="technicalNew()">新手指引</div>
</div>
@ -43,22 +52,42 @@
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
<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>
<template #title>
{{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ 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>
<template #title>
{{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip>
</p>
</div>
@ -91,7 +120,13 @@
</div>
</div>
</div>
<div v-show="approveStatus !== '通过'">请申请后查看</div>
<!-- <div v-show="approveStatus !== '通过'" class="contentOther">
<img src="~@/assets/detailsAll/uesBefore.png" />
<div class="contentOtherRight">
<p>请在申请能力后返回查看使用方式</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div>
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
@ -181,6 +216,8 @@
import { message } from 'ant-design-vue'
import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过')
const whoShow1 = ref(whoShow)
let dataFrom = ref({
@ -217,6 +254,34 @@
dataList: { type: Object, default: null },
})
const flag = ref(true)
//
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
if (props.dataList.infoList) {
let obj = true
if (!obj) {
@ -279,7 +344,9 @@
)
//
function ServiceAddressFunction(link) {
window.open(link)
if (link && approveStatus.value === '通过') {
window.open(link)
}
}
function technical() {
//
@ -334,7 +401,9 @@
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content {
margin-top: 0.3rem;
display: flex;
@ -461,5 +530,38 @@
}
}
}
.contentOther {
width: 80%;
height: 4rem;
border: 1px dashed #7b98fd;
margin-top: 0.3rem;
display: flex;
justify-content: center;
align-items: center;
img {
margin-right: 2rem;
}
.contentOtherRight {
p {
font-weight: bold;
font-size: 0.2rem;
}
div {
width: 1.3rem;
height: 0.4rem;
line-height: 0.4rem;
background: #0885ff;
color: #ffffff;
border-radius: 0.05rem;
font-size: 0.18rem;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
div:hover {
background: #359bff;
}
}
}
}
</style>

View File

@ -0,0 +1,352 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:56:28
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-25 20:23:59
* @Description: 算法详情页头部
-->
<template>
<div class="algorithm-top-details">
<div class="left">
<div class="top">
<a-tooltip placement="top">
<template #title>{{ props.dataList.name }}</template>
<span class="name">
{{ props.dataList.name }}
</span>
</a-tooltip>
<!-- <span class="name">{{ props.dataList.name }}</span> -->
<div class="label-content">
<p class="lable-father">
<span class="label" v-if="props.dataList.type">
{{ props.dataList.type }}
</span>
<span class="label" v-if="props.dataList.shareType">
{{ props.dataList.shareType }}
</span>
<span class="label" v-if="props.dataList.shareCondition">
{{ props.dataList.shareCondition }}
</span>
</p>
</div>
<!-- <span class="label">免费</span> -->
</div>
<div class="main">
<!-- <a-tooltip placement="top">
<template #title>应用领域{{ applicationArea }}</template>
<div>应用领域{{ applicationArea }}</div>
</a-tooltip> -->
<a-tooltip placement="top">
<template #title>{{ props.dataList.description }}</template>
<div>
{{ props.dataList.description }}
</div>
</a-tooltip>
</div>
<div class="bottom" v-if="props.dataList.id">
<!-- 融合服务 存在fuseResourceList -->
<!-- <a-button
type="primary"
@click="handleAKeyApplication()"
v-if="dataList.fuseResourceList"
>
<template #icon>
<form-outlined />
</template>
申请使用
</a-button>
<a-button v-else type="primary" @click="toView()">
<template #icon><form-outlined /></template>
申请使用
</a-button>
<a-button
v-if="!dataList.fuseResourceList"
type="primary"
@click="addShoppingCart()"
>
<template #icon><shopping-cart-outlined /></template>
加入购物车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ props.dataList.isCollect == 'true' ? '已' : '' }}收藏
</a-button> -->
</div>
</div>
<div class="right"></div>
</div>
</template>
<script setup>
// import { ShoppingCartOutlined } from '@ant-design/icons-vue'
import { defineProps, ref, watch } from 'vue'
import { scInsert, scDel } from '@/api/personalCenter'
import { sgcInsert } from '@/api/home'
import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
//
const router = useRouter()
const props = defineProps({
dataList: { type: Object, default: null },
})
console.log('dataList------------>', props.dataList)
const applicationArea = ref('')
// //
const addShoppingCart = () => {
if (props.dataList.isInShoppingCart) {
message.error('已经加入申购车了')
} else {
console.log('加入申购车==================>', props.dataList)
sgcInsert({
delFlag: '0',
resourceId: props.dataList.id,
// userId: userId.value,
}).then((res) => {
console.log(res)
message.success('添加申购车成功!')
mybus.emit('getSgcNum')
props.dataList.isInShoppingCart = true
console.log(
props.dataList.isInShoppingCart,
'props.dataList.isInShoppingCart'
)
})
}
}
// //
function toView() {
// window.open(newpage.href, '_blank')
// router.push({
// path: '/apply',
// query: {
// name: props.dataList.name,
// resourceId: [props.dataList.id],
// },
// })
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
// componentType: '',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
// --
const handleAKeyApplication = () => {
let _applyList = []
;(props.dataList.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',
})
}
//
const scFlag2 = ref(true)
const goTOCollection = () => {
console.log('收藏===================》', props.dataList)
if (scFlag2.value) {
scFlag2.value = false
if (props.dataList.isCollect == 'true') {
scDel([props.dataList.id]).then((res) => {
if (res.data.msg === 'success') {
message.success('取消成功')
// eslint-disable-next-line vue/no-mutating-props
props.dataList.isCollect = 'false'
scFlag2.value = true
}
})
} else {
scInsert([
{
resourceId: props.dataList.id,
},
]).then((res) => {
if (res.data.msg === 'success') {
message.success('添加收藏成功!')
// eslint-disable-next-line vue/no-mutating-props
props.dataList.isCollect = 'true'
scFlag2.value = true
}
})
}
}
// scInsert([{ resourceId: props.dataList.id }]).then((res) => {
// console.log(res)
// message.success('')
// })
}
if (props.dataList.infoList) {
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
}
watch(
() => props.dataList,
(val) => {
if (val) {
console.log('props.dataList-----watch------->', val)
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
}
}
)
</script>
<style lang="less" scoped>
.algorithm-top-details {
height: 6rem;
padding: 1.8rem 0 0;
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.left {
max-width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
.top {
display: flex;
align-items: center;
span {
font-size: 0.14rem;
}
.name {
// max-width: 3.3rem;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
font-size: 0.4rem;
margin-right: 0.2rem;
font-size: 0.4rem;
margin-right: 0.2rem;
max-width: 6rem;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.label-content {
position: relative;
}
.lable-father {
position: absolute;
min-width: 3.5rem;
right: -3.5rem;
top: 0;
}
.label {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
background: rgba(255, 255, 255, 0.4);
}
}
.main {
margin-top: 0.2rem;
font-size: 0.18rem;
line-height: 0.34rem;
// & > div:nth-of-type(1) {
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
// }
& > div:nth-of-type(1) {
max-height: 1rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.bottom {
margin-top: 0.4rem;
display: flex;
.ant-btn {
height: 0.5rem;
margin-right: 0.2rem;
background: #ff8b55;
border-radius: 0.06rem;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
}
.ant-btn:nth-of-type(1) {
width: 1.8rem;
}
.ant-btn:nth-of-type(2) {
width: 2.2rem;
}
.ant-btn:nth-of-type(3) {
width: 1.45rem;
}
}
}
.right {
width: 5.8rem;
height: 4rem;
background: url('~@/assets/detailsAll/sf_right_bg.png') no-repeat;
background-size: 100%;
margin-top: -0.4rem;
}
}
</style>

View File

@ -0,0 +1,88 @@
<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="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue
"
/>
<h3>{{ item.name }}</h3>
<p>发布时间 {{ item.updateDate }}</p>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { defineProps } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const props = defineProps({
resourceList: {
type: Object,
default: () => {},
},
selectCardsname: {
type: String,
default: '组件服务',
},
})
const caseList = ref([])
onMounted(() => {
caseList.value = props.resourceList.data
console.log(caseList.value, 'caseList.value')
})
onBeforeUnmount(() => {})
function toView(item) {
router.push({
path: '/integrationServicesDetails',
query: {
id: item.id,
},
})
}
</script>
<style lang="less" scoped>
.box {
.CanCase {
margin-top: 0.2rem;
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center;
justify-items: center;
.caseBox {
width: 3.5rem;
height: 3rem;
box-shadow: 1px 1px 5px 5px rgba(222, 222, 222, 0.152);
background: #ffffff;
border-radius: 0.05rem;
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;
}
}
}
}
</style>

View File

@ -136,6 +136,7 @@
<div class="header">
<span style="display: flex; align-items: center; width: 680px">
{{ item.name }}
<!-- 已申请--通过 -->
<svg
t="1652322568870"
class="icon"
@ -145,7 +146,9 @@
p-id="3062"
width="40"
height="40"
v-if="item.applyState == '通过'"
v-if="
item.applyState == '已申请' && item.approveStatus == '通过'
"
style="margin-left: 10px; min-width: 40px"
>
<path
@ -164,7 +167,8 @@
p-id="3065"
></path>
</svg>
<svg
<!-- 审核中 -->
<!-- <svg
t="1652322568870"
class="icon"
viewBox="0 0 3072 1024"
@ -173,7 +177,9 @@
p-id="3062"
width="40"
height="40"
v-if="item.applyState == '审核中'"
v-if="
item.applyState == '已申请' && item.approveStatus == '审核中'
"
style="margin-left: 10px; min-width: 40px"
>
<path
@ -188,7 +194,9 @@
></path>
</svg>
<span
v-if="item.applyState == '审核中'"
v-if="
item.applyState == '已申请' && item.approveStatus == '审核中'
"
style="
font-size: 12px;
-webkit-transform: scale(0.75);
@ -200,7 +208,7 @@
"
>
审核中
</span>
</span> -->
</span>
<div class="header-right">
<div

View File

@ -93,7 +93,7 @@
</a-space>
</div>
</div>
<div class="roomItem" v-for="(item, index) in roomList">
<div class="roomItem" v-for="item in roomList" :key="item.id">
<div class="leftImg">
<img
:src="
@ -438,7 +438,21 @@
</div>
<i class="boundary"></i>
<!-- 批量预览 -->
<a-button type="primary" @click="batchPreview" class="buttonAdd">
<a-button
type="primary"
@click="batchPreview"
class="buttonAdd"
v-if="isXiHaiAn"
>
批量预览
</a-button>
<!-- 批量预览 -->
<a-button
type="primary"
@click="batchPicturePreview"
class="buttonAdd"
v-else
>
批量预览
</a-button>
<!-- 添加至申购车 -->
@ -474,6 +488,7 @@
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'operation'">
<a
v-if="isXiHaiAn"
@click="
openVideo(
record.channelCode ||
@ -484,6 +499,18 @@
>
预览
</a>
<a
v-else
@click="
openPicture(
record.channelCode ||
record.channelId ||
record.channelCode.channelId
)
"
>
预览
</a>
</template>
</template>
</a-table>
@ -532,7 +559,53 @@
</div>
</div>
</a-modal>
<!-- 批量预览弹窗 -->
<!-- 图片预览 -->
<a-modal
wrapClassName="single-preview-modal"
v-model:visible="picVisible"
title="图片预览"
:width="960"
destroyOnClose
>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<a-image :src="options.src" />
</div>
</a-modal>
<!-- 批量预览图片弹窗 -->
<a-modal
wrapClassName="batch-preview-modal"
v-model:visible="batchPicVisible"
title="图片批量预览"
:width="1060"
destroyOnClose
@cancel="videoClean"
>
<template #footer></template>
<div class="batch-video">
<div
v-for="item in videoList"
:key="item.id"
style="width: 100%; height: 100%"
>
<a-image
width="500px"
height="281px"
:src="item.options.src"
fallback="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg=="
/>
</div>
</div>
<a-pagination
v-model:current="current"
:total="videoTotal"
defaultPageSize="4"
:showSizeChanger="false"
@change="batchPicturePreview"
show-less-items
/>
</a-modal>
<!-- 批量预览视频弹窗 -->
<a-modal
wrapClassName="batch-preview-modal"
v-model:visible="batchVisible"
@ -641,6 +714,7 @@
getCameraByParentId,
getStreamByChannelCode,
getCameraAllLabel,
selectByChannelCode,
} from '@/api/videoSurveillance'
import { getCameraByCondition } from '@/api/file'
import {
@ -691,8 +765,10 @@
], //,
})
const videoList = ref([])
let visible = ref(false)
let batchVisible = ref(false)
let visible = ref(false) //
let picVisible = ref(false) //
let batchVisible = ref(false) //
let batchPicVisible = ref(false) //
const jcssType = ref(router.currentRoute.value.query.type)
const pagination = ref({
total: 0,
@ -884,6 +960,7 @@
tabList.value[0].content.push('无人机')
tabList.value[0].content.push('单兵设备')
}
//
const openVideo = (id) => {
console.log('打开视频', id)
const param = {
@ -895,6 +972,22 @@
options.src = res.data.data
})
}
//
const openPicture = (id) => {
console.log('打开图片', id)
const param = {
channelCode: id,
}
selectByChannelCode(param).then((res) => {
console.log(res)
if (res.data.data && res.data.data[0].picUrl) {
options.src = res.data.data[0].picUrl
picVisible.value = true
} else {
message.warning('该点位暂无预览图片!')
}
})
}
// const dataTypeList = () => {
// if (tabList.value[0].content.indexOf('') != -1) {
// tabList.value[1].content = ['123344', '213124']
@ -1429,6 +1522,7 @@
}
}
}
//
const batchPreview = async function (page) {
if (page.layerX) {
page = 1
@ -1486,6 +1580,39 @@
message.error('请选择需要预览的数据')
}
}
//
const batchPicturePreview = async function (page) {
if (page.layerX) {
page = 1
}
if (selectedList.value.length > 0) {
videoTotal.value = selectedList.value.length
const arr = JSON.parse(JSON.stringify(selectedList.value))
let start = (page - 1) * 4
let list = []
list = arr.splice(start, 4)
const length = list.length
videoList.value = []
for (let index = 0; index < length; index++) {
const param = {
channelCode: list[index].channelId,
}
let ob = {
options: {
src: '', //
},
}
selectByChannelCode(param).then((res) => {
ob.options.src = (res.data.data && res.data.data[0].picUrl) || ''
videoList.value.push(ob)
})
}
console.log('验证数据的准确性', videoList)
batchPicVisible.value = true
} else {
message.error('请选择需要预览的数据')
}
}
//
const nullClick = () => {
clickList.value[1].content = []
@ -2068,8 +2195,8 @@
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
justify-content: center;
// grid-row-gap: 14px;
grid-column-gap: 20px;
grid-row-gap: 10px;
grid-column-gap: 10px;
}
.ant-pagination-item-link {
background-color: #5580f7;

View File

@ -5,373 +5,413 @@
<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 }">
<span>{{ item.name }}</span>
<div
v-for="(item, index) in titleName"
:key="index"
class="tabAll"
@click="changeCards(index)"
:class="{ sel: index == number }"
>
<span>
{{ item.name === '赋能场景' ? '典型赋能场景' : '打包模式' }}
</span>
</div>
</div>
<div class="resultListSearchInput-father">
<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="getAppResources" @change="onSearch" class="resultListSearchInput" />
<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-show="resourceList.data && resourceList.data.length > 0" :key="listKey2"
:resourceList="resourceList" :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>
</div>
</div>
<home-footer></home-footer>
</template>
<script>
import HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus'
import { defineComponent, reactive, ref, toRefs, onMounted, watch } from 'vue'
import HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus'
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'
import searchResultList from '@/views/home/components/searchResultList.vue'
import { message } from 'ant-design-vue'
import { getIntegrationServicesList } from '@/api/home.js'
import { useRouter } from 'vue-router'
import HomeHeader from '@/views/home/components/header'
import searchResultList from '@/views/home/components/searchResultList.vue'
import CanAssignCase from '@/views/home/components/CanAssignCase.vue'
import { message } from 'ant-design-vue'
export default defineComponent({
setup() {
//
const loading = ref(true)
const currentPage = ref(1)
const currentPageSize = ref(5)
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([
{
name: '打包模式',
},
{
name: '赋能场景',
},
])
const number = ref(0)
//
let listKey = ref(0)
//
const listKey2 = ref(0)
//
const paramsGetResources = {
pageNum: 1,
pageSize: currentPageSize.value,
type: titleName.value[number.value].name,
name: '',
orderField: 'create_date', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
const changeCards = (val) => {
console.log(val)
number.value = val
chongzhi()
}
//
const onSearch = () => {
loading.value = true
currentPage.value = 1
}
//
const chongzhi = () => {
loading.value = true
//
searchValue.value = ''
export default defineComponent({
setup() {
//
currentPage.value = 1
currentPageSize.value = 5
//
paramsGetResources.pageNum = 1
paramsGetResources.pageSize = 5
paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC'
mybus.emit('chongzhi', {
type: titleName.value[number.value].name,
})
getAppResources()
}
const getAppResources = () => {
getIntegrationList()
}
//
const getIntegrationList = () => {
loadingData.value = true;
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
const loading = ref(true)
const currentPage = ref(1)
const currentPageSize = ref(5)
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([
{
name: '打包模式',
},
(err) => {
loadingData.value = false;
message.error(err)
}
)
}
{
name: '赋能场景',
},
])
mybus.on('paramsGetResources', (ids) => {
if (ids && ids.length > 0) {
paramsGetResources.deptIds = ids
} else {
delete paramsGetResources.deptIds
const number = ref(0)
//
let listKey = ref(0)
//
const listKey2 = ref(0)
//
const paramsGetResources = {
pageNum: 1,
pageSize: currentPageSize.value,
type: titleName.value[number.value].name,
name: '',
orderField: 'create_date', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
getAppResources()
console.log('paramsGetResources', paramsGetResources)
})
mybus.on('changePage', (page) => {
paramsGetResources.pageNum = page
getAppResources('分页查询')
})
mybus.on('changeSelcted', () => {
getAppResources()
})
mybus.on('refresh', () => {
paramsGetResources.pageNum = 1
currentPage.value = 1
getAppResources()
})
mybus.on('changeCondition', (condition) => {
paramsGetResources.orderField = condition.orderField
paramsGetResources.orderType = condition.orderType
getAppResources()
})
const changeCards = (val) => {
console.log(val)
number.value = val
chongzhi()
}
const pageChange = (val) => {
console.log(val)
loading.value = true
currentPage.value = val
paramsGetResources.pageNum = val
let params = '分页查询' //
getAppResources(params)
}
//
const onSearch = () => {
loading.value = true
currentPage.value = 1
}
//
const chongzhi = () => {
loading.value = true
//
searchValue.value = ''
//
currentPage.value = 1
currentPageSize.value = 5
//
paramsGetResources.pageNum = 1
paramsGetResources.pageSize = 5
paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC'
mybus.emit('chongzhi', {
type: titleName.value[number.value].name,
})
getAppResources()
}
onMounted(() => {
console.log('222----onMounted-------->', 222);
listKey2.value++
getAppResources()
})
const getAppResources = () => {
getIntegrationList()
}
//
const onShowSizeChange = (current, pageSize) => {
currentPage.value = current
currentPageSize.value = pageSize
paramsGetResources.pageNum = current
paramsGetResources.pageSize = pageSize
getAppResources()
}
watch(currentPageSize, () => {
console.log('pageSize', currentPageSize.value)
})
//
const getIntegrationList = () => {
loadingData.value = true
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)
return {
listKey,
searchValue,
currentPage,
resourceList,
resourceTotal,
pageChange,
listKey2,
Cardsname,
getAppResources,
chongzhi,
onSearch,
currentPageSize,
pageSizeOptions,
current,
loading,
titleName,
changeCards,
number,
loadingData,
}
},
components: {
HomeHeader,
HomeFooter,
searchResultList,
},
beforeUnmount() {
mybus.off('paramsGetResources')
mybus.off('changeCondition')
mybus.off('refresh')
mybus.off('changePage')
},
})
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || 0
listKey2.value++
},
(err) => {
loadingData.value = false
message.error(err)
}
)
}
mybus.on('paramsGetResources', (ids) => {
if (ids && ids.length > 0) {
paramsGetResources.deptIds = ids
} else {
delete paramsGetResources.deptIds
}
getAppResources()
console.log('paramsGetResources', paramsGetResources)
})
mybus.on('changePage', (page) => {
paramsGetResources.pageNum = page
getAppResources('分页查询')
})
mybus.on('changeSelcted', () => {
getAppResources()
})
mybus.on('refresh', () => {
paramsGetResources.pageNum = 1
currentPage.value = 1
getAppResources()
})
mybus.on('changeCondition', (condition) => {
paramsGetResources.orderField = condition.orderField
paramsGetResources.orderType = condition.orderType
getAppResources()
})
const pageChange = (val) => {
console.log(val)
loading.value = true
currentPage.value = val
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.pageNum = current
paramsGetResources.pageSize = pageSize
getAppResources()
}
watch(currentPageSize, () => {
console.log('pageSize', currentPageSize.value)
})
return {
listKey,
searchValue,
currentPage,
resourceList,
resourceTotal,
pageChange,
listKey2,
Cardsname,
getAppResources,
chongzhi,
onSearch,
currentPageSize,
pageSizeOptions,
current,
loading,
titleName,
changeCards,
number,
loadingData,
}
},
components: {
HomeHeader,
HomeFooter,
searchResultList,
CanAssignCase,
},
beforeUnmount() {
mybus.off('paramsGetResources')
mybus.off('changeCondition')
mybus.off('refresh')
mybus.off('changePage')
},
})
</script>
<style lang="less" scoped>
.resultListSearchInput-father {
background: #f3f5f9;
padding: 0.2rem;
.resultListSearchInput-father {
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;
// padding-left: 0.2rem;
// padding-top: 0.2rem;
.resultListSearchInput-son {
background: #fff;
padding: 0.2rem 0.2rem 0rem 0.3rem;
.hengxian {
width: 100%;
height: 0.01rem;
background: rgba(150, 144, 144, 0.3);
margin-top: 0.2rem;
.hengxian {
width: 100%;
height: 0.01rem;
background: rgba(150, 144, 144, 0.3);
margin-top: 0.2rem;
}
}
}
}
.resultListSearchInput {
margin-left: 0.1rem;
.resultListSearchInput {
margin-left: 0.1rem;
:deep(.ant-input) {
width: 4rem;
height: 0.36rem;
background: #fff;
border-radius: 0.04rem;
:deep(.ant-input) {
width: 4rem;
height: 0.36rem;
background: #fff;
border-radius: 0.04rem;
}
:deep(.ant-input-search-button) {
width: 0.8rem;
height: 0.36rem;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 0.14rem;
font-weight: 400;
color: #fff;
line-height: 0.34rem;
margin-left: 0.1rem;
}
:deep(.ant-input-group-addon) {
left: 0 !important;
}
}
:deep(.ant-input-search-button) {
.button-reset {
border: 0;
outline: none;
width: 0.8rem;
height: 0.36rem;
background: #0087ff;
border-radius: 0.04rem !important;
background: #e1edfa;
border-radius: 0.04rem;
font-size: 0.14rem;
font-weight: 400;
color: #fff;
color: #0087ff;
line-height: 0.34rem;
margin-left: 0.1rem;
margin-left: 2.5rem;
cursor: pointer;
}
:deep(.ant-input-group-addon) {
left: 0 !important;
}
}
.button-reset {
border: 0;
outline: none;
width: 0.8rem;
height: 0.36rem;
background: #e1edfa;
border-radius: 0.04rem;
font-size: 0.14rem;
font-weight: 400;
color: #0087ff;
line-height: 0.34rem;
margin-left: 2.5rem;
cursor: pointer;
}
.details-pageconetent {
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 0.67rem;
position: relative;
background: rgba(245, 243, 243, 0.3);
.details-pageconetent-left {
max-height: 6.9rem;
position: absolute;
width: 2.5rem;
top: 0.17rem;
left: 2.5rem;
margin-right: 0.17rem;
overflow: auto;
}
.top {
min-height: 7.2rem;
position: relative;
width: 11.5rem;
.details-pageconetent {
height: 100%;
width: 100%;
display: flex;
padding-top: 0.2rem;
flex-direction: column;
font-size: 0.16rem;
justify-content: left;
background: #f3f5f9;
justify-content: center;
align-items: center;
margin-top: 0.67rem;
position: relative;
background: rgba(245, 243, 243, 0.3);
.pagination {
background: #f3f5f9;
padding-bottom: 0.6rem;
.details-pageconetent-left {
max-height: 6.9rem;
position: absolute;
width: 2.5rem;
top: 0.17rem;
left: 2.5rem;
margin-right: 0.17rem;
overflow: auto;
}
.top-title {
padding: 0.2rem;
.top {
min-height: 7.2rem;
position: relative;
width: 11.5rem;
display: flex;
font-size: 18px;
padding-top: 0.2rem;
flex-direction: column;
font-size: 0.16rem;
justify-content: left;
background: #f3f5f9;
.tabAll {
.pagination {
background: #f3f5f9;
padding-bottom: 0.6rem;
}
.top-title {
padding: 0.2rem;
display: flex;
font-size: 18px;
color: #000000;
margin-right: 35px;
cursor: pointer;
}
.tabAll:nth-child(1) {
margin-left: 20px;
}
.tabAll {
font-size: 18px;
color: #000000;
margin-right: 35px;
cursor: pointer;
}
.sel {
font-weight: 600;
color: #0087ff;
border-bottom: 0.02rem solid #0087ff;
.tabAll:nth-child(1) {
margin-left: 20px;
}
.sel {
font-weight: 600;
color: #0087ff;
border-bottom: 0.02rem solid #0087ff;
}
}
}
}
}
:deep(.ant-card-grid) {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
word-break: break-all;
}
:deep(.ant-card-grid) {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
word-break: break-all;
}
</style>

View File

@ -1,7 +1,7 @@
<!-- 融合服务详情 -->
<template>
<div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }">
<home-header></home-header>
<home-header></home-header>
<!-- 头部基本信息 -->
<application-top-details
:dataList="detailInfoObj"
@ -25,17 +25,26 @@
</div>
<!-- 场景痛点 -->
<div
id="integration-pain-point"
class="pain-point scrollBox"
>
<div id="integration-pain-point" class="pain-point scrollBox">
<div class="title-1">
<DetalsTitle title="场景痛点" type="PAIN POINT"></DetalsTitle>
</div>
<div class="flex-row-center">
<div class="bg"></div>
<div class="content">
<div class="content-item" v-for="(item, i) in painPoint" :key="i">{{i+1}}.{{item.description}}</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="
margin-bottom: 0.2rem;
font-size: 0.18rem;
line-height: 0.3rem;
"
>
{{ i + 1 + '、' + item.description }}
</div>
</div>
</div>
</div>
@ -44,70 +53,95 @@
<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">
<div class="content-item" v-for="(item, i) in solution" :key="i">{{i+1}}.{{item.description}}</div>
<div class="content" style="background: #fff; margin-top: 0.2rem">
<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>
</div>
</div>
<!-- 使用能力 -->
<div
id="integration-ability"
class="ability scrollBox"
>
<div id="integration-ability" class="ability scrollBox">
<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">
<div class="title"></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"
>
{{ i == 0 ? '基础设施' : i == 1 ? '组件服务' : '数据资源' }}
</div>
<div class="bottom" style="display: flex; align-items: flex-start">
<div class="title" :class="'title' + i"></div>
<div>
<el-table
class="table"
:data="item.list"
stripe
:header-cell-style="{'text-align': 'center'}">
:header-cell-style="{ 'text-align': 'center' }"
>
<el-table-column
prop="name"
label="数据"
align="center"
width="200"
show-overflow-tooltip="true">
</el-table-column>
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="dept"
label="能力来源"
align="center"
width="300"
show-overflow-tooltip="true">
</el-table-column>
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="platform"
label="申请平台"
align="center"
width="100"
show-overflow-tooltip="true">
</el-table-column>
show-overflow-tooltip="true"
></el-table-column>
</el-table>
</div>
</div>
</div>
</div>
<!-- 构建步骤 -->
<div
id="integration-step"
class="step scrollBox"
>
<div id="integration-step" class="step scrollBox" style="background: #eee">
<div class="title-1">
<DetalsTitle title="构建步骤" type="STEP"></DetalsTitle>
</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>
@ -116,7 +150,7 @@
</template>
<script setup>
import ApplicationTopDetails from '@/views/detailsAll/components/Application/ApplicationTopDetails.vue'
import ApplicationTopDetails from './components/ApplicationTopDetails.vue'
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' //
import HomeFooter from '@/views/newHome/components/Footer'
@ -131,7 +165,8 @@
const domArr = ref([])
const painPoint = ref([])
const solution = ref([])
const step=ref([])
const step = ref([])
const bgImg = ref('')
const id = router.currentRoute.value.query.id
document.documentElement.style.transition = 'all 0.3s ease'
document.documentElement.scrollTop = 0
@ -248,32 +283,75 @@
attrType: '常见问题',
attrValue: questionValue.attrValue || '[]',
}
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) || []
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 = {
attrType: '应用领域',
attrValue: fuseAttrList.find((v) => v.attrType === '应用领域').attrValue,
attrValue: '',
}
combineList.value.forEach((item) => {
let arr = []
let resource=fuseResourceList.filter((v)=>v.resource && v.type == item.title)
if(resource.length>0){
if(item.title==='基础设施'){
arr=resource.map(res=>({
id: res.resource.idtCameraChannel, name: res.resource.channelName, dept: res.resource.nodeName, platform: 'UCS'
let resource = fuseResourceList.filter(
(v) => v.resource && v.type == item.title
)
if (resource.length > 0) {
if (item.title === '基础设施') {
arr = resource.map((res) => ({
id: res.resource.idtCameraChannel,
name: res.resource.channelName,
dept: res.resource.nodeName,
platform: 'UCS',
}))
}else if(item.title==='组件服务'){
arr=resource.map(res=>({
id: res.resource.id, name: res.resource.name, dept: res.resource.deptName, platform: 'UCS'
} else if (item.title === '组件服务') {
arr = resource.map((res) => ({
id: res.resource.id,
name: res.resource.name,
dept: res.resource.deptName,
platform: 'UCS',
}))
}else if(item.title==='数据资源'){
arr=resource.map(res=>({
id: res.resource.zycode, name: res.resource.zyname, dept: res.resource.TGBM, platform: '共享交换平台'
} else if (item.title === '数据资源') {
arr = resource.map((res) => ({
id: res.resource.zycode,
name: res.resource.zyname,
dept: res.resource.TGBM,
platform: '共享交换平台',
}))
}
}
item.list = arr
if (item.title === '数据资源') {
item.list.push({
id: '数据资源1',
name: '城管案件数据',
dept: '市城管局',
platform: '政务信息共享交换网',
})
item.list.push({
id: '数据资源2',
name: '手机信令数据',
dept: '运营商(移动)',
platform: '政务信息共享交换网',
})
item.list.push({
id: '数据资源3',
name: '标准地址数据',
dept: '市自规局',
platform: '政务信息共享交换网',
})
} else {
item.list = arr
}
})
detailInfoObj.value.infoList = []
detailInfoObj.value.infoList.push(questionObj)
@ -461,21 +539,27 @@
padding: 0.8rem 0;
background: rgb(247, 248, 250);
.bg {
height: 3rem;
width: 3rem;
background: url('~@/assets/home/rhfw_square.png') no-repeat;
background-size: 100%;
margin-top: 0.3rem;
height: 3rem;
width: 3rem;
// background: url('~@/assets/home/rhfw_square.png') no-repeat;
// 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: 6rem;
margin-top: 0.3rem;
.content-item {
font-size: 16px;
margin: 0rem 0rem 0.1rem 0.1rem;
}
overflow: auto;
height: 3rem;
width: 7rem;
margin-top: 0.3rem;
.content-item {
font-size: 16px;
margin: 0rem 0rem 0.1rem 0.1rem;
}
}
}
@ -483,11 +567,11 @@
padding: 0.8rem 0;
background: rgb(247, 248, 250);
.content {
width: 9rem;
.content-item {
font-size: 16px;
margin: 0.3rem;
}
width: 11rem;
.content-item {
font-size: 16px;
margin: 0.3rem;
}
}
}
@ -495,9 +579,16 @@
padding: 0.8rem 0;
background: rgb(247, 248, 250);
.step-content {
margin-top: 0.3rem;
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: 16px;
font-size: 18px;
}
/deep/ .el-step__description {
font-size: 14px;
@ -516,6 +607,9 @@
.combine-content {
margin-top: 0.3rem;
align-items: flex-start;
border-bottom: 1px solid #ccc;
margin: 0.2rem 4rem 0;
padding: 0.2rem 0;
.title {
height: 3rem;
width: 3rem;
@ -523,12 +617,29 @@
background: url('~@/assets/home/rhfw_square.png') no-repeat;
background-size: 100%;
}
.title0 {
width: 5.6rem;
height: 3.45rem;
background: url('~@/assets/home/fn/jcss.png') no-repeat;
background-size: 100%;
}
.title1 {
width: 5.6rem;
height: 3.45rem;
background: url('~@/assets/home/fn/zjfw.png') no-repeat;
background-size: 100%;
}
.title2 {
width: 5.6rem;
height: 3.45rem;
background: url('~@/assets/home/fn/sjzy.png') no-repeat;
background-size: 100%;
}
.table {
width: 100%;
font-size: 16px
font-size: 16px;
}
}
.name-box {
display: flex;
flex-direction: row;