Merge branch 'hi-ucs-dev' into release
This commit is contained in:
commit
6736a8d434
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-04-11 10:11:40
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-08-29 09:54:59
|
||||
* @LastEditTime: 2022-12-29 17:34:35
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
|
@ -39,7 +39,8 @@
|
|||
window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl;
|
||||
window.SITE_CONFIG['apiURL'] = _global.config.apiURL;
|
||||
// WebSocket地址
|
||||
window.SITE_CONFIG['socketURL'] =_global.config.socketURL;
|
||||
// window.SITE_CONFIG['socketURL'] =_global.config.socketURL;
|
||||
window.SITE_CONFIG['websocketURL'] = _global.config.websocketURL
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 554 B |
Binary file not shown.
After Width: | Height: | Size: 267 B |
Binary file not shown.
After Width: | Height: | Size: 523 B |
Binary file not shown.
After Width: | Height: | Size: 532 B |
|
@ -118,6 +118,7 @@ t.model.description = '描述'
|
|||
|
||||
t.process = {}
|
||||
t.process.name = '名称'
|
||||
t.process.userName = '申请人'
|
||||
t.process.key = '标识'
|
||||
t.process.deployFile = '部署流程文件'
|
||||
t.process.id = '流程ID'
|
||||
|
|
|
@ -105,8 +105,9 @@ import { messages } from '@/i18n'
|
|||
import screenfull from 'screenfull'
|
||||
import UpdatePassword from './main-navbar-update-password'
|
||||
import { clearLoginInfo } from '@/utils'
|
||||
// import Cookies from 'js-cookie'
|
||||
// var socket = null
|
||||
import Cookies from 'js-cookie'
|
||||
import bus from '@/views/bus.js'
|
||||
var socket = null
|
||||
export default {
|
||||
inject: ['refresh'],
|
||||
data () {
|
||||
|
@ -120,29 +121,32 @@ export default {
|
|||
UpdatePassword
|
||||
},
|
||||
created () {
|
||||
// var vue = this
|
||||
// socket = new WebSocket(`${window.SITE_CONFIG['socketURL']}?token=${Cookies.get('token')}`)
|
||||
// socket.onopen = function () {}
|
||||
// socket.onerror = function () {
|
||||
// vue.$notify.error({
|
||||
// title: vue.$t('notice.disconnect'),
|
||||
// message: vue.$t('notice.disconnectMessage')
|
||||
// })
|
||||
// }
|
||||
// socket.onmessage = function (evt) {
|
||||
// const result = JSON.parse(evt.data)
|
||||
|
||||
// // 如果是有新文本通知,则提示有新通知
|
||||
// if (result.type === 0) {
|
||||
// vue.messageTip = true
|
||||
// vue.$notify({
|
||||
// title: vue.$t('notice.new'),
|
||||
// message: result.msg,
|
||||
// type: 'info',
|
||||
// duration: 5000
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
const that = this
|
||||
socket = new WebSocket(`${window.SITE_CONFIG.websocketURL}?token=${Cookies.get('ucsToken')}`)
|
||||
socket.onopen = function () {}
|
||||
socket.onerror = function () {}
|
||||
socket.onmessage = function (res) {
|
||||
switch (that.$route.name) {
|
||||
case 'myAgent-CompetencyApplication':
|
||||
bus.$emit('competencyApplicationInit')
|
||||
break
|
||||
case 'myAgent-AbilityResourceShelf':
|
||||
bus.$emit('abilityResourceShelfInit')
|
||||
break
|
||||
case 'myAgent-ApplicationforCompetencyRequirements':
|
||||
bus.$emit('applicationforRequirementsInit')
|
||||
break
|
||||
case 'myAgent-AbilityResourcesRemoved':
|
||||
bus.$emit('AbilityResourcesRemovedInit')
|
||||
break
|
||||
case 'myAgent-CommentModeration':
|
||||
bus.$emit('commentInit')
|
||||
break
|
||||
case 'activiti-RoomExamineAdmin':
|
||||
bus.$emit('roomExamineAdminInit')
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 未读通知数
|
||||
this.getUnReadCount()
|
||||
|
|
|
@ -0,0 +1,561 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog custom-class="customClass" :visible.sync="areaVisibleCopy" :title="modalTypeText[modalType]"
|
||||
@close="closeModal" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
|
||||
|
||||
<!-- 挂载和修改 -->
|
||||
<div class="right">
|
||||
<el-form :model="dataForm" :rules="rules" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
|
||||
:label-width="$i18n.locale === 'en-US' ? '120px' : '100px'">
|
||||
<!-- 基本信息 -->
|
||||
<div class="scrollBox" id="anchor1">
|
||||
|
||||
<div class="baseInner">
|
||||
<el-form-item label="所属区市:" prop="unit">
|
||||
<el-select v-model="dataForm.area" placeholder="请选择">
|
||||
<el-option v-for="item in areas" :key="item.data" :label="item.name"
|
||||
:value="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="赋能领域:" prop="unit">
|
||||
<el-select v-model="dataForm.applicationArea" placeholder="请选择">
|
||||
<el-option v-for="item in sceneAreas" :key="item.data" :label="item.dict_label"
|
||||
:value="item.dict_value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="场景名称:" prop="name">
|
||||
<el-input v-model="dataForm.name" placeholder="请输入名称" style="width:90%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="场景描述:" prop="description">
|
||||
<el-input type="textarea" :rows="3" v-model="dataForm.description" placeholder="请输入描述"
|
||||
style="width:90%">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="场景入口:">
|
||||
<el-input v-model="dataForm.sceneUrl" placeholder="请输入场景入口" style="width:90%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="场景图片:">
|
||||
<el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
|
||||
:on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1"
|
||||
:file-list="[]" :on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture">
|
||||
<div slot="tip" class="el-upload__tip">只能上传图片文件</div>
|
||||
<div class="button-new">
|
||||
<div>点击上传</div>
|
||||
</div>
|
||||
|
||||
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
<template slot="footer">
|
||||
<el-button type="primary" @click="dataFormSubmitHandle()">提交</el-button>
|
||||
<el-button @click="closeModal">{{ $t("cancel") }}</el-button>
|
||||
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import debounce from 'lodash/debounce'
|
||||
import qs from 'qs'
|
||||
import Cookies from 'js-cookie'
|
||||
import upload from '@/views/modules/components/upload'
|
||||
|
||||
// 模态框标题
|
||||
export const modalTypeText = {
|
||||
add: '场景挂接',
|
||||
update: '场景修改'
|
||||
}
|
||||
|
||||
export default {
|
||||
components: {
|
||||
upload
|
||||
},
|
||||
watch: {
|
||||
|
||||
dataForm: {
|
||||
handler(newVal) {
|
||||
this.dataForm = newVal
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
},
|
||||
areaVisible: {
|
||||
handler(newVal) {
|
||||
this.getSceneArea()
|
||||
this.getArea()
|
||||
this.areaVisibleCopy = newVal
|
||||
if (this.modalType == 'add' && newVal) {
|
||||
this.getDetail(this.dataForm)
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
props: {
|
||||
modalType: {
|
||||
type: String,
|
||||
default: 'add'
|
||||
},
|
||||
areaVisible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
areas:[],//所属区市
|
||||
sceneAreas:[],
|
||||
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
|
||||
dataForm: {
|
||||
district: 1,//0市级,1基层
|
||||
area: '',//所属区市
|
||||
infrastructureCount: null,
|
||||
dataSourceCount: null,
|
||||
componentCount: null,
|
||||
name: '',
|
||||
applicationArea: '',//赋能领域
|
||||
description: '',
|
||||
sceneUrl: '',
|
||||
fuseAttrList: [
|
||||
{
|
||||
attrType: '构建步骤',
|
||||
attrValue: [{ question: '', answer: [{ 'answer': '' }, { 'answer': '' }] }]
|
||||
},
|
||||
{
|
||||
attrType: '基础设施',
|
||||
attrValue: [{ name: '', type: '', dept: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '组件服务',
|
||||
attrValue: [{ name: '', type: '', dept: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '数据资源',
|
||||
attrValue: [{ name: '', type: '', dept: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '场景痛点',
|
||||
attrValue: [{ description: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '解决方案',
|
||||
attrValue: [{ description: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '服务图片',
|
||||
attrValue: ''
|
||||
}
|
||||
],
|
||||
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入名称',
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
description: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入描述',
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
areaVisibleCopy: this.areaVisible,
|
||||
displayInfo: {
|
||||
name: '名称',
|
||||
description: '描述'
|
||||
},
|
||||
modalTypeText: modalTypeText,
|
||||
|
||||
abilityListObj: {},
|
||||
imgData: [],
|
||||
// 限定图片
|
||||
handleExceed() {
|
||||
this.$message({ type: 'error', message: '最多支持一张图片上传' })
|
||||
},
|
||||
imageUrl: ''
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
//获取所属区市
|
||||
getArea(){
|
||||
const params = {
|
||||
pid: '250000'
|
||||
}
|
||||
this.$http
|
||||
.get('/sys/region/list/', {
|
||||
params
|
||||
})
|
||||
.then((res) => {
|
||||
this.areas = res.data.data
|
||||
})
|
||||
},
|
||||
//获取赋能场景
|
||||
getSceneArea() {
|
||||
const params = {
|
||||
topCategoryName: '应用资源'
|
||||
}
|
||||
this.$http
|
||||
.get('/category/getAllFilterCriteriaByTopCategory/', {
|
||||
params
|
||||
})
|
||||
.then((res) => {
|
||||
this.sceneAreas = res.data.data[0].typeList
|
||||
})
|
||||
},
|
||||
|
||||
clearForm() {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields()
|
||||
},
|
||||
closeModal() {
|
||||
this.$emit('closeModal')
|
||||
},
|
||||
|
||||
|
||||
// 表单提交
|
||||
dataFormSubmitHandle: debounce(
|
||||
function () {
|
||||
|
||||
this.$refs.dataForm.validate((valid) => {
|
||||
if (!valid) {
|
||||
this.$message.error('请检查表单是否填写完整')
|
||||
return false
|
||||
}
|
||||
const methodsObj = {
|
||||
add: 'post',
|
||||
update: 'put'
|
||||
}
|
||||
|
||||
// if (this.imageUrl == '') {
|
||||
// this.$message.error('请上传图片!')
|
||||
// return
|
||||
// }
|
||||
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
|
||||
const _obj = Object.assign({}, this.dataForm, {
|
||||
type: '赋能场景'
|
||||
})
|
||||
|
||||
this.dataForm.fuseAttrList.forEach(item => {
|
||||
if(item.attrType!=='服务图片'){
|
||||
item.attrValue = JSON.stringify(item.attrValue);
|
||||
}
|
||||
|
||||
})
|
||||
this.$http
|
||||
[methodsObj[this.modalType]]('/fuse', _obj)
|
||||
.then(({ data: res }) => {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.$message({
|
||||
message: this.$t('prompt.success'),
|
||||
type: 'success',
|
||||
duration: 500,
|
||||
onClose: () => {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields()
|
||||
this.$emit('refreshDataList')
|
||||
this.$emit('closeModal')
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$message.error(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
1000,
|
||||
{ leading: true, trailing: false }
|
||||
),
|
||||
// 详情
|
||||
getDetail(data) {
|
||||
this.dataForm = data
|
||||
},
|
||||
handleAvatarSuccess(res, file) {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.imageUrl = res.data
|
||||
},
|
||||
beforeAvatarUpload(file) {
|
||||
const isImage =
|
||||
file.type === 'image/jpeg' ||
|
||||
file.type === 'image/jpg' ||
|
||||
file.type === 'image/png'
|
||||
if (!isImage) {
|
||||
this.$message.error('上传头像图片只能是 jpg/png 格式!')
|
||||
}
|
||||
return isImage
|
||||
},
|
||||
addUploadRemoveFile(file, fileList) {
|
||||
this.$refs.addUpload.clearFiles()
|
||||
this.imageUrl = ''
|
||||
},
|
||||
editBeforeAvatarUpload(file) {
|
||||
const isImage =
|
||||
file.type === 'image/jpeg' ||
|
||||
file.type === 'image/jpg' ||
|
||||
file.type === 'image/png'
|
||||
|
||||
if (!isImage) {
|
||||
this.$message.error('上传头像图片只能是 jpg/png 格式!')
|
||||
}
|
||||
return isImage
|
||||
},
|
||||
editUploadRemoveFile(file, fileList) {
|
||||
this.$refs.editUpload.clearFiles()
|
||||
this.imageUrl = ''
|
||||
},
|
||||
eidtHandleAvatarSuccess(res, file) {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.imageUrl = res.data
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.clearForm()
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.fixed {
|
||||
position: sticky;
|
||||
z-index: 10012;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -9.56rem;
|
||||
}
|
||||
|
||||
.button-new {
|
||||
height: 90px;
|
||||
width: 128px;
|
||||
border: 1px dashed rgba(198, 198, 198, 0.5);
|
||||
border-radius: 2px;
|
||||
background: #e9eff8;
|
||||
color: #666666;
|
||||
font-size: 14px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.button-new div {
|
||||
background: url('~@/assets/img/uploadAdd.png') no-repeat;
|
||||
color: #666666;
|
||||
background-position: center;
|
||||
text-align: center;
|
||||
height: 90px;
|
||||
padding-top: 41px;
|
||||
background-position-y: 22px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.right {
|
||||
width: 770px;
|
||||
margin-left: 100px;
|
||||
margin-top: 24px;
|
||||
|
||||
|
||||
.info-inner {
|
||||
|
||||
margin-left: 10px;
|
||||
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.info-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.baseInfo {
|
||||
|
||||
border-radius: 2px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.baseTitle {
|
||||
padding-left: 20px;
|
||||
color: #212121;
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 32px;
|
||||
background: url("~@/assets/img/biaoti.png") no-repeat;
|
||||
background-position-y: 2px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.baseInner {
|
||||
background: rgba(244, 245, 248, 0.8);
|
||||
padding: 24px 120px;
|
||||
}
|
||||
|
||||
.baseInner1 {
|
||||
background: rgba(244, 245, 248, 0.8);
|
||||
padding: 24px 24px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__header {
|
||||
background: #0058e1;
|
||||
// height: 50px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__title {
|
||||
line-height: 18px;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
::v-deep .el-upload {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 0px;
|
||||
height: 580px;
|
||||
overflow: auto;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.icon-input ::v-deep .el-input__inner {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.detial-form ::v-deep {
|
||||
.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.el-form-item__content {
|
||||
line-height: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox-button__inner {
|
||||
width: 130px;
|
||||
margin: 0 10px 5px;
|
||||
border-left: unset !important;
|
||||
border-radius: unset !important;
|
||||
border: 1px solid #dcdfe6 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.mod-sys__menu {
|
||||
|
||||
.menu-list,
|
||||
.icon-list {
|
||||
|
||||
.el-input__inner,
|
||||
.el-input__suffix {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
&-icon-popover {
|
||||
width: 458px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&-icon-inner {
|
||||
width: 478px;
|
||||
max-height: 258px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
&-icon-list {
|
||||
width: 458px;
|
||||
padding: 0;
|
||||
margin: -8px 0 0 -8px;
|
||||
|
||||
>.el-button {
|
||||
padding: 8px;
|
||||
margin: 8px 0 0 8px;
|
||||
|
||||
>span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.previewImg {
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.name {
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 40px;
|
||||
padding: 0 12px 0 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
line-height: 32px;
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-left: 132px;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.first-title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,839 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog custom-class="customClass" :visible.sync="cityVisibleCopy" :title="modalTypeText[modalType]"
|
||||
@close="closeModal" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<div class="left">
|
||||
<div class="left-process">
|
||||
<!-- <el-steps direction="vertical" :active="activeStep">
|
||||
<el-step :key=index v-for="(item, index) in steps" :title=item @click.native="handleStep(index)"></el-step>
|
||||
</el-steps> -->
|
||||
<div class="li1" v-for="(item, index) in steps" :key="index" @click="handleStep(item, index)">
|
||||
<div v-if="index == activeStepIndex">
|
||||
<div class="node node1">{{ item.name }}</div>
|
||||
<div class="borderLeft borderLeft1"></div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div class="node">{{ item.name }}</div>
|
||||
<div class="borderLeft"></div>
|
||||
</div>
|
||||
<div class="advice"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 挂载和修改 -->
|
||||
<div class="right">
|
||||
<el-form :model="dataForm" :rules="rules" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
|
||||
:label-width="$i18n.locale === 'en-US' ? '120px' : '100px'">
|
||||
<!-- 基本信息 -->
|
||||
<div class="scrollBox" id="anchor1">
|
||||
<div class="baseTitle">
|
||||
基本信息
|
||||
</div>
|
||||
<div class="baseInner">
|
||||
<el-form-item label="赋能领域:" prop="unit">
|
||||
<el-select v-model="dataForm.applicationArea" placeholder="请选择">
|
||||
<el-option v-for="item in sceneAreas" :key="item.data" :label="item.dict_label"
|
||||
:value="item.dict_value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="场景名称:" prop="name">
|
||||
<el-input v-model="dataForm.name" placeholder="请输入名称" style="width:90%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="场景描述:" prop="description">
|
||||
<el-input type="textarea" :rows="3" v-model="dataForm.description" placeholder="请输入描述"
|
||||
style="width:90%">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="场景入口:">
|
||||
<el-input v-model="dataForm.sceneUrl" placeholder="请输入场景入口" style="width:90%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="场景图片:">
|
||||
<el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
|
||||
:on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1"
|
||||
:file-list="[]" :on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture">
|
||||
<div slot="tip" class="el-upload__tip">只能上传图片文件</div>
|
||||
<div class="button-new">
|
||||
<div>点击上传</div>
|
||||
</div>
|
||||
|
||||
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 场景痛点 -->
|
||||
<div class="scrollBox" id="anchor2">
|
||||
<div class="baseTitle">
|
||||
场景痛点
|
||||
</div>
|
||||
<div class="baseInner">
|
||||
<scene-one-input :dataForm="dataForm" title="场景痛点" @update="updateDataForm" ref="scenePainDom"
|
||||
:keyTextObj="painKeyTextObj"></scene-one-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 解决方案 -->
|
||||
<div class="scrollBox" id="anchor3">
|
||||
<div class="baseTitle">
|
||||
解决方案
|
||||
</div>
|
||||
<div class="baseInner">
|
||||
<scene-one-input :dataForm="dataForm" title="解决方案" @update="updateDataForm" ref="solutionDom"
|
||||
:keyTextObj="solutionKeyTextObj"></scene-one-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 使用能力 -->
|
||||
<div class="scrollBox" id="anchor4">
|
||||
<div class="baseTitle">
|
||||
使用能力
|
||||
</div>
|
||||
<div class="baseInner1">
|
||||
<div class="info-inner">
|
||||
<ability-add :dataForm="dataForm" @update="updateDataForm" @updateCount="updateCount" ref="abilityAdd1"
|
||||
title="基础设施" :typeList="baseTypeList"></ability-add>
|
||||
</div>
|
||||
<div style="border-bottom: 1px dashed #d3d3d3;margin-bottom: 23px;"></div>
|
||||
<div class="info-inner">
|
||||
<ability-add :dataForm="dataForm" @update="updateDataForm" @updateCount="updateCount" ref="abilityAdd2"
|
||||
title="组件服务" :typeList="componetTypeList"></ability-add>
|
||||
</div>
|
||||
<div style="border-bottom: 1px dashed #d3d3d3;margin-bottom: 23px;"></div>
|
||||
<div class="info-inner">
|
||||
<ability-add :dataForm="dataForm" @update="updateDataForm" @updateCount="updateCount" ref="abilityAdd3"
|
||||
title="数据资源" :typeList="dataTypeList"></ability-add>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <InfrastructureModal v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="基础设施"
|
||||
:modalType="modalType" ref="jcssDom"></InfrastructureModal>
|
||||
<el-form-item label="基础设施总数" >
|
||||
<el-input v-model="dataForm.infrastructureCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
|
||||
</el-form-item>
|
||||
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="数据资源" ref="sjzyDom"
|
||||
:getDataParams="getListParams['数据资源']"></combine-ability>
|
||||
<el-form-item label="数据资源总数" >
|
||||
<el-input v-model="dataForm.dataSourceCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
|
||||
</el-form-item>
|
||||
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="组件服务" ref="zjfwDom"
|
||||
:getDataParams="getListParams['组件服务']"></combine-ability>
|
||||
<el-form-item label="组件服务总数" >
|
||||
<el-input v-model="dataForm.componentCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
|
||||
</el-form-item> -->
|
||||
</div>
|
||||
|
||||
<!-- 构建步骤 -->
|
||||
<div class="scrollBox" id="anchor5">
|
||||
<div class="baseTitle">
|
||||
构建步骤
|
||||
</div>
|
||||
<div class="baseInner1">
|
||||
<scene-use-step :dataForm="dataForm" @update="updateDataForm" ref="sceneUseUpDom">
|
||||
</scene-use-step>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<template slot="footer">
|
||||
<el-button type="primary" @click="dataFormSubmitHandle()">提交</el-button>
|
||||
<el-button @click="closeModal">{{ $t("cancel") }}</el-button>
|
||||
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import debounce from 'lodash/debounce'
|
||||
import qs from 'qs'
|
||||
import SceneUseStep from './components/scene-use-step.vue'
|
||||
import SceneOneInput from './components/scene-one-input.vue'
|
||||
import AbilityAdd from './components/ability-add.vue'
|
||||
import CombineAbility from '../components/combine-ability.vue'
|
||||
import CommonQuestion from '../components/common-question.vue'
|
||||
import InfrastructureModal from './components/infrastructure-modal.vue'
|
||||
import Cookies from 'js-cookie'
|
||||
import upload from '@/views/modules/components/upload'
|
||||
|
||||
|
||||
export const getDescJson = (text) => {
|
||||
return {
|
||||
descObj: {
|
||||
text: `${text}描述`,
|
||||
key: 'description'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 模态框标题
|
||||
export const modalTypeText = {
|
||||
add: '场景挂接',
|
||||
update: '场景修改'
|
||||
}
|
||||
|
||||
export default {
|
||||
components: {
|
||||
SceneUseStep,
|
||||
CombineAbility,
|
||||
SceneOneInput,
|
||||
upload,
|
||||
CommonQuestion,
|
||||
InfrastructureModal,
|
||||
AbilityAdd
|
||||
},
|
||||
watch: {
|
||||
|
||||
dataForm: {
|
||||
handler(newVal) {
|
||||
this.dataForm = newVal
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
},
|
||||
cityVisible: {
|
||||
handler(newVal) {
|
||||
this.getSceneArea()
|
||||
this.cityVisibleCopy = newVal
|
||||
if (this.modalType == 'add' && newVal) {
|
||||
// localStorage.setItem('InfrastructureSearchData', JSON.stringify({}))
|
||||
this.getDetail(this.dataForm)
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
props: {
|
||||
modalType: {
|
||||
type: String,
|
||||
default: 'add'
|
||||
},
|
||||
cityVisible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
domArr: [],
|
||||
scrollTop: 0,
|
||||
selectNow: '',
|
||||
activeStepIndex: 0,//选择的步骤
|
||||
activeStepIndexs: 0,
|
||||
baseTypeList: [{ value: '视频资源', label: '视频资源' }, { value: '云资源', label: '云资源' }, { value: '其他', label: '其他' }],
|
||||
componetTypeList: [{ value: '智能算法', label: '智能算法' }, { value: ' 图层服务', label: ' 图层服务' },
|
||||
{ value: '开发组件', label: '开发组件' }, { value: '业务组件', label: '业务组件' }],
|
||||
dataTypeList: [{ value: '数据', label: '数据' }],
|
||||
sceneAreas: [],//赋能领域
|
||||
|
||||
steps: [{ 'name': '基本信息', 'id': "anchor1" },
|
||||
{ 'name': '场景痛点', 'id': "anchor2" },
|
||||
{ 'name': '解决方案', 'id': "anchor3" },
|
||||
{ 'name': '使用能力', 'id': "anchor4" },
|
||||
{ 'name': '构建步骤', 'id': "anchor5" }],
|
||||
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
|
||||
|
||||
painKeyTextObj: getDescJson('痛点'),
|
||||
solutionKeyTextObj: getDescJson('方案'),
|
||||
dataForm: {
|
||||
district: 0,//市级
|
||||
area: '',//所属区市
|
||||
infrastructureCount: null,
|
||||
dataSourceCount: null,
|
||||
componentCount: null,
|
||||
name: '',
|
||||
applicationArea: '',//赋能领域
|
||||
description: '',
|
||||
sceneUrl: '',
|
||||
fuseAttrList: [
|
||||
{
|
||||
attrType: '构建步骤',
|
||||
attrValue: [{ question: '', answer: [{ 'answer': '' }, { 'answer': '' }] }]
|
||||
},
|
||||
{
|
||||
attrType: '基础设施',
|
||||
attrValue: [{ name: '', type: '', dept: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '组件服务',
|
||||
attrValue: [{ name: '', type: '', dept: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '数据资源',
|
||||
attrValue: [{ name: '', type: '', dept: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '场景痛点',
|
||||
attrValue: [{ description: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '解决方案',
|
||||
attrValue: [{ description: '' }]
|
||||
},
|
||||
{
|
||||
attrType: '服务图片',
|
||||
attrValue: ''
|
||||
}
|
||||
],
|
||||
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入名称',
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
description: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入描述',
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
},
|
||||
checkList: ['基本信息', '场景痛点', '解决方案', '使用能力', '构建步骤'],
|
||||
cityVisibleCopy: this.cityVisible,
|
||||
displayInfo: {
|
||||
name: '名称',
|
||||
description: '描述'
|
||||
},
|
||||
modalTypeText: modalTypeText,
|
||||
refsParseArray: {
|
||||
sceneUseUpDom: '构建步骤',
|
||||
moreAbilityDom: '更多能力',
|
||||
scenePainDom: '场景痛点',
|
||||
solutionDom: '解决方案',
|
||||
abilityAdd1: '基础设施',
|
||||
abilityAdd2: '组件服务',
|
||||
abilityAdd3: '数据资源'
|
||||
},
|
||||
|
||||
abilityListObj: {},
|
||||
imgData: [],
|
||||
// 限定图片
|
||||
handleExceed() {
|
||||
this.$message({ type: 'error', message: '最多支持一张图片上传' })
|
||||
},
|
||||
imageUrl: ''
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
|
||||
handleStep(item, index) {
|
||||
this.activeStepIndex = index
|
||||
this.selectNow = item.id // 设置选中的锚点为当前点击的
|
||||
let top = document.querySelector('#' + item.id).offsetTop - 100
|
||||
document.querySelectorAll(".customClass .el-dialog__body")[0].scrollTop = top
|
||||
|
||||
},
|
||||
//获取赋能场景
|
||||
getSceneArea() {
|
||||
const params = {
|
||||
topCategoryName: '应用资源'
|
||||
}
|
||||
this.$http
|
||||
.get('/category/getAllFilterCriteriaByTopCategory/', {
|
||||
params
|
||||
})
|
||||
.then((res) => {
|
||||
this.sceneAreas = res.data.data[0].typeList
|
||||
})
|
||||
},
|
||||
|
||||
clearForm() {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields()
|
||||
},
|
||||
closeModal() {
|
||||
this.$emit('closeModal')
|
||||
},
|
||||
// 更新表单
|
||||
updateDataForm(data) {
|
||||
this.dataForm.fuseAttrList.map(v => {
|
||||
if (v.attrType === data.title) {
|
||||
v.attrValue = data.list
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
//更新数量
|
||||
updateCount(data) {
|
||||
if (data.title === '基础设施') {
|
||||
this.dataForm.infrastructureCount = data.count
|
||||
}
|
||||
if (data.title === '组件服务') {
|
||||
this.dataForm.componentCount = data.count
|
||||
}
|
||||
if (data.title === '数据资源') {
|
||||
this.dataForm.dataSourceCount = data.count
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
// 表单提交
|
||||
dataFormSubmitHandle: debounce(
|
||||
function () {
|
||||
|
||||
this.$refs.dataForm.validate((valid) => {
|
||||
if (!valid) {
|
||||
this.$message.error('请检查表单是否填写完整')
|
||||
return false
|
||||
}
|
||||
const methodsObj = {
|
||||
add: 'post',
|
||||
update: 'put'
|
||||
}
|
||||
|
||||
// if (this.imageUrl == '') {
|
||||
// this.$message.error('请上传图片!')
|
||||
// return
|
||||
// }
|
||||
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
|
||||
const _obj = Object.assign({}, this.dataForm, {
|
||||
type: '赋能场景'
|
||||
})
|
||||
this.dataForm.fuseAttrList.forEach(item => {
|
||||
if(item.attrType!=='服务图片'){
|
||||
item.attrValue = JSON.stringify(item.attrValue);
|
||||
}
|
||||
|
||||
})
|
||||
this.$http
|
||||
[methodsObj[this.modalType]]('/fuse', _obj)
|
||||
.then(({ data: res }) => {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.$message({
|
||||
message: this.$t('prompt.success'),
|
||||
type: 'success',
|
||||
duration: 500,
|
||||
onClose: () => {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields()
|
||||
this.$emit('refreshDataList')
|
||||
this.$emit('closeModal')
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$message.error(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
1000,
|
||||
{ leading: true, trailing: false }
|
||||
),
|
||||
// 详情
|
||||
getDetail(data) {
|
||||
this.dataForm = data
|
||||
this.$nextTick(() => {
|
||||
for (const key in this.refsParseArray) {
|
||||
this.$refs[key] && this.$refs[key].getDataInfo && this.$refs[key].getDataInfo(data)
|
||||
}
|
||||
const _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {}
|
||||
this.imageUrl = _imgObj.attrValue
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
},
|
||||
handleAvatarSuccess(res, file) {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.imageUrl = res.data
|
||||
},
|
||||
beforeAvatarUpload(file) {
|
||||
const isImage =
|
||||
file.type === 'image/jpeg' ||
|
||||
file.type === 'image/jpg' ||
|
||||
file.type === 'image/png'
|
||||
if (!isImage) {
|
||||
this.$message.error('上传头像图片只能是 jpg/png 格式!')
|
||||
}
|
||||
return isImage
|
||||
},
|
||||
addUploadRemoveFile(file, fileList) {
|
||||
this.$refs.addUpload.clearFiles()
|
||||
this.imageUrl = ''
|
||||
},
|
||||
editBeforeAvatarUpload(file) {
|
||||
const isImage =
|
||||
file.type === 'image/jpeg' ||
|
||||
file.type === 'image/jpg' ||
|
||||
file.type === 'image/png'
|
||||
|
||||
if (!isImage) {
|
||||
this.$message.error('上传头像图片只能是 jpg/png 格式!')
|
||||
}
|
||||
return isImage
|
||||
},
|
||||
editUploadRemoveFile(file, fileList) {
|
||||
this.$refs.editUpload.clearFiles()
|
||||
this.imageUrl = ''
|
||||
},
|
||||
eidtHandleAvatarSuccess(res, file) {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.imageUrl = res.data
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
const that = this;
|
||||
this.$nextTick(() => {
|
||||
document.querySelector(".el-dialog__body").onscroll = function () {
|
||||
|
||||
let top = document.querySelectorAll(".customClass .el-dialog__body")[0].scrollTop - 100
|
||||
|
||||
if (top < document.querySelector('#anchor1').offsetTop - 100) {
|
||||
that.activeStepIndexs = 0
|
||||
}
|
||||
else if (top < document.querySelector('#anchor2').offsetTop - 100) {
|
||||
that.activeStepIndexs = 1
|
||||
}
|
||||
else if (top < document.querySelector('#anchor3').offsetTop - 100) {
|
||||
that.activeStepIndexs = 2
|
||||
}
|
||||
else if (top < document.querySelector('#anchor4').offsetTop - 100) {
|
||||
that.activeStepIndexs = 3
|
||||
}
|
||||
else if (top < document.querySelector('#anchor5').offsetTop - 100) {
|
||||
that.activeStepIndexs = 4
|
||||
} else {
|
||||
that.activeStepIndexs = 0
|
||||
}
|
||||
if (that.activeStepIndex !== that.activeStepIndexs) {
|
||||
that.activeStepIndex = that.activeStepIndexs;
|
||||
that.$forceUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.clearForm()
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.fixed {
|
||||
position: sticky;
|
||||
z-index: 10012;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -9.56rem;
|
||||
}
|
||||
|
||||
.button-new {
|
||||
height: 90px;
|
||||
width: 128px;
|
||||
border: 1px dashed rgba(198, 198, 198, 0.5);
|
||||
border-radius: 2px;
|
||||
background: #e9eff8;
|
||||
color: #666666;
|
||||
font-size: 14px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.button-new div {
|
||||
background: url('~@/assets/img/uploadAdd.png') no-repeat;
|
||||
color: #666666;
|
||||
background-position: center;
|
||||
text-align: center;
|
||||
height: 90px;
|
||||
padding-top: 41px;
|
||||
background-position-y: 22px;
|
||||
}
|
||||
|
||||
.left {
|
||||
width: 135px;
|
||||
height: 650px;
|
||||
position: fixed;
|
||||
background: rgba(244, 245, 248, 0.8);
|
||||
|
||||
.left-process {
|
||||
height: 300px;
|
||||
position: fixed;
|
||||
padding-left: 18px;
|
||||
padding-top: 24px;
|
||||
|
||||
.li1 {
|
||||
list-style: none;
|
||||
box-sizing: border-box;
|
||||
padding-left: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.borderLeft {
|
||||
width: 1px;
|
||||
height: 100%;
|
||||
background-color: #1160e2;
|
||||
position: absolute;
|
||||
top: 11.225px;
|
||||
bottom: 0;
|
||||
left: -1px;
|
||||
}
|
||||
|
||||
.borderLeft1 {
|
||||
background-color: #1160e2;
|
||||
;
|
||||
}
|
||||
|
||||
.node::before {
|
||||
z-index: 1;
|
||||
content: "";
|
||||
background-color: #fff;
|
||||
border: 1px solid #1160e2;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
left: 0;
|
||||
top: 11.225px;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.node {
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
line-height: 22.5px;
|
||||
font-weight: 500;
|
||||
color: #212121;
|
||||
}
|
||||
|
||||
.node1 {
|
||||
color: #0058e1;
|
||||
}
|
||||
|
||||
.node1::before {
|
||||
width: 16px;
|
||||
|
||||
height: 16px;
|
||||
|
||||
background-color: #fff;
|
||||
|
||||
border-radius: 50%;
|
||||
|
||||
border: 4px solid #1160e2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.advice {
|
||||
font-size: 10px;
|
||||
color: #1160e2;
|
||||
padding-bottom: 46px;
|
||||
}
|
||||
|
||||
.li1:last-child .borderLeft {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.right {
|
||||
width: 770px;
|
||||
margin-left: 157px;
|
||||
margin-top: -5px;
|
||||
|
||||
|
||||
.info-inner {
|
||||
|
||||
margin-left: 10px;
|
||||
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.info-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.baseInfo {
|
||||
|
||||
border-radius: 2px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.baseTitle {
|
||||
padding-left: 20px;
|
||||
color: #212121;
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 32px;
|
||||
background: url("~@/assets/img/biaoti.png") no-repeat;
|
||||
background-position-y: 2px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.baseInner {
|
||||
background: rgba(244, 245, 248, 0.8);
|
||||
padding: 24px 120px;
|
||||
}
|
||||
|
||||
.baseInner1 {
|
||||
background: rgba(244, 245, 248, 0.8);
|
||||
padding: 24px 24px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__header {
|
||||
background: #0058e1;
|
||||
// height: 50px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__title {
|
||||
line-height: 18px;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
::v-deep .el-upload {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 0px;
|
||||
height: 580px;
|
||||
overflow: auto;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.icon-input ::v-deep .el-input__inner {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.detial-form ::v-deep {
|
||||
.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.el-form-item__content {
|
||||
line-height: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox-button__inner {
|
||||
width: 130px;
|
||||
margin: 0 10px 5px;
|
||||
border-left: unset !important;
|
||||
border-radius: unset !important;
|
||||
border: 1px solid #dcdfe6 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.mod-sys__menu {
|
||||
|
||||
.menu-list,
|
||||
.icon-list {
|
||||
|
||||
.el-input__inner,
|
||||
.el-input__suffix {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
&-icon-popover {
|
||||
width: 458px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&-icon-inner {
|
||||
width: 478px;
|
||||
max-height: 258px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
&-icon-list {
|
||||
width: 458px;
|
||||
padding: 0;
|
||||
margin: -8px 0 0 -8px;
|
||||
|
||||
>.el-button {
|
||||
padding: 8px;
|
||||
margin: 8px 0 0 8px;
|
||||
|
||||
>span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.previewImg {
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.name {
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 40px;
|
||||
padding: 0 12px 0 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
line-height: 32px;
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-left: 132px;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.first-title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,239 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="info-title">{{ title }}</div>
|
||||
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="使用总数">
|
||||
<el-input
|
||||
v-model="count"
|
||||
onkeyup="value=value.replace(/[^\d]/g,0)"
|
||||
placeholder="请输入总数"
|
||||
style="width: 320px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<div class="submit">
|
||||
<a-button type="primary" @click="addBaseInfo">
|
||||
<img
|
||||
style="height: 12px; width: 12px; margin-top: -2px"
|
||||
src="~@/assets/img/jiahao.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="margin-left: 4px">添加实例数据</span>
|
||||
</a-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="margin-bottom: 20px">
|
||||
<el-table v-if="dataInfo.length > 0" :data="dataInfo" border>
|
||||
<el-table-column label="序号" width="55">
|
||||
<template slot-scope="scope">{{
|
||||
scope.$index + 1 > 9 ? scope.$index + 1 : "0" + (scope.$index + 1)
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据名称" width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-model="scope.row.name"
|
||||
placeholder="请输入数据名称"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="类型" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-select :ref="scope.row.id" v-model="scope.row.type">
|
||||
<el-option
|
||||
v-for="item in typeList"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="来源部门" width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-model="scope.row.dept"
|
||||
placeholder="请输入来源部门"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
style="color: #0058e1"
|
||||
@click="handleDelete(scope.$index, scope.row)"
|
||||
>删除</span
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
dataForm: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
typeList: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
dataInfo: {
|
||||
handler(newVal) {
|
||||
this.dataInfo = newVal;
|
||||
this.$emit("update", {
|
||||
title: this.title,
|
||||
list: newVal,
|
||||
});
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
},
|
||||
count: {
|
||||
handler(newVal) {
|
||||
this.count = newVal;
|
||||
this.$emit("updateCount", {
|
||||
title: this.title,
|
||||
count: newVal,
|
||||
});
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
count: "",
|
||||
dataInfo: [],
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
addBaseInfo() {
|
||||
let data = {
|
||||
name: "",
|
||||
type: "",
|
||||
dept: "",
|
||||
};
|
||||
this.dataInfo.push(data);
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.dataInfo.splice(row, 1);
|
||||
},
|
||||
getDataInfo(dataForm) {
|
||||
let arr = [];
|
||||
if (dataForm && (dataForm.id || dataForm.id === 0)) {
|
||||
if (this.title === "基础设施") {
|
||||
this.count = dataForm.infrastructureCount;
|
||||
}
|
||||
if (this.title === "组件服务") {
|
||||
this.count = dataForm.componentCount;
|
||||
}
|
||||
if (this.title === "数据资源") {
|
||||
this.count = dataForm.dataSourceCount;
|
||||
}
|
||||
|
||||
let fuseAttrList = dataForm.fuseAttrList || [];
|
||||
let obj = fuseAttrList.find((v) => v.attrType === this.title) || {};
|
||||
let attrValue = JSON.parse(obj.attrValue || "[]");
|
||||
if (attrValue.length > 0) {
|
||||
attrValue.map((v) => {
|
||||
arr.push(v);
|
||||
});
|
||||
} else {
|
||||
arr = [];
|
||||
}
|
||||
} else {
|
||||
arr = [];
|
||||
}
|
||||
|
||||
this.dataInfo = arr;
|
||||
},
|
||||
// 新增
|
||||
addItem() {
|
||||
let index = this.dataInfo.length - 1;
|
||||
if (this.dataInfo[index][this.keyTextObj.descObj.key] === "") {
|
||||
return this.$message.warning("请填写完整信息!");
|
||||
}
|
||||
this.dataInfo.push({
|
||||
[this.keyTextObj.descObj.key]: "",
|
||||
});
|
||||
},
|
||||
// 删除
|
||||
deleteItem(index) {
|
||||
this.$confirm("确认是否删除?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
this.$message({
|
||||
type: "success",
|
||||
message: "删除成功!",
|
||||
});
|
||||
this.dataInfo.splice(index, 1);
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-table thead {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
::v-deep .el-table th {
|
||||
font-weight: normal;
|
||||
background-color: #e3e4e5 !important;
|
||||
}
|
||||
|
||||
.submit {
|
||||
font-size: 0.14rem;
|
||||
margin-left: 8px;
|
||||
|
||||
.ant-btn {
|
||||
width: 128px;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.ant-btn:hover {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.ant-btn:active {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
.info-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.add-btn {
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
|
@ -1,20 +1,39 @@
|
|||
<template>
|
||||
<div class="question-box">
|
||||
<div class="title">
|
||||
<!-- <div class="title">
|
||||
{{ title }}
|
||||
</div>
|
||||
</div> -->
|
||||
<div v-for="(item, index) in dataInfo" :key="index">
|
||||
<el-form-item :label="keyTextObj.descObj.text">
|
||||
<el-form-item :label=keyTextObj.descObj.text+(index+1)>
|
||||
<el-input type="textarea" :rows="2" v-model="item[keyTextObj.descObj.key]"
|
||||
:placeholder="`请输入${keyTextObj.descObj.text}`" style="width:90%">
|
||||
</el-input>
|
||||
<el-button style="margin-left:10px" @click="deleteItem(index)" type="danger" size="small"
|
||||
v-if="dataInfo.length > 1">删除
|
||||
</el-button>
|
||||
<!-- <icon class="el-icon-remove" style="color:red;margin-left: 2px;"
|
||||
@click="deleteItem(index)" type="danger" size="small"
|
||||
v-if="dataInfo.length > 1"></icon> -->
|
||||
<img
|
||||
style="color:red;margin-left: 6px;"
|
||||
@click="deleteItem(index)" type="danger" size="small"
|
||||
v-if="dataInfo.length > 1"
|
||||
src="~@/assets/img/deleteRed.png"
|
||||
alt=""
|
||||
/>
|
||||
<!-- <el-button style="margin-left:10px" >删除
|
||||
</el-button> -->
|
||||
</el-form-item>
|
||||
<el-button class="add-btn" size="small" v-if="index == dataInfo.length - 1" @click="addItem" type="primary">
|
||||
<!-- <el-button class="add-btn" icon="el-icon-circle-plus-outline" size="small" v-if="index == dataInfo.length - 1" @click="addItem" type="primary">
|
||||
添加
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<div class="submit">
|
||||
<a-button type="primary" v-if="index == dataInfo.length - 1" @click="addItem" >
|
||||
<img
|
||||
style="height: 12px; width: 12px;margin-top: -2px;"
|
||||
src="~@/assets/img/jiahao.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="margin-left: 4px">添加{{keyTextObj.descObj.text}}</span>
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -115,6 +134,31 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.submit {
|
||||
font-size: 0.14rem;
|
||||
margin-left: 100px;
|
||||
.ant-btn {
|
||||
width: 386px;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.ant-btn:hover{
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.ant-btn:active{
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8
|
||||
}
|
||||
}
|
||||
|
||||
.question-box {
|
||||
.title {
|
||||
text-align: center;
|
||||
|
|
|
@ -1,14 +1,102 @@
|
|||
<template>
|
||||
<div class="question-box">
|
||||
<div class="title">
|
||||
能力使用步骤
|
||||
</div>
|
||||
<div>
|
||||
<div v-for="(item, index) in dataInfo" :key="index">
|
||||
<el-form-item label="标题" prop="question">
|
||||
<div class="question-box">
|
||||
<span>步骤标题{{ index + 1 }}: </span>
|
||||
<el-input
|
||||
v-model="item.question"
|
||||
placeholder="请输入标题"
|
||||
style="width: 200px"
|
||||
:disabled="disabledType"
|
||||
>
|
||||
</el-input>
|
||||
<img
|
||||
style="color: red; margin-left: 6px"
|
||||
@click="deleteItem(index)"
|
||||
type="danger"
|
||||
size="small"
|
||||
v-if="!disabledType && dataInfo.length > 1"
|
||||
src="~@/assets/img/deleteRed.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div class="question-box1">
|
||||
<div
|
||||
class="question-box-right"
|
||||
v-for="(itemson, index) in item.answer"
|
||||
:key="index"
|
||||
>
|
||||
<span>步骤小节: </span>
|
||||
<el-input
|
||||
v-if="index != item.answer.length - 1"
|
||||
v-model="itemson.answer"
|
||||
placeholder="请输入步骤小节"
|
||||
style="width: 200px"
|
||||
:disabled="disabledType"
|
||||
>
|
||||
</el-input>
|
||||
<div v-else style="display: inline">
|
||||
<el-input
|
||||
v-model="itemson.answer"
|
||||
placeholder="请输入步骤小节"
|
||||
style="width: 200px"
|
||||
:disabled="disabledType"
|
||||
>
|
||||
</el-input>
|
||||
<div class="submit1">
|
||||
<a-button type="primary" @click="addAnswerItem(item.answer)">
|
||||
<img
|
||||
style="height: 12px; width: 12px; margin-top: -2px"
|
||||
src="~@/assets/img/jiahao.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="margin-left: 4px">添加小节</span>
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <a-button type="primary" v-if="!disabledType && index == dataInfo.length - 1"
|
||||
@click="addItem">
|
||||
<img
|
||||
style="height: 12px; width: 12px;margin-top: -2px;"
|
||||
src="~@/assets/img/jiahao.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="margin-left: 4px">添加小节</span>
|
||||
</a-button> -->
|
||||
<!-- <div class="question-box-right">
|
||||
<span>步骤小节: </span>
|
||||
<el-input v-model="itemson.answer" placeholder="请输入步骤小节" style="width:200px"
|
||||
:disabled="disabledType">
|
||||
</el-input>
|
||||
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<div class="submit">
|
||||
<a-button
|
||||
type="primary"
|
||||
v-if="!disabledType && index == dataInfo.length - 1"
|
||||
@click="addItem"
|
||||
>
|
||||
<img
|
||||
style="height: 12px; width: 12px; margin-top: -2px"
|
||||
src="~@/assets/img/jiahao.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="margin-left: 4px">添加步骤</span>
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="question-box">
|
||||
|
||||
<div v-for="(item, index) in dataInfo" :key="index">
|
||||
<el-form-item label="步骤标题" prop="question">
|
||||
<el-input v-model="item.question" placeholder="请输入标题" style="width:90%" :disabled="disabledType">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="解释说明" prop="question">
|
||||
<el-form-item label="步骤" prop="question">
|
||||
<el-input type="textarea" :rows="3" v-model="item.answer" placeholder="请输入解释说明" style="width:90%"
|
||||
:disabled="disabledType">
|
||||
</el-input>
|
||||
|
@ -19,16 +107,15 @@
|
|||
<el-button class="add-btn" size="small" v-if="!disabledType && index == dataInfo.length - 1"
|
||||
@click="addItem" type="primary">添加
|
||||
</el-button>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="step-box">
|
||||
<!-- <div class="step-box">
|
||||
<el-steps :active="2">
|
||||
<el-step status="finish" :title="item.question || `标题${index + 1}`" v-for="(item, index) in dataInfo"
|
||||
:key="index">
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</div>
|
||||
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -36,27 +123,27 @@ export default {
|
|||
props: {
|
||||
dataForm: {
|
||||
type: Object,
|
||||
default: () => { }
|
||||
default: () => {},
|
||||
},
|
||||
// 是否可编辑
|
||||
disabledType: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dataInfo: []
|
||||
}
|
||||
dataInfo: [],
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
dataInfo: {
|
||||
handler(newVal) {
|
||||
this.dataInfo = newVal;
|
||||
this.$emit('update', {
|
||||
title: '使用步骤',
|
||||
list: newVal
|
||||
})
|
||||
this.$emit("update", {
|
||||
title: "构建步骤",
|
||||
list: newVal,
|
||||
});
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
|
@ -64,70 +151,128 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
getDataInfo(dataForm) {
|
||||
let arr = []
|
||||
let arr = [];
|
||||
let fuseAttrList = dataForm.fuseAttrList || [];
|
||||
let obj = fuseAttrList.find(v => v.attrType === '使用步骤') || {}
|
||||
let attrValue = JSON.parse(obj.attrValue || "[]")
|
||||
let obj = fuseAttrList.find((v) => v.attrType === "构建步骤") || {};
|
||||
let attrValue = obj.attrValue || [];
|
||||
|
||||
if (attrValue.length > 0) {
|
||||
attrValue.map(v => {
|
||||
attrValue = JSON.parse(attrValue);
|
||||
|
||||
attrValue.map((v) => {
|
||||
arr.push({
|
||||
question: v.question,
|
||||
answer: v.answer,
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
} else {
|
||||
arr = []
|
||||
arr = [];
|
||||
arr.push({
|
||||
question: "",
|
||||
answer: "",
|
||||
})
|
||||
answer: [{ answer: "" }, { answer: "" }],
|
||||
});
|
||||
}
|
||||
this.dataInfo = arr;
|
||||
},
|
||||
// 新增
|
||||
addItem() {
|
||||
let index = this.dataInfo.length - 1;
|
||||
if (this.dataInfo[index].question === '' || this.dataInfo[index].answer === '') {
|
||||
return this.$message.warning('请填写完整信息!')
|
||||
if (this.dataInfo[index].answer === "") {
|
||||
return this.$message.warning("请填写完整信息!");
|
||||
}
|
||||
if (this.dataInfo.length >= 6) {
|
||||
return this.$message.warning('最多添加6个使用步骤!')
|
||||
return this.$message.warning("最多添加6个使用步骤!");
|
||||
}
|
||||
this.dataInfo.push({
|
||||
question: "",
|
||||
answer: "",
|
||||
})
|
||||
answer: [{ answer: "" }, { answer: "" }],
|
||||
});
|
||||
},
|
||||
addAnswerItem(itemson) {
|
||||
itemson.push({});
|
||||
},
|
||||
// 删除
|
||||
deleteItem(index) {
|
||||
this.$confirm('确认是否删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$confirm("确认是否删除?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
type: "success",
|
||||
message: "删除成功!",
|
||||
});
|
||||
this.dataInfo.splice(index, 1)
|
||||
}).catch(() => {
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
this.dataInfo.splice(index, 1);
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.question-box {
|
||||
margin-bottom: 20px;
|
||||
margin-top: 40px;
|
||||
|
||||
.title {
|
||||
.submit1 {
|
||||
display: inline;
|
||||
font-size: 0.14rem;
|
||||
margin-left: 8px;
|
||||
.ant-btn {
|
||||
width: 94px;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.ant-btn:hover {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.ant-btn:active {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
.submit {
|
||||
font-size: 0.14rem;
|
||||
margin-left: 180px;
|
||||
.ant-btn {
|
||||
width: 370px;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.ant-btn:hover {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.ant-btn:active {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
.question-box {
|
||||
float: left;
|
||||
width: 42%;
|
||||
}
|
||||
.question-box1 {
|
||||
float: left;
|
||||
width: 56%;
|
||||
border-left: 1px solid #dfdfdf;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.question-box-right {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.step-box {
|
||||
|
|
|
@ -1,6 +1,21 @@
|
|||
<template>
|
||||
<el-card shadow="never" class="aui-card--fill">
|
||||
<div class="mod-ability__bsabilityai">
|
||||
<div class="second-title">
|
||||
<div
|
||||
|
||||
:class="[choose === 0 ? 'departmentStyle' : 'departmentStyle1']"
|
||||
@click="handleChose(0)"
|
||||
>
|
||||
市级领域场景
|
||||
</div>
|
||||
<div
|
||||
:class="[choose === 1 ? 'departmentStyle' : 'departmentStyle1']"
|
||||
@click="handleChose(1)"
|
||||
>
|
||||
基层场景
|
||||
</div>
|
||||
</div>
|
||||
<el-form :inline="true" :model="dataForm">
|
||||
<el-form-item>
|
||||
<el-input v-model="dataForm.name" placeholder="名称" clearable></el-input>
|
||||
|
@ -40,21 +55,36 @@
|
|||
</el-pagination>
|
||||
|
||||
<!-- 弹窗, 新增 / 修改 -->
|
||||
<add-update-scene v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="query" @closeModal="closeModal"
|
||||
<!-- <add-update-scene v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="query" @closeModal="closeModal"
|
||||
:addOrUpdateVisible="addOrUpdateVisible" :modalType="modalType">
|
||||
</add-update-scene>
|
||||
</add-update-scene> -->
|
||||
<!-- 市级挂接 -->
|
||||
<city-add v-if="cityVisible" ref="cityAdd" @refreshDataList="query" @closeModal="closeModal"
|
||||
:cityVisible="cityVisible" :modalType="modalType">
|
||||
</city-add>
|
||||
<!--基层挂架-->
|
||||
<area-add v-if="areaVisible" ref="areaAdd" @refreshDataList="query" @closeModal="closeModal"
|
||||
:areaVisible="areaVisible" :modalType="modalType">
|
||||
</area-add>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import mixinViewModule from "@/mixins/view-module";
|
||||
import AddUpdateScene from "./add-update-scene";
|
||||
|
||||
import cityAdd from "./city-add";
|
||||
import areaAdd from "./area-add";
|
||||
export default {
|
||||
mixins: [mixinViewModule],
|
||||
data() {
|
||||
return {
|
||||
//市级挂接
|
||||
cityVisible:false,
|
||||
//基层挂接
|
||||
areaVisible:false,
|
||||
//tab切换
|
||||
choose: 0,
|
||||
tableData: [],
|
||||
childName: '',
|
||||
mixinViewModuleOptions: {
|
||||
|
@ -69,20 +99,27 @@ export default {
|
|||
name: "",
|
||||
order: 'desc',
|
||||
orderField: 'create_date',
|
||||
type: '赋能场景'
|
||||
type: '赋能场景',
|
||||
district: 0//0市级 1基层
|
||||
|
||||
},
|
||||
qp: false,
|
||||
modalType: 'add',
|
||||
};
|
||||
},
|
||||
components: {
|
||||
AddUpdateScene,
|
||||
areaAdd,
|
||||
cityAdd
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener("resize", this.a);
|
||||
this.fullScreen();
|
||||
},
|
||||
methods: {
|
||||
handleChose(index) {
|
||||
this.choose = index;
|
||||
this.searchData()
|
||||
},
|
||||
deleteRow(id) {
|
||||
this.$confirm('确认是否删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
|
@ -112,6 +149,7 @@ export default {
|
|||
},
|
||||
// 查询
|
||||
searchData() {
|
||||
this.dataForm.district=this.choose
|
||||
this.query()
|
||||
},
|
||||
// 重置
|
||||
|
@ -121,20 +159,36 @@ export default {
|
|||
},
|
||||
// 修改
|
||||
handleUpdate(val) {
|
||||
this.addOrUpdateVisible = true;
|
||||
if(this.choose==0){
|
||||
this.cityVisible=true
|
||||
}else{
|
||||
this.areaVisible=true
|
||||
}
|
||||
|
||||
this.modalType = 'update';
|
||||
const cloneVal = JSON.parse(JSON.stringify(val))
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.getDetail(cloneVal)
|
||||
if(this.choose==0){
|
||||
this.$refs.cityAdd.getDetail(cloneVal)
|
||||
}else{
|
||||
this.$refs.areaAdd.getDetail(cloneVal)
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
// 挂接
|
||||
addServe() {
|
||||
this.addOrUpdateVisible = true
|
||||
//this.addOrUpdateVisible = true
|
||||
this.modalType = 'add';
|
||||
if(this.choose===0){
|
||||
this.cityVisible=true
|
||||
}else{
|
||||
this.areaVisible=true
|
||||
}
|
||||
},
|
||||
closeModal() {
|
||||
this.addOrUpdateVisible = false;
|
||||
this.cityVisible = false;
|
||||
this.areaVisible=false;
|
||||
},
|
||||
// 详情
|
||||
showDetail(val) {
|
||||
|
@ -164,6 +218,32 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.second-title {
|
||||
margin-bottom: 16px;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
background: rgb(0,0,0,0.03);
|
||||
border-bottom: 1px solid #d9d9d9;
|
||||
}
|
||||
|
||||
.departmentStyle {
|
||||
float: left;
|
||||
width: 100px;
|
||||
color: #0058e1;
|
||||
background-color: #fff;
|
||||
border-right: 1px solid #d9d9d9;
|
||||
border-left: 1px solid #d9d9d9;
|
||||
border-top: 1px solid #d9d9d9;
|
||||
}
|
||||
.departmentStyle1 {
|
||||
|
||||
float: left;
|
||||
width: 100px;
|
||||
}
|
||||
.el-tooltip__popper {
|
||||
max-width: 50%;
|
||||
}
|
||||
|
|
|
@ -230,7 +230,7 @@
|
|||
:close-on-press-escape="false"
|
||||
:destroy-on-close="true"
|
||||
:before-close="clear"
|
||||
width="50%"
|
||||
width="60%"
|
||||
>
|
||||
<putOnTheShelf
|
||||
ref="putOnTheShelf"
|
||||
|
@ -271,6 +271,7 @@ export default {
|
|||
radio: '',
|
||||
showPutOnTheShelfFlag: false,
|
||||
showPutOnTheShelfFlag2: false,
|
||||
// routePath: '',
|
||||
submitFrom: {
|
||||
type: '组件服务',
|
||||
deptId: '',
|
||||
|
@ -328,7 +329,6 @@ export default {
|
|||
this.dataForm.name = ''
|
||||
this.dataForm.type = '组件服务'
|
||||
this.$http.get('/sys/user/info').then(res => {
|
||||
console.log('res', res.data.data, !res.data.data.superAdmin, this.$store.state.user.roleIdList)
|
||||
this.superAdmin = res.data.data.superAdmin
|
||||
})
|
||||
},
|
||||
|
@ -340,7 +340,6 @@ export default {
|
|||
// 置顶
|
||||
toppingCapacity (item) {
|
||||
this.$http.put('/resource/pin_top/' + item.id).then(res => {
|
||||
console.log('置顶', res.data.code)
|
||||
if (res.data.code == 0) {
|
||||
this.$message({
|
||||
message: '置顶成功',
|
||||
|
@ -420,7 +419,6 @@ export default {
|
|||
})
|
||||
this.dataList[index].infoList2 = dataListSinforList
|
||||
})
|
||||
console.log('this.dataList', this.dataList)
|
||||
this.total = this.mixinViewModuleOptions.getDataListIsPage
|
||||
? res.data.total
|
||||
: 0
|
||||
|
@ -443,7 +441,7 @@ export default {
|
|||
},
|
||||
showDetail (val) {
|
||||
console.log(val)
|
||||
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id)
|
||||
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id + '&&hiddenBackFlag=true')
|
||||
// this.addOrUpdateHandle(id)
|
||||
// this.addOrUpdateVisible = true
|
||||
// this.disabled = false
|
||||
|
@ -490,7 +488,6 @@ export default {
|
|||
this.uuidTwo = this.uuid(13, 16)
|
||||
this.uuidSnum = this.uuidOne + this.uuidTwo
|
||||
this.uuidSnum = this.uuidSnum.replace(/\s+/g, '')
|
||||
console.log('this.uuidOne', this.uuidSnum)
|
||||
},
|
||||
showDocument (val) {
|
||||
// 第一步:创建文档
|
||||
|
@ -629,6 +626,7 @@ export default {
|
|||
},
|
||||
// 新上架
|
||||
clear () {
|
||||
// this.$router.push(this.routePath)
|
||||
console.log('清空----------------------------------------')
|
||||
this.notFilled = []
|
||||
this.showPutOnTheShelfFlag = false
|
||||
|
@ -659,6 +657,7 @@ export default {
|
|||
})
|
||||
},
|
||||
showPutOnTheShelfVue () {
|
||||
// this.routePath = this.$route.path
|
||||
this.showPutOnTheShelfFlag = false
|
||||
this.showPutOnTheShelfFlag2 = true
|
||||
this.submitFrom.infoList[0].attrValue = this.radio
|
||||
|
@ -667,7 +666,6 @@ export default {
|
|||
)[0].children
|
||||
},
|
||||
changeInfoList (obj) {
|
||||
console.log(obj, this.submitFrom)
|
||||
this.submitFrom.infoList = this.submitFrom.infoList.filter(
|
||||
(item) => item.attrType !== obj.attrType
|
||||
)
|
||||
|
@ -691,14 +689,12 @@ export default {
|
|||
},
|
||||
// 完全删除
|
||||
deleteCompletely (row) {
|
||||
console.log('完全删除===', row)
|
||||
this.$confirm('确认是否删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$http.post('/resource/delResBySuAd?id=' + row.id).then(res => {
|
||||
console.log('删除结果', res.data)
|
||||
if (res.data.code == 0) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
|
@ -715,7 +711,6 @@ export default {
|
|||
})
|
||||
},
|
||||
submitData () {
|
||||
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
|
||||
const arr = []
|
||||
this.putOnTheShelfList.map((item) => {
|
||||
item.children.map((child) => {
|
||||
|
@ -824,6 +819,7 @@ export default {
|
|||
}
|
||||
})
|
||||
})
|
||||
|
||||
this.submitFrom.infoList = this.submitFrom.infoList.sort(
|
||||
(a, b) => arr.indexOf(a.attrType) - arr.indexOf(b.attrType)
|
||||
)
|
||||
|
@ -872,7 +868,6 @@ export default {
|
|||
if ((this.radio === '业务组件' || this.radio === '开发组件') && (!this.submitFrom.infoList.filter(val => val.attrType === '组件地址')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '组件地址')[0].attrValue)) {
|
||||
this.notFilled.push('组件地址')
|
||||
}
|
||||
console.log(this.submitFrom, this.notFilled, '表单验证')
|
||||
if (this.notFilled.length > 0) {
|
||||
this.$message({
|
||||
message: '请填写必填字段!',
|
||||
|
@ -886,8 +881,6 @@ export default {
|
|||
val.attrValue = this.radio
|
||||
}
|
||||
})
|
||||
console.log('编辑===============>', this.submitFrom)
|
||||
console.log(this.submitFrom.infoList, '===============abc')
|
||||
// 去重
|
||||
const newArr = this.submitFrom.infoList.filter(
|
||||
(element, index, self) => {
|
||||
|
@ -911,7 +904,6 @@ export default {
|
|||
})
|
||||
.catch(() => {})
|
||||
} else {
|
||||
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
|
||||
this.$http
|
||||
.post('/resource/insert?source= b', this.submitFrom)
|
||||
.then(({ data: res }) => {
|
||||
|
|
|
@ -217,7 +217,7 @@
|
|||
:close-on-press-escape='false'
|
||||
:destroy-on-close='true'
|
||||
:before-close='clear'
|
||||
width="50%">
|
||||
width="60%">
|
||||
<putOnTheShelf :required="required" :notFilled="notFilled" :putOnTheShelfList='putOnTheShelfList' @changeInfoList='changeInfoList' :type='radio' :typeInput='typeInput'></putOnTheShelf>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="clear">取 消</el-button>
|
||||
|
@ -271,6 +271,7 @@ export default {
|
|||
insertList: [],
|
||||
putOnTheShelfList: [],
|
||||
showPutOnTheShelfFlag2: false,
|
||||
// routePath: '',
|
||||
submitFrom: {
|
||||
type: '应用资源',
|
||||
deptId: '',
|
||||
|
@ -358,7 +359,7 @@ export default {
|
|||
})
|
||||
},
|
||||
showDetail (val) {
|
||||
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id)
|
||||
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id + '&&hiddenBackFlag=true')
|
||||
// this.addOrUpdateVisible = true
|
||||
// this.disabled = false
|
||||
// this.$nextTick(() => {
|
||||
|
@ -594,6 +595,7 @@ export default {
|
|||
},
|
||||
// 新上架
|
||||
clear () {
|
||||
// this.$router.push(this.routePath)
|
||||
this.notFilled = []
|
||||
this.showPutOnTheShelfFlag2 = false
|
||||
this.insertList = []
|
||||
|
@ -615,6 +617,7 @@ export default {
|
|||
},
|
||||
// 上架
|
||||
showPutOnTheShelf () {
|
||||
// this.routePath = this.$route.path
|
||||
this.showPutOnTheShelfFlag2 = true
|
||||
this.$http.get('/category/getCategoryTree').then(res => {
|
||||
this.insertList = res.data.data.filter(item => item.name === '应用资源')[0]
|
||||
|
|
|
@ -180,7 +180,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column prop="yyzy" label="应用资源" min-width="100%">
|
||||
</el-table-column>
|
||||
<el-table-column prop="zj" label="总计" min-width="100%">
|
||||
<el-table-column prop="count" label="总计" min-width="100%">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-table :data="tableData" :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
|
||||
|
@ -205,7 +205,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column prop="ysp" label="云视频" min-width="100%" >
|
||||
</el-table-column>
|
||||
<el-table-column prop="zj" label="总计" min-width="100%">
|
||||
<el-table-column prop="count" label="总计" min-width="100%">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--明细表-->
|
||||
|
@ -468,7 +468,6 @@ export default {
|
|||
this.detailsVisible = false
|
||||
},
|
||||
handleCurrentChange (val) {
|
||||
|
||||
this.currentPage = val
|
||||
// todo
|
||||
if (this.departmentId === 3) {
|
||||
|
@ -477,10 +476,8 @@ export default {
|
|||
if (this.departmentId === 4) {
|
||||
this.getTwoDetail(val)
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
|
||||
// 组件服务部门发布情况--改为能力上架统计
|
||||
getFirstTree (page) {
|
||||
if (this.examineStatus == '-1') {
|
||||
|
@ -508,7 +505,6 @@ export default {
|
|||
}
|
||||
})
|
||||
.then((res) => {
|
||||
|
||||
if (res.data.code !== 0) {
|
||||
this.tableData =[]
|
||||
this.tableDataClone = []
|
||||
|
@ -556,7 +552,6 @@ export default {
|
|||
})
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
// 组件服务部门使用情况列表-改为能力使用统计
|
||||
getSecondTree (page) {
|
||||
|
@ -593,33 +588,7 @@ export default {
|
|||
|
||||
}else{
|
||||
const result = res.data.data
|
||||
for (let i = 0; i < result.length; i++) {
|
||||
if (!result[i].hasOwnProperty('yyzy')) {
|
||||
result[i].yyzy = 0
|
||||
}
|
||||
if (!result[i].hasOwnProperty('kfzj')) {
|
||||
result[i].kfzj = 0
|
||||
}
|
||||
if (!result[i].hasOwnProperty('znsf')) {
|
||||
result[i].znsf = 0
|
||||
}
|
||||
if (!result[i].hasOwnProperty('tcfw')) {
|
||||
result[i].tcfw = 0
|
||||
}
|
||||
if (!result[i].hasOwnProperty('ywzj')) {
|
||||
result[i].ywzj = 0
|
||||
}
|
||||
if (!result[i].hasOwnProperty('hys')) {
|
||||
result[i].hys = 0
|
||||
}
|
||||
result[i].zj =
|
||||
parseInt(result[i].yyzy) +
|
||||
parseInt(result[i].kfzj) +
|
||||
parseInt(result[i].znsf) +
|
||||
parseInt(result[i].ywzj) +
|
||||
parseInt(result[i].tcfw) +
|
||||
parseInt(result[i].hys)
|
||||
}
|
||||
|
||||
this.tableData = res.data.data
|
||||
this.tableDataClone = res.data.data
|
||||
this.total = res.data.data.total
|
||||
|
@ -708,8 +677,7 @@ export default {
|
|||
this.tableData = []
|
||||
this.tableDataClone = []
|
||||
this.total = 0
|
||||
return this.$message.error("服务器内部异常")
|
||||
|
||||
return this.$message.error('服务器内部异常')
|
||||
} else {
|
||||
this.tableData = res.data.data.list
|
||||
this.tableDataClone = res.data.data.list
|
||||
|
@ -726,7 +694,6 @@ export default {
|
|||
},
|
||||
// 能力使用明细
|
||||
getTwoDetail (page) {
|
||||
|
||||
var passAndReview = '' // 转变"通过"字段为通过
|
||||
if (this.examineStatus == '-1') {
|
||||
this.status = ''
|
||||
|
@ -756,13 +723,11 @@ export default {
|
|||
}
|
||||
})
|
||||
.then((res) => {
|
||||
|
||||
if (res.data.code !== 0) {
|
||||
this.tableData = []
|
||||
this.tableDataClone = []
|
||||
this.total = 0
|
||||
return this.$message.error("服务器内部异常")
|
||||
|
||||
return this.$message.error('服务器内部异常')
|
||||
} else {
|
||||
this.tableData = res.data.data.list
|
||||
this.tableDataClone = res.data.data.list
|
||||
|
@ -776,11 +741,9 @@ export default {
|
|||
provideDept: this.provideDepartment
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
handleClick (row) {
|
||||
if (this.choseId === 0) {
|
||||
if (this.departmentId === 1) {
|
||||
|
@ -809,8 +772,6 @@ export default {
|
|||
|
||||
// 根据不同的type查询不同的表格数据
|
||||
handleChose (index) {
|
||||
|
||||
|
||||
this.checked = false
|
||||
this.departmentId = index
|
||||
this.currentPage = 1
|
||||
|
|
|
@ -215,6 +215,7 @@
|
|||
</el-card>
|
||||
</template>
|
||||
<script>
|
||||
import bus from '@/views/bus.js'
|
||||
import Cookies from 'js-cookie'
|
||||
export default {
|
||||
data () {
|
||||
|
@ -248,6 +249,13 @@ export default {
|
|||
roomNameA: ''
|
||||
}
|
||||
},
|
||||
created () {
|
||||
bus.$off('roomExamineAdminInit')
|
||||
bus.$on('roomExamineAdminInit', () => {
|
||||
this.getSerach()
|
||||
bus.$emit('updateTaskNum')
|
||||
})
|
||||
},
|
||||
mounted () {
|
||||
this.getSerach()
|
||||
},
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<el-card shadow="never" class="roomBox">
|
||||
<div class="roomExamineSearch">
|
||||
<p>会客厅名称: </p>
|
||||
<el-input
|
||||
v-model="roomNameA"
|
||||
style="width: 160px"
|
||||
|
@ -328,9 +329,10 @@ export default {
|
|||
}
|
||||
.roomExamineSearch {
|
||||
display: flex;
|
||||
width: 240px;
|
||||
width: 340px;
|
||||
margin-bottom: 20px;
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
}
|
||||
}
|
||||
.dialog-footer {
|
||||
|
|
|
@ -34,7 +34,7 @@ export default {
|
|||
tip: String,
|
||||
maxCount: Number,
|
||||
data: Array,
|
||||
list: Array,
|
||||
list: Object ,
|
||||
emitFlag: String,
|
||||
busType: Number
|
||||
},
|
||||
|
@ -46,13 +46,13 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
handleExceed (file) {
|
||||
console.log(file)
|
||||
|
||||
},
|
||||
handError (err, file, fileList) {
|
||||
console.log(err, file, fileList)
|
||||
|
||||
},
|
||||
handlePreview (file) {
|
||||
console.log(file)
|
||||
|
||||
if (file.response) {
|
||||
window.open(
|
||||
window.SITE_CONFIG.previewUrl +
|
||||
|
@ -74,7 +74,7 @@ export default {
|
|||
message: file.name + '上传成功',
|
||||
type: 'success'
|
||||
})
|
||||
console.log(file, fileList)
|
||||
|
||||
this.$emit('changeInfoList', {
|
||||
attrType: this.title,
|
||||
attrValue: file.response.data,
|
||||
|
@ -91,7 +91,7 @@ export default {
|
|||
}
|
||||
},
|
||||
handleRemove (file) {
|
||||
console.log(file, '删除', this.title)
|
||||
|
||||
this.$emit('changeInfoList', {
|
||||
attrType: this.title,
|
||||
attrValue: '',
|
||||
|
@ -104,7 +104,7 @@ export default {
|
|||
if (this.list.note1) {
|
||||
this.fileList.push({ name: this.list.note2 || '--', url: this.list.note1 })
|
||||
}
|
||||
console.log('上传组件===================>', this.list, this.fileList)
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -7,10 +7,13 @@
|
|||
:model="dataForm"
|
||||
@keyup.enter.native="getDataList()"
|
||||
>
|
||||
<el-form-item>
|
||||
<span>{{ $t('process.userName') + ':'}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="dataForm.processDefinitionId"
|
||||
:placeholder="$t('process.name')"
|
||||
v-model="dataForm.userName"
|
||||
:placeholder="$t('process.userName')"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
|
|
@ -7,10 +7,13 @@
|
|||
:model="dataForm"
|
||||
@keyup.enter.native="getDataList()"
|
||||
>
|
||||
<el-form-item>
|
||||
<span>{{ $t('process.userName') + ':'}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="dataForm.processDefinitionId"
|
||||
:placeholder="$t('process.name')"
|
||||
v-model="dataForm.userName"
|
||||
:placeholder="$t('process.userName')"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
|
|
@ -7,10 +7,13 @@
|
|||
:model="dataForm"
|
||||
@keyup.enter.native="getDataList()"
|
||||
>
|
||||
<el-form-item>
|
||||
<span>{{ $t('process.userName') + ':'}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="dataForm.processDefinitionId"
|
||||
:placeholder="$t('process.name')"
|
||||
v-model="dataForm.userName"
|
||||
:placeholder="$t('process.userName')"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
|
|
@ -7,10 +7,13 @@
|
|||
:model="dataForm"
|
||||
@keyup.enter.native="getDataList()"
|
||||
>
|
||||
<el-form-item>
|
||||
<span>{{ $t('process.userName') + ':'}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="dataForm.processDefinitionId"
|
||||
:placeholder="$t('process.name')"
|
||||
v-model="dataForm.userName"
|
||||
:placeholder="$t('process.userName')"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
|
|
@ -7,10 +7,13 @@
|
|||
:model="dataForm"
|
||||
@keyup.enter.native="getDataList()"
|
||||
>
|
||||
<el-form-item>
|
||||
<span>{{ $t('process.userName') + ':'}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="dataForm.processDefinitionId"
|
||||
:placeholder="$t('process.name')"
|
||||
v-model="dataForm.userName"
|
||||
:placeholder="$t('process.userName')"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
|
|
@ -318,6 +318,9 @@ export default {
|
|||
onRemove (file, fileList) {
|
||||
this.$nextTick(() => {
|
||||
if (fileList.length == 0) {
|
||||
this.ruleForm.pic =null
|
||||
this.fileList = []
|
||||
this.picImg =''
|
||||
this.checkImgSuccess = false // 检查图片是否加载成功
|
||||
// this.$refs.ruleForm.validate() //删除图片,重新触发校验
|
||||
}
|
||||
|
@ -358,7 +361,7 @@ export default {
|
|||
this.$http.get(`/meeting/${row.id}`).then(({ data: res }) => {
|
||||
this.dialogFormVisible = true
|
||||
this.ruleForm = res.data
|
||||
if (res.data.pic != null) {
|
||||
if (res.data.pic != null && res.data.pic != '') {
|
||||
// let imgUrl = { name: res.data.name, url: res.data.pic }
|
||||
// this.fileList.push(imgUrl)
|
||||
this.picImg = res.data.pic
|
||||
|
|
|
@ -24,7 +24,16 @@
|
|||
<span class="text" v-if="dataForm.content.applicationSystem">应用系统:<span>{{
|
||||
dataForm.content.applicationSystem || '--'
|
||||
}}</span></span>
|
||||
<template v-if="version == 'xihaian'">
|
||||
<span class="text" v-if="version == 'xihaian'">申请期限:<span>
|
||||
{{
|
||||
dataForm.content.expireDate || '--'}}</span></span>
|
||||
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="text"></span>
|
||||
</template>
|
||||
|
||||
</p>
|
||||
<p>
|
||||
<span v-if="dataForm.content.applicationSceneStr">应用场景:<span>
|
||||
|
@ -35,11 +44,6 @@
|
|||
需求依据:<span>
|
||||
{{ dataForm.content.applicationBackground || '--' }}</span></span>
|
||||
</p>
|
||||
<!-- <p>
|
||||
<div>
|
||||
<el-button type="primary" v-if="dataForm.content.attachment" size="small" @click="download(dataForm.content)">附件下载</el-button>
|
||||
</div>
|
||||
</p> -->
|
||||
<p>
|
||||
<div v-if="version == 'xihaian'">
|
||||
<el-button type="primary" size="small" @click="download(dataForm.content)">附件下载</el-button>
|
||||
|
|
|
@ -26,7 +26,7 @@ js:
|
|||
:placeholder="'请选择' + name">
|
||||
<el-option
|
||||
:value="itemSelect.dictLabel"
|
||||
v-for="(itemSelect, indexSelect) in options"
|
||||
v-for="(itemSelect, indexSelect) in optionsCopy"
|
||||
:key="indexSelect">
|
||||
{{ itemSelect.dictLabel }}
|
||||
</el-option>
|
||||
|
@ -38,9 +38,9 @@ js:
|
|||
filterable
|
||||
placeholder="请输入关键词"
|
||||
@change="changeIiem(name,data.note1)"
|
||||
:loading="loading">
|
||||
>
|
||||
<el-option
|
||||
v-for="(itemSelect) in options"
|
||||
v-for="(itemSelect) in optionsCopy"
|
||||
:key="itemSelect.id"
|
||||
:label="itemSelect.name"
|
||||
:value="itemSelect.id">
|
||||
|
@ -56,7 +56,7 @@ js:
|
|||
>
|
||||
<el-option
|
||||
:value="itemSelect.dictLabel"
|
||||
v-for="(itemSelect, indexSelect) in options"
|
||||
v-for="(itemSelect, indexSelect) in optionsCopy"
|
||||
:key="indexSelect">
|
||||
{{ itemSelect.dictLabel }}
|
||||
</el-option>
|
||||
|
@ -66,7 +66,7 @@ js:
|
|||
v-else-if="type === 'checkBox'"
|
||||
>
|
||||
<el-checkbox-group v-model="valueCheckBox" @change='chekBoxChange'>
|
||||
<el-checkbox-button v-for="val in options" :label="val.dictLabel" :key="val.dictLabel">{{val.dictLabel}}</el-checkbox-button>
|
||||
<el-checkbox-button v-for="val in optionsCopy" :label="val.dictLabel" :key="val.dictLabel">{{val.dictLabel}}</el-checkbox-button>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
<!-- 不可点的input框 -->
|
||||
|
@ -86,7 +86,6 @@ js:
|
|||
<el-date-picker v-model="data.note1" type="date" :placeholder="'选择' + name" value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -97,7 +96,7 @@ export default {
|
|||
},
|
||||
props: {
|
||||
type: String,
|
||||
data: Array,
|
||||
data: Object,
|
||||
name: String,
|
||||
value: String,
|
||||
changeField: Array,
|
||||
|
@ -108,6 +107,7 @@ export default {
|
|||
},
|
||||
data () {
|
||||
return {
|
||||
optionsCopy:[],
|
||||
// 多选放数据的数组
|
||||
valueCheckBox: [],
|
||||
// 单选数据
|
||||
|
@ -134,7 +134,7 @@ export default {
|
|||
res.data.list.forEach((element) => {
|
||||
dataList.push(element)
|
||||
})
|
||||
this.options = dataList
|
||||
this.optionsCopy = dataList
|
||||
})
|
||||
.catch(() => {})
|
||||
} else if (this.data.name === '归属部门' || this.data.name === '所属产品线') {
|
||||
|
@ -143,10 +143,9 @@ export default {
|
|||
res.data.data.forEach((element) => {
|
||||
dataList.push(element)
|
||||
})
|
||||
this.options = dataList
|
||||
this.optionsCopy = dataList
|
||||
if (!this.data.note1) {
|
||||
this.$http.get('/sys/user/info').then(({ data: res }) => {
|
||||
console.log(res.data)
|
||||
this.data.note1 = res.data.deptId
|
||||
})
|
||||
}
|
||||
|
@ -160,7 +159,6 @@ export default {
|
|||
// this.options = dataList
|
||||
if (this.data.note1 == null) {
|
||||
this.$http.get('/sys/user/info').then(({ data: res }) => {
|
||||
console.log(res.data)
|
||||
this.data.note1 = res.data.realName || ''
|
||||
})
|
||||
}
|
||||
|
@ -174,11 +172,12 @@ export default {
|
|||
// this.options = dataList
|
||||
if (this.data.note1 == null) {
|
||||
this.$http.get('/sys/user/info').then(({ data: res }) => {
|
||||
console.log(res.data)
|
||||
this.data.note1 = res.data.mobile || ''
|
||||
})
|
||||
}
|
||||
// })
|
||||
}else{
|
||||
this.optionsCopy=this.options
|
||||
}
|
||||
},
|
||||
chekBoxChange (list) {
|
||||
|
@ -200,7 +199,6 @@ export default {
|
|||
},
|
||||
showTypeClick (e) {
|
||||
this.showType = e
|
||||
console.log(e)
|
||||
this.$emit('show-type', this.showType)
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-07-08 09:54:50
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-07-28 20:09:53
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-20 10:42:37
|
||||
* @Description: 多条数据特殊处理
|
||||
-->
|
||||
<template>
|
||||
|
@ -19,16 +19,15 @@
|
|||
<span>{{ attr.name }}</span>
|
||||
<span v-if="attr.type === 'image'">
|
||||
<!-- <a-image :width="85" :height="60" :src="val.img" /> -->
|
||||
<el-image
|
||||
style="width: 85px; height: 60px"
|
||||
:src="val.img"
|
||||
:preview-src-list="[val.img]">
|
||||
<el-image style="width: 85px; height: 60px" :src="val.img" :preview-src-list="[val.img]">
|
||||
</el-image>
|
||||
</span>
|
||||
<span v-else>{{ val[attr.field] + (attr.company || '') }}</span>
|
||||
</p>
|
||||
<div class="del">
|
||||
<i class="delImg" @click="del( index)"></i>
|
||||
<i class="updateImg" @click="update(configure.name, index)"></i>
|
||||
<div @click="update(configure.name, index)" style="margin-right:10px;">修改</div>
|
||||
<i class="delImg" @click="del(configure.name, index)"></i>
|
||||
<div @click="del(configure.name, index)">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -39,11 +38,7 @@
|
|||
<a-input v-model:value="val.note1" ::maxlength="24" :placeholder="'请填写' + val.name + ',不超过24个字符'"
|
||||
v-if="val.type == 'input'" />
|
||||
<template v-if="val.type == 'input2'">
|
||||
<a-input
|
||||
v-model:value="val.note1"
|
||||
:placeholder="'请填写' + val.name"
|
||||
style="width: 570px;"
|
||||
/>
|
||||
<a-input v-model:value="val.note1" :placeholder="'请填写' + val.name" style="width: 570px;" />
|
||||
<span style="width: 2.5rem; padding-left: 0.1rem">
|
||||
{{
|
||||
numType == '一次性买断'
|
||||
|
@ -62,10 +57,11 @@
|
|||
v-else-if="val.type == 'textArea'" />
|
||||
<a-input-number v-model:value="val.note1" :min="0" :max="9999" :step="0.01" string-mode
|
||||
:placeholder="'请填写' + val.name" v-else-if="val.type == 'number'" />
|
||||
<a-radio-group v-model:value="val.note1" :options="val.options" v-else-if="val.type == 'radio'" @change="radioChange"/>
|
||||
<a-radio-group v-model:value="val.note1" :options="val.options" v-else-if="val.type == 'radio'"
|
||||
@change="radioChange" />
|
||||
<!-- <upload :key="showKey" type="图片" btnName="上传图片" :maxCount="1" :data="val" :list="[]" tip="支持图片类型,大小不超过100M"
|
||||
v-else-if="val.type == 'image'"></upload> -->
|
||||
<upload :key="showKey" :child='val' limit='1' accept='.jpg,.png' v-else-if="val.type == 'image'"></upload>
|
||||
<upload :key="showKey" :child='val' :limit=limit accept='.jpg,.png' v-else-if="val.type == 'image'"></upload>
|
||||
</div>
|
||||
<div class="submit">
|
||||
<a-button type="primary" @click="add(configure.name)">添加更多</a-button>
|
||||
|
@ -74,6 +70,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { deepClone } from '@/utils/form-generator'
|
||||
import upload from '@/views/modules/ability/upload.vue'
|
||||
// import upload from '@/views/modules/components/upload'
|
||||
export default {
|
||||
|
@ -85,8 +82,37 @@ export default {
|
|||
configure: Object,
|
||||
showData: Object
|
||||
},
|
||||
watch: {
|
||||
configure: {
|
||||
handler(newVal) {
|
||||
let title = newVal.name
|
||||
let list = newVal.list
|
||||
let coloneData = deepClone(this.data)
|
||||
if (list && list.length > 0) {
|
||||
let obj = {}
|
||||
list.forEach((item) => {
|
||||
obj[item.field] = item.note1
|
||||
})
|
||||
if (obj.name || obj.question || obj.price) {
|
||||
coloneData.push(obj)
|
||||
}
|
||||
}
|
||||
if (coloneData.length > 0) {
|
||||
this.$emit('changeInfoList', {
|
||||
attrType: title,
|
||||
attrValue: JSON.stringify(coloneData),
|
||||
delFlag: 0
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
limit: 1,
|
||||
data: [],
|
||||
showKey: 0,
|
||||
numType: '一次性买断'
|
||||
|
@ -94,7 +120,6 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
add(title, addFlag, submitFlag) {
|
||||
console.log(title, addFlag, submitFlag)
|
||||
const list = this.configure.list
|
||||
let flag = true
|
||||
list.forEach((item) => {
|
||||
|
@ -171,13 +196,24 @@ export default {
|
|||
delFlag: 0
|
||||
})
|
||||
},
|
||||
update(title, index) {
|
||||
const obj = this.data[index]
|
||||
this.data.splice(index, 1)
|
||||
const str = this.data.length > 0 ? JSON.stringify(this.data) : ''
|
||||
this.$emit('changeInfoList', {
|
||||
attrType: title,
|
||||
attrValue: str,
|
||||
delFlag: 0
|
||||
})
|
||||
this.configure.list.map(val => {
|
||||
val.note1 = obj[val.field]
|
||||
})
|
||||
},
|
||||
radioChange(e) {
|
||||
console.log(e, 'wewewe')
|
||||
this.numType = e.target.value
|
||||
}
|
||||
},
|
||||
created() {
|
||||
console.log('特殊处理=============>', this.showData)
|
||||
if (this.configure.name === '计费标准信息' || this.configure.name === '常见问题') {
|
||||
if (this.showData.children[0].note1) {
|
||||
this.data = JSON.parse(this.showData.children[0].note1)
|
||||
|
@ -214,6 +250,7 @@ export default {
|
|||
.bottom {
|
||||
margin-top: 25px;
|
||||
margin-bottom: 25px;
|
||||
|
||||
.items {
|
||||
background: #fafafa;
|
||||
padding: 10px;
|
||||
|
@ -242,12 +279,22 @@ export default {
|
|||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
|
||||
.updateImg {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background: url("~@/assets/img/putOnTheShelf/update.png") no-repeat;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.delImg {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background: url(~@/assets/img/putOnTheShelf/del.png) no-repeat;
|
||||
background: url("~@/assets/img/putOnTheShelf/del.png") no-repeat;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
@ -316,6 +363,7 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-image__preview {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
@ -371,15 +419,18 @@ export default {
|
|||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
::v-deep .ant-input-number {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
::v-deep .ant-transfer-list-header-title {
|
||||
font-size: 16px;
|
||||
color: #303133;
|
||||
font-weight: 400;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: 100px;
|
||||
resize: none;
|
||||
|
|
|
@ -1,13 +1,28 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-07-08 09:48:52
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-07-25 15:57:25
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-29 09:34:56
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
<div class="put-on-the-shelf">
|
||||
<div v-for="parent in putOnTheShelfList" :key='parent.id'>
|
||||
<div class="left">
|
||||
<div class="item" v-for="(parent,index) in putOnTheShelfList" :key="parent.id+'left'">
|
||||
<div class="main" @click="selectItem(parent.name)" :class="selectName===parent.name?'select':''">
|
||||
<div class="circular-box">
|
||||
<div class="circular"></div>
|
||||
</div>
|
||||
<div class="name">{{ parent.name }}</div>
|
||||
</div>
|
||||
<div class="bottom" v-if="index !== putOnTheShelfList.length-1"></div>
|
||||
</div>
|
||||
<!-- <a-anchor @change="handlerAnchor" :affix="true" :get-current-anchor="'#'+putOnTheShelfList[0].name">
|
||||
<a-anchor-link v-for="parent in putOnTheShelfList" :key="parent.id+'left'" :href="'#'+parent.name" :title="parent.name"/>
|
||||
</a-anchor> -->
|
||||
</div>
|
||||
<div class="right" id="putOnTheShelf">
|
||||
<div v-for="parent in showList" :key='parent.id' :id="parent.name">
|
||||
<div v-for='child in parent.children' :key='child.id'>
|
||||
<template v-if='judgmentType.filter(item => item.name==child.name).length === 0'>
|
||||
<div class="top">{{child.name}}</div>
|
||||
|
@ -59,6 +74,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import inputSelectCheckbox from './components/inputSelectCheckbox'
|
||||
|
@ -80,6 +96,8 @@ export default {
|
|||
},
|
||||
data () {
|
||||
return {
|
||||
selectName: '',
|
||||
showList: [],
|
||||
changeField: [],
|
||||
judgmentType: [
|
||||
{
|
||||
|
@ -193,6 +211,20 @@ export default {
|
|||
},
|
||||
mounted () {
|
||||
this.defaultContent()
|
||||
// this.showList = this.putOnTheShelfList[0]
|
||||
},
|
||||
watch: {
|
||||
putOnTheShelfList: {
|
||||
handler (newVal, oldVal) {
|
||||
if (this.showList.length === 0 && newVal.length > 0) {
|
||||
this.showList = [this.putOnTheShelfList[0]]
|
||||
this.selectName = this.showList[0].name
|
||||
console.log('初始化', this.$router, this.$route)
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 提交
|
||||
|
@ -234,22 +266,77 @@ export default {
|
|||
},
|
||||
showType (data) {
|
||||
this.showTypeName = data
|
||||
console.log(data, this.showTypeName, '传过来的showType')
|
||||
},
|
||||
selectItem (str) {
|
||||
if (str) {
|
||||
this.selectName = str
|
||||
this.showList = this.putOnTheShelfList.filter(val => val.name === str)
|
||||
this.$nextTick(() => {
|
||||
console.log(document.querySelector('#putOnTheShelf'))
|
||||
document.querySelector('#putOnTheShelf').scrollTop = 0
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang='scss' scoped>
|
||||
.put-on-the-shelf {
|
||||
height: 500px;
|
||||
// height: 500px;
|
||||
display: flex;
|
||||
padding: 0 50px;
|
||||
.left {
|
||||
margin-right: 50px;
|
||||
.main{
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.circular-box{
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 9px;
|
||||
border: 1px rgba($color: #0058e1, $alpha: 0) solid;
|
||||
margin-right: 20px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.circular{
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 6px;
|
||||
border: 1px #0058e1 solid;
|
||||
}
|
||||
}
|
||||
}
|
||||
.select{
|
||||
|
||||
.circular-box{
|
||||
border: 1px #0058e1 solid;
|
||||
.circular{
|
||||
background: #0058e1;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom{
|
||||
height: 46px;
|
||||
border-left: #0058e1 1px solid;
|
||||
margin: -4px 0 -4px 9px;
|
||||
}
|
||||
}
|
||||
.right {
|
||||
height: 500px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.put-on-the-shelf::-webkit-scrollbar {
|
||||
.right::-webkit-scrollbar {
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
// .put-on-the-shelf::-webkit-scrollbar {
|
||||
// width: 0;
|
||||
// }
|
||||
|
||||
.top {
|
||||
width: 800px;
|
||||
color: #333333;
|
||||
font-size: 22px;
|
||||
display: flex;
|
||||
|
|
|
@ -89,9 +89,6 @@ export default {
|
|||
},
|
||||
(res) => {
|
||||
|
||||
// if (res.data.code !== 0) {
|
||||
// return
|
||||
// }
|
||||
if (res.data.data && res.data.data.length > 0) {
|
||||
this.data = res.data.data[0].values
|
||||
this.data.map((item) => {
|
||||
|
@ -108,8 +105,8 @@ export default {
|
|||
}
|
||||
} else {
|
||||
this.trendChartData = {
|
||||
xaxis: [],
|
||||
ydata: []
|
||||
xaxis: this.ydata,
|
||||
ydata:this.xaxis
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,7 +115,7 @@ export default {
|
|||
})
|
||||
},
|
||||
(err) => {
|
||||
console.log('err', err)
|
||||
|
||||
}
|
||||
)
|
||||
},
|
||||
|
|
|
@ -73,7 +73,7 @@ export default {
|
|||
},
|
||||
// 部门申请
|
||||
resourceData: [],
|
||||
resourceColor: ['#7b2cff', '#fd5151', , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
|
||||
resourceColor: ['#7b2cff', '#fd5151' , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
|
||||
// 部门申请
|
||||
applyData: [],
|
||||
applyColor: ['#5085f2', '#e75fc3', '#f87be2', '#f2719a', '#fca4bb', '#f59a8f', '#fdb301', '#57e7ec', '#cf9ef1'],
|
||||
|
|
4920
front/README.md
4920
front/README.md
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2020-07-07 16:03:23
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-08 13:42:49
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-12-29 17:34:17
|
||||
* @Description: 系统静态参数配置
|
||||
*/
|
||||
var _global = {}
|
||||
|
@ -68,7 +68,7 @@ var CONFIGITEM = {
|
|||
// cameraUrl: '192.168.124.236:9537', // 远雄(不挂vpn可直接连)
|
||||
},
|
||||
backUrl: 'http://10.134.135.9:9797',
|
||||
apiURL: 'http://10.134.135.9:8888/renren-admin',
|
||||
apiURL: 'http://10.134.135.92:8888/renren-admin',
|
||||
// apiURL: 'http://192.168.124.233:8888/ucs-admin',
|
||||
// previewUrl: 'http://10.134.135.9:9796/',
|
||||
// websocketURL: '10.134.135.9:8888/ucs-admin', // 正式环境
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
cursor: pointer;
|
||||
}
|
||||
.ant-message {
|
||||
z-index: 10010!important;
|
||||
z-index: 10012!important;
|
||||
}
|
||||
.ant-modal-wrap{
|
||||
z-index: 10010!important;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<!--
|
||||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-05-06 11:12:0011-18 19:07:53
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-16 09:41:27
|
||||
* @Date: 2022-05-06 11:12:00
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-12-29 17:34:24
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
|
@ -22,8 +22,9 @@
|
|||
import { onBeforeUnmount, onMounted, watch, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { useStore } from 'vuex'
|
||||
const router = useRouter()
|
||||
|
||||
const store = useStore()
|
||||
const locale = zhCN
|
||||
const token = Cookies.get('ucsToken')
|
||||
const whoShow1 = ref(whoShow)
|
||||
|
@ -88,10 +89,11 @@
|
|||
}
|
||||
}
|
||||
const waterMarkInit = (newValue) => {
|
||||
getUser().then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
realName = res.data.data.realName
|
||||
}
|
||||
// getUser().then((res) => {
|
||||
// if (res.data.code == 0) {
|
||||
// realName = res.data.data.realName
|
||||
// }
|
||||
realName = store.getters['user/realName']
|
||||
if (realName.length > 13) {
|
||||
onWholeWaterMark(
|
||||
[realName, moment().format('YYYY-MM-DD')],
|
||||
|
@ -130,7 +132,7 @@
|
|||
changeWaterMark(newValue)
|
||||
}
|
||||
})
|
||||
})
|
||||
// })
|
||||
}
|
||||
watch(
|
||||
() => router.currentRoute.value.path,
|
||||
|
@ -142,16 +144,16 @@
|
|||
realName,
|
||||
realName.charCodeAt()
|
||||
)
|
||||
// 如果刚登陆 初始化水印
|
||||
if (newValue == '/home') {
|
||||
waterMarkInit(newValue)
|
||||
}
|
||||
// // 如果刚登陆 初始化水印
|
||||
// if (newValue == '/home') {
|
||||
// waterMarkInit(newValue)
|
||||
// }
|
||||
changeWaterMark(newValue)
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
onMounted(() => {
|
||||
// waterMarkInit()
|
||||
waterMarkInit()
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
// 4.卸载前, 关闭链接
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-03-29 17:48:03
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-10-25 09:37:05
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-12-29 14:50:51
|
||||
* @Description: 告诉大家这是什么
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
|
@ -62,3 +62,11 @@ export function register() {
|
|||
method: 'post',
|
||||
})
|
||||
}
|
||||
// 获取菜单
|
||||
export function getNavList(params) {
|
||||
return request({
|
||||
url: '/sys/menu/nav',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 523 B |
|
@ -2,12 +2,10 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-03-29 17:48:03
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-08-06 15:00:49
|
||||
* @LastEditTime: 2022-12-29 10:30:38
|
||||
* @Description: 告诉大家这是什么
|
||||
*/
|
||||
import {
|
||||
createApp
|
||||
} from 'vue'
|
||||
import { createApp } from 'vue'
|
||||
import Antd from 'ant-design-vue'
|
||||
import mitt from 'mitt'
|
||||
import App from './App'
|
||||
|
@ -17,8 +15,8 @@ import store from './store'
|
|||
import 'ant-design-vue/dist/antd.css'
|
||||
import '@/vab'
|
||||
import * as echarts from 'echarts'
|
||||
import * as moment from "moment"
|
||||
import "dayjs/locale/zh-cn";
|
||||
import * as moment from 'moment'
|
||||
import 'dayjs/locale/zh-cn'
|
||||
import vue3videoPlay from 'vue3-video-play-emiyagm' // 引入组件
|
||||
import 'vue3-video-play-emiyagm/dist/style.css' // 引入css
|
||||
import ElementPlus from 'element-plus'
|
||||
|
@ -58,7 +56,6 @@ router.beforeEach((to, from, next) => {
|
|||
next()
|
||||
})
|
||||
|
||||
|
||||
// 判断浏览器
|
||||
// function judgeAgent() {
|
||||
// let userAgent = navigator.userAgent // 取得浏览器的userAgent字符串
|
||||
|
|
|
@ -21,6 +21,7 @@ const state = () => ({
|
|||
avatar: '',
|
||||
role: 0, // 用户管理员权限
|
||||
roleList: [], // 用户管理员权限
|
||||
navList: [],
|
||||
})
|
||||
const getters = {
|
||||
accessToken: (state) => state.accessToken,
|
||||
|
@ -32,6 +33,7 @@ const getters = {
|
|||
userId: (state) => state.userId,
|
||||
deptName: (state) => state.deptName,
|
||||
deptId: (state) => state.deptId,
|
||||
navList: (state) => state.navList,
|
||||
}
|
||||
const mutations = {
|
||||
/**
|
||||
|
@ -77,6 +79,11 @@ const mutations = {
|
|||
setDeptName(state, name) {
|
||||
state.deptName = name
|
||||
},
|
||||
// 设置门户导航
|
||||
setNavList(state, nav) {
|
||||
debugger
|
||||
state.navList = nav
|
||||
},
|
||||
setDeptId(state, name) {
|
||||
state.deptId = name
|
||||
},
|
||||
|
|
|
@ -61,6 +61,7 @@ const instance = axios.create({
|
|||
timeout: requestTimeout,
|
||||
headers: {
|
||||
'Content-Type': contentType,
|
||||
'Accept-Language': 'zh-CN',
|
||||
},
|
||||
})
|
||||
|
||||
|
|
|
@ -138,12 +138,20 @@
|
|||
//查看详情方法
|
||||
function viewDetails(id) {
|
||||
console.log('id=========>', id)
|
||||
router.push({
|
||||
path: '/details',
|
||||
// router.push({
|
||||
// path: '/details',
|
||||
// query: {
|
||||
// id: id,
|
||||
// },
|
||||
// })
|
||||
const detailPage = router.resolve({
|
||||
path: '/details', // 跳转的页面路由
|
||||
query: {
|
||||
id: id,
|
||||
hiddenBackFlag: true,
|
||||
},
|
||||
})
|
||||
window.open(detailPage.href, '_blank')
|
||||
}
|
||||
// 获取榜单数据
|
||||
const praiseList = ref([])
|
||||
|
|
|
@ -59,12 +59,20 @@
|
|||
//查看详情方法
|
||||
function viewDetails(id) {
|
||||
console.log('id=========>', id)
|
||||
router.push({
|
||||
path: '/demandDetails',
|
||||
// router.push({
|
||||
// path: '/demandDetails',
|
||||
// query: {
|
||||
// id: id,
|
||||
// },
|
||||
// })
|
||||
const detailPage = router.resolve({
|
||||
path: '/demandDetails', // 跳转的页面路由
|
||||
query: {
|
||||
id: id,
|
||||
// hiddenBackFlag: true,
|
||||
},
|
||||
})
|
||||
window.open(detailPage.href, '_blank')
|
||||
}
|
||||
function jumpPage() {
|
||||
router.push({
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-17 14:11:08
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-10-26 14:57:25
|
||||
* @LastEditTime: 2022-12-20 11:39:05
|
||||
* @Description: 上架
|
||||
-->
|
||||
<template>
|
||||
|
@ -50,17 +50,31 @@
|
|||
"
|
||||
>
|
||||
<!-- <span>{{ title.name }}-{{ index + 1 }}</span> -->
|
||||
<div class="del">
|
||||
<i class="updateImg" @click="update(title.name, index)"></i>
|
||||
<div
|
||||
@click="update(title.name, index)"
|
||||
style="margin-right: 10px"
|
||||
>
|
||||
修改
|
||||
</div>
|
||||
<a-popconfirm
|
||||
:title="'是否删除该条' + title.name + '?'"
|
||||
ok-text="是"
|
||||
cancel-text="否"
|
||||
@confirm="del(title.name, index)"
|
||||
>
|
||||
<div class="del">
|
||||
<i class="delImg"></i>
|
||||
<div>删除</div>
|
||||
</div>
|
||||
</a-popconfirm>
|
||||
<a-popconfirm
|
||||
:title="'是否删除该条' + title.name + '?'"
|
||||
ok-text="是"
|
||||
cancel-text="否"
|
||||
@confirm="del(title.name, index)"
|
||||
>
|
||||
<div>删除</div>
|
||||
</a-popconfirm>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="form"
|
||||
|
@ -69,7 +83,6 @@
|
|||
)[0].list"
|
||||
:key="'key2' + attr.name + index2"
|
||||
>
|
||||
|
||||
<span>{{ attr.name }}:</span>
|
||||
<a-input
|
||||
style="width: 280px"
|
||||
|
@ -95,7 +108,6 @@
|
|||
v-model:value="val[attr.field]"
|
||||
:maxlength="1000"
|
||||
:placeholder="'请填写' + attr.name + ',不超过1000个字符'"
|
||||
|
||||
/>
|
||||
</template>
|
||||
<!-- <a-textarea
|
||||
|
@ -113,7 +125,15 @@
|
|||
<a-image :width="85" :height="60" :src="val.img" />
|
||||
</span>
|
||||
</div>
|
||||
<div style="margin-top:24px;height:1px;border-top: 1px dashed #dddee1; width: 1240px;font-size: 18px;"></div>
|
||||
<div
|
||||
style="
|
||||
margin-top: 24px;
|
||||
height: 1px;
|
||||
border-top: 1px dashed #dddee1;
|
||||
width: 1240px;
|
||||
font-size: 18px;
|
||||
"
|
||||
></div>
|
||||
</div>
|
||||
|
||||
<!-- <div style="font-size: 0.18rem; font-weight: 600border-top: 1px dashed grey; width: 1240px;font-size: 18px;">
|
||||
|
@ -162,7 +182,6 @@
|
|||
v-model:value="val.note1"
|
||||
:maxlength="1000"
|
||||
:placeholder="'请填写' + val.name + ',不超过1000个字符'"
|
||||
|
||||
/>
|
||||
</template>
|
||||
<!-- <a-textarea
|
||||
|
@ -217,11 +236,19 @@
|
|||
v-else-if="val.type == 'image'"
|
||||
></upload>
|
||||
</div>
|
||||
<div style="margin-top:24px;height:1px;border-top: 1px dashed #dddee1; width: 1240px;font-size: 18px;"></div>
|
||||
<div
|
||||
style="
|
||||
margin-top: 24px;
|
||||
height: 1px;
|
||||
border-top: 1px dashed #dddee1;
|
||||
width: 1240px;
|
||||
font-size: 18px;
|
||||
"
|
||||
></div>
|
||||
<div class="submit">
|
||||
<a-button type="primary" @click="add(title.name)">
|
||||
<img
|
||||
style="height: 12px; width: 12px;margin-top: -2px;"
|
||||
style="height: 12px; width: 12px; margin-top: -2px"
|
||||
src="../../../assets/home/zhengjia.png"
|
||||
alt=""
|
||||
/>
|
||||
|
@ -261,14 +288,20 @@
|
|||
<a-input
|
||||
:maxLength="1000"
|
||||
v-model:value="item.note1"
|
||||
:placeholder="'请输入' + placeHolderWords(item.name)+',单位为元'"
|
||||
:placeholder="
|
||||
'请输入' + placeHolderWords(item.name) + ',单位为元'
|
||||
"
|
||||
@change="changeIiem(item.name, item.note1)"
|
||||
/>
|
||||
<span style="color:red"> (单位为元,*仅用于测算为部门节省资金)</span>
|
||||
<span style="color: red">
|
||||
(单位为元,*仅用于测算为部门节省资金)
|
||||
</span>
|
||||
</div>
|
||||
<a-input
|
||||
:maxLength="1000"
|
||||
v-else-if="item.type == 'input' && item.name.indexOf('名称') == -1"
|
||||
v-else-if="
|
||||
item.type == 'input' && item.name.indexOf('名称') == -1
|
||||
"
|
||||
v-model:value="item.note1"
|
||||
:placeholder="'请输入' + placeHolderWords(item.name)"
|
||||
@change="changeIiem(item.name, item.note1)"
|
||||
|
@ -416,7 +449,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<upload
|
||||
v-else-if="item.type == 'video'"
|
||||
type="视频"
|
||||
|
@ -424,7 +456,7 @@
|
|||
:maxCount="1"
|
||||
:data="item"
|
||||
:list="props.videoList"
|
||||
tip="支持视频类型,大小不超过100M"
|
||||
tip="支持视频类型mp4、mp3、mpeg,大小不超过100M"
|
||||
></upload>
|
||||
|
||||
<!-- <a-button
|
||||
|
@ -970,6 +1002,20 @@ const del = (title, index) => {
|
|||
delFlag: 0,
|
||||
})
|
||||
}
|
||||
const update = (title, index) => {
|
||||
const obj = data.value[title][index]
|
||||
data.value[title].splice(index, 1)
|
||||
mybus.emit('chageDataFrom', {
|
||||
attrType: title,
|
||||
attrValue: JSON.stringify(data.value[title]),
|
||||
delFlag: 0,
|
||||
})
|
||||
props.configure
|
||||
.filter((item) => item.name === title)[0]
|
||||
.list.map((val) => {
|
||||
val.note1 = obj[val.field]
|
||||
})
|
||||
}
|
||||
const ApplicationArea = (item, itemson) => {
|
||||
if (item.note2.indexOf(itemson.dictLabel) === -1) {
|
||||
item.note2.push(itemson.dictLabel)
|
||||
|
@ -977,7 +1023,10 @@ const ApplicationArea = (item, itemson) => {
|
|||
item.note2.splice(item.note2.indexOf(itemson.dictLabel), 1)
|
||||
}
|
||||
// 多选判断是否为空
|
||||
if (item.note2.length !== 0 && changeField.value.indexOf('应用领域') == -1) {
|
||||
if (
|
||||
item.note2.length !== 0 &&
|
||||
changeField.value.indexOf('应用领域') == -1
|
||||
) {
|
||||
changeField.value.push('应用领域')
|
||||
} else if (item.note2.length == 0) {
|
||||
if (changeField.value.indexOf('应用领域') > -1) {
|
||||
|
@ -1347,7 +1396,7 @@ const applicationsOption = (input, option) => {
|
|||
align-items: center;
|
||||
|
||||
span:first-child {
|
||||
width: 1.0rem;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
:deep(.ant-input-textarea) {
|
||||
|
@ -1402,7 +1451,7 @@ const applicationsOption = (input, option) => {
|
|||
.ant-btn:active {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1569,7 +1618,15 @@ const applicationsOption = (input, option) => {
|
|||
align-items: center;
|
||||
font-size: 0.14rem;
|
||||
margin-left: 0.2rem;
|
||||
|
||||
.updateImg {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background: url('~@/assets/home/update.png') no-repeat;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
.delImg {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
|
@ -1578,6 +1635,9 @@ const applicationsOption = (input, option) => {
|
|||
background: url(~@/assets/home/sf_del.png) no-repeat;
|
||||
margin-right: 0.05rem;
|
||||
}
|
||||
& > span {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
div {
|
||||
cursor: pointer;
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
{{ val }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="bottom1">
|
||||
共{{total}}项
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-box">
|
||||
|
@ -64,6 +68,7 @@
|
|||
const area = ref(null)
|
||||
const typeName = ref('全市')
|
||||
const typeName2 = ref('全部')
|
||||
const total = ref(0)
|
||||
if (selectArea && selectArea !== '全部') {
|
||||
typeName2.value = selectArea
|
||||
area.value = selectArea
|
||||
|
@ -131,6 +136,7 @@
|
|||
if (res.data.data.total.length < 9) {
|
||||
dom.removeEventListener('scroll', viewMonitor, true)
|
||||
}
|
||||
total.value= res.data.data.total
|
||||
// appList
|
||||
res.data.data.appList.map((val) => {
|
||||
if (!val.pic) {
|
||||
|
@ -198,6 +204,12 @@
|
|||
}
|
||||
.application {
|
||||
padding: 0 0.15rem;
|
||||
.bottom1 {
|
||||
margin-top: 67px;
|
||||
margin-left: 928px;
|
||||
color: #fff;
|
||||
font-size: 0.2rem;
|
||||
}
|
||||
.select {
|
||||
margin: 0.1rem 0 0.1rem 0.2rem;
|
||||
color: #fff;
|
||||
|
@ -225,6 +237,7 @@
|
|||
background-size: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
|
|
|
@ -388,7 +388,13 @@
|
|||
}
|
||||
}
|
||||
const closeMain = () => {
|
||||
window.history.go(-1)
|
||||
const showKey = router.currentRoute.value.query.showKey
|
||||
router.push({
|
||||
path: '/demandCenter',
|
||||
query: {
|
||||
toShowKey:showKey
|
||||
},
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
// const formData = computed(() => store.getters['home/demandDetailsData'])
|
||||
|
|
|
@ -175,6 +175,7 @@ const showDetail = (item) => {
|
|||
path: '/demandDetails',
|
||||
query: {
|
||||
id: item.id,
|
||||
showKey:selectedKeys.value,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
@ -186,6 +187,10 @@ const toView = () => {
|
|||
}
|
||||
|
||||
onMounted(() => {
|
||||
const toShowKey = router.currentRoute.value.query.toShowKey
|
||||
if(toShowKey){
|
||||
selectedKeys.value=toShowKey
|
||||
}
|
||||
const params = {
|
||||
page: pageNum.value,
|
||||
limit: pageSize.value,
|
||||
|
|
|
@ -188,6 +188,9 @@
|
|||
// that.pausePlay(iWndIndex)
|
||||
if (!that.unStopable) {
|
||||
setTimeout(() => {
|
||||
that.videoDom = that.$refs.video333.querySelector('video') || {}
|
||||
debugger
|
||||
|
||||
that.videoDom.pause()
|
||||
// that.exportCanvasAsPNG('12preview_playCanvas0', 'test')
|
||||
}, 0)
|
||||
|
@ -234,7 +237,7 @@
|
|||
},
|
||||
(e) => {
|
||||
console.error(e)
|
||||
// message.error('错误代码:' + e)
|
||||
message.error('网络繁忙,请稍后再试')
|
||||
}
|
||||
)
|
||||
},
|
||||
|
|
|
@ -92,9 +92,12 @@
|
|||
<div class="bottom" @click="goToView()">查看更多</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<i class="img" @click="
|
||||
<i
|
||||
class="img"
|
||||
@click="
|
||||
jumpPage({ name: '个人中心', key: 'personalCenter' }, 'headerClick')
|
||||
"></i>
|
||||
"
|
||||
></i>
|
||||
<a-tooltip placement="bottom">
|
||||
<template #title>
|
||||
<span>{{ user.realName }}</span>
|
||||
|
@ -131,6 +134,7 @@
|
|||
import { mynotice } from '@/api/home'
|
||||
import { useStore } from 'vuex'
|
||||
import { getSgcTotal } from '@/api/home'
|
||||
|
||||
import Cookies from 'js-cookie'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
|
||||
|
@ -149,7 +153,13 @@
|
|||
const select = ref(router.currentRoute.value.name)
|
||||
const mynoticeFlag = ref(false)
|
||||
const mynoticeData = ref([])
|
||||
const navList = ref(navListManagement.navList)
|
||||
const navList = ref([])
|
||||
const asyncNav = store.getters['user/navList']
|
||||
if (asyncNav.length > 0) {
|
||||
navList.value = asyncNav
|
||||
} else {
|
||||
navList.value = navListManagement.navList
|
||||
}
|
||||
const targetRouter = ref('')
|
||||
const backFlag = ref(false)
|
||||
getUserInfo().then((res) => {
|
||||
|
@ -165,6 +175,7 @@
|
|||
})
|
||||
}
|
||||
})
|
||||
|
||||
console.log('navList------------>', navList)
|
||||
|
||||
const props = defineProps({
|
||||
|
@ -422,7 +433,6 @@
|
|||
})
|
||||
|
||||
mybus.on('changeMenuStyle', (data) => {
|
||||
|
||||
targetRouter.value = data
|
||||
if (data.path == '/algorithmCompare') {
|
||||
jumpPage(
|
||||
|
|
|
@ -148,6 +148,7 @@
|
|||
const btnClick = (index) => {
|
||||
itemIndex.value = index
|
||||
if (index === 2) {
|
||||
// 按标签搜索
|
||||
if (chooseId.value !== '') {
|
||||
let placeTypeCode = []
|
||||
placeTypeCode.push(chooseId.value)
|
||||
|
@ -156,14 +157,18 @@
|
|||
mybus.emit('clearLeftSelect')
|
||||
}
|
||||
} else {
|
||||
// 按部门搜索
|
||||
if (selectId.value !== '') {
|
||||
mybus.emit('getCameraByParentId', {
|
||||
id: selectId.value,
|
||||
reset: true,
|
||||
})
|
||||
} else {
|
||||
mybus.emit('clearLeftSelect')
|
||||
}
|
||||
}
|
||||
// 重置地图搜索模式
|
||||
mybus.emit('resetMapSearch', index)
|
||||
}
|
||||
//选择标签内容
|
||||
const tabClick = (id) => {
|
||||
|
@ -244,6 +249,7 @@
|
|||
if (newVal == '') {
|
||||
mybus.emit('getCameraByParentId', {
|
||||
id: '70be8c5b664f4bcf869d82f2e8335051',
|
||||
reset: true,
|
||||
})
|
||||
}
|
||||
})
|
||||
|
@ -272,6 +278,7 @@
|
|||
} else {
|
||||
mybus.emit('getCameraByParentId', {
|
||||
id: val.id,
|
||||
reset: true,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-03-29 17:53:28
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-03-30 16:35:27
|
||||
* @LastEditTime: 2022-12-29 15:12:28
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
|
|
|
@ -104,7 +104,8 @@
|
|||
data-spm-anchor-id="a313x.7781069.0.i0"
|
||||
></path>
|
||||
</svg>
|
||||
<img class="icon-poylon" @click="areaMode()" src="~@/supermap/image/icon-poylon.png">
|
||||
<svg t="1672193537830" @click="areaMode()" class="icon-poylon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2814" width="48" height="48"><path d="M385.47911111 902.59911111h83.74044444v41.41511111h-83.74044444zM217.99822222 902.59911111h83.74044445v41.41511111h-83.74044445zM113.55022222 881.89155555h-41.41511111v62.12266667H134.25777778v-41.41511111h-20.70755556zM72.13511111 546.816h41.41511111v83.74044445h-41.41511111zM72.13511111 211.85422222h41.41511111v83.74044445h-41.41511111zM72.13511111 714.41066667h41.41511111v83.74044444h-41.41511111zM72.13511111 379.33511111h41.41511111V463.07555555h-41.41511111zM72.13511111 128.11377778h41.41511111v-20.70755556H134.25777778V65.99111111h-62.12266667zM553.07377778 65.99111111h83.74044444v41.41511111h-83.74044444zM720.55466667 65.99111111h83.74044444v41.41511111h-83.74044444zM385.47911111 65.99111111h83.74044444v41.41511111h-83.74044444zM217.99822222 65.99111111h83.74044445v41.41511111h-83.74044445zM888.03555555 65.99111111v41.41511111h20.70755556v20.70755556h41.41511111V65.99111111zM908.74311111 379.33511111h41.41511111V463.07555555h-41.41511111zM908.74311111 211.85422222h41.41511111v83.74044445h-41.41511111zM738.75911111 637.26933333l70.08711111-54.272c5.23377778-4.096 8.07822222-10.46755555 7.50933333-17.06666666-0.56888889-6.59911111-4.43733333-12.51555555-10.24-15.58755556L451.47022222 359.424c-6.82666667-3.64088889-15.13244445-2.95822222-21.27644444 1.70666667-6.144 4.77866667-8.87466667 12.62933333-7.05422223 20.13866666l95.91466667 391.168c1.59288889 6.48533333 6.25777778 11.60533333 12.51555556 13.76711112 6.25777778 2.16177778 13.19822222 1.024 18.432-2.95822223l70.08711111-54.272 151.552 195.69777778c3.86844445 5.00622222 9.67111111 7.62311111 15.47377778 7.62311111 4.20977778 0 8.41955555-1.36533333 11.94666666-4.096l87.60888889-67.81155556c4.096-3.18577778 6.82666667-7.85066667 7.39555556-12.97066666 0.68266667-5.12-0.79644445-10.35377778-3.98222223-14.44977778l-151.32444444-195.69777778z" p-id="2815" fill="#4093D7"></path></svg>
|
||||
<!-- <img class=" icon-poylon-pos" @click="areaMode()" src="~@/supermap/image/icon-poylon.png"> -->
|
||||
|
||||
</div>
|
||||
<video-play
|
||||
|
@ -162,10 +163,12 @@
|
|||
camreaTree: [],
|
||||
camreaTreeIsShow: true,
|
||||
camreaTreeSingle: [],
|
||||
placeTypeCode: [], // 标签数据
|
||||
checkStatus: '2',
|
||||
labelSearch: '',
|
||||
timer: null,
|
||||
openVideo: false,
|
||||
labelMode: false, // 标签模式
|
||||
channelCode: [],
|
||||
circleModeFlag: false,
|
||||
areaModeFlag: false,
|
||||
|
@ -175,15 +178,15 @@
|
|||
whoShow1: whoShow,
|
||||
mapSearchParam: {
|
||||
// 地图搜索初始化数据
|
||||
parentId: '',
|
||||
checkStatus: '1',
|
||||
pageNum: '1',
|
||||
pageSize: '20000',
|
||||
regionId: '',
|
||||
// checkStatus: '1',
|
||||
// pageNum: '1',
|
||||
// pageSize: '20000',
|
||||
gpsX: '',
|
||||
gpsY: '',
|
||||
radius: '',
|
||||
borderPolygonList: [],
|
||||
type: 0, //0是无,1画圆,2不规则
|
||||
type: 1, //0是无,1画圆,2不规则
|
||||
},
|
||||
pointAllData:[],
|
||||
restaurants:[],
|
||||
|
@ -220,13 +223,14 @@
|
|||
mybus.on('getCameraByParentId', (val) => {
|
||||
debugger
|
||||
console.log('倒腾位置1')
|
||||
console.info('根据部门进行查询')
|
||||
// 判断是否重置位置
|
||||
if (val.reset) {
|
||||
this.hiMapFun.mapFlyTo({lat:'36.017043',lng: '119.922772'}, 9)
|
||||
}
|
||||
this.mapSearchParam.parentId = val.id
|
||||
this.mapSearchParam.type = "1"
|
||||
this.mapSearchParam.pageSize = 10000
|
||||
this.mapSearchParam.regionId = val.id
|
||||
// this.mapSearchParam.type = "1"
|
||||
// this.mapSearchParam.pageSize = 10000
|
||||
this.getCameraByParentId('','department')
|
||||
})
|
||||
//表格勾选
|
||||
|
@ -252,10 +256,21 @@
|
|||
//行政区划点击查询摄像头
|
||||
mybus.off('CameraConditionPlaceType')
|
||||
mybus.on('CameraConditionPlaceType', (data) => {
|
||||
this.queryCameraConditionPlace(data)
|
||||
|
||||
console.info('根据标签进行查询')
|
||||
this.placeTypeCode = data
|
||||
this.queryCameraConditionPlace()
|
||||
})
|
||||
// 重置地图搜索模式
|
||||
mybus.off('resetMapSearch')
|
||||
mybus.on('resetMapSearch', (index) => {
|
||||
if (index == 2) {
|
||||
this.labelMode = true
|
||||
this.queryCameraConditionPlace()
|
||||
} else {
|
||||
this.labelMode = false
|
||||
this.getCameraByParentId('map')
|
||||
}
|
||||
})
|
||||
|
||||
//清空地图上所有数据
|
||||
mybus.off('clearLeftSelect')
|
||||
mybus.on('clearLeftSelect', () => {
|
||||
|
@ -270,11 +285,17 @@
|
|||
}
|
||||
},
|
||||
//查询标签视频
|
||||
queryCameraConditionPlace(data) {
|
||||
queryCameraConditionPlace(param) {
|
||||
debugger
|
||||
let params = {
|
||||
placeTypeCode: data,
|
||||
placeTypeCode: this.placeTypeCode,...param
|
||||
}
|
||||
if (params.regionId) {
|
||||
params.regionId = '70be8c5b664f4bcf869d82f2e8335051'
|
||||
}
|
||||
this.spinning = true;
|
||||
CameraConditionPlaceType(params).then((res) => {
|
||||
this.spinning = false;
|
||||
const byteArray = this.unzip(res.data.data)
|
||||
this.addResourceTomap('videoMap', byteArray)
|
||||
})
|
||||
|
@ -370,7 +391,12 @@
|
|||
type: this.mapSearchParam.type,
|
||||
}
|
||||
// mybus.emit('getListByMap', params);
|
||||
if (this.labelMode) {
|
||||
debugger
|
||||
this.queryCameraConditionPlace(params)
|
||||
} else {
|
||||
this.getCameraByParentId('map');
|
||||
}
|
||||
console.log("areaSelectResource -> latlngs", latlngs)
|
||||
}
|
||||
})
|
||||
|
@ -399,11 +425,17 @@
|
|||
circlePloygonLayer
|
||||
)
|
||||
console.log('查询图层为何发生了改变', e.layer)
|
||||
this.mapSearchParam.gpsX = e.layer._latlng.lng
|
||||
this.mapSearchParam.gpsY = e.layer._latlng.lat
|
||||
this.mapSearchParam.regionId = this.mapSearchParam.regionId ||
|
||||
'70be8c5b664f4bcf869d82f2e8335051',
|
||||
this.mapSearchParam.longitude = e.layer._latlng.lng
|
||||
this.mapSearchParam.latitude = e.layer._latlng.lat
|
||||
this.mapSearchParam.radius = radius
|
||||
this.mapSearchParam.type = 1
|
||||
this.getCameraByParentId('map')
|
||||
if (this.labelMode) {
|
||||
this.queryCameraConditionPlace(this.mapSearchParam)
|
||||
} else {
|
||||
this.getCameraByParentId('map');
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -419,11 +451,11 @@
|
|||
// this.hiMapFun.mapFlyTo({lat:'36.017043',lng: '119.922772'}, 9)
|
||||
let params = {
|
||||
regionId:
|
||||
this.mapSearchParam.parentId ||
|
||||
this.mapSearchParam.regionId ||
|
||||
'70be8c5b664f4bcf869d82f2e8335051',
|
||||
name: this.mapSearchParam.cameraName || '',
|
||||
longitude: this.mapSearchParam.gpsX || '',
|
||||
latitude: this.mapSearchParam.gpsY || '',
|
||||
longitude: this.mapSearchParam.gpsX || this.mapSearchParam.longitude || '',
|
||||
latitude: this.mapSearchParam.gpsY || this.mapSearchParam.latitude || '',
|
||||
radius: this.mapSearchParam.radius || '',
|
||||
type: this.mapSearchParam.type,
|
||||
borderPolygonList: this.mapSearchParam.borderPolygonList || [],
|
||||
|
@ -453,7 +485,7 @@
|
|||
this.spinning = false;
|
||||
const byteArray = this.unzip(res.data.data)
|
||||
if(type=='map'){
|
||||
let params = this.mapSearchParam;
|
||||
let params = JSON.parse(JSON.stringify(this.mapSearchParam));
|
||||
// const byteArray = this.unzip(res.data.data)
|
||||
params.dataSource = byteArray||0;
|
||||
params.total = res.data.count||0;
|
||||
|
@ -507,21 +539,19 @@
|
|||
}
|
||||
},
|
||||
resetCircle(){
|
||||
debugger
|
||||
// 关闭圈选模式,清空圈选内容,重新上图
|
||||
this.hiMapFun.removeLayerByLayerName('circlePloygonLayer')
|
||||
// 重置内容
|
||||
this.mapSearchParam.gpsX = ''
|
||||
this.mapSearchParam.gpsY = ''
|
||||
this.mapSearchParam.longitude = ''
|
||||
this.mapSearchParam.latitude = ''
|
||||
this.mapSearchParam.radius = ''
|
||||
this.mapSearchParam.type = 0;
|
||||
const params = {
|
||||
gpsX: this.mapSearchParam.gpsX,
|
||||
gpsY: this.mapSearchParam.gpsY,
|
||||
radius: this.mapSearchParam.radius,
|
||||
type: this.mapSearchParam.type
|
||||
if (this.labelMode) {
|
||||
this.queryCameraConditionPlace(this.mapSearchParam)
|
||||
} else {
|
||||
this.getCameraByParentId('map');
|
||||
}
|
||||
this.getCameraByParentId('map')
|
||||
// mybus.emit('getListByMap', params);
|
||||
},
|
||||
resetArea(){
|
||||
// 关闭不规则形状模式模式,清空不规则形状模式内容,重新上图
|
||||
|
@ -533,7 +563,12 @@
|
|||
borderPolygonList: this.mapSearchParam.borderPolygonList,
|
||||
type: this.mapSearchParam.type
|
||||
}
|
||||
this.getCameraByParentId('map')
|
||||
if (this.labelMode) {
|
||||
this.queryCameraConditionPlace(params)
|
||||
} else {
|
||||
this.getCameraByParentId('map');
|
||||
}
|
||||
// this.getCameraByParentId('map')
|
||||
// mybus.emit('getListByMap', params);
|
||||
},
|
||||
//查询地址建议匹配
|
||||
|
@ -900,7 +935,7 @@
|
|||
.leaflet-control-attribution {
|
||||
display: none;
|
||||
}
|
||||
.icon, .icon-poylon {
|
||||
.icon {
|
||||
position: absolute;
|
||||
bottom: 0.1rem;
|
||||
right: 0.1rem;
|
||||
|
@ -916,6 +951,11 @@
|
|||
}
|
||||
}
|
||||
.icon-poylon {
|
||||
position: absolute;
|
||||
// bottom: 0.1rem;
|
||||
right: 0.1rem;
|
||||
z-index: 988;
|
||||
cursor: pointer;
|
||||
width: 0.46rem;
|
||||
bottom: 0.6rem;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,9 @@
|
|||
import { Encrypt } from '@/utils/crypto'
|
||||
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
|
||||
import { message, Modal } from 'ant-design-vue'
|
||||
|
||||
import { getNavList } from '@/api/user'
|
||||
import { useStore } from 'vuex'
|
||||
// const store = useStore()
|
||||
// 是否是西海岸
|
||||
const isXiHaiAn = whoShow.itShowXiHaiAn
|
||||
|
||||
|
@ -74,6 +76,7 @@
|
|||
devDependencies: devDependencies,
|
||||
is360: false,
|
||||
isIE: false,
|
||||
store: useStore(),
|
||||
canOpen: ['FF', 'Chrome'],
|
||||
}
|
||||
},
|
||||
|
@ -94,7 +97,6 @@
|
|||
mounted() {
|
||||
this.form.username = ''
|
||||
this.form.password = ''
|
||||
|
||||
if (!this.canOpen.includes(this.judgeAgent())) {
|
||||
Modal.warning({
|
||||
title: '提示',
|
||||
|
@ -106,6 +108,24 @@
|
|||
...mapActions({
|
||||
login: 'user/login',
|
||||
}),
|
||||
getNavList() {
|
||||
let navList = []
|
||||
getNavList({
|
||||
_t: new Date().getTime(),
|
||||
}).then((res) => {
|
||||
const nav = res.data.data.filter((item) => item.site === 1)
|
||||
if (nav.length > 0) {
|
||||
navList = nav.map((item) => {
|
||||
item.key = item.url
|
||||
item.innerKey = item.permissions
|
||||
return item
|
||||
})
|
||||
}
|
||||
console.log('后台获取到的站点', navList)
|
||||
debugger
|
||||
this.store.commit('user/setNavList', navList)
|
||||
})
|
||||
},
|
||||
// 判断浏览器
|
||||
judgeAgent() {
|
||||
let userAgent = navigator.userAgent // 取得浏览器的userAgent字符串
|
||||
|
@ -159,6 +179,7 @@
|
|||
})
|
||||
// window.localStorage.setItem('tokenStartTime', new Date().getTime())
|
||||
window.sessionStorage.setItem('visits', JSON.stringify([]))
|
||||
this.getNavList()
|
||||
// console.log(this.handleRoute())
|
||||
// 西海岸特殊处理
|
||||
if (isXiHaiAn) {
|
||||
|
|
|
@ -81,18 +81,26 @@
|
|||
query: {
|
||||
// select: '组件服务',
|
||||
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
|
||||
orderField:'tdr.create_date'
|
||||
orderField: 'tdr.create_date',
|
||||
},
|
||||
})
|
||||
}
|
||||
const selectOne = (id) => {
|
||||
console.log('点击===============》', id)
|
||||
router.push({
|
||||
path: '/details',
|
||||
// router.push({
|
||||
// path: '/details',
|
||||
// query: {
|
||||
// id: id,
|
||||
// },
|
||||
// })
|
||||
const detailPage = router.resolve({
|
||||
path: '/details', // 跳转的页面路由
|
||||
query: {
|
||||
id: id,
|
||||
hiddenBackFlag: true,
|
||||
},
|
||||
})
|
||||
window.open(detailPage.href, '_blank')
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
<template #title>{{ item.description || '暂无描述' }}</template>
|
||||
<div class="text">{{ item.description || '暂无描述' }}</div>
|
||||
</a-tooltip>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -139,24 +138,35 @@ function jumpPage() {
|
|||
store.commit('home/selectCardsData', {
|
||||
selectCardsnum: '组件服务',
|
||||
})
|
||||
console.log('选中===================>', store.getters['home/selectCardsnum'])
|
||||
console.log(
|
||||
'选中===================>',
|
||||
store.getters['home/selectCardsnum']
|
||||
)
|
||||
router.push({
|
||||
path: '/DetailsPageconetent',
|
||||
query: {
|
||||
// select: '组件服务',
|
||||
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
|
||||
orderField:paramsGetResources.orderField //根据什么排序
|
||||
orderField: paramsGetResources.orderField, //根据什么排序
|
||||
},
|
||||
})
|
||||
}
|
||||
const selectOne = (id) => {
|
||||
console.log('点击===============》', id)
|
||||
router.push({
|
||||
path: '/details',
|
||||
// router.push({
|
||||
// path: '/details',
|
||||
// query: {
|
||||
// id: id,
|
||||
// },
|
||||
// })
|
||||
const detailPage = router.resolve({
|
||||
path: '/details', // 跳转的页面路由
|
||||
query: {
|
||||
id: id,
|
||||
hiddenBackFlag: true,
|
||||
},
|
||||
})
|
||||
window.open(detailPage.href, '_blank')
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
|
@ -228,7 +238,6 @@ const selectOne = (id) => {
|
|||
.text {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
font-size: 0.14rem;
|
||||
|
||||
}
|
||||
}
|
||||
.select:hover {
|
||||
|
|
|
@ -104,12 +104,20 @@
|
|||
}
|
||||
const selectOne = (id) => {
|
||||
console.log('点击===============》', id)
|
||||
router.push({
|
||||
path: '/details',
|
||||
// router.push({
|
||||
// path: '/details',
|
||||
// query: {
|
||||
// id: id,
|
||||
// },
|
||||
// })
|
||||
const detailPage = router.resolve({
|
||||
path: '/details', // 跳转的页面路由
|
||||
query: {
|
||||
id: id,
|
||||
hiddenBackFlag: true,
|
||||
},
|
||||
})
|
||||
window.open(detailPage.href, '_blank')
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
|
|
|
@ -557,8 +557,6 @@
|
|||
height: 3rem;
|
||||
display: flex;
|
||||
position: fixed;
|
||||
bottom: 1.56rem;
|
||||
right: 0rem;
|
||||
z-index: 10;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
@ -615,4 +613,22 @@
|
|||
background-size: 140% 126%;
|
||||
background-position: center;
|
||||
}
|
||||
@media only screen and (max-width: 1920px) {
|
||||
.fixedmount {
|
||||
bottom: 1.56rem;
|
||||
right: 0rem;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1921px) and (max-width: 3840px) {
|
||||
.fixedmount {
|
||||
bottom: 1.56rem;
|
||||
right: 9.6rem;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 3841px) and (max-width: 5760px) {
|
||||
.fixedmount {
|
||||
bottom: 1.56rem;
|
||||
right: 19.2rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -405,6 +405,7 @@ const phoneVisible = ref(false)
|
|||
|
||||
// 选择类型
|
||||
const changeType = (item, index) => {
|
||||
debugger
|
||||
contentList.data = []
|
||||
formState.value.name = ''
|
||||
|
||||
|
@ -1126,8 +1127,10 @@ const showPhoneModal = () => {
|
|||
}
|
||||
|
||||
mybus.on('closeModal', (obj) => {
|
||||
debugger
|
||||
detailsVisible.value = false
|
||||
changeType(obj.type, obj.index)
|
||||
obj.name=obj.type
|
||||
changeType(obj, obj.index)
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
mybus.off('closeModal')
|
||||
|
|
|
@ -144,7 +144,11 @@
|
|||
联系方式
|
||||
</div>
|
||||
<div class="button" @click="showDetail(item)">查看详情</div>
|
||||
<div class="button" @click="showAdd(item)" v-if="item.backToFirst">
|
||||
<div
|
||||
class="button"
|
||||
@click="showAdd(item)"
|
||||
v-if="typeName !== '能力申请' && item.backToFirst"
|
||||
>
|
||||
修改
|
||||
</div>
|
||||
<svg
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-07-12 09:42:44
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-01 14:02:17
|
||||
* @LastEditTime: 2022-12-19 10:54:23
|
||||
* @Description:我的申请 能力申请 查看详情
|
||||
-->
|
||||
<template>
|
||||
|
@ -35,9 +35,118 @@
|
|||
<span>能力描述:{{ props.refObj.dto.description }}</span>
|
||||
<span>归属部门:{{ props.refObj.dto.deptName }}</span>
|
||||
</p>
|
||||
<p v-for="item in props.refObj.dto.infoList" :key="item.attrType">
|
||||
<template
|
||||
v-for="item in props.refObj.dto.infoList"
|
||||
:key="item.attrType"
|
||||
>
|
||||
<p v-if="arr.indexOf(item.attrType) === -1">
|
||||
<span>{{ item.attrType + ':' + item.attrValue }}</span>
|
||||
</p>
|
||||
<template v-else-if="JSON.parse(item.attrValue)">
|
||||
<div v-if="item.attrType === '算法优势'">
|
||||
<div
|
||||
v-for="(attr, index) in JSON.parse(item.attrValue)"
|
||||
:key="item.attrType + index"
|
||||
>
|
||||
<div>{{ item.attrType + '-' + (index + 1) }}</div>
|
||||
<div>
|
||||
<span>算法优势名称:{{ attr.name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>算法优势描述:{{ attr.desc }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.attrType === '应用场景'">
|
||||
<div
|
||||
v-for="(attr, index) in JSON.parse(item.attrValue)"
|
||||
:key="item.attrType + index"
|
||||
>
|
||||
<div>{{ item.attrType + '-' + (index + 1) }}</div>
|
||||
<div>
|
||||
<span>应用场景名称:{{ attr.name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>应用场景描述:{{ attr.desc }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>
|
||||
应用场景图片:
|
||||
<a-image :width="100" :src="attr.img" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.attrType === '计费标准信息'">
|
||||
<div
|
||||
v-for="(attr, index) in JSON.parse(item.attrValue)"
|
||||
:key="item.attrType + index"
|
||||
>
|
||||
<div>{{ item.attrType + '-' + (index + 1) }}</div>
|
||||
<div>
|
||||
<span>计费方式:{{ attr.type }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>计费标准:{{ attr.price }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>计费标准描述:{{ attr.desc }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.attrType === '常见问题'">
|
||||
<div
|
||||
v-for="(attr, index) in JSON.parse(item.attrValue)"
|
||||
:key="item.attrType + index"
|
||||
>
|
||||
<div>{{ item.attrType + '-' + (index + 1) }}</div>
|
||||
<div>
|
||||
<span>问题:{{ attr.question }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>答复:{{ attr.answer }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.attrType === '功能介绍'">
|
||||
<div
|
||||
v-for="(attr, index) in JSON.parse(item.attrValue)"
|
||||
:key="item.attrType + index"
|
||||
>
|
||||
<div>{{ item.attrType + '-' + (index + 1) }}</div>
|
||||
<div>
|
||||
<span>功能名称:{{ attr.name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>功能描述:{{ attr.desc }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>
|
||||
功能图片:
|
||||
<a-image :width="100" :src="attr.img" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
<!-- <p v-for="item in props.refObj.dto.infoList" :key="item.attrType">
|
||||
<template v-if="arr.indexOf(item.attrType) === -1">
|
||||
<span>{{ item.attrType + ':' + item.attrValue }}</span>
|
||||
</template>
|
||||
<template v-else-if="item.attrType === '算法优势'">
|
||||
<div
|
||||
v-for="(attr, index) in JSON.parse(item.attrValue)"
|
||||
:key="item.attrType + index"
|
||||
>
|
||||
<div>{{ item.attrType + '-' + (index + 1) }}</div>
|
||||
<div>
|
||||
<span>算法优势名称:{{ attr.name }}</span>
|
||||
<span>算法优势描述:{{ attr.desc }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</p> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -52,11 +161,11 @@
|
|||
})
|
||||
console.log(props.refObj, '=====================================')
|
||||
const arr = ['算法优势', '应用场景', '计费标准信息', '常见问题', '功能介绍']
|
||||
if (props.refObj.dto.infoList) {
|
||||
props.refObj.dto.infoList = props.refObj.dto.infoList.filter(
|
||||
(val) => arr.indexOf(val.attrType) == -1
|
||||
)
|
||||
}
|
||||
// if (props.refObj.dto.infoList) {
|
||||
// props.refObj.dto.infoList = props.refObj.dto.infoList.filter(
|
||||
// (val) => arr.indexOf(val.attrType) == -1
|
||||
// )
|
||||
// }
|
||||
const endThis = () => {
|
||||
endProcess({ instanceId: props.refObj.processInstanceId }).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
|
@ -104,6 +213,9 @@
|
|||
.main {
|
||||
background: #eee;
|
||||
padding: 0.2rem 0.2rem 0.1rem;
|
||||
div {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
p {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
|
Loading…
Reference in New Issue