合并版本v0.8.7.2

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

View File

@ -486,7 +486,7 @@ $--cascader-tag-background: #f0f2f5;
/* Group /* 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-offset-bottom: 12px !default;
$--group-option-fill-hover: rgba($--color-black, 0.06) !default; $--group-option-fill-hover: rgba($--color-black, 0.06) !default;
$--group-title-color: $--color-black !default; $--group-title-color: $--color-black !default;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -86,7 +86,8 @@ export default {
getResourceByDept () { getResourceByDept () {
const data = { const data = {
limit: 5, limit: 5,
page: 1 page: 1,
name: ''
} }
this.loadingDynamic = true this.loadingDynamic = true
Apis.getResourceByDept( 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> <template>
<div class="center-view"> <div class="center-view">
<!-- 频率 --> <!-- 频率 -->
@ -14,7 +21,7 @@ import RiskView from './risk-view.vue'
import TrendView from './trend-view.vue' import TrendView from './trend-view.vue'
export default { export default {
components: { frequencyTop5View, TrendView, RiskView }, components: { frequencyTop5View, TrendView, RiskView }
} }
</script> </script>

View File

@ -8,185 +8,185 @@
</template> </template>
<script> <script>
import * as echarts from 'echarts'; import * as echarts from 'echarts'
export default { export default {
data() { data () {
return { return {
dataListCopy: [], dataListCopy: [],
myChart: null, 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);
}
} }
},
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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

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

View File

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

View File

@ -91,19 +91,27 @@ export default {
// if (res.data.code !== 0) { // if (res.data.code !== 0) {
// return // return
// } // }
this.data = res.data.data[0].values if (res.data.data && res.data.data.length > 0) {
this.data.map((item) => { this.data = res.data.data[0].values
const time = moment(item[0] * 1000).format('YYYY-MM-DD') this.data.map((item) => {
this.ydata.map((itemSon, indexSon) => { const time = moment(item[0] * 1000).format('YYYY-MM-DD')
if (itemSon === time) { this.ydata.map((itemSon, indexSon) => {
this.xaxis[indexSon] = parseInt(item[1]) if (itemSon === time) {
} this.xaxis[indexSon] = parseInt(item[1])
}
})
}) })
}) this.trendChartData = {
this.trendChartData = { xaxis: this.ydata,
xaxis: this.ydata, ydata: this.xaxis
ydata: this.xaxis }
} else {
this.trendChartData = {
xaxis: [],
ydata: []
}
} }
this.$nextTick(() => { this.$nextTick(() => {
trendLineChart('trendId', this.trendChartData) 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' import * as Apis from './api.js'
export default { export default {
components: { components: {
deptTodoView, deptTodoView,
BottomView, BottomView,
CenterView, CenterView,
DeptChartView, DeptChartView
}, },
data() { data () {
return { return {
// //
toToData: { toToData: {
color: '#f86f01', color: '#f86f01',
imgSrc: require('@/assets/img/workBench/todo.png'), imgSrc: require('@/assets/img/workBench/todo.png'),
bgColor: 'rgba(228,138,1,0.12)', bgColor: 'rgba(228,138,1,0.12)',
borderColor: 'rgba(250,123,12,0.54)', borderColor: 'rgba(250,123,12,0.54)',
textColor: '#f86f01', textColor: '#f86f01',
num: 0, num: 0,
list: [], list: [],
type: 'todo', type: 'todo',
url: 'activiti-my-todo-task' url: 'activiti-my-todo-task'
}, },
// //
hasToDodoData: { hasToDodoData: {
noMarginleft: true, noMarginleft: true,
color: '#21b107', color: '#21b107',
imgSrc: require('@/assets/img/workBench/hasToDo.png'), imgSrc: require('@/assets/img/workBench/hasToDo.png'),
bgColor: 'rgba(37,165,13,0.12)', bgColor: 'rgba(37,165,13,0.12)',
borderColor: 'rgba(49,194,20,0.54)', borderColor: 'rgba(49,194,20,0.54)',
textColor: '#21b107', textColor: '#21b107',
num: 0, num: 0,
list: [], list: [],
url: 'activiti-my-join-task' url: 'activiti-my-join-task'
}, },
// //
resourceData: [], resourceData: [],
resourceColor: ['#7b2cff', '#fd5151', , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'], resourceColor: ['#7b2cff', '#fd5151', , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
// //
applyData: [], applyData: [],
applyColor: ["#5085f2", "#e75fc3", "#f87be2", "#f2719a", "#fca4bb", "#f59a8f", "#fdb301", "#57e7ec", "#cf9ef1"], applyColor: ['#5085f2', '#e75fc3', '#f87be2', '#f2719a', '#fca4bb', '#f59a8f', '#fdb301', '#57e7ec', '#cf9ef1'],
// //
requireData: [], requireData: [],
requireColor: ['#FD866A', '#9E87FF', '#58D5FF', '#73DDFF', '#73ACFF', '#FDD56A', '#FDB36A',], requireColor: ['#FD866A', '#9E87FF', '#58D5FF', '#73DDFF', '#73ACFF', '#FDD56A', '#FDB36A'],
loadingToDo: false, loadingToDo: false,
loadingHasToDo: false, loadingHasToDo: false,
loadingResource: false, loadingResource: false,
loadingApply: false, loadingApply: false,
loadingRequire: 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() { //
// getHasToDo () {
this.getToDo() const data = {
// limit: 5,
this.getHasToDo() page: 1
// }
this.getShelvesTotal() this.loadingHasToDo = true
// Apis.getHasToDoTask(data, res => {
this.getApplyTotal() this.loadingHasToDo = false
// if (res.data.code !== 0) {
this.getRequireTotal() 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: { //
// getShelvesTotal () {
getToDo() { this.loadingResource = true
this.loadingToDo = true; Apis.getTotalByDept({}, res => {
let data = { this.loadingResource = false
limit: 5, if (res.data.code !== 0) {
page: 1, return this.$message.error(res.data.msg)
} }
Apis.getToDoTask(data, res => { console.log('res----部门上架-------->', res.data)
this.loadingToDo = false; this.resourceData = this.formatList(res.data.data.total || [])
if (res.data.code !== 0) { this.$nextTick(() => {
return this.$message.error(res.data.msg) this.$refs.resourceChart.initChart(this.resourceData)
} })
console.log('res----待办-------->', res.data); }, err => {
this.toToData.list = res.data.data.records || [] this.$message.error(err)
this.toToData.num = res.data.data.total || 0 this.loadingResource = false
}, 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;
})
},
}, },
//
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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.margin-h-16 { .margin-h-16 {
margin: 0 16px; margin: 0 16px;

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25 * @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 16:38:21 * @LastEditTime: 2022-08-29 09:55:26
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!DOCTYPE html> <!DOCTYPE html>
@ -26,47 +26,6 @@
<link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" /> <link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" />
<script> <script>
</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/libs/leaflet/1.3.1/leaflet.css" rel="stylesheet">
<link href="./leaflet/dist/leaflet/iclient-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"> <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="./leaflet/libs/leaflet.markercluster/dist/MarkerCluster.Default.css" rel="stylesheet">
<link href="./supermap/css/supermap.css" rel="stylesheet"> <link href="./supermap/css/supermap.css" rel="stylesheet">
<link href="./static/css/widgets.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/basicConfig.js"></script>
<script type="text/javascript" src="./static/config/mapConfig.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="./static/config/location.js"></script>
<!-- ==========地图相关配置========== --> <!-- ==========地图相关配置========== -->
<script type="text/javascript" src="./leaflet/libs/leaflet/1.3.1/leaflet.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/encrypt.js"></script>
<script type="text/javascript" src="./static/js/DHWs.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> </head>
<body> <body>

View File

@ -2,55 +2,95 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-04-01 10:51:45 * @LastEditTime: 2022-08-27 14:25:54
* @Description: 系统静态参数配置 * @Description: 系统静态参数配置
*/ */
var _global = {} var _global = {}
var CONFIGITEM = { var CONFIGITEM = {
version: 'qingdao', version: 'qingdao', //
//version: 'xihaian', // 西
//version: 'dev', //
//version: 'test', //
//version: 'frp', // 穿
vNum: 'v0.8.7.2',
configData: { configData: {
//
qingdao: { 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: { loginInfo: {
// //
// loginIp: '10.132.191.3',
loginPort: '8320',
// userName: 'chengshiyunnao',
// userPwd: 'QDyjj@2021',
loginIp: '10.132.191.3', loginIp: '10.132.191.3',
loginPort: '8320',
userName: 'ynszdz', userName: 'ynszdz',
userPwd: 'Admin@123', 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, backUrl: 'http://15.72.183.90:8001',
maxMapZoom: 10 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] _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 * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 16:38:39 * @LastEditTime: 2022-08-29 09:55:56
* @Description: 数据资源参数配置 * @Description: 数据资源参数配置
*/ */
//const newLocation = 'qingdao' // eslint-disable-next-line no-undef
const newLocation = CONFIGITEM.version
// const newLocation = 'baotou' // const newLocation = 'baotou'
const newLocation = 'qingdao' // const newLocation = 'xihaian'
// //
const whoShow = {} const whoShow = {}
@ -23,7 +24,7 @@ const mapTestNum = {}
// //
const footerDataList = {} const footerDataList = {}
// qingdao // qingdao
if (newLocation === 'qingdao') { if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
whoShow.itShowQingDao = true whoShow.itShowQingDao = true
infrastructure.deptName = '青岛市大数据发展管理局' infrastructure.deptName = '青岛市大数据发展管理局'
infrastructure.deptId = '1067246875800000066' infrastructure.deptId = '1067246875800000066'
@ -38,8 +39,8 @@ if (newLocation === 'qingdao') {
// { name: '', key: 'personalCenter' }, // { name: '', key: 'personalCenter' },
{ name: '区市站点', key: 'mapTest' }, { name: '区市站点', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' }, // { name: '', key: 'houtaiguanli' },
{ name: '典型赋能案例', key: 'assignCase' }, // { name: '', key: 'assignCase' },
// { name: '', key: 'integrationServices' }, { name: '融合服务', key: 'integrationServices' },
{ name: 'CIM专区', key: 'cimSpecialArea' }, { name: 'CIM专区', key: 'cimSpecialArea' },
] ]
footerDataList.footerList = { footerDataList.footerList = {
@ -502,7 +503,8 @@ else if (newLocation === 'xihaian') {
footerDataList.footerList = { footerDataList.footerList = {
company: { company: {
left: '青岛西海岸新区大数据发展促进局建设', left: '青岛西海岸新区大数据发展促进局建设',
right: 'v0.8.3.3', // eslint-disable-next-line no-undef
right: CONFIGITEM.vNum,
}, },
address: [ address: [
{ {

View File

@ -2,21 +2,21 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 18:19:32 * @LastEditTime: 2022-08-25 11:16:44
* @Description: 地图静态参数配置 * @Description: 地图静态参数配置
*/ */
var _mapConfig = {} var _mapConfig = {}
;(function () { ;(function () {
var L = window.L || {} 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 CONFIGKEY = 'dev';
// *********************************************** // ***********************************************
var BASECONFIGITEM = { var BASECONFIGITEM = {
qingdao: { xihaian: {
base: 'xihaian', base: 'xihaian',
CURRENT_MAP_OPTIONS: { CURRENT_MAP_OPTIONS: {
// crs: CRS_4490, // crs: CRS_4490,
@ -26,7 +26,7 @@ var _mapConfig = {}
zoom: 10, zoom: 10,
}, },
}, },
qingdao_highgo: { qingdao: {
DATABASE_TYPE: 'Highgo', DATABASE_TYPE: 'Highgo',
POI_TYPE: 'Supermap', // POI 'Supermap''Amap''Survey_Institute' POI_TYPE: 'Supermap', // POI 'Supermap''Amap''Survey_Institute'
ISERVER_URL: '15.2.21.238:8090', ISERVER_URL: '15.2.21.238:8090',
@ -78,59 +78,6 @@ var _mapConfig = {}
icon: 'other_map.png', 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 = { var MAPCONFIGMIXTRE = {
CURRENT_SERVER_NAME: CONFIGKEY, CURRENT_SERVER_NAME: CONFIGKEY,

View File

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

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-20 17:16:35 * @Date: 2022-04-20 17:16:35
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-11 19:02:33 * @LastEditTime: 2022-08-25 14:13:30
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -61,11 +61,11 @@ export function count() {
export function getVideoList(params) { export function getVideoList(params) {
return axios.get( return axios.get(
'http://10.134.135.9:8001/hx-weather-warning/camera/getCameraListByName?name=' + 'http://10.134.135.9:8001/hx-weather-warning/camera/getCameraListByName?name=' +
params.name + params.name +
'&pageNo=' + '&pageNo=' +
params.pageNo + params.pageNo +
'&pageSize=' + '&pageSize=' +
params.pageSize, params.pageSize,
config2 config2
) )
} }
@ -73,17 +73,17 @@ export function getVideoList(params) {
export function getRecord(params) { export function getRecord(params) {
return axios.get( return axios.get(
'http://10.134.135.24:30090/api/share-portal/platform/catalogue/query?serviceName=' + 'http://10.134.135.24:30090/api/share-portal/platform/catalogue/query?serviceName=' +
params.serviceName + params.serviceName +
'&orderField=' + '&orderField=' +
params.orderField + params.orderField +
'&orderType=' + '&orderType=' +
params.orderType + params.orderType +
'&pageNum=' + '&pageNum=' +
params.pageNum + params.pageNum +
'&pageSize=' + '&pageSize=' +
params.pageSize + params.pageSize +
'&serviceType=' + '&serviceType=' +
params.serviceType, params.serviceType,
config2 config2
) )
} }
@ -91,9 +91,9 @@ export function getRecord(params) {
export function getHls(params) { export function getHls(params) {
return axios.get( return axios.get(
'http://10.134.135.9:8001/hx-weather-warning/camera/getCameraLiveStreamByCode?cameraCode=' + 'http://10.134.135.9:8001/hx-weather-warning/camera/getCameraLiveStreamByCode?cameraCode=' +
params.cameraId + params.cameraId +
'&protocol=' + '&protocol=' +
params.protocol, params.protocol,
config2 config2
) )
} }
@ -101,14 +101,15 @@ export function getHls(params) {
export function getCameraInfoByAreaId(params) { export function getCameraInfoByAreaId(params) {
return axios.get( return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=' + 'http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=' +
params.areaId, params.areaId,
config2 config2
) )
} }
//- //-
export function getCameraByCondition(params) { export function getCameraByCondition(params) {
return axios.get( 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 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); // console.log('', result);
// }); // });
switch (_mapConfig.config.CURRENT_SERVER_NAME) { switch (_mapConfig.config.CURRENT_SERVER_NAME) {
case 'qingdao_highgo': case 'qingdao':
if (type === 'tiled') { if (type === 'tiled') {
tileMapUrl = _mapConfig.config.TITLE_LAYER.mapUrl tileMapUrl = _mapConfig.config.TITLE_LAYER.mapUrl
} else if (type === 'remote') { } else if (type === 'remote') {
@ -144,7 +144,7 @@ export function HieimpMap() {
} }
renderMapFun(mapId, tileMapUrl, centerPoint) renderMapFun(mapId, tileMapUrl, centerPoint)
break break
case 'qingdao': case 'xihaian':
const tileMap = L.map(mapId, { const tileMap = L.map(mapId, {
crs: L.CRS.EPSG4326, crs: L.CRS.EPSG4326,
// renderer: L.svg(), // renderer: L.svg(),

View File

@ -1,13 +1,14 @@
/* /*
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-08-22 18:22:16 * @Date: 2022-08-22 18:22:16
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 09:31:02 * @LastEditTime: 2022-08-25 21:05:32
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
const returnLocationStr = () => { const returnLocationStr = () => {
return 'qingdao' // eslint-disable-next-line no-undef
return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao1'
} }
export default returnLocationStr 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="banner"></div>
<div class="mainBox"> <div class="mainBox">
<div class="top"> <div class="top">
<h1>典型赋能案例</h1> <h1 v-if="whoShow1 && whoShow1.itShowQingDao">典型赋能案例</h1>
<h1 v-else>赋能案例</h1>
<div></div> <div></div>
<!-- <h3>Enabling Cases</h3> --> <!-- <h3>Enabling Cases</h3> -->
</div> </div>
@ -86,7 +87,7 @@
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
// import { pinyin } from 'pinyin-pro' // import { pinyin } from 'pinyin-pro'
// import { Empty } from 'ant-design-vue' // import { Empty } from 'ant-design-vue'
const whoShow1 = ref(whoShow)
const router = useRouter() const router = useRouter()
const listBg = ref('') const listBg = ref('')
const contenBox = ref([]) const contenBox = ref([])

View File

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

View File

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

View File

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

View File

@ -8,13 +8,11 @@
></DetalsTitle> ></DetalsTitle>
</div> </div>
<!-- 青岛市局 --> <!-- 青岛市局 -->
<div v-if="whoShow1 && whoShow1.itShowQingDao"> <div
<div v-if="whoShow1 && whoShow1.itShowQingDao"
class="content" style="width: 100%; display: flex; justify-content: center"
v-for="item in dataFrom.content" >
:key="item.title" <div class="content" v-for="item in dataFrom.content" :key="item.title">
v-show="approveStatus == '通过'"
>
<div class="content-left" v-if="item.titleType === '调用接口'"> <div class="content-left" v-if="item.titleType === '调用接口'">
<div class="left"> <div class="left">
<div class="content-left-title"> <div class="content-left-title">
@ -24,8 +22,16 @@
<p> <p>
<span>{{ item.link.name }}</span> <span>{{ item.link.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.link.value }}</template> <template #title>
<span>{{ item.link.value }}</span> {{
approveStatus === '通过'
? item.link.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.link.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
<p> <p>
@ -91,15 +97,31 @@
<p> <p>
<span>{{ item.people.name }}</span> <span>{{ item.people.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.people.value }}</template> <template #title>
<span>{{ item.people.value }}</span> {{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.people.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
<p> <p>
<span>{{ item.phone.name }}</span> <span>{{ item.phone.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.phone.value }}</template> <template #title>
<span>{{ item.phone.value }}</span> {{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
</div> </div>
@ -132,9 +154,13 @@
</div> </div>
</div> </div>
</div> </div>
<div v-show="approveStatus !== '通过'" class="contentOther"> <!-- <div v-show="approveStatus !== '通过'" class="contentOther">
请申请后查看 <img src="~@/assets/detailsAll/uesBefore.png" />
</div> <div class="contentOtherRight">
<p>请在申请能力后返回查看使用方式</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div> </div>
<!-- 其他 --> <!-- 其他 -->
<div v-else> <div v-else>
@ -265,6 +291,9 @@
import { pinyin } from 'pinyin-pro' import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({
@ -310,6 +339,34 @@
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const flag = ref(true) 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) { if (props.dataList.infoList) {
let obj = true let obj = true
if (!obj) { if (!obj) {
@ -451,7 +508,9 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding: 0.8rem 0; padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content { .content {
margin-top: 0.3rem; margin-top: 0.3rem;
display: flex; display: flex;
@ -583,9 +642,37 @@
} }
} }
.contentOther { .contentOther {
width: 100%; width: 80%;
height: 0.3rem; height: 4rem;
background: pink; 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> </style>

View File

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

View File

@ -7,8 +7,12 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </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 <div
v-for="(item, index) in dataFrom.content" v-for="(item, index) in dataFrom.content"
:key="index" :key="index"
@ -19,7 +23,17 @@
<div v-for="carditem in item.childrenContent" :key="carditem"> <div v-for="carditem in item.childrenContent" :key="carditem">
<div style="display: flex"> <div style="display: flex">
<span>{{ carditem.attrType }}</span> <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> <template #title>{{ carditem.attrValue }}</template>
<span>{{ carditem.attrValue }}</span> <span>{{ carditem.attrValue }}</span>
</a-tooltip> </a-tooltip>
@ -28,8 +42,15 @@
</div> </div>
</div> </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>
<!-- 其他 -->
<div v-else> <div v-else>
<div class="content"> <div class="content">
<div <div
@ -58,6 +79,8 @@
<script setup> <script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({
@ -79,6 +102,34 @@
const props = defineProps({ const props = defineProps({
dataList: { type: Object, default: null }, 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) { if (props.dataList.infoList) {
let obj = { let obj = {
attrType: '归属部门', attrType: '归属部门',
@ -206,7 +257,9 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.word-filter {
filter: blur(4px);
}
.title { .title {
margin-bottom: 0.3rem; margin-bottom: 0.3rem;
} }
@ -220,10 +273,13 @@
height: 1.5rem; height: 1.5rem;
width: 6.2rem; width: 6.2rem;
border-radius: 0.2rem; border-radius: 0.2rem;
background: url('~@/assets/detailsAll/business/business_usage_mode_bg.png') background: linear-gradient(
no-repeat; to right,
background-position: center; rgba(113, 132, 252, 0.4),
background-size: 100% 100%; rgba(148, 163, 252, 0.4)
);
// background-position: center;
// background-size: 100% 100%;
padding: 0 0.3rem; padding: 0 0.3rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -257,11 +313,11 @@
span:last-child { span:last-child {
display: block; display: block;
width: 2.3rem; width: 2.3rem;
overflow: hidden; // overflow: hidden;
text-overflow: ellipsis; // text-overflow: ellipsis;
-webkit-box-orient: vertical; // -webkit-box-orient: vertical;
-webkit-line-clamp: 1; // -webkit-line-clamp: 1;
word-break: break-all; // 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> </style>

View File

@ -7,13 +7,11 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div v-if="whoShow1 && whoShow1.itShowQingDao"> <div
<div v-if="whoShow1 && whoShow1.itShowQingDao"
class="content" style="width: 100%; display: flex; justify-content: center"
v-for="item in dataFrom.content" >
:key="item.title" <div class="content" v-for="item in dataFrom.content" :key="item.title">
v-show="approveStatus == '通过'"
>
<div class="content-left"> <div class="content-left">
<div class="left"> <div class="left">
<div class="content-left-title"> <div class="content-left-title">
@ -23,8 +21,14 @@
<p> <p>
<span>{{ item.link.name }}</span> <span>{{ item.link.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.linkValue }}</template> <template #title>
<span>{{ item.linkValue }}</span> {{
approveStatus === '通过' ? item.linkValue : '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.linkValue }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
</div> </div>
@ -48,15 +52,31 @@
<p> <p>
<span>{{ item.people.name }}</span> <span>{{ item.people.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.people.value }}</template> <template #title>
<span>{{ item.people.value }}</span> {{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.people.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
<p> <p>
<span>{{ item.phone.name }}</span> <span>{{ item.phone.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.phone.value }}</template> <template #title>
<span>{{ item.phone.value }}</span> {{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
</div> </div>
@ -89,7 +109,13 @@
</div> </div>
</div> </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>
<div v-else> <div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
@ -177,6 +203,8 @@
import { pinyin } from 'pinyin-pro' import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({
@ -211,6 +239,34 @@
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const flag = ref(true) 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) { if (props.dataList.infoList) {
let obj = true let obj = true
if (!obj) { if (!obj) {
@ -320,7 +376,9 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding: 0.8rem 0; padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content { .content {
margin-top: 0.3rem; margin-top: 0.3rem;
display: flex; 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> </style>

View File

@ -7,14 +7,21 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div v-if="whoShow1 && whoShow1.itShowQingDao"> <div
<div class="content" v-show="approveStatus == '通过'"> v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
>
<div class="content">
<div class="content-card"> <div class="content-card">
<div class="left"> <div class="left">
<p>{{ dataFrom.linkName }}</p> <p>{{ dataFrom.linkName }}</p>
<a-tooltip> <a-tooltip>
<template #title>{{ dataFrom.link }}</template> <template #title>
<p>{{ dataFrom.link }}</p> {{ approveStatus === '通过' ? dataFrom.link : '请申请后查看' }}
</template>
<p :class="{ 'blur-word': approveStatus !== '通过' }">
{{ dataFrom.link }}
</p>
</a-tooltip> </a-tooltip>
</div> </div>
<div class="right"> <div class="right">
@ -32,8 +39,25 @@
<div> <div>
<span>{{ carditem.attrType }}</span> <span>{{ carditem.attrType }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ carditem.attrValue }}</template> <template #title>
<span>{{ carditem.attrValue }}</span> {{
approveStatus !== '通过' &&
(carditem.attrType === '部门联系人' ||
carditem.attrType === '联系人电话')
? '请申请后查看'
: carditem.attrValue
}}
</template>
<span
:class="{
'blur-word':
approveStatus !== '通过' &&
(carditem.attrType === '部门联系人' ||
carditem.attrType === '联系人电话'),
}"
>
{{ carditem.attrValue }}
</span>
</a-tooltip> </a-tooltip>
</div> </div>
</div> </div>
@ -41,7 +65,13 @@
</div> </div>
</div> </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>
<div v-else> <div v-else>
<div class="content"> <div class="content">
@ -86,6 +116,8 @@
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { pinyin } from 'pinyin-pro' import { pinyin } from 'pinyin-pro'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let flag = ref(true) let flag = ref(true)
@ -136,6 +168,34 @@
const props = defineProps({ const props = defineProps({
dataList: { type: Object, default: null }, 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) { if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter( let obj = props.dataList.infoList.filter(
(item) => item.attrType === '组件地址' (item) => item.attrType === '组件地址'
@ -255,6 +315,9 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.blur-word {
filter: blur(4px);
}
.title { .title {
margin-bottom: 0.3rem; 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> </style>

View File

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

View File

@ -7,31 +7,40 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div v-if="whoShow1 && whoShow1.itShowQingDao"> <div
<div v-if="whoShow1 && whoShow1.itShowQingDao"
class="content" style="width: 100%; display: flex; justify-content: center"
v-for="item in dataFrom.content" >
:key="item.title" <div class="content" v-for="item in dataFrom.content" :key="item.title">
v-show="approveStatus == '通过'"
>
<div class="content-left"> <div class="content-left">
<div class="left"> <div class="left">
<a-tooltip> <a-tooltip>
<template #title>{{ item.linkValue }}</template> <template #title>
{{ approveStatus === '通过' ? item.linkValue : '请申请后查看' }}
</template>
<p @click="ServiceAddressFunction(item.linkValue)"> <p @click="ServiceAddressFunction(item.linkValue)">
服务地址 <span>服务地址</span>
{{ item.linkValue }} <span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.linkValue }}
</span>
</p> </p>
</a-tooltip> </a-tooltip>
<a-tooltip> <a-tooltip>
<template #title>{{ item.csslinkValue }}</template> <template #title>
{{
approveStatus === '通过' ? item.csslinkValue : '请申请后查看'
}}
</template>
<p @click="ServiceAddressFunction(item.csslinkValue)"> <p @click="ServiceAddressFunction(item.csslinkValue)">
样式服务地址 <span>样式服务地址</span>
{{ item.csslinkValue }} <span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.csslinkValue }}
</span>
</p> </p>
</a-tooltip> </a-tooltip>
</div> </div>
<div class="right"> <div class="right" v-show="approveStatus === '通过'">
<div @click="technical()">技术文档</div> <div @click="technical()">技术文档</div>
<div @click="technicalNew()">新手指引</div> <div @click="technicalNew()">新手指引</div>
</div> </div>
@ -43,22 +52,42 @@
<p> <p>
<span>{{ item.facilitator.name }}</span> <span>{{ item.facilitator.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.facilitator.value }}</template> <template #title>
<span>{{ item.facilitator.value }}</span> {{ item.facilitator.value }}
</template>
<span>
{{ item.facilitator.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
<p> <p>
<span>{{ item.people.name }}</span> <span>{{ item.people.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.people.value }}</template> <template #title>
<span>{{ item.people.value }}</span> {{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.people.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
<p> <p>
<span>{{ item.phone.name }}</span> <span>{{ item.phone.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.phone.value }}</template> <template #title>
<span>{{ item.phone.value }}</span> {{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip> </a-tooltip>
</p> </p>
</div> </div>
@ -91,7 +120,13 @@
</div> </div>
</div> </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>
<div v-else> <div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
@ -181,6 +216,8 @@
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { pinyin } from 'pinyin-pro' import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({
@ -217,6 +254,34 @@
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const flag = ref(true) 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) { if (props.dataList.infoList) {
let obj = true let obj = true
if (!obj) { if (!obj) {
@ -279,7 +344,9 @@
) )
// //
function ServiceAddressFunction(link) { function ServiceAddressFunction(link) {
window.open(link) if (link && approveStatus.value === '通过') {
window.open(link)
}
} }
function technical() { function technical() {
// //
@ -334,7 +401,9 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding: 0.8rem 0; padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content { .content {
margin-top: 0.3rem; margin-top: 0.3rem;
display: flex; 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> </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"> <div class="header">
<span style="display: flex; align-items: center; width: 680px"> <span style="display: flex; align-items: center; width: 680px">
{{ item.name }} {{ item.name }}
<!-- 已申请--通过 -->
<svg <svg
t="1652322568870" t="1652322568870"
class="icon" class="icon"
@ -145,7 +146,9 @@
p-id="3062" p-id="3062"
width="40" width="40"
height="40" height="40"
v-if="item.applyState == '通过'" v-if="
item.applyState == '已申请' && item.approveStatus == '通过'
"
style="margin-left: 10px; min-width: 40px" style="margin-left: 10px; min-width: 40px"
> >
<path <path
@ -164,7 +167,8 @@
p-id="3065" p-id="3065"
></path> ></path>
</svg> </svg>
<svg <!-- 审核中 -->
<!-- <svg
t="1652322568870" t="1652322568870"
class="icon" class="icon"
viewBox="0 0 3072 1024" viewBox="0 0 3072 1024"
@ -173,7 +177,9 @@
p-id="3062" p-id="3062"
width="40" width="40"
height="40" height="40"
v-if="item.applyState == '审核中'" v-if="
item.applyState == '已申请' && item.approveStatus == '审核中'
"
style="margin-left: 10px; min-width: 40px" style="margin-left: 10px; min-width: 40px"
> >
<path <path
@ -188,7 +194,9 @@
></path> ></path>
</svg> </svg>
<span <span
v-if="item.applyState == '审核中'" v-if="
item.applyState == '已申请' && item.approveStatus == '审核中'
"
style=" style="
font-size: 12px; font-size: 12px;
-webkit-transform: scale(0.75); -webkit-transform: scale(0.75);
@ -200,7 +208,7 @@
" "
> >
审核中 审核中
</span> </span> -->
</span> </span>
<div class="header-right"> <div class="header-right">
<div <div

View File

@ -93,7 +93,7 @@
</a-space> </a-space>
</div> </div>
</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"> <div class="leftImg">
<img <img
:src=" :src="
@ -438,7 +438,21 @@
</div> </div>
<i class="boundary"></i> <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> </a-button>
<!-- 添加至申购车 --> <!-- 添加至申购车 -->
@ -474,6 +488,7 @@
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'operation'"> <template v-if="column.dataIndex === 'operation'">
<a <a
v-if="isXiHaiAn"
@click=" @click="
openVideo( openVideo(
record.channelCode || record.channelCode ||
@ -484,6 +499,18 @@
> >
预览 预览
</a> </a>
<a
v-else
@click="
openPicture(
record.channelCode ||
record.channelId ||
record.channelCode.channelId
)
"
>
预览
</a>
</template> </template>
</template> </template>
</a-table> </a-table>
@ -532,7 +559,53 @@
</div> </div>
</div> </div>
</a-modal> </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 <a-modal
wrapClassName="batch-preview-modal" wrapClassName="batch-preview-modal"
v-model:visible="batchVisible" v-model:visible="batchVisible"
@ -641,6 +714,7 @@
getCameraByParentId, getCameraByParentId,
getStreamByChannelCode, getStreamByChannelCode,
getCameraAllLabel, getCameraAllLabel,
selectByChannelCode,
} from '@/api/videoSurveillance' } from '@/api/videoSurveillance'
import { getCameraByCondition } from '@/api/file' import { getCameraByCondition } from '@/api/file'
import { import {
@ -691,8 +765,10 @@
], //, ], //,
}) })
const videoList = ref([]) const videoList = ref([])
let visible = ref(false) let visible = ref(false) //
let batchVisible = ref(false) let picVisible = ref(false) //
let batchVisible = ref(false) //
let batchPicVisible = ref(false) //
const jcssType = ref(router.currentRoute.value.query.type) const jcssType = ref(router.currentRoute.value.query.type)
const pagination = ref({ const pagination = ref({
total: 0, total: 0,
@ -884,6 +960,7 @@
tabList.value[0].content.push('无人机') tabList.value[0].content.push('无人机')
tabList.value[0].content.push('单兵设备') tabList.value[0].content.push('单兵设备')
} }
//
const openVideo = (id) => { const openVideo = (id) => {
console.log('打开视频', id) console.log('打开视频', id)
const param = { const param = {
@ -895,6 +972,22 @@
options.src = res.data.data 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 = () => { // const dataTypeList = () => {
// if (tabList.value[0].content.indexOf('') != -1) { // if (tabList.value[0].content.indexOf('') != -1) {
// tabList.value[1].content = ['123344', '213124'] // tabList.value[1].content = ['123344', '213124']
@ -1429,6 +1522,7 @@
} }
} }
} }
//
const batchPreview = async function (page) { const batchPreview = async function (page) {
if (page.layerX) { if (page.layerX) {
page = 1 page = 1
@ -1486,6 +1580,39 @@
message.error('请选择需要预览的数据') 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 = () => { const nullClick = () => {
clickList.value[1].content = [] clickList.value[1].content = []
@ -2068,8 +2195,8 @@
grid-template-columns: 50% 50%; grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%; grid-template-rows: 50% 50%;
justify-content: center; justify-content: center;
// grid-row-gap: 14px; grid-row-gap: 10px;
grid-column-gap: 20px; grid-column-gap: 10px;
} }
.ant-pagination-item-link { .ant-pagination-item-link {
background-color: #5580f7; background-color: #5580f7;

View File

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

View File

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