Merge branch 'hi-ucs-dev' into release

This commit is contained in:
wuhongjian 2022-12-29 17:34:40 +08:00
commit 6736a8d434
62 changed files with 9201 additions and 1890 deletions

View File

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-11 10:11:40 * @Date: 2022-04-11 10:11:40
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:54:59 * @LastEditTime: 2022-12-29 17:34:35
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!DOCTYPE html> <!DOCTYPE html>
@ -39,7 +39,8 @@
window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl; window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl;
window.SITE_CONFIG['apiURL'] = _global.config.apiURL; window.SITE_CONFIG['apiURL'] = _global.config.apiURL;
// WebSocket地址 // WebSocket地址
window.SITE_CONFIG['socketURL'] =_global.config.socketURL; // window.SITE_CONFIG['socketURL'] =_global.config.socketURL;
window.SITE_CONFIG['websocketURL'] = _global.config.websocketURL
</script> </script>
</head> </head>
<body> <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

View File

@ -118,6 +118,7 @@ t.model.description = '描述'
t.process = {} t.process = {}
t.process.name = '名称' t.process.name = '名称'
t.process.userName = '申请人'
t.process.key = '标识' t.process.key = '标识'
t.process.deployFile = '部署流程文件' t.process.deployFile = '部署流程文件'
t.process.id = '流程ID' t.process.id = '流程ID'

View File

@ -105,8 +105,9 @@ import { messages } from '@/i18n'
import screenfull from 'screenfull' import screenfull from 'screenfull'
import UpdatePassword from './main-navbar-update-password' import UpdatePassword from './main-navbar-update-password'
import { clearLoginInfo } from '@/utils' import { clearLoginInfo } from '@/utils'
// import Cookies from 'js-cookie' import Cookies from 'js-cookie'
// var socket = null import bus from '@/views/bus.js'
var socket = null
export default { export default {
inject: ['refresh'], inject: ['refresh'],
data () { data () {
@ -120,29 +121,32 @@ export default {
UpdatePassword UpdatePassword
}, },
created () { created () {
// var vue = this const that = this
// socket = new WebSocket(`${window.SITE_CONFIG['socketURL']}?token=${Cookies.get('token')}`) socket = new WebSocket(`${window.SITE_CONFIG.websocketURL}?token=${Cookies.get('ucsToken')}`)
// socket.onopen = function () {} socket.onopen = function () {}
// socket.onerror = function () { socket.onerror = function () {}
// vue.$notify.error({ socket.onmessage = function (res) {
// title: vue.$t('notice.disconnect'), switch (that.$route.name) {
// message: vue.$t('notice.disconnectMessage') case 'myAgent-CompetencyApplication':
// }) bus.$emit('competencyApplicationInit')
// } break
// socket.onmessage = function (evt) { case 'myAgent-AbilityResourceShelf':
// const result = JSON.parse(evt.data) bus.$emit('abilityResourceShelfInit')
break
// // case 'myAgent-ApplicationforCompetencyRequirements':
// if (result.type === 0) { bus.$emit('applicationforRequirementsInit')
// vue.messageTip = true break
// vue.$notify({ case 'myAgent-AbilityResourcesRemoved':
// title: vue.$t('notice.new'), bus.$emit('AbilityResourcesRemovedInit')
// message: result.msg, break
// type: 'info', case 'myAgent-CommentModeration':
// duration: 5000 bus.$emit('commentInit')
// }) break
// } case 'activiti-RoomExamineAdmin':
// } bus.$emit('roomExamineAdminInit')
break
}
}
// //
this.getUnReadCount() this.getUnReadCount()

View File

@ -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,//01
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>

View File

@ -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>

View File

@ -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>

View File

@ -1,20 +1,39 @@
<template> <template>
<div class="question-box"> <div class="question-box">
<div class="title"> <!-- <div class="title">
{{ title }} {{ title }}
</div> </div> -->
<div v-for="(item, index) in dataInfo" :key="index"> <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]" <el-input type="textarea" :rows="2" v-model="item[keyTextObj.descObj.key]"
:placeholder="`请输入${keyTextObj.descObj.text}`" style="width:90%"> :placeholder="`请输入${keyTextObj.descObj.text}`" style="width:90%">
</el-input> </el-input>
<el-button style="margin-left:10px" @click="deleteItem(index)" type="danger" size="small" <!-- <icon class="el-icon-remove" style="color:red;margin-left: 2px;"
v-if="dataInfo.length > 1">删除 @click="deleteItem(index)" type="danger" size="small"
</el-button> 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-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>
</div> </div>
</template> </template>
@ -115,6 +134,31 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <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 { .question-box {
.title { .title {
text-align: center; text-align: center;

View File

@ -1,14 +1,102 @@
<template> <template>
<div class="question-box"> <div>
<div class="title">
能力使用步骤
</div>
<div v-for="(item, index) in dataInfo" :key="index"> <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 v-model="item.question" placeholder="请输入标题" style="width:90%" :disabled="disabledType">
</el-input> </el-input>
</el-form-item> </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%" <el-input type="textarea" :rows="3" v-model="item.answer" placeholder="请输入解释说明" style="width:90%"
:disabled="disabledType"> :disabled="disabledType">
</el-input> </el-input>
@ -19,16 +107,15 @@
<el-button class="add-btn" size="small" v-if="!disabledType && index == dataInfo.length - 1" <el-button class="add-btn" size="small" v-if="!disabledType && index == dataInfo.length - 1"
@click="addItem" type="primary">添加 @click="addItem" type="primary">添加
</el-button> </el-button>
</div> </div> -->
<div class="step-box"> <!-- <div class="step-box">
<el-steps :active="2"> <el-steps :active="2">
<el-step status="finish" :title="item.question || `标题${index + 1}`" v-for="(item, index) in dataInfo" <el-step status="finish" :title="item.question || `标题${index + 1}`" v-for="(item, index) in dataInfo"
:key="index"> :key="index">
</el-step> </el-step>
</el-steps> </el-steps>
</div> </div> -->
</div> </div>
</template> </template>
<script> <script>
@ -36,27 +123,27 @@ export default {
props: { props: {
dataForm: { dataForm: {
type: Object, type: Object,
default: () => { } default: () => {},
}, },
// //
disabledType: { disabledType: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
}, },
data() { data() {
return { return {
dataInfo: [] dataInfo: [],
} };
}, },
watch: { watch: {
dataInfo: { dataInfo: {
handler(newVal) { handler(newVal) {
this.dataInfo = newVal; this.dataInfo = newVal;
this.$emit('update', { this.$emit("update", {
title: '使用步骤', title: "构建步骤",
list: newVal list: newVal,
}) });
}, },
deep: true, deep: true,
immediate: true, immediate: true,
@ -64,70 +151,128 @@ export default {
}, },
methods: { methods: {
getDataInfo(dataForm) { getDataInfo(dataForm) {
let arr = [] let arr = [];
let fuseAttrList = dataForm.fuseAttrList || []; let fuseAttrList = dataForm.fuseAttrList || [];
let obj = fuseAttrList.find(v => v.attrType === '使用步骤') || {} let obj = fuseAttrList.find((v) => v.attrType === "构建步骤") || {};
let attrValue = JSON.parse(obj.attrValue || "[]") let attrValue = obj.attrValue || [];
if (attrValue.length > 0) { if (attrValue.length > 0) {
attrValue.map(v => { attrValue = JSON.parse(attrValue);
attrValue.map((v) => {
arr.push({ arr.push({
question: v.question, question: v.question,
answer: v.answer, answer: v.answer,
}) });
}) });
} else { } else {
arr = [] arr = [];
arr.push({ arr.push({
question: "", question: "",
answer: "", answer: [{ answer: "" }, { answer: "" }],
}) });
} }
this.dataInfo = arr; this.dataInfo = arr;
}, },
// //
addItem() { addItem() {
let index = this.dataInfo.length - 1; let index = this.dataInfo.length - 1;
if (this.dataInfo[index].question === '' || this.dataInfo[index].answer === '') { if (this.dataInfo[index].answer === "") {
return this.$message.warning('请填写完整信息!') return this.$message.warning("请填写完整信息!");
} }
if (this.dataInfo.length >= 6) { if (this.dataInfo.length >= 6) {
return this.$message.warning('最多添加6个使用步骤') return this.$message.warning("最多添加6个使用步骤");
} }
this.dataInfo.push({ this.dataInfo.push({
question: "", question: "",
answer: "", answer: [{ answer: "" }, { answer: "" }],
}) });
},
addAnswerItem(itemson) {
itemson.push({});
}, },
// //
deleteItem(index) { deleteItem(index) {
this.$confirm('确认是否删除?', '提示', { this.$confirm("确认是否删除?", "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning' type: "warning",
}).then(() => { })
.then(() => {
this.$message({ this.$message({
type: 'success', type: "success",
message: '删除成功!' message: "删除成功!",
}); });
this.dataInfo.splice(index, 1) this.dataInfo.splice(index, 1);
}).catch(() => { })
}); .catch(() => {});
} },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.question-box { .submit1 {
margin-bottom: 20px; display: inline;
margin-top: 40px; font-size: 0.14rem;
margin-left: 8px;
.title { .ant-btn {
width: 94px;
height: 32px;
text-align: center; text-align: center;
font-weight: 600; background: #fff;
font-size: 18px; color: #0558e1;
margin-bottom: 10px; 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 { .step-box {

View File

@ -1,6 +1,21 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-ability__bsabilityai"> <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 :inline="true" :model="dataForm">
<el-form-item> <el-form-item>
<el-input v-model="dataForm.name" placeholder="名称" clearable></el-input> <el-input v-model="dataForm.name" placeholder="名称" clearable></el-input>
@ -40,21 +55,36 @@
</el-pagination> </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"> :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> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import mixinViewModule from "@/mixins/view-module"; import mixinViewModule from "@/mixins/view-module";
import AddUpdateScene from "./add-update-scene";
import cityAdd from "./city-add";
import areaAdd from "./area-add";
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data() { data() {
return { return {
//
cityVisible:false,
//
areaVisible:false,
//tab
choose: 0,
tableData: [], tableData: [],
childName: '', childName: '',
mixinViewModuleOptions: { mixinViewModuleOptions: {
@ -69,20 +99,27 @@ export default {
name: "", name: "",
order: 'desc', order: 'desc',
orderField: 'create_date', orderField: 'create_date',
type: '赋能场景' type: '赋能场景',
district: 0//0 1
}, },
qp: false, qp: false,
modalType: 'add', modalType: 'add',
}; };
}, },
components: { components: {
AddUpdateScene, areaAdd,
cityAdd
}, },
mounted() { mounted() {
window.addEventListener("resize", this.a); window.addEventListener("resize", this.a);
this.fullScreen(); this.fullScreen();
}, },
methods: { methods: {
handleChose(index) {
this.choose = index;
this.searchData()
},
deleteRow(id) { deleteRow(id) {
this.$confirm('确认是否删除?', '提示', { this.$confirm('确认是否删除?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
@ -112,6 +149,7 @@ export default {
}, },
// //
searchData() { searchData() {
this.dataForm.district=this.choose
this.query() this.query()
}, },
// //
@ -121,20 +159,36 @@ export default {
}, },
// //
handleUpdate(val) { handleUpdate(val) {
this.addOrUpdateVisible = true; if(this.choose==0){
this.cityVisible=true
}else{
this.areaVisible=true
}
this.modalType = 'update'; this.modalType = 'update';
const cloneVal = JSON.parse(JSON.stringify(val)) const cloneVal = JSON.parse(JSON.stringify(val))
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.getDetail(cloneVal) if(this.choose==0){
this.$refs.cityAdd.getDetail(cloneVal)
}else{
this.$refs.areaAdd.getDetail(cloneVal)
}
}) })
}, },
// //
addServe() { addServe() {
this.addOrUpdateVisible = true //this.addOrUpdateVisible = true
this.modalType = 'add'; this.modalType = 'add';
if(this.choose===0){
this.cityVisible=true
}else{
this.areaVisible=true
}
}, },
closeModal() { closeModal() {
this.addOrUpdateVisible = false; this.cityVisible = false;
this.areaVisible=false;
}, },
// //
showDetail(val) { showDetail(val) {
@ -164,6 +218,32 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <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 { .el-tooltip__popper {
max-width: 50%; max-width: 50%;
} }

View File

@ -230,7 +230,7 @@
:close-on-press-escape="false" :close-on-press-escape="false"
:destroy-on-close="true" :destroy-on-close="true"
:before-close="clear" :before-close="clear"
width="50%" width="60%"
> >
<putOnTheShelf <putOnTheShelf
ref="putOnTheShelf" ref="putOnTheShelf"
@ -271,6 +271,7 @@ export default {
radio: '', radio: '',
showPutOnTheShelfFlag: false, showPutOnTheShelfFlag: false,
showPutOnTheShelfFlag2: false, showPutOnTheShelfFlag2: false,
// routePath: '',
submitFrom: { submitFrom: {
type: '组件服务', type: '组件服务',
deptId: '', deptId: '',
@ -328,7 +329,6 @@ export default {
this.dataForm.name = '' this.dataForm.name = ''
this.dataForm.type = '组件服务' this.dataForm.type = '组件服务'
this.$http.get('/sys/user/info').then(res => { 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 this.superAdmin = res.data.data.superAdmin
}) })
}, },
@ -340,7 +340,6 @@ export default {
// //
toppingCapacity (item) { toppingCapacity (item) {
this.$http.put('/resource/pin_top/' + item.id).then(res => { this.$http.put('/resource/pin_top/' + item.id).then(res => {
console.log('置顶', res.data.code)
if (res.data.code == 0) { if (res.data.code == 0) {
this.$message({ this.$message({
message: '置顶成功', message: '置顶成功',
@ -420,7 +419,6 @@ export default {
}) })
this.dataList[index].infoList2 = dataListSinforList this.dataList[index].infoList2 = dataListSinforList
}) })
console.log('this.dataList', this.dataList)
this.total = this.mixinViewModuleOptions.getDataListIsPage this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total ? res.data.total
: 0 : 0
@ -443,7 +441,7 @@ export default {
}, },
showDetail (val) { showDetail (val) {
console.log(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.addOrUpdateHandle(id)
// this.addOrUpdateVisible = true // this.addOrUpdateVisible = true
// this.disabled = false // this.disabled = false
@ -490,7 +488,6 @@ export default {
this.uuidTwo = this.uuid(13, 16) this.uuidTwo = this.uuid(13, 16)
this.uuidSnum = this.uuidOne + this.uuidTwo this.uuidSnum = this.uuidOne + this.uuidTwo
this.uuidSnum = this.uuidSnum.replace(/\s+/g, '') this.uuidSnum = this.uuidSnum.replace(/\s+/g, '')
console.log('this.uuidOne', this.uuidSnum)
}, },
showDocument (val) { showDocument (val) {
// //
@ -629,6 +626,7 @@ export default {
}, },
// //
clear () { clear () {
// this.$router.push(this.routePath)
console.log('清空----------------------------------------') console.log('清空----------------------------------------')
this.notFilled = [] this.notFilled = []
this.showPutOnTheShelfFlag = false this.showPutOnTheShelfFlag = false
@ -659,6 +657,7 @@ export default {
}) })
}, },
showPutOnTheShelfVue () { showPutOnTheShelfVue () {
// this.routePath = this.$route.path
this.showPutOnTheShelfFlag = false this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = true this.showPutOnTheShelfFlag2 = true
this.submitFrom.infoList[0].attrValue = this.radio this.submitFrom.infoList[0].attrValue = this.radio
@ -667,7 +666,6 @@ export default {
)[0].children )[0].children
}, },
changeInfoList (obj) { changeInfoList (obj) {
console.log(obj, this.submitFrom)
this.submitFrom.infoList = this.submitFrom.infoList.filter( this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== obj.attrType (item) => item.attrType !== obj.attrType
) )
@ -691,14 +689,12 @@ export default {
}, },
// //
deleteCompletely (row) { deleteCompletely (row) {
console.log('完全删除===', row)
this.$confirm('确认是否删除?', '提示', { this.$confirm('确认是否删除?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http.post('/resource/delResBySuAd?id=' + row.id).then(res => { this.$http.post('/resource/delResBySuAd?id=' + row.id).then(res => {
console.log('删除结果', res.data)
if (res.data.code == 0) { if (res.data.code == 0) {
this.$message({ this.$message({
type: 'success', type: 'success',
@ -715,7 +711,6 @@ export default {
}) })
}, },
submitData () { submitData () {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
const arr = [] const arr = []
this.putOnTheShelfList.map((item) => { this.putOnTheShelfList.map((item) => {
item.children.map((child) => { item.children.map((child) => {
@ -824,6 +819,7 @@ export default {
} }
}) })
}) })
this.submitFrom.infoList = this.submitFrom.infoList.sort( this.submitFrom.infoList = this.submitFrom.infoList.sort(
(a, b) => arr.indexOf(a.attrType) - arr.indexOf(b.attrType) (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)) { 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('组件地址') this.notFilled.push('组件地址')
} }
console.log(this.submitFrom, this.notFilled, '表单验证')
if (this.notFilled.length > 0) { if (this.notFilled.length > 0) {
this.$message({ this.$message({
message: '请填写必填字段!', message: '请填写必填字段!',
@ -886,8 +881,6 @@ export default {
val.attrValue = this.radio val.attrValue = this.radio
} }
}) })
console.log('编辑===============>', this.submitFrom)
console.log(this.submitFrom.infoList, '===============abc')
// //
const newArr = this.submitFrom.infoList.filter( const newArr = this.submitFrom.infoList.filter(
(element, index, self) => { (element, index, self) => {
@ -911,7 +904,6 @@ export default {
}) })
.catch(() => {}) .catch(() => {})
} else { } else {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
this.$http this.$http
.post('/resource/insert?source= b', this.submitFrom) .post('/resource/insert?source= b', this.submitFrom)
.then(({ data: res }) => { .then(({ data: res }) => {

View File

@ -217,8 +217,8 @@
:close-on-press-escape='false' :close-on-press-escape='false'
:destroy-on-close='true' :destroy-on-close='true'
:before-close='clear' :before-close='clear'
width="50%"> width="60%">
<putOnTheShelf :required="required" :notFilled="notFilled":putOnTheShelfList='putOnTheShelfList' @changeInfoList='changeInfoList' :type='radio' :typeInput='typeInput'></putOnTheShelf> <putOnTheShelf :required="required" :notFilled="notFilled" :putOnTheShelfList='putOnTheShelfList' @changeInfoList='changeInfoList' :type='radio' :typeInput='typeInput'></putOnTheShelf>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button> <el-button @click="clear"> </el-button>
<el-button type="primary" @click="submitData"> </el-button> <el-button type="primary" @click="submitData"> </el-button>
@ -271,6 +271,7 @@ export default {
insertList: [], insertList: [],
putOnTheShelfList: [], putOnTheShelfList: [],
showPutOnTheShelfFlag2: false, showPutOnTheShelfFlag2: false,
// routePath: '',
submitFrom: { submitFrom: {
type: '应用资源', type: '应用资源',
deptId: '', deptId: '',
@ -358,7 +359,7 @@ export default {
}) })
}, },
showDetail (val) { 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.addOrUpdateVisible = true
// this.disabled = false // this.disabled = false
// this.$nextTick(() => { // this.$nextTick(() => {
@ -594,6 +595,7 @@ export default {
}, },
// //
clear () { clear () {
// this.$router.push(this.routePath)
this.notFilled = [] this.notFilled = []
this.showPutOnTheShelfFlag2 = false this.showPutOnTheShelfFlag2 = false
this.insertList = [] this.insertList = []
@ -615,6 +617,7 @@ export default {
}, },
// //
showPutOnTheShelf () { showPutOnTheShelf () {
// this.routePath = this.$route.path
this.showPutOnTheShelfFlag2 = true this.showPutOnTheShelfFlag2 = true
this.$http.get('/category/getCategoryTree').then(res => { this.$http.get('/category/getCategoryTree').then(res => {
this.insertList = res.data.data.filter(item => item.name === '应用资源')[0] this.insertList = res.data.data.filter(item => item.name === '应用资源')[0]

View File

@ -180,7 +180,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="yyzy" label="应用资源" min-width="100%"> <el-table-column prop="yyzy" label="应用资源" min-width="100%">
</el-table-column> </el-table-column>
<el-table-column prop="zj" label="总计" min-width="100%"> <el-table-column prop="count" label="总计" min-width="100%">
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-table :data="tableData" :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" <el-table :data="tableData" :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
@ -205,7 +205,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="ysp" label="云视频" min-width="100%" > <el-table-column prop="ysp" label="云视频" min-width="100%" >
</el-table-column> </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-column>
</el-table> </el-table>
<!--明细表--> <!--明细表-->
@ -277,7 +277,7 @@ export default {
provideSelects: [], provideSelects: [],
departmentSelects: [], departmentSelects: [],
departmentSelects1: [], departmentSelects1: [],
provideSelects1:[], provideSelects1: [],
exportExcel: CONFIGITEM.configData[CONFIGITEM.version].apiURL + '/census/center/export', exportExcel: CONFIGITEM.configData[CONFIGITEM.version].apiURL + '/census/center/export',
exportExcelCondition: '', exportExcelCondition: '',
exportExcelType: '', exportExcelType: '',
@ -468,7 +468,6 @@ export default {
this.detailsVisible = false this.detailsVisible = false
}, },
handleCurrentChange (val) { handleCurrentChange (val) {
this.currentPage = val this.currentPage = val
// todo // todo
if (this.departmentId === 3) { if (this.departmentId === 3) {
@ -477,10 +476,8 @@ export default {
if (this.departmentId === 4) { if (this.departmentId === 4) {
this.getTwoDetail(val) this.getTwoDetail(val)
} }
}, },
// -- // --
getFirstTree (page) { getFirstTree (page) {
if (this.examineStatus == '-1') { if (this.examineStatus == '-1') {
@ -508,7 +505,6 @@ export default {
} }
}) })
.then((res) => { .then((res) => {
if (res.data.code !== 0) { if (res.data.code !== 0) {
this.tableData =[] this.tableData =[]
this.tableDataClone = [] this.tableDataClone = []
@ -556,7 +552,6 @@ export default {
}) })
} }
}) })
}, },
// 使-使 // 使-使
getSecondTree (page) { getSecondTree (page) {
@ -593,33 +588,7 @@ export default {
}else{ }else{
const result = res.data.data 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.tableData = res.data.data
this.tableDataClone = res.data.data this.tableDataClone = res.data.data
this.total = res.data.data.total this.total = res.data.data.total
@ -705,12 +674,11 @@ export default {
}) })
.then((res) => { .then((res) => {
if (res.data.code !== 0) { if (res.data.code !== 0) {
this.tableData =[] this.tableData = []
this.tableDataClone = [] this.tableDataClone = []
this.total = 0 this.total = 0
return this.$message.error("服务器内部异常") return this.$message.error('服务器内部异常')
} else {
}else{
this.tableData = res.data.data.list this.tableData = res.data.data.list
this.tableDataClone = res.data.data.list this.tableDataClone = res.data.data.list
this.total = res.data.data.total this.total = res.data.data.total
@ -726,7 +694,6 @@ export default {
}, },
// 使 // 使
getTwoDetail (page) { getTwoDetail (page) {
var passAndReview = '' // "" var passAndReview = '' // ""
if (this.examineStatus == '-1') { if (this.examineStatus == '-1') {
this.status = '' this.status = ''
@ -756,14 +723,12 @@ export default {
} }
}) })
.then((res) => { .then((res) => {
if (res.data.code !== 0) { if (res.data.code !== 0) {
this.tableData =[] this.tableData = []
this.tableDataClone = [] this.tableDataClone = []
this.total = 0 this.total = 0
return this.$message.error("服务器内部异常") return this.$message.error('服务器内部异常')
} else {
}else{
this.tableData = res.data.data.list this.tableData = res.data.data.list
this.tableDataClone = res.data.data.list this.tableDataClone = res.data.data.list
this.total = res.data.data.total this.total = res.data.data.total
@ -776,11 +741,9 @@ export default {
provideDept: this.provideDepartment provideDept: this.provideDepartment
}) })
} }
}) })
}, },
handleClick (row) { handleClick (row) {
if (this.choseId === 0) { if (this.choseId === 0) {
if (this.departmentId === 1) { if (this.departmentId === 1) {
@ -809,8 +772,6 @@ export default {
// type // type
handleChose (index) { handleChose (index) {
this.checked = false this.checked = false
this.departmentId = index this.departmentId = index
this.currentPage = 1 this.currentPage = 1
@ -878,8 +839,8 @@ export default {
}, },
// ////////// // //////////
goToDetail () { goToDetail () {
this.abilityDepartment='' this.abilityDepartment = ''
this.provideDepartment='' this.provideDepartment = ''
this.currentPage = 1 this.currentPage = 1
this.pageSize = 10 this.pageSize = 10
@ -895,8 +856,8 @@ export default {
}, },
// //
goToBack () { goToBack () {
this.abilityDepartment='' this.abilityDepartment = ''
this.provideDepartment='' this.provideDepartment = ''
this.checked = false this.checked = false
this.currentPage = 1, this.currentPage = 1,

View File

@ -215,6 +215,7 @@
</el-card> </el-card>
</template> </template>
<script> <script>
import bus from '@/views/bus.js'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
export default { export default {
data () { data () {
@ -248,6 +249,13 @@ export default {
roomNameA: '' roomNameA: ''
} }
}, },
created () {
bus.$off('roomExamineAdminInit')
bus.$on('roomExamineAdminInit', () => {
this.getSerach()
bus.$emit('updateTaskNum')
})
},
mounted () { mounted () {
this.getSerach() this.getSerach()
}, },

View File

@ -1,6 +1,7 @@
<template> <template>
<el-card shadow="never" class="roomBox"> <el-card shadow="never" class="roomBox">
<div class="roomExamineSearch"> <div class="roomExamineSearch">
<p>会客厅名称 </p>
<el-input <el-input
v-model="roomNameA" v-model="roomNameA"
style="width: 160px" style="width: 160px"
@ -328,9 +329,10 @@ export default {
} }
.roomExamineSearch { .roomExamineSearch {
display: flex; display: flex;
width: 240px; width: 340px;
margin-bottom: 20px; margin-bottom: 20px;
justify-content: space-between; justify-content: space-between;
align-items: baseline;
} }
} }
.dialog-footer { .dialog-footer {

View File

@ -34,7 +34,7 @@ export default {
tip: String, tip: String,
maxCount: Number, maxCount: Number,
data: Array, data: Array,
list: Array, list: Object ,
emitFlag: String, emitFlag: String,
busType: Number busType: Number
}, },
@ -46,13 +46,13 @@ export default {
}, },
methods: { methods: {
handleExceed (file) { handleExceed (file) {
console.log(file)
}, },
handError (err, file, fileList) { handError (err, file, fileList) {
console.log(err, file, fileList)
}, },
handlePreview (file) { handlePreview (file) {
console.log(file)
if (file.response) { if (file.response) {
window.open( window.open(
window.SITE_CONFIG.previewUrl + window.SITE_CONFIG.previewUrl +
@ -74,7 +74,7 @@ export default {
message: file.name + '上传成功', message: file.name + '上传成功',
type: 'success' type: 'success'
}) })
console.log(file, fileList)
this.$emit('changeInfoList', { this.$emit('changeInfoList', {
attrType: this.title, attrType: this.title,
attrValue: file.response.data, attrValue: file.response.data,
@ -91,7 +91,7 @@ export default {
} }
}, },
handleRemove (file) { handleRemove (file) {
console.log(file, '删除', this.title)
this.$emit('changeInfoList', { this.$emit('changeInfoList', {
attrType: this.title, attrType: this.title,
attrValue: '', attrValue: '',
@ -104,7 +104,7 @@ export default {
if (this.list.note1) { if (this.list.note1) {
this.fileList.push({ name: this.list.note2 || '--', url: this.list.note1 }) this.fileList.push({ name: this.list.note2 || '--', url: this.list.note1 })
} }
console.log('上传组件===================>', this.list, this.fileList)
} }
} }
</script> </script>

View File

@ -7,10 +7,13 @@
:model="dataForm" :model="dataForm"
@keyup.enter.native="getDataList()" @keyup.enter.native="getDataList()"
> >
<el-form-item>
<span>{{ $t('process.userName') + ':'}}</span>
</el-form-item>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.processDefinitionId" v-model="dataForm.userName"
:placeholder="$t('process.name')" :placeholder="$t('process.userName')"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>

View File

@ -7,10 +7,13 @@
:model="dataForm" :model="dataForm"
@keyup.enter.native="getDataList()" @keyup.enter.native="getDataList()"
> >
<el-form-item>
<span>{{ $t('process.userName') + ':'}}</span>
</el-form-item>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.processDefinitionId" v-model="dataForm.userName"
:placeholder="$t('process.name')" :placeholder="$t('process.userName')"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>

View File

@ -7,10 +7,13 @@
:model="dataForm" :model="dataForm"
@keyup.enter.native="getDataList()" @keyup.enter.native="getDataList()"
> >
<el-form-item>
<span>{{ $t('process.userName') + ':'}}</span>
</el-form-item>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.processDefinitionId" v-model="dataForm.userName"
:placeholder="$t('process.name')" :placeholder="$t('process.userName')"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>

View File

@ -7,10 +7,13 @@
:model="dataForm" :model="dataForm"
@keyup.enter.native="getDataList()" @keyup.enter.native="getDataList()"
> >
<el-form-item>
<span>{{ $t('process.userName') + ':'}}</span>
</el-form-item>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.processDefinitionId" v-model="dataForm.userName"
:placeholder="$t('process.name')" :placeholder="$t('process.userName')"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>

View File

@ -7,10 +7,13 @@
:model="dataForm" :model="dataForm"
@keyup.enter.native="getDataList()" @keyup.enter.native="getDataList()"
> >
<el-form-item>
<span>{{ $t('process.userName') + ':'}}</span>
</el-form-item>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.processDefinitionId" v-model="dataForm.userName"
:placeholder="$t('process.name')" :placeholder="$t('process.userName')"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>

View File

@ -318,6 +318,9 @@ export default {
onRemove (file, fileList) { onRemove (file, fileList) {
this.$nextTick(() => { this.$nextTick(() => {
if (fileList.length == 0) { if (fileList.length == 0) {
this.ruleForm.pic =null
this.fileList = []
this.picImg =''
this.checkImgSuccess = false // this.checkImgSuccess = false //
// this.$refs.ruleForm.validate() //, // this.$refs.ruleForm.validate() //,
} }
@ -358,7 +361,7 @@ export default {
this.$http.get(`/meeting/${row.id}`).then(({ data: res }) => { this.$http.get(`/meeting/${row.id}`).then(({ data: res }) => {
this.dialogFormVisible = true this.dialogFormVisible = true
this.ruleForm = res.data 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 } // let imgUrl = { name: res.data.name, url: res.data.pic }
// this.fileList.push(imgUrl) // this.fileList.push(imgUrl)
this.picImg = res.data.pic this.picImg = res.data.pic

View File

@ -24,7 +24,16 @@
<span class="text" v-if="dataForm.content.applicationSystem">应用系统<span>{{ <span class="text" v-if="dataForm.content.applicationSystem">应用系统<span>{{
dataForm.content.applicationSystem || '--' dataForm.content.applicationSystem || '--'
}}</span></span> }}</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> <span class="text"></span>
</template>
</p> </p>
<p> <p>
<span v-if="dataForm.content.applicationSceneStr">应用场景<span> <span v-if="dataForm.content.applicationSceneStr">应用场景<span>
@ -35,11 +44,6 @@
需求依据<span> 需求依据<span>
{{ dataForm.content.applicationBackground || '--' }}</span></span> {{ dataForm.content.applicationBackground || '--' }}</span></span>
</p> </p>
<!-- <p>
<div>
<el-button type="primary" v-if="dataForm.content.attachment" size="small" @click="download(dataForm.content)">附件下载</el-button>
</div>
</p> -->
<p> <p>
<div v-if="version == 'xihaian'"> <div v-if="version == 'xihaian'">
<el-button type="primary" size="small" @click="download(dataForm.content)">附件下载</el-button> <el-button type="primary" size="small" @click="download(dataForm.content)">附件下载</el-button>

View File

@ -26,7 +26,7 @@ js:
:placeholder="'请选择' + name"> :placeholder="'请选择' + name">
<el-option <el-option
:value="itemSelect.dictLabel" :value="itemSelect.dictLabel"
v-for="(itemSelect, indexSelect) in options" v-for="(itemSelect, indexSelect) in optionsCopy"
:key="indexSelect"> :key="indexSelect">
{{ itemSelect.dictLabel }} {{ itemSelect.dictLabel }}
</el-option> </el-option>
@ -38,9 +38,9 @@ js:
filterable filterable
placeholder="请输入关键词" placeholder="请输入关键词"
@change="changeIiem(name,data.note1)" @change="changeIiem(name,data.note1)"
:loading="loading"> >
<el-option <el-option
v-for="(itemSelect) in options" v-for="(itemSelect) in optionsCopy"
:key="itemSelect.id" :key="itemSelect.id"
:label="itemSelect.name" :label="itemSelect.name"
:value="itemSelect.id"> :value="itemSelect.id">
@ -56,7 +56,7 @@ js:
> >
<el-option <el-option
:value="itemSelect.dictLabel" :value="itemSelect.dictLabel"
v-for="(itemSelect, indexSelect) in options" v-for="(itemSelect, indexSelect) in optionsCopy"
:key="indexSelect"> :key="indexSelect">
{{ itemSelect.dictLabel }} {{ itemSelect.dictLabel }}
</el-option> </el-option>
@ -66,7 +66,7 @@ js:
v-else-if="type === 'checkBox'" v-else-if="type === 'checkBox'"
> >
<el-checkbox-group v-model="valueCheckBox" @change='chekBoxChange'> <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> </el-checkbox-group>
</div> </div>
<!-- 不可点的input框 --> <!-- 不可点的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 v-model="data.note1" type="date" :placeholder="'选择' + name" value-format="yyyy-MM-dd">
</el-date-picker> </el-date-picker>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
@ -97,7 +96,7 @@ export default {
}, },
props: { props: {
type: String, type: String,
data: Array, data: Object,
name: String, name: String,
value: String, value: String,
changeField: Array, changeField: Array,
@ -108,6 +107,7 @@ export default {
}, },
data () { data () {
return { return {
optionsCopy:[],
// //
valueCheckBox: [], valueCheckBox: [],
// //
@ -134,7 +134,7 @@ export default {
res.data.list.forEach((element) => { res.data.list.forEach((element) => {
dataList.push(element) dataList.push(element)
}) })
this.options = dataList this.optionsCopy = dataList
}) })
.catch(() => {}) .catch(() => {})
} else if (this.data.name === '归属部门' || this.data.name === '所属产品线') { } else if (this.data.name === '归属部门' || this.data.name === '所属产品线') {
@ -143,10 +143,9 @@ export default {
res.data.data.forEach((element) => { res.data.data.forEach((element) => {
dataList.push(element) dataList.push(element)
}) })
this.options = dataList this.optionsCopy = dataList
if (!this.data.note1) { if (!this.data.note1) {
this.$http.get('/sys/user/info').then(({ data: res }) => { this.$http.get('/sys/user/info').then(({ data: res }) => {
console.log(res.data)
this.data.note1 = res.data.deptId this.data.note1 = res.data.deptId
}) })
} }
@ -160,7 +159,6 @@ export default {
// this.options = dataList // this.options = dataList
if (this.data.note1 == null) { if (this.data.note1 == null) {
this.$http.get('/sys/user/info').then(({ data: res }) => { this.$http.get('/sys/user/info').then(({ data: res }) => {
console.log(res.data)
this.data.note1 = res.data.realName || '' this.data.note1 = res.data.realName || ''
}) })
} }
@ -174,11 +172,12 @@ export default {
// this.options = dataList // this.options = dataList
if (this.data.note1 == null) { if (this.data.note1 == null) {
this.$http.get('/sys/user/info').then(({ data: res }) => { this.$http.get('/sys/user/info').then(({ data: res }) => {
console.log(res.data)
this.data.note1 = res.data.mobile || '' this.data.note1 = res.data.mobile || ''
}) })
} }
// }) // })
}else{
this.optionsCopy=this.options
} }
}, },
chekBoxChange (list) { chekBoxChange (list) {
@ -200,7 +199,6 @@ export default {
}, },
showTypeClick (e) { showTypeClick (e) {
this.showType = e this.showType = e
console.log(e)
this.$emit('show-type', this.showType) this.$emit('show-type', this.showType)
} }
}, },

View File

@ -1,13 +1,13 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-07-08 09:54:50 * @Date: 2022-07-08 09:54:50
* @LastEditors: hisense.liangjunhua * @LastEditors: Light
* @LastEditTime: 2022-07-28 20:09:53 * @LastEditTime: 2022-12-20 10:42:37
* @Description: 多条数据特殊处理 * @Description: 多条数据特殊处理
--> -->
<template> <template>
<div class="special"> <div class="special">
<div class="top">{{configure.name}}</div> <div class="top">{{ configure.name }}</div>
<div class="bottom"> <div class="bottom">
<div class="items" v-show="data.length > 0"> <div class="items" v-show="data.length > 0">
<div class="item" v-for="(val, index) in data" :key="'key1' + val.name + index"> <div class="item" v-for="(val, index) in data" :key="'key1' + val.name + index">
@ -15,20 +15,19 @@
<span>{{ configure.name }}-{{ index + 1 }}</span> <span>{{ configure.name }}-{{ index + 1 }}</span>
<span></span> <span></span>
</p> </p>
<p v-for="(attr,index2) in configure.list" :key="'key2' + attr.name + index2"> <p v-for="(attr, index2) in configure.list" :key="'key2' + attr.name + index2">
<span>{{ attr.name }}</span> <span>{{ attr.name }}</span>
<span v-if="attr.type === 'image'"> <span v-if="attr.type === 'image'">
<!-- <a-image :width="85" :height="60" :src="val.img" /> --> <!-- <a-image :width="85" :height="60" :src="val.img" /> -->
<el-image <el-image style="width: 85px; height: 60px" :src="val.img" :preview-src-list="[val.img]">
style="width: 85px; height: 60px"
:src="val.img"
:preview-src-list="[val.img]">
</el-image> </el-image>
</span> </span>
<span v-else>{{ val[attr.field] + (attr.company || '') }}</span> <span v-else>{{ val[attr.field] + (attr.company || '') }}</span>
</p> </p>
<div class="del"> <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 @click="del(configure.name, index)">删除</div>
</div> </div>
</div> </div>
@ -37,13 +36,9 @@
<div class="form" v-for="(val, index) in configure.list" :key="'key3' + val.name + index"> <div class="form" v-for="(val, index) in configure.list" :key="'key3' + val.name + index">
<span>{{ val.name }}</span> <span>{{ val.name }}</span>
<a-input v-model:value="val.note1" ::maxlength="24" :placeholder="'请填写' + val.name + ',不超过24个字符'" <a-input v-model:value="val.note1" ::maxlength="24" :placeholder="'请填写' + val.name + ',不超过24个字符'"
v-if="val.type == 'input'"/> v-if="val.type == 'input'" />
<template v-if="val.type == 'input2'"> <template v-if="val.type == 'input2'">
<a-input <a-input v-model:value="val.note1" :placeholder="'请填写' + val.name" style="width: 570px;" />
v-model:value="val.note1"
:placeholder="'请填写' + val.name"
style="width: 570px;"
/>
<span style="width: 2.5rem; padding-left: 0.1rem"> <span style="width: 2.5rem; padding-left: 0.1rem">
{{ {{
numType == '一次性买断' numType == '一次性买断'
@ -55,17 +50,18 @@
: numType == '按年计费' : numType == '按年计费'
? '元/年' ? '元/年'
: '' : ''
}} }}
</span> </span>
</template> </template>
<a-textarea v-model:value="val.note1" :showCount="true" :maxlength="200" :placeholder="'请填写' + val.name" <a-textarea v-model:value="val.note1" :showCount="true" :maxlength="200" :placeholder="'请填写' + val.name"
v-else-if="val.type == 'textArea'"/> v-else-if="val.type == 'textArea'" />
<a-input-number v-model:value="val.note1" :min="0" :max="9999" :step="0.01" string-mode <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'" /> :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" <!-- <upload :key="showKey" type="图片" btnName="上传图片" :maxCount="1" :data="val" :list="[]" tip="支持图片类型大小不超过100M"
v-else-if="val.type == 'image'"></upload> --> 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>
<div class="submit"> <div class="submit">
<a-button type="primary" @click="add(configure.name)">添加更多</a-button> <a-button type="primary" @click="add(configure.name)">添加更多</a-button>
@ -74,6 +70,7 @@
</div> </div>
</template> </template>
<script> <script>
import { deepClone } from '@/utils/form-generator'
import upload from '@/views/modules/ability/upload.vue' import upload from '@/views/modules/ability/upload.vue'
// import upload from '@/views/modules/components/upload' // import upload from '@/views/modules/components/upload'
export default { export default {
@ -85,16 +82,44 @@ export default {
configure: Object, configure: Object,
showData: Object showData: Object
}, },
data () { 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 { return {
limit: 1,
data: [], data: [],
showKey: 0, showKey: 0,
numType: '一次性买断' numType: '一次性买断'
} }
}, },
methods: { methods: {
add (title, addFlag, submitFlag) { add(title, addFlag, submitFlag) {
console.log(title, addFlag, submitFlag)
const list = this.configure.list const list = this.configure.list
let flag = true let flag = true
list.forEach((item) => { list.forEach((item) => {
@ -162,7 +187,7 @@ export default {
} }
} }
}, },
del (title, index) { del(title, index) {
this.data.splice(index, 1) this.data.splice(index, 1)
const str = this.data.length > 0 ? JSON.stringify(this.data) : '' const str = this.data.length > 0 ? JSON.stringify(this.data) : ''
this.$emit('changeInfoList', { this.$emit('changeInfoList', {
@ -171,13 +196,24 @@ export default {
delFlag: 0 delFlag: 0
}) })
}, },
radioChange (e) { update(title, index) {
console.log(e, 'wewewe') 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) {
this.numType = e.target.value this.numType = e.target.value
} }
}, },
created () { created() {
console.log('特殊处理=============>', this.showData)
if (this.configure.name === '计费标准信息' || this.configure.name === '常见问题') { if (this.configure.name === '计费标准信息' || this.configure.name === '常见问题') {
if (this.showData.children[0].note1) { if (this.showData.children[0].note1) {
this.data = JSON.parse(this.showData.children[0].note1) this.data = JSON.parse(this.showData.children[0].note1)
@ -214,6 +250,7 @@ export default {
.bottom { .bottom {
margin-top: 25px; margin-top: 25px;
margin-bottom: 25px; margin-bottom: 25px;
.items { .items {
background: #fafafa; background: #fafafa;
padding: 10px; padding: 10px;
@ -232,7 +269,7 @@ export default {
} }
} }
p:nth-of-type(1) > span:nth-of-type(1) { p:nth-of-type(1)>span:nth-of-type(1) {
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
} }
@ -242,12 +279,22 @@ export default {
justify-content: flex-end; justify-content: flex-end;
align-items: center; 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 { .delImg {
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
width: 16px; width: 16px;
height: 18px; height: 18px;
background: url(~@/assets/img/putOnTheShelf/del.png) no-repeat; background: url("~@/assets/img/putOnTheShelf/del.png") no-repeat;
margin-right: 5px; margin-right: 5px;
} }
@ -316,6 +363,7 @@ export default {
} }
} }
} }
::v-deep .el-image__preview { ::v-deep .el-image__preview {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -371,15 +419,18 @@ export default {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
::v-deep .ant-input-number { ::v-deep .ant-input-number {
width: 200px; width: 200px;
} }
::v-deep .ant-transfer-list-header-title { ::v-deep .ant-transfer-list-header-title {
font-size: 16px; font-size: 16px;
color: #303133; color: #303133;
font-weight: 400; font-weight: 400;
text-align: left; text-align: left;
} }
textarea { textarea {
height: 100px; height: 100px;
resize: none; resize: none;

View File

@ -1,13 +1,28 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-07-08 09:48:52 * @Date: 2022-07-08 09:48:52
* @LastEditors: hisense.liangjunhua * @LastEditors: Light
* @LastEditTime: 2022-07-25 15:57:25 * @LastEditTime: 2022-12-29 09:34:56
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
<div class="put-on-the-shelf"> <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'> <div v-for='child in parent.children' :key='child.id'>
<template v-if='judgmentType.filter(item => item.name==child.name).length === 0'> <template v-if='judgmentType.filter(item => item.name==child.name).length === 0'>
<div class="top">{{child.name}}</div> <div class="top">{{child.name}}</div>
@ -59,6 +74,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script> <script>
import inputSelectCheckbox from './components/inputSelectCheckbox' import inputSelectCheckbox from './components/inputSelectCheckbox'
@ -80,6 +96,8 @@ export default {
}, },
data () { data () {
return { return {
selectName: '',
showList: [],
changeField: [], changeField: [],
judgmentType: [ judgmentType: [
{ {
@ -193,6 +211,20 @@ export default {
}, },
mounted () { mounted () {
this.defaultContent() 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: { methods: {
// //
@ -234,22 +266,77 @@ export default {
}, },
showType (data) { showType (data) {
this.showTypeName = 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> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.put-on-the-shelf { .put-on-the-shelf {
height: 500px; // height: 500px;
display: flex;
padding: 0 50px; 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; overflow-y: scroll;
} }
.put-on-the-shelf::-webkit-scrollbar { .right::-webkit-scrollbar {
width: 0; width: 0;
}
} }
// .put-on-the-shelf::-webkit-scrollbar {
// width: 0;
// }
.top { .top {
width: 800px;
color: #333333; color: #333333;
font-size: 22px; font-size: 22px;
display: flex; display: flex;

View File

@ -89,9 +89,6 @@ export default {
}, },
(res) => { (res) => {
// if (res.data.code !== 0) {
// return
// }
if (res.data.data && res.data.data.length > 0) { if (res.data.data && res.data.data.length > 0) {
this.data = res.data.data[0].values this.data = res.data.data[0].values
this.data.map((item) => { this.data.map((item) => {
@ -108,8 +105,8 @@ export default {
} }
} else { } else {
this.trendChartData = { this.trendChartData = {
xaxis: [], xaxis: this.ydata,
ydata: [] ydata:this.xaxis
} }
} }
@ -118,7 +115,7 @@ export default {
}) })
}, },
(err) => { (err) => {
console.log('err', err)
} }
) )
}, },

View File

@ -73,7 +73,7 @@ export default {
}, },
// //
resourceData: [], resourceData: [],
resourceColor: ['#7b2cff', '#fd5151', , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'], resourceColor: ['#7b2cff', '#fd5151' , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
// //
applyData: [], applyData: [],
applyColor: ['#5085f2', '#e75fc3', '#f87be2', '#f2719a', '#fca4bb', '#f59a8f', '#fdb301', '#57e7ec', '#cf9ef1'], applyColor: ['#5085f2', '#e75fc3', '#f87be2', '#f2719a', '#fca4bb', '#f59a8f', '#fdb301', '#57e7ec', '#cf9ef1'],

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
/* /*
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: Light * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-08 13:42:49 * @LastEditTime: 2022-12-29 17:34:17
* @Description: 系统静态参数配置 * @Description: 系统静态参数配置
*/ */
var _global = {} var _global = {}
@ -68,7 +68,7 @@ var CONFIGITEM = {
// cameraUrl: '192.168.124.236:9537', // vpn // cameraUrl: '192.168.124.236:9537', // vpn
}, },
backUrl: 'http://10.134.135.9:9797', 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', // apiURL: 'http://192.168.124.233:8888/ucs-admin',
// previewUrl: 'http://10.134.135.9:9796/', // previewUrl: 'http://10.134.135.9:9796/',
// websocketURL: '10.134.135.9:8888/ucs-admin', // // websocketURL: '10.134.135.9:8888/ucs-admin', //

View File

@ -75,7 +75,7 @@
cursor: pointer; cursor: pointer;
} }
.ant-message { .ant-message {
z-index: 10010!important; z-index: 10012!important;
} }
.ant-modal-wrap{ .ant-modal-wrap{
z-index: 10010!important; z-index: 10010!important;

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-05-06 11:12:0011-18 19:07:53 * @Date: 2022-05-06 11:12:00
* @LastEditors: Light * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-16 09:41:27 * @LastEditTime: 2022-12-29 17:34:24
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -22,8 +22,9 @@
import { onBeforeUnmount, onMounted, watch, ref } from 'vue' import { onBeforeUnmount, onMounted, watch, ref } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { useStore } from 'vuex'
const router = useRouter() const router = useRouter()
const store = useStore()
const locale = zhCN const locale = zhCN
const token = Cookies.get('ucsToken') const token = Cookies.get('ucsToken')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
@ -88,10 +89,11 @@
} }
} }
const waterMarkInit = (newValue) => { const waterMarkInit = (newValue) => {
getUser().then((res) => { // getUser().then((res) => {
if (res.data.code == 0) { // if (res.data.code == 0) {
realName = res.data.data.realName // realName = res.data.data.realName
} // }
realName = store.getters['user/realName']
if (realName.length > 13) { if (realName.length > 13) {
onWholeWaterMark( onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')], [realName, moment().format('YYYY-MM-DD')],
@ -130,7 +132,7 @@
changeWaterMark(newValue) changeWaterMark(newValue)
} }
}) })
}) // })
} }
watch( watch(
() => router.currentRoute.value.path, () => router.currentRoute.value.path,
@ -142,16 +144,16 @@
realName, realName,
realName.charCodeAt() realName.charCodeAt()
) )
// // //
if (newValue == '/home') { // if (newValue == '/home') {
waterMarkInit(newValue) // waterMarkInit(newValue)
} // }
changeWaterMark(newValue) changeWaterMark(newValue)
}, },
{ immediate: true } { immediate: true }
) )
onMounted(() => { onMounted(() => {
// waterMarkInit() waterMarkInit()
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
// 4., // 4.,

View File

@ -1,8 +1,8 @@
/* /*
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:48:03 * @Date: 2022-03-29 17:48:03
* @LastEditors: Light * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-25 09:37:05 * @LastEditTime: 2022-12-29 14:50:51
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -62,3 +62,11 @@ export function register() {
method: 'post', 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

View File

@ -2,12 +2,10 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:48:03 * @Date: 2022-03-29 17:48:03
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-06 15:00:49 * @LastEditTime: 2022-12-29 10:30:38
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import { import { createApp } from 'vue'
createApp
} from 'vue'
import Antd from 'ant-design-vue' import Antd from 'ant-design-vue'
import mitt from 'mitt' import mitt from 'mitt'
import App from './App' import App from './App'
@ -17,8 +15,8 @@ import store from './store'
import 'ant-design-vue/dist/antd.css' import 'ant-design-vue/dist/antd.css'
import '@/vab' import '@/vab'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import * as moment from "moment" import * as moment from 'moment'
import "dayjs/locale/zh-cn"; import 'dayjs/locale/zh-cn'
import vue3videoPlay from 'vue3-video-play-emiyagm' // import vue3videoPlay from 'vue3-video-play-emiyagm' //
import 'vue3-video-play-emiyagm/dist/style.css' // css import 'vue3-video-play-emiyagm/dist/style.css' // css
import ElementPlus from 'element-plus' import ElementPlus from 'element-plus'
@ -27,14 +25,14 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
console.log(111, 'main') console.log(111, 'main')
/** /**
* @author chuzhixin 1204505056@qq.com * @author chuzhixin 1204505056@qq.com
* @description 正式环境默认使用mock正式项目记得注释后再打包 * @description 正式环境默认使用mock正式项目记得注释后再打包
*/ */
// if (process.env.NODE_ENV === 'production') { // if (process.env.NODE_ENV === 'production') {
// const { mockXHR } = require('@/utils/static') // const { mockXHR } = require('@/utils/static')
// mockXHR() // mockXHR()
// } // }
const emitter = mitt() const emitter = mitt()
const app = createApp(App) const app = createApp(App)
app.config.globalProperties.$emitter = emitter app.config.globalProperties.$emitter = emitter
@ -58,7 +56,6 @@ router.beforeEach((to, from, next) => {
next() next()
}) })
// //
// function judgeAgent() { // function judgeAgent() {
// let userAgent = navigator.userAgent // userAgent // let userAgent = navigator.userAgent // userAgent

View File

@ -21,6 +21,7 @@ const state = () => ({
avatar: '', avatar: '',
role: 0, // role: 0, //
roleList: [], // roleList: [], //
navList: [],
}) })
const getters = { const getters = {
accessToken: (state) => state.accessToken, accessToken: (state) => state.accessToken,
@ -32,6 +33,7 @@ const getters = {
userId: (state) => state.userId, userId: (state) => state.userId,
deptName: (state) => state.deptName, deptName: (state) => state.deptName,
deptId: (state) => state.deptId, deptId: (state) => state.deptId,
navList: (state) => state.navList,
} }
const mutations = { const mutations = {
/** /**
@ -77,6 +79,11 @@ const mutations = {
setDeptName(state, name) { setDeptName(state, name) {
state.deptName = name state.deptName = name
}, },
//
setNavList(state, nav) {
debugger
state.navList = nav
},
setDeptId(state, name) { setDeptId(state, name) {
state.deptId = name state.deptId = name
}, },

View File

@ -61,6 +61,7 @@ const instance = axios.create({
timeout: requestTimeout, timeout: requestTimeout,
headers: { headers: {
'Content-Type': contentType, 'Content-Type': contentType,
'Accept-Language': 'zh-CN',
}, },
}) })

View File

@ -138,12 +138,20 @@
// //
function viewDetails(id) { function viewDetails(id) {
console.log('id=========>', id) console.log('id=========>', id)
router.push({ // router.push({
path: '/details', // path: '/details',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/details', //
query: { query: {
id: id, id: id,
hiddenBackFlag: true,
}, },
}) })
window.open(detailPage.href, '_blank')
} }
// //
const praiseList = ref([]) const praiseList = ref([])

View File

@ -59,12 +59,20 @@
// //
function viewDetails(id) { function viewDetails(id) {
console.log('id=========>', id) console.log('id=========>', id)
router.push({ // router.push({
path: '/demandDetails', // path: '/demandDetails',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/demandDetails', //
query: { query: {
id: id, id: id,
// hiddenBackFlag: true,
}, },
}) })
window.open(detailPage.href, '_blank')
} }
function jumpPage() { function jumpPage() {
router.push({ router.push({

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-17 14:11:08 * @Date: 2022-06-17 14:11:08
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-10-26 14:57:25 * @LastEditTime: 2022-12-20 11:39:05
* @Description: 上架 * @Description: 上架
--> -->
<template> <template>
@ -10,7 +10,7 @@
<div v-for="title in props.refData.children" :key="title.id"> <div v-for="title in props.refData.children" :key="title.id">
<div class="top"> <div class="top">
<div></div> <div></div>
<div >{{ title.name }}</div> <div>{{ title.name }}</div>
<div></div> <div></div>
</div> </div>
<template v-if="title.isConfigure"> <template v-if="title.isConfigure">
@ -45,22 +45,36 @@
font-size: 16px; font-size: 16px;
display: flex; display: flex;
float: right; float: right;
top:0px; top: 0px;
margin-right: 28px; margin-right: 28px;
" "
> >
<!-- <span>{{ title.name }}-{{ index + 1 }}</span> --> <!-- <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 <a-popconfirm
:title="'是否删除该条' + title.name + '?'" :title="'是否删除该条' + title.name + '?'"
ok-text="是" ok-text="是"
cancel-text="否" cancel-text="否"
@confirm="del(title.name, index)" @confirm="del(title.name, index)"
> >
<div class="del">
<i class="delImg"></i> <i class="delImg"></i>
<div>删除</div>
</div>
</a-popconfirm> </a-popconfirm>
<a-popconfirm
:title="'是否删除该条' + title.name + '?'"
ok-text="是"
cancel-text="否"
@confirm="del(title.name, index)"
>
<div>删除</div>
</a-popconfirm>
</div>
</div> </div>
<div <div
class="form" class="form"
@ -69,10 +83,9 @@
)[0].list" )[0].list"
:key="'key2' + attr.name + index2" :key="'key2' + attr.name + index2"
> >
<span>{{ attr.name }}:</span>
<span >{{ attr.name }}:</span>
<a-input <a-input
style="width:280px" style="width: 280px"
disabled disabled
v-model:value="val[attr.field]" v-model:value="val[attr.field]"
:maxlength="24" :maxlength="24"
@ -81,7 +94,7 @@
/> />
<template v-if="attr.type == 'input2'"> <template v-if="attr.type == 'input2'">
<a-input <a-input
style="width:280px" style="width: 280px"
disabled disabled
:maxLength="1000" :maxLength="1000"
v-model:value="val[attr.field]" v-model:value="val[attr.field]"
@ -90,12 +103,11 @@
</template> </template>
<template v-else-if="attr.type == 'textArea'"> <template v-else-if="attr.type == 'textArea'">
<a-input <a-input
style="width:1120px" style="width: 1120px"
disabled disabled
v-model:value="val[attr.field]" v-model:value="val[attr.field]"
:maxlength="1000" :maxlength="1000"
:placeholder="'请填写' + attr.name + ',不超过1000个字符'" :placeholder="'请填写' + attr.name + ',不超过1000个字符'"
/> />
</template> </template>
<!-- <a-textarea <!-- <a-textarea
@ -113,7 +125,15 @@
<a-image :width="85" :height="60" :src="val.img" /> <a-image :width="85" :height="60" :src="val.img" />
</span> </span>
</div> </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>
<!-- <div style="font-size: 0.18rem; font-weight: 600border-top: 1px dashed grey; width: 1240px;font-size: 18px;"> <!-- <div style="font-size: 0.18rem; font-weight: 600border-top: 1px dashed grey; width: 1240px;font-size: 18px;">
@ -126,9 +146,9 @@
)[0].list" )[0].list"
:key="'key3' + val.name + index" :key="'key3' + val.name + index"
> >
<span >{{ val.name }}:</span> <span>{{ val.name }}:</span>
<a-input <a-input
style="width:280px" style="width: 280px"
v-model:value="val.note1" v-model:value="val.note1"
:maxlength="24" :maxlength="24"
:placeholder="'请填写' + val.name + ',不超过24个字符'" :placeholder="'请填写' + val.name + ',不超过24个字符'"
@ -136,7 +156,7 @@
/> />
<template v-if="val.type == 'input2'"> <template v-if="val.type == 'input2'">
<a-input <a-input
style="width:280px" style="width: 280px"
:maxLength="1000" :maxLength="1000"
v-model:value="val.note1" v-model:value="val.note1"
:placeholder="'请填写' + val.name" :placeholder="'请填写' + val.name"
@ -157,12 +177,11 @@
</template> </template>
<template v-else-if="val.type == 'textArea'"> <template v-else-if="val.type == 'textArea'">
<a-input <a-input
style="width:1120px" style="width: 1120px"
:showCount="true" :showCount="true"
v-model:value="val.note1" v-model:value="val.note1"
:maxlength="1000" :maxlength="1000"
:placeholder="'请填写' + val.name + ',不超过1000个字符'" :placeholder="'请填写' + val.name + ',不超过1000个字符'"
/> />
</template> </template>
<!-- <a-textarea <!-- <a-textarea
@ -198,7 +217,7 @@
class="danxuan-Area-son" class="danxuan-Area-son"
@click="radioChangeNew(val, itemSelect)" @click="radioChangeNew(val, itemSelect)"
:class=" :class="
val.note1 && val.note1=== itemSelect val.note1 && val.note1 === itemSelect
? 'danxuan-Area-down' ? 'danxuan-Area-down'
: '' : ''
" "
@ -217,11 +236,19 @@
v-else-if="val.type == 'image'" v-else-if="val.type == 'image'"
></upload> ></upload>
</div> </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"> <div class="submit">
<a-button type="primary" @click="add(title.name)"> <a-button type="primary" @click="add(title.name)">
<img <img
style="height: 12px; width: 12px;margin-top: -2px;" style="height: 12px; width: 12px; margin-top: -2px"
src="../../../assets/home/zhengjia.png" src="../../../assets/home/zhengjia.png"
alt="" alt=""
/> />
@ -261,14 +288,20 @@
<a-input <a-input
:maxLength="1000" :maxLength="1000"
v-model:value="item.note1" v-model:value="item.note1"
:placeholder="'请输入' + placeHolderWords(item.name)+',单位为元'" :placeholder="
'请输入' + placeHolderWords(item.name) + ',单位为元'
"
@change="changeIiem(item.name, item.note1)" @change="changeIiem(item.name, item.note1)"
/> />
<span style="color:red"> (单位为元*仅用于测算为部门节省资金)</span> <span style="color: red">
(单位为元*仅用于测算为部门节省资金)
</span>
</div> </div>
<a-input <a-input
:maxLength="1000" :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" v-model:value="item.note1"
:placeholder="'请输入' + placeHolderWords(item.name)" :placeholder="'请输入' + placeHolderWords(item.name)"
@change="changeIiem(item.name, item.note1)" @change="changeIiem(item.name, item.note1)"
@ -416,7 +449,6 @@
</div> </div>
</div> </div>
<upload <upload
v-else-if="item.type == 'video'" v-else-if="item.type == 'video'"
type="视频" type="视频"
@ -424,7 +456,7 @@
:maxCount="1" :maxCount="1"
:data="item" :data="item"
:list="props.videoList" :list="props.videoList"
tip="支持视频类型大小不超过100M" tip="支持视频类型mp4、mp3、mpeg大小不超过100M"
></upload> ></upload>
<!-- <a-button <!-- <a-button
@ -610,34 +642,34 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import VueTemplateDemo from '@/views/personalCenter/VueTemplateDemo' import VueTemplateDemo from '@/views/personalCenter/VueTemplateDemo'
import { placeHolderWords } from '@/utils/placeHolder' import { placeHolderWords } from '@/utils/placeHolder'
import { import {
ref, ref,
defineProps, defineProps,
watch, watch,
onMounted, onMounted,
defineExpose, defineExpose,
defineEmits, defineEmits,
} from 'vue' } from 'vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import upload from '@/views/components/upload' import upload from '@/views/components/upload'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { getUserInfo, getDeptAll } from '@/api/user' import { getUserInfo, getDeptAll } from '@/api/user'
import { import {
getCategoryTreePage, getCategoryTreePage,
queryApplicationRelByResourceId, queryApplicationRelByResourceId,
queryResourceRelByKeyId, queryResourceRelByKeyId,
filesUpload, filesUpload,
} from '@/api/personalCenter' } from '@/api/personalCenter'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
const abilityToType = router.currentRoute.value.query.abilityToType const abilityToType = router.currentRoute.value.query.abilityToType
const componentTypeValue = router.currentRoute.value.query.componentTypeValue const componentTypeValue = router.currentRoute.value.query.componentTypeValue
const changeField = ref([]) const changeField = ref([])
// //
const chooseField = ref([]) const chooseField = ref([])
const props = defineProps({ const props = defineProps({
// //
refData: { type: Object, default: null }, refData: { type: Object, default: null },
// //
@ -699,19 +731,19 @@ const props = defineProps({
// } // }
// ] // ]
// }] // }]
}) })
const emit = defineEmits(['next', 'back', 'submit', 'preview']) const emit = defineEmits(['next', 'back', 'submit', 'preview'])
const changeAdd = () => {} const changeAdd = () => {}
const data = ref({ const data = ref({
list: [], list: [],
}) })
const showKey = ref(0) const showKey = ref(0)
const numType = ref('一次性买断') const numType = ref('一次性买断')
const radioChange = (e) => { const radioChange = (e) => {
numType.value = e.target.value numType.value = e.target.value
} }
const radioChangeNew = (item,itemSelect) => { const radioChangeNew = (item, itemSelect) => {
if (item.note1) { if (item.note1) {
if (item.note1 === itemSelect) { if (item.note1 === itemSelect) {
item.note1 = null item.note1 = null
@ -722,9 +754,9 @@ const radioChangeNew = (item,itemSelect) => {
item.note1 = itemSelect item.note1 = itemSelect
} }
numType.value =itemSelect numType.value = itemSelect
} }
const changeIiem = (name, value) => { const changeIiem = (name, value) => {
if (value && value !== '' && changeField.value.indexOf(name) == -1) { if (value && value !== '' && changeField.value.indexOf(name) == -1) {
changeField.value.push(name) changeField.value.push(name)
} else if (!value || value == '') { } else if (!value || value == '') {
@ -732,9 +764,9 @@ const changeIiem = (name, value) => {
changeField.value.splice(changeField.value.indexOf(name), 1) changeField.value.splice(changeField.value.indexOf(name), 1)
} }
} }
} }
props.refData.children.map((item) => { props.refData.children.map((item) => {
if (item.name == '基本信息') { if (item.name == '基本信息') {
item.children.map((val) => { item.children.map((val) => {
if (val.name == '能力类型') { if (val.name == '能力类型') {
@ -754,8 +786,8 @@ props.refData.children.map((item) => {
} else { } else {
item.isConfigure = false item.isConfigure = false
} }
}) })
let arr = props.refData.children.filter((item) => { let arr = props.refData.children.filter((item) => {
if (props.configure) { if (props.configure) {
if (!item.isConfigure) { if (!item.isConfigure) {
return item return item
@ -763,10 +795,10 @@ let arr = props.refData.children.filter((item) => {
} else { } else {
return item return item
} }
}) })
data.value.list = [] data.value.list = []
// //
arr.forEach((val) => { arr.forEach((val) => {
val.children.forEach((item) => { val.children.forEach((item) => {
if (item.isLinkToDic === 'true' && item.linkValue) { if (item.isLinkToDic === 'true' && item.linkValue) {
getCategoryTreePage({ getCategoryTreePage({
@ -850,8 +882,8 @@ arr.forEach((val) => {
data.value.list.push(item) data.value.list.push(item)
} }
}) })
}) })
if (props.dataFrom) { if (props.dataFrom) {
props.dataFrom.infoList.forEach((item) => { props.dataFrom.infoList.forEach((item) => {
if ( if (
props.configure && props.configure &&
@ -871,17 +903,17 @@ if (props.dataFrom) {
// item.note1 = item.attrValue.split(';') // item.note1 = item.attrValue.split(';')
} }
}) })
} }
// //
let showText = ref(false) let showText = ref(false)
const showTextFunction = () => { const showTextFunction = () => {
showText.value = true showText.value = true
} }
mybus.on('showTextFunctionEmit', (show) => { mybus.on('showTextFunctionEmit', (show) => {
showText.value = show showText.value = show
}) })
mybus.off('func') mybus.off('func')
const add = (title, addFlag, type) => { const add = (title, addFlag, type) => {
let list = props.configure.filter((item) => item.name === title)[0].list let list = props.configure.filter((item) => item.name === title)[0].list
let flag = true let flag = true
list.forEach((item) => { list.forEach((item) => {
@ -961,23 +993,40 @@ const add = (title, addFlag, type) => {
} }
} }
} }
} }
const del = (title, index) => { const del = (title, index) => {
data.value[title].splice(index, 1) data.value[title].splice(index, 1)
mybus.emit('chageDataFrom', { mybus.emit('chageDataFrom', {
attrType: title, attrType: title,
attrValue: JSON.stringify(data.value[title]), attrValue: JSON.stringify(data.value[title]),
delFlag: 0, delFlag: 0,
}) })
} }
const ApplicationArea = (item, itemson) => { 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) { if (item.note2.indexOf(itemson.dictLabel) === -1) {
item.note2.push(itemson.dictLabel) item.note2.push(itemson.dictLabel)
} else { } else {
item.note2.splice(item.note2.indexOf(itemson.dictLabel), 1) 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('应用领域') changeField.value.push('应用领域')
} else if (item.note2.length == 0) { } else if (item.note2.length == 0) {
if (changeField.value.indexOf('应用领域') > -1) { if (changeField.value.indexOf('应用领域') > -1) {
@ -989,8 +1038,8 @@ const ApplicationArea = (item, itemson) => {
attrValue: item.note2.join(';'), attrValue: item.note2.join(';'),
delFlag: 0, delFlag: 0,
}) })
} }
const danxuanArea = (item, itemSelect, indexSelect) => { const danxuanArea = (item, itemSelect, indexSelect) => {
if (item.note1) { if (item.note1) {
if (item.note1 === indexSelect) { if (item.note1 === indexSelect) {
item.note1 = null item.note1 = null
@ -1002,8 +1051,8 @@ const danxuanArea = (item, itemSelect, indexSelect) => {
} }
changeIiem(itemSelect, indexSelect) changeIiem(itemSelect, indexSelect)
} }
const danxuanRadio= (item, itemSelect) => { const danxuanRadio = (item, itemSelect) => {
if (item.note1) { if (item.note1) {
if (item.note1 === itemSelect) { if (item.note1 === itemSelect) {
item.note1 = null item.note1 = null
@ -1015,20 +1064,20 @@ const danxuanRadio= (item, itemSelect) => {
} }
changeIiem(item.name, item.note1) changeIiem(item.name, item.note1)
} }
// //
const visibleAssociatedApplication = ref(false) const visibleAssociatedApplication = ref(false)
const visibleAssociatedApplicationOther = ref(false) const visibleAssociatedApplicationOther = ref(false)
const mockData = ref([]) const mockData = ref([])
const mockDataOther = ref([]) const mockDataOther = ref([])
const titles = ref(['未关联的应用名称', '已关联的应用名称']) const titles = ref(['未关联的应用名称', '已关联的应用名称'])
const titleName = ref('来源应用') const titleName = ref('来源应用')
const targetKeys = ref([]) const targetKeys = ref([])
const targetKeysOther = ref([]) const targetKeysOther = ref([])
// //
// const targetKeysBack = ref([]) // const targetKeysBack = ref([])
// -back // -back
const sourceClick = () => { const sourceClick = () => {
mockData.value = [] mockData.value = []
visibleAssociatedApplication.value = true visibleAssociatedApplication.value = true
props.dataFrom.infoList.forEach((val) => { props.dataFrom.infoList.forEach((val) => {
@ -1062,9 +1111,9 @@ const sourceClick = () => {
}) })
} }
}) })
} }
// //
const componentsClick = () => { const componentsClick = () => {
titles.value = ['未关联的组件名称', '已关联的组件名称'] titles.value = ['未关联的组件名称', '已关联的组件名称']
titleName.value = '关联组件' titleName.value = '关联组件'
visibleAssociatedApplicationOther.value = true visibleAssociatedApplicationOther.value = true
@ -1104,24 +1153,24 @@ const componentsClick = () => {
}) })
} }
}) })
} }
const selectedKeys = ref([]) const selectedKeys = ref([])
const selectedKeysOther = ref([]) const selectedKeysOther = ref([])
const handleChange = (nextTargetKeys, direction, moveKeys) => { const handleChange = (nextTargetKeys, direction, moveKeys) => {
if (direction === 'right') { if (direction === 'right') {
targetKeys.value = moveKeys.filter((item, index) => index === 0) targetKeys.value = moveKeys.filter((item, index) => index === 0)
} }
} }
const handleSelectChange = (sourceSelectedKeys, targetSelectedKeys) => {} const handleSelectChange = (sourceSelectedKeys, targetSelectedKeys) => {}
const handleChangeOther = (nextTargetKeys, direction, moveKeys) => {} const handleChangeOther = (nextTargetKeys, direction, moveKeys) => {}
const handleSelectChangeOther = (sourceSelectedKeys, targetSelectedKeys) => {} const handleSelectChangeOther = (sourceSelectedKeys, targetSelectedKeys) => {}
const filterOptionTransfer = (inputValue, option) => { const filterOptionTransfer = (inputValue, option) => {
return option.description.indexOf(inputValue) > -1 return option.description.indexOf(inputValue) > -1
} }
const handleOk = (e) => { const handleOk = (e) => {
visibleAssociatedApplicationOther.value = false visibleAssociatedApplicationOther.value = false
visibleAssociatedApplication.value = false visibleAssociatedApplication.value = false
@ -1132,19 +1181,19 @@ const handleOk = (e) => {
item.note1 = targetKeysOther.value + '' item.note1 = targetKeysOther.value + ''
} }
}) })
} }
const handleCancel = (e) => { const handleCancel = (e) => {
visibleAssociatedApplicationOther.value = false visibleAssociatedApplicationOther.value = false
visibleAssociatedApplication.value = false visibleAssociatedApplication.value = false
} }
const showType = ref('') const showType = ref('')
const showTypeClick = (e) => { const showTypeClick = (e) => {
showType.value = e showType.value = e
} }
showTypeClick('调用接口') showTypeClick('调用接口')
watch(data.value.list, (newProps, oldProps) => { watch(data.value.list, (newProps, oldProps) => {
newProps.forEach((val) => { newProps.forEach((val) => {
if ( if (
props.configure && props.configure &&
@ -1189,34 +1238,34 @@ watch(data.value.list, (newProps, oldProps) => {
} }
} }
}) })
}) })
const applicationsChange = (value) => { const applicationsChange = (value) => {
data.value.list.map((item) => { data.value.list.map((item) => {
if (item.name === '来源应用') { if (item.name === '来源应用') {
item.note1 = value item.note1 = value
} }
}) })
} }
const handleBlur = () => {} const handleBlur = () => {}
const applicationsBlur = () => {} const applicationsBlur = () => {}
const handleFocus = () => {} const handleFocus = () => {}
const applicationsFocus = () => {} const applicationsFocus = () => {}
const filterOption = (input, option) => { const filterOption = (input, option) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
} }
defineExpose({ defineExpose({
add, add,
}) })
const applicationsOption = (input, option) => { const applicationsOption = (input, option) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
} }
</script> </script>
<style></style> <style></style>
<style lang="less" scoped> <style lang="less" scoped>
:deep(.upload-list-inline .ant-upload .ant-btn) { :deep(.upload-list-inline .ant-upload .ant-btn) {
height: 150px; height: 150px;
width: 218px; width: 218px;
border: 1px solid rgba(198, 198, 198, 0.5); border: 1px solid rgba(198, 198, 198, 0.5);
@ -1224,38 +1273,38 @@ const applicationsOption = (input, option) => {
background: rgba(0, 88, 225, 0.05); background: rgba(0, 88, 225, 0.05);
color: #0087ff; color: #0087ff;
font-size: 14px; font-size: 14px;
} }
:deep(.upload-list-inline .ant-upload .ant-btn > span) { :deep(.upload-list-inline .ant-upload .ant-btn > span) {
background: url('~@/assets/home/yuanjia.png') no-repeat; background: url('~@/assets/home/yuanjia.png') no-repeat;
color: #666666; color: #666666;
background-position: center; background-position: center;
text-align: center; text-align: center;
line-height: 120px; line-height: 120px;
height: 50px; height: 50px;
} }
// //
:deep(.ant-select-arrow) { :deep(.ant-select-arrow) {
background: url('~@/assets/home/huixia.png') no-repeat; background: url('~@/assets/home/huixia.png') no-repeat;
cursor: pointer; cursor: pointer;
margin-top: -4px; margin-top: -4px;
margin-right: -4px; margin-right: -4px;
} }
// //
:deep(.ant-select-arrow .anticon) { :deep(.ant-select-arrow .anticon) {
vertical-align: top; vertical-align: top;
transition: transform 0.3s; transition: transform 0.3s;
display: none; display: none;
} }
// :deep(.ant-select-arrow :focus) { // :deep(.ant-select-arrow :focus) {
// background:url('~@/assets/home/huishang.png') no-repeat ; // background:url('~@/assets/home/huishang.png') no-repeat ;
// cursor: pointer; // cursor: pointer;
// margin-top: -4px; // margin-top: -4px;
// margin-right: -4px; // margin-right: -4px;
// } // }
.put-on-the-shelf { .put-on-the-shelf {
margin: 0.15rem 2rem; margin: 0.15rem 2rem;
background: rgb(246, 247, 249, 0.8); background: rgb(246, 247, 249, 0.8);
height: 846px; height: 846px;
@ -1347,7 +1396,7 @@ const applicationsOption = (input, option) => {
align-items: center; align-items: center;
span:first-child { span:first-child {
width: 1.0rem; width: 1rem;
} }
:deep(.ant-input-textarea) { :deep(.ant-input-textarea) {
@ -1394,15 +1443,15 @@ const applicationsOption = (input, option) => {
border-radius: 2px; border-radius: 2px;
font-size: 14px; font-size: 14px;
} }
.ant-btn:hover{ .ant-btn:hover {
background: #fff; background: #fff;
color: #0558e1; color: #0558e1;
opacity: 0.8; opacity: 0.8;
} }
.ant-btn:active{ .ant-btn:active {
background: #fff; background: #fff;
color: #0558e1; color: #0558e1;
opacity: 0.8 opacity: 0.8;
} }
} }
} }
@ -1411,11 +1460,11 @@ const applicationsOption = (input, option) => {
& > div:nth-of-type(1) { & > div:nth-of-type(1) {
margin-top: 0; margin-top: 0;
} }
} }
.danxuan-Area { .danxuan-Area {
display: grid; display: grid;
margin-top: -0.05rem; margin-top: -0.05rem;
grid-template-columns: auto auto auto auto auto auto auto auto ; grid-template-columns: auto auto auto auto auto auto auto auto;
border-left: 1px #0558e1 solid; border-left: 1px #0558e1 solid;
.danxuan-Area-son { .danxuan-Area-son {
cursor: pointer; cursor: pointer;
@ -1441,9 +1490,9 @@ const applicationsOption = (input, option) => {
color: #fff; color: #fff;
// border: 1px #0558e1 solid; // border: 1px #0558e1 solid;
} }
} }
.application-Area { .application-Area {
display: grid; display: grid;
margin-top: -0.05rem; margin-top: -0.05rem;
grid-template-columns: auto auto auto auto auto auto; grid-template-columns: auto auto auto auto auto auto;
@ -1492,84 +1541,92 @@ const applicationsOption = (input, option) => {
background: url('~@/assets/home/duihao.png') no-repeat; background: url('~@/assets/home/duihao.png') no-repeat;
} }
} }
} }
:deep(.ant-image-img) { :deep(.ant-image-img) {
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: contain; object-fit: contain;
} }
:deep(.ant-modal) { :deep(.ant-modal) {
width: 9.6rem; width: 9.6rem;
} }
:deep(.ant-transfer-list) { :deep(.ant-transfer-list) {
width: 39.5%; width: 39.5%;
height: 5.2rem; height: 5.2rem;
} }
:deep(.ant-transfer-operation) { :deep(.ant-transfer-operation) {
flex-direction: row-reverse; flex-direction: row-reverse;
margin: 0 0.3rem; margin: 0 0.3rem;
} }
:deep(.ant-btn) { :deep(.ant-btn) {
width: 0.56rem; width: 0.56rem;
height: 0.4rem; height: 0.4rem;
border-radius: 0.04rem; border-radius: 0.04rem;
} }
:deep(.ant-btn:first-child) { :deep(.ant-btn:first-child) {
margin-left: 0.04rem; margin-left: 0.04rem;
} }
:deep(.ant-modal-footer) { :deep(.ant-modal-footer) {
border: 0; border: 0;
} }
:deep(.ant-modal-header) { :deep(.ant-modal-header) {
border: 0; border: 0;
} }
:deep(.ant-modal-title) { :deep(.ant-modal-title) {
line-height: 0.24rem; line-height: 0.24rem;
font-size: 0.18rem; font-size: 0.18rem;
color: #303133; color: #303133;
} }
:deep(.ant-transfer-list-header) { :deep(.ant-transfer-list-header) {
background: #f5f7fa; background: #f5f7fa;
} }
:deep(.ant-transfer-list-header-selected) { :deep(.ant-transfer-list-header-selected) {
display: flex; display: flex;
width: 90%; width: 90%;
flex-direction: row-reverse; flex-direction: row-reverse;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
:deep(.ant-transfer-list-header-title) { :deep(.ant-transfer-list-header-title) {
font-size: 0.16rem; font-size: 0.16rem;
color: #303133; color: #303133;
font-weight: 400; font-weight: 400;
text-align: left; text-align: left;
} }
:deep(.ant-transfer-list-header .ant-checkbox-wrapper) { :deep(.ant-transfer-list-header .ant-checkbox-wrapper) {
display: none !important; display: none !important;
} }
:deep(.ant-upload-list-item-name) { :deep(.ant-upload-list-item-name) {
width: 1rem; width: 1rem;
} }
.del { .del {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
font-size: 0.14rem; font-size: 0.14rem;
margin-left: 0.2rem; 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 { .delImg {
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
@ -1578,12 +1635,15 @@ const applicationsOption = (input, option) => {
background: url(~@/assets/home/sf_del.png) no-repeat; background: url(~@/assets/home/sf_del.png) no-repeat;
margin-right: 0.05rem; margin-right: 0.05rem;
} }
& > span {
display: flex;
}
div { div {
cursor: pointer; cursor: pointer;
} }
} }
.item { .item {
position: relative; position: relative;
span:first-child { span:first-child {
width: unset; width: unset;
@ -1636,5 +1696,5 @@ const applicationsOption = (input, option) => {
bottom: -20px; bottom: -20px;
left: 110px; left: 110px;
} }
} }
</style> </style>

View File

@ -32,6 +32,10 @@
{{ val }} {{ val }}
</div> </div>
</div> </div>
</div>
<div class="bottom1">
{{total}}
</div> </div>
</div> </div>
<div class="item-box"> <div class="item-box">
@ -64,6 +68,7 @@
const area = ref(null) const area = ref(null)
const typeName = ref('全市') const typeName = ref('全市')
const typeName2 = ref('全部') const typeName2 = ref('全部')
const total = ref(0)
if (selectArea && selectArea !== '全部') { if (selectArea && selectArea !== '全部') {
typeName2.value = selectArea typeName2.value = selectArea
area.value = selectArea area.value = selectArea
@ -131,6 +136,7 @@
if (res.data.data.total.length < 9) { if (res.data.data.total.length < 9) {
dom.removeEventListener('scroll', viewMonitor, true) dom.removeEventListener('scroll', viewMonitor, true)
} }
total.value= res.data.data.total
// appList // appList
res.data.data.appList.map((val) => { res.data.data.appList.map((val) => {
if (!val.pic) { if (!val.pic) {
@ -198,6 +204,12 @@
} }
.application { .application {
padding: 0 0.15rem; padding: 0 0.15rem;
.bottom1 {
margin-top: 67px;
margin-left: 928px;
color: #fff;
font-size: 0.2rem;
}
.select { .select {
margin: 0.1rem 0 0.1rem 0.2rem; margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff; color: #fff;
@ -225,6 +237,7 @@
background-size: 100%; background-size: 100%;
} }
} }
.bottom { .bottom {
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;

View File

@ -388,7 +388,13 @@
} }
} }
const closeMain = () => { const closeMain = () => {
window.history.go(-1) const showKey = router.currentRoute.value.query.showKey
router.push({
path: '/demandCenter',
query: {
toShowKey:showKey
},
})
} }
onMounted(() => { onMounted(() => {
// const formData = computed(() => store.getters['home/demandDetailsData']) // const formData = computed(() => store.getters['home/demandDetailsData'])

View File

@ -175,6 +175,7 @@ const showDetail = (item) => {
path: '/demandDetails', path: '/demandDetails',
query: { query: {
id: item.id, id: item.id,
showKey:selectedKeys.value,
}, },
}) })
} }
@ -186,6 +187,10 @@ const toView = () => {
} }
onMounted(() => { onMounted(() => {
const toShowKey = router.currentRoute.value.query.toShowKey
if(toShowKey){
selectedKeys.value=toShowKey
}
const params = { const params = {
page: pageNum.value, page: pageNum.value,
limit: pageSize.value, limit: pageSize.value,

View File

@ -188,6 +188,9 @@
// that.pausePlay(iWndIndex) // that.pausePlay(iWndIndex)
if (!that.unStopable) { if (!that.unStopable) {
setTimeout(() => { setTimeout(() => {
that.videoDom = that.$refs.video333.querySelector('video') || {}
debugger
that.videoDom.pause() that.videoDom.pause()
// that.exportCanvasAsPNG('12preview_playCanvas0', 'test') // that.exportCanvasAsPNG('12preview_playCanvas0', 'test')
}, 0) }, 0)
@ -234,7 +237,7 @@
}, },
(e) => { (e) => {
console.error(e) console.error(e)
// message.error(':' + e) message.error('网络繁忙,请稍后再试')
} }
) )
}, },

View File

@ -92,9 +92,12 @@
<div class="bottom" @click="goToView()">查看更多</div> <div class="bottom" @click="goToView()">查看更多</div>
</div> </div>
<div class="info"> <div class="info">
<i class="img" @click=" <i
class="img"
@click="
jumpPage({ name: '个人中心', key: 'personalCenter' }, 'headerClick') jumpPage({ name: '个人中心', key: 'personalCenter' }, 'headerClick')
"></i> "
></i>
<a-tooltip placement="bottom"> <a-tooltip placement="bottom">
<template #title> <template #title>
<span>{{ user.realName }}</span> <span>{{ user.realName }}</span>
@ -131,6 +134,7 @@
import { mynotice } from '@/api/home' import { mynotice } from '@/api/home'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { getSgcTotal } from '@/api/home' import { getSgcTotal } from '@/api/home'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js' import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
@ -149,7 +153,13 @@
const select = ref(router.currentRoute.value.name) const select = ref(router.currentRoute.value.name)
const mynoticeFlag = ref(false) const mynoticeFlag = ref(false)
const mynoticeData = ref([]) 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 targetRouter = ref('')
const backFlag = ref(false) const backFlag = ref(false)
getUserInfo().then((res) => { getUserInfo().then((res) => {
@ -165,6 +175,7 @@
}) })
} }
}) })
console.log('navList------------>', navList) console.log('navList------------>', navList)
const props = defineProps({ const props = defineProps({
@ -422,7 +433,6 @@
}) })
mybus.on('changeMenuStyle', (data) => { mybus.on('changeMenuStyle', (data) => {
targetRouter.value = data targetRouter.value = data
if (data.path == '/algorithmCompare') { if (data.path == '/algorithmCompare') {
jumpPage( jumpPage(

View File

@ -148,6 +148,7 @@
const btnClick = (index) => { const btnClick = (index) => {
itemIndex.value = index itemIndex.value = index
if (index === 2) { if (index === 2) {
//
if (chooseId.value !== '') { if (chooseId.value !== '') {
let placeTypeCode = [] let placeTypeCode = []
placeTypeCode.push(chooseId.value) placeTypeCode.push(chooseId.value)
@ -156,14 +157,18 @@
mybus.emit('clearLeftSelect') mybus.emit('clearLeftSelect')
} }
} else { } else {
//
if (selectId.value !== '') { if (selectId.value !== '') {
mybus.emit('getCameraByParentId', { mybus.emit('getCameraByParentId', {
id: selectId.value, id: selectId.value,
reset: true,
}) })
} else { } else {
mybus.emit('clearLeftSelect') mybus.emit('clearLeftSelect')
} }
} }
//
mybus.emit('resetMapSearch', index)
} }
// //
const tabClick = (id) => { const tabClick = (id) => {
@ -244,6 +249,7 @@
if (newVal == '') { if (newVal == '') {
mybus.emit('getCameraByParentId', { mybus.emit('getCameraByParentId', {
id: '70be8c5b664f4bcf869d82f2e8335051', id: '70be8c5b664f4bcf869d82f2e8335051',
reset: true,
}) })
} }
}) })
@ -272,6 +278,7 @@
} else { } else {
mybus.emit('getCameraByParentId', { mybus.emit('getCameraByParentId', {
id: val.id, id: val.id,
reset: true,
}) })
} }
} }

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:53:28 * @Date: 2022-03-29 17:53:28
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-03-30 16:35:27 * @LastEditTime: 2022-12-29 15:12:28
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>

View File

@ -104,7 +104,8 @@
data-spm-anchor-id="a313x.7781069.0.i0" data-spm-anchor-id="a313x.7781069.0.i0"
></path> ></path>
</svg> </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> </div>
<video-play <video-play
@ -162,10 +163,12 @@
camreaTree: [], camreaTree: [],
camreaTreeIsShow: true, camreaTreeIsShow: true,
camreaTreeSingle: [], camreaTreeSingle: [],
placeTypeCode: [], //
checkStatus: '2', checkStatus: '2',
labelSearch: '', labelSearch: '',
timer: null, timer: null,
openVideo: false, openVideo: false,
labelMode: false, //
channelCode: [], channelCode: [],
circleModeFlag: false, circleModeFlag: false,
areaModeFlag: false, areaModeFlag: false,
@ -175,15 +178,15 @@
whoShow1: whoShow, whoShow1: whoShow,
mapSearchParam: { mapSearchParam: {
// //
parentId: '', regionId: '',
checkStatus: '1', // checkStatus: '1',
pageNum: '1', // pageNum: '1',
pageSize: '20000', // pageSize: '20000',
gpsX: '', gpsX: '',
gpsY: '', gpsY: '',
radius: '', radius: '',
borderPolygonList: [], borderPolygonList: [],
type: 0, //012 type: 1, //012
}, },
pointAllData:[], pointAllData:[],
restaurants:[], restaurants:[],
@ -220,13 +223,14 @@
mybus.on('getCameraByParentId', (val) => { mybus.on('getCameraByParentId', (val) => {
debugger debugger
console.log('倒腾位置1') console.log('倒腾位置1')
console.info('根据部门进行查询')
// //
if (val.reset) { if (val.reset) {
this.hiMapFun.mapFlyTo({lat:'36.017043',lng: '119.922772'}, 9) this.hiMapFun.mapFlyTo({lat:'36.017043',lng: '119.922772'}, 9)
} }
this.mapSearchParam.parentId = val.id this.mapSearchParam.regionId = val.id
this.mapSearchParam.type = "1" // this.mapSearchParam.type = "1"
this.mapSearchParam.pageSize = 10000 // this.mapSearchParam.pageSize = 10000
this.getCameraByParentId('','department') this.getCameraByParentId('','department')
}) })
// //
@ -252,10 +256,21 @@
// //
mybus.off('CameraConditionPlaceType') mybus.off('CameraConditionPlaceType')
mybus.on('CameraConditionPlaceType', (data) => { 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.off('clearLeftSelect')
mybus.on('clearLeftSelect', () => { mybus.on('clearLeftSelect', () => {
@ -270,11 +285,17 @@
} }
}, },
// //
queryCameraConditionPlace(data) { queryCameraConditionPlace(param) {
debugger
let params = { let params = {
placeTypeCode: data, placeTypeCode: this.placeTypeCode,...param
} }
if (params.regionId) {
params.regionId = '70be8c5b664f4bcf869d82f2e8335051'
}
this.spinning = true;
CameraConditionPlaceType(params).then((res) => { CameraConditionPlaceType(params).then((res) => {
this.spinning = false;
const byteArray = this.unzip(res.data.data) const byteArray = this.unzip(res.data.data)
this.addResourceTomap('videoMap', byteArray) this.addResourceTomap('videoMap', byteArray)
}) })
@ -370,7 +391,12 @@
type: this.mapSearchParam.type, type: this.mapSearchParam.type,
} }
// mybus.emit('getListByMap', params); // mybus.emit('getListByMap', params);
if (this.labelMode) {
debugger
this.queryCameraConditionPlace(params)
} else {
this.getCameraByParentId('map'); this.getCameraByParentId('map');
}
console.log("areaSelectResource -> latlngs", latlngs) console.log("areaSelectResource -> latlngs", latlngs)
} }
}) })
@ -399,11 +425,17 @@
circlePloygonLayer circlePloygonLayer
) )
console.log('查询图层为何发生了改变', e.layer) console.log('查询图层为何发生了改变', e.layer)
this.mapSearchParam.gpsX = e.layer._latlng.lng this.mapSearchParam.regionId = this.mapSearchParam.regionId ||
this.mapSearchParam.gpsY = e.layer._latlng.lat '70be8c5b664f4bcf869d82f2e8335051',
this.mapSearchParam.longitude = e.layer._latlng.lng
this.mapSearchParam.latitude = e.layer._latlng.lat
this.mapSearchParam.radius = radius this.mapSearchParam.radius = radius
this.mapSearchParam.type = 1 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) // this.hiMapFun.mapFlyTo({lat:'36.017043',lng: '119.922772'}, 9)
let params = { let params = {
regionId: regionId:
this.mapSearchParam.parentId || this.mapSearchParam.regionId ||
'70be8c5b664f4bcf869d82f2e8335051', '70be8c5b664f4bcf869d82f2e8335051',
name: this.mapSearchParam.cameraName || '', name: this.mapSearchParam.cameraName || '',
longitude: this.mapSearchParam.gpsX || '', longitude: this.mapSearchParam.gpsX || this.mapSearchParam.longitude || '',
latitude: this.mapSearchParam.gpsY || '', latitude: this.mapSearchParam.gpsY || this.mapSearchParam.latitude || '',
radius: this.mapSearchParam.radius || '', radius: this.mapSearchParam.radius || '',
type: this.mapSearchParam.type, type: this.mapSearchParam.type,
borderPolygonList: this.mapSearchParam.borderPolygonList || [], borderPolygonList: this.mapSearchParam.borderPolygonList || [],
@ -453,7 +485,7 @@
this.spinning = false; this.spinning = false;
const byteArray = this.unzip(res.data.data) const byteArray = this.unzip(res.data.data)
if(type=='map'){ if(type=='map'){
let params = this.mapSearchParam; let params = JSON.parse(JSON.stringify(this.mapSearchParam));
// const byteArray = this.unzip(res.data.data) // const byteArray = this.unzip(res.data.data)
params.dataSource = byteArray||0; params.dataSource = byteArray||0;
params.total = res.data.count||0; params.total = res.data.count||0;
@ -507,21 +539,19 @@
} }
}, },
resetCircle(){ resetCircle(){
debugger
// //
this.hiMapFun.removeLayerByLayerName('circlePloygonLayer') this.hiMapFun.removeLayerByLayerName('circlePloygonLayer')
// //
this.mapSearchParam.gpsX = '' this.mapSearchParam.longitude = ''
this.mapSearchParam.gpsY = '' this.mapSearchParam.latitude = ''
this.mapSearchParam.radius = '' this.mapSearchParam.radius = ''
this.mapSearchParam.type = 0; this.mapSearchParam.type = 0;
const params = { if (this.labelMode) {
gpsX: this.mapSearchParam.gpsX, this.queryCameraConditionPlace(this.mapSearchParam)
gpsY: this.mapSearchParam.gpsY, } else {
radius: this.mapSearchParam.radius, this.getCameraByParentId('map');
type: this.mapSearchParam.type
} }
this.getCameraByParentId('map')
// mybus.emit('getListByMap', params);
}, },
resetArea(){ resetArea(){
// //
@ -533,7 +563,12 @@
borderPolygonList: this.mapSearchParam.borderPolygonList, borderPolygonList: this.mapSearchParam.borderPolygonList,
type: this.mapSearchParam.type type: this.mapSearchParam.type
} }
this.getCameraByParentId('map') if (this.labelMode) {
this.queryCameraConditionPlace(params)
} else {
this.getCameraByParentId('map');
}
// this.getCameraByParentId('map')
// mybus.emit('getListByMap', params); // mybus.emit('getListByMap', params);
}, },
// //
@ -900,7 +935,7 @@
.leaflet-control-attribution { .leaflet-control-attribution {
display: none; display: none;
} }
.icon, .icon-poylon { .icon {
position: absolute; position: absolute;
bottom: 0.1rem; bottom: 0.1rem;
right: 0.1rem; right: 0.1rem;
@ -916,6 +951,11 @@
} }
} }
.icon-poylon { .icon-poylon {
position: absolute;
// bottom: 0.1rem;
right: 0.1rem;
z-index: 988;
cursor: pointer;
width: 0.46rem; width: 0.46rem;
bottom: 0.6rem; bottom: 0.6rem;
} }

View File

@ -53,7 +53,9 @@
import { Encrypt } from '@/utils/crypto' import { Encrypt } from '@/utils/crypto'
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue' import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
import { message, Modal } from 'ant-design-vue' import { message, Modal } from 'ant-design-vue'
import { getNavList } from '@/api/user'
import { useStore } from 'vuex'
// const store = useStore()
// 西 // 西
const isXiHaiAn = whoShow.itShowXiHaiAn const isXiHaiAn = whoShow.itShowXiHaiAn
@ -74,6 +76,7 @@
devDependencies: devDependencies, devDependencies: devDependencies,
is360: false, is360: false,
isIE: false, isIE: false,
store: useStore(),
canOpen: ['FF', 'Chrome'], canOpen: ['FF', 'Chrome'],
} }
}, },
@ -94,7 +97,6 @@
mounted() { mounted() {
this.form.username = '' this.form.username = ''
this.form.password = '' this.form.password = ''
if (!this.canOpen.includes(this.judgeAgent())) { if (!this.canOpen.includes(this.judgeAgent())) {
Modal.warning({ Modal.warning({
title: '提示', title: '提示',
@ -106,6 +108,24 @@
...mapActions({ ...mapActions({
login: 'user/login', 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() { judgeAgent() {
let userAgent = navigator.userAgent // userAgent let userAgent = navigator.userAgent // userAgent
@ -159,6 +179,7 @@
}) })
// window.localStorage.setItem('tokenStartTime', new Date().getTime()) // window.localStorage.setItem('tokenStartTime', new Date().getTime())
window.sessionStorage.setItem('visits', JSON.stringify([])) window.sessionStorage.setItem('visits', JSON.stringify([]))
this.getNavList()
// console.log(this.handleRoute()) // console.log(this.handleRoute())
// 西 // 西
if (isXiHaiAn) { if (isXiHaiAn) {

View File

@ -8,7 +8,7 @@
<div class="bottom"> <div class="bottom">
<div class="item" v-for="item in productServiceData" :key="item.id"> <div class="item" v-for="item in productServiceData" :key="item.id">
<div class="img" :class="item.imgType"></div> <div class="img" :class="item.imgType"></div>
<a-tooltip > <a-tooltip>
<template #title>{{ item.name }}</template> <template #title>{{ item.name }}</template>
<div class="name">{{ item.name }}</div> <div class="name">{{ item.name }}</div>
</a-tooltip> </a-tooltip>
@ -81,18 +81,26 @@
query: { query: {
// select: '', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB, select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
orderField:'tdr.create_date' orderField: 'tdr.create_date',
}, },
}) })
} }
const selectOne = (id) => { const selectOne = (id) => {
console.log('点击===============》', id) console.log('点击===============》', id)
router.push({ // router.push({
path: '/details', // path: '/details',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/details', //
query: { query: {
id: id, id: id,
hiddenBackFlag: true,
}, },
}) })
window.open(detailPage.href, '_blank')
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -48,11 +48,10 @@
<div class="dec"> <div class="dec">
<span>{{ item.deptName }}</span> <span>{{ item.deptName }}</span>
</div> </div>
<a-tooltip > <a-tooltip>
<template #title>{{ item.description || '暂无描述' }}</template> <template #title>{{ item.description || '暂无描述' }}</template>
<div class="text">{{item.description || '暂无描述'}}</div> <div class="text">{{ item.description || '暂无描述' }}</div>
</a-tooltip> </a-tooltip>
</div> </div>
</div> </div>
</div> </div>
@ -65,18 +64,18 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { pageWithAttrs } from '@/api/home.js' import { pageWithAttrs } from '@/api/home.js'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js' import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const select = ref('申请量') const select = ref('申请量')
const selList = ref(['申请量', '收藏量']) const selList = ref(['申请量', '收藏量'])
const list = ref([]) const list = ref([])
const paramsGetResources = { const paramsGetResources = {
districtId: '', districtId: '',
pageNum: 1, pageNum: 1,
pageSize: 6, pageSize: 6,
@ -85,8 +84,8 @@ const paramsGetResources = {
infoList: [], infoList: [],
orderField: 'applyCount', // total visits applyCount score collectCount orderField: 'applyCount', // total visits applyCount score collectCount
orderType: 'DESC', // ASC DESC orderType: 'DESC', // ASC DESC
} }
const selectChange = (sel) => { const selectChange = (sel) => {
select.value = sel select.value = sel
switch (select.value) { switch (select.value) {
case '浏览量': case '浏览量':
@ -103,8 +102,8 @@ const selectChange = (sel) => {
break break
} }
getList() getList()
} }
const getList = () => { const getList = () => {
pageWithAttrs(paramsGetResources).then((res) => { pageWithAttrs(paramsGetResources).then((res) => {
console.log('查询列表============>', res.data.data.records) console.log('查询列表============>', res.data.data.records)
res.data.data.records.forEach((val) => { res.data.data.records.forEach((val) => {
@ -131,36 +130,47 @@ const getList = () => {
}) })
list.value = res.data.data.records list.value = res.data.data.records
}) })
} }
getList() getList()
function jumpPage() { function jumpPage() {
// store // store
store.commit('home/selectCardsData', { store.commit('home/selectCardsData', {
selectCardsnum: '组件服务', selectCardsnum: '组件服务',
}) })
console.log('选中===================>', store.getters['home/selectCardsnum']) console.log(
'选中===================>',
store.getters['home/selectCardsnum']
)
router.push({ router.push({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
// select: '', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB, select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
orderField:paramsGetResources.orderField // orderField: paramsGetResources.orderField, //
}, },
}) })
} }
const selectOne = (id) => { const selectOne = (id) => {
console.log('点击===============》', id) console.log('点击===============》', id)
router.push({ // router.push({
path: '/details', // path: '/details',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/details', //
query: { query: {
id: id, id: id,
hiddenBackFlag: true,
}, },
}) })
} window.open(detailPage.href, '_blank')
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.popular-ability { .popular-ability {
height: 6.8rem; height: 6.8rem;
background: url('~@/assets/newHome/popular-bg.png') no-repeat; background: url('~@/assets/newHome/popular-bg.png') no-repeat;
background-size: 100%; background-size: 100%;
@ -228,7 +238,6 @@ const selectOne = (id) => {
.text { .text {
color: rgba(255, 255, 255, 0.6); color: rgba(255, 255, 255, 0.6);
font-size: 0.14rem; font-size: 0.14rem;
} }
} }
.select:hover { .select:hover {
@ -362,5 +371,5 @@ const selectOne = (id) => {
background: rgba(0, 88, 225, 0.1); background: rgba(0, 88, 225, 0.1);
} }
} }
} }
</style> </style>

View File

@ -104,12 +104,20 @@
} }
const selectOne = (id) => { const selectOne = (id) => {
console.log('点击===============》', id) console.log('点击===============》', id)
router.push({ // router.push({
path: '/details', // path: '/details',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/details', //
query: { query: {
id: id, id: id,
hiddenBackFlag: true,
}, },
}) })
window.open(detailPage.href, '_blank')
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -557,8 +557,6 @@
height: 3rem; height: 3rem;
display: flex; display: flex;
position: fixed; position: fixed;
bottom: 1.56rem;
right: 0rem;
z-index: 10; z-index: 10;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
@ -615,4 +613,22 @@
background-size: 140% 126%; background-size: 140% 126%;
background-position: center; 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> </style>

View File

@ -405,6 +405,7 @@ const phoneVisible = ref(false)
// //
const changeType = (item, index) => { const changeType = (item, index) => {
debugger
contentList.data = [] contentList.data = []
formState.value.name = '' formState.value.name = ''
@ -1126,8 +1127,10 @@ const showPhoneModal = () => {
} }
mybus.on('closeModal', (obj) => { mybus.on('closeModal', (obj) => {
debugger
detailsVisible.value = false detailsVisible.value = false
changeType(obj.type, obj.index) obj.name=obj.type
changeType(obj, obj.index)
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
mybus.off('closeModal') mybus.off('closeModal')

View File

@ -144,7 +144,11 @@
联系方式 联系方式
</div> </div>
<div class="button" @click="showDetail(item)">查看详情</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> </div>
<svg <svg

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44 * @Date: 2022-07-12 09:42:44
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-12-01 14:02:17 * @LastEditTime: 2022-12-19 10:54:23
* @Description:我的申请 能力申请 查看详情 * @Description:我的申请 能力申请 查看详情
--> -->
<template> <template>
@ -35,9 +35,118 @@
<span>能力描述{{ props.refObj.dto.description }}</span> <span>能力描述{{ props.refObj.dto.description }}</span>
<span>归属部门{{ props.refObj.dto.deptName }}</span> <span>归属部门{{ props.refObj.dto.deptName }}</span>
</p> </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> <span>{{ item.attrType + '' + item.attrValue }}</span>
</p> </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> </div>
</div> </div>
@ -52,11 +161,11 @@
}) })
console.log(props.refObj, '=====================================') console.log(props.refObj, '=====================================')
const arr = ['算法优势', '应用场景', '计费标准信息', '常见问题', '功能介绍'] const arr = ['算法优势', '应用场景', '计费标准信息', '常见问题', '功能介绍']
if (props.refObj.dto.infoList) { // if (props.refObj.dto.infoList) {
props.refObj.dto.infoList = props.refObj.dto.infoList.filter( // props.refObj.dto.infoList = props.refObj.dto.infoList.filter(
(val) => arr.indexOf(val.attrType) == -1 // (val) => arr.indexOf(val.attrType) == -1
) // )
} // }
const endThis = () => { const endThis = () => {
endProcess({ instanceId: props.refObj.processInstanceId }).then((res) => { endProcess({ instanceId: props.refObj.processInstanceId }).then((res) => {
if (res.data.code == 0) { if (res.data.code == 0) {
@ -104,6 +213,9 @@
.main { .main {
background: #eee; background: #eee;
padding: 0.2rem 0.2rem 0.1rem; padding: 0.2rem 0.2rem 0.1rem;
div {
margin-bottom: 1em;
}
p { p {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;