Compare commits
23 Commits
6736a8d434
...
f576ece322
Author | SHA1 | Date |
---|---|---|
wuhongjian | f576ece322 | |
wuhongjian | 4617c2d892 | |
wuhongjian | 70356805ba | |
gongjiale | 344bb3b0da | |
gongjiale | 9c6bb8fc7f | |
wangwei | 032b7b514a | |
a0049873 | 146bb7b403 | |
wangwei | 593998ccab | |
wuhongjian | a28d0d7ea2 | |
wuhongjian | 0dc879222b | |
gongjiale | 2437cddbd5 | |
gongjiale | c6fa978998 | |
wuhongjian | 222af51196 | |
a0049873 | 8506fb9521 | |
a0049873 | fe191a49b7 | |
wuhongjian | 39a7281298 | |
wuhongjian | 39d1b8aa80 | |
a0049873 | e4fc85a861 | |
a0049873 | e5d600867f | |
gongjiale | 69b0e17a85 | |
gongjiale | 9aa7f0f52d | |
a0049873 | 227adc0f4b | |
wuhongjian | 700bbe7b54 |
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-08-25 14:37:49
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-11-24 09:10:10
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2023-01-05 09:23:47
|
||||
* @Description: 告诉大家这是什么
|
||||
*/
|
||||
var _global = {}
|
||||
|
|
|
@ -1,29 +1,37 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog :visible.sync="addOrUpdateVisibleCopy" :title="modalTypeText[modalType]" @close="closeModal"
|
||||
:close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<div class="first-title">
|
||||
填写字段
|
||||
<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>
|
||||
<el-checkbox-group v-model="checkList" @change="changeBtn" style="margin-bottom: 20px">
|
||||
<el-checkbox-button v-for="(item) in btnList" :label="item" :key="item">{{ item }}
|
||||
</el-checkbox-button>
|
||||
</el-checkbox-group>
|
||||
|
||||
<!-- 挂载和修改-->
|
||||
<div key="1">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 挂载和修改 -->
|
||||
<div class="right">
|
||||
<el-form :model="dataForm" :rules="rules" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
|
||||
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'">
|
||||
:label-width="$i18n.locale === 'en-US' ? '150px' : '130px'">
|
||||
<!-- 基本信息 -->
|
||||
<div style="margin-bottom:20px" v-show="checkList.includes('基本信息')">
|
||||
<div style="
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
">
|
||||
<div class="scrollBox" id="anchor1">
|
||||
<div class="baseTitle">
|
||||
基本信息
|
||||
</div>
|
||||
<div class="baseInner">
|
||||
<el-form-item label="融合服务名称" prop="name">
|
||||
<el-input class="input-box" v-model="dataForm.name" placeholder="请输入融合服务名称"></el-input>
|
||||
</el-form-item>
|
||||
|
@ -37,22 +45,29 @@
|
|||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="图片">
|
||||
<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">
|
||||
<el-button size="small" type="primary" class="button-new">点击上传</el-button>
|
||||
: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="" style="marigin-bottom:40px" v-show="checkList.includes('组合能力')">
|
||||
<div class="title">
|
||||
<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> -->
|
||||
<InfrastructureModal v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="基础设施"
|
||||
:modalType="modalType" ref="jcssDom"></InfrastructureModal>
|
||||
<el-form-item label="基础设施总数" >
|
||||
|
@ -69,59 +84,128 @@
|
|||
<el-input v-model="dataForm.componentCount" placeholder="请输入组件服务总数"></el-input>
|
||||
</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>
|
||||
<el-button type="primary" @click="dataFormSubmitHandle()">{{
|
||||
$t("confirm")
|
||||
}}</el-button>
|
||||
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import debounce from "lodash/debounce";
|
||||
import qs from "qs";
|
||||
import CommonQuestion from './components/common-question.vue';
|
||||
import IntegratedCombineAbility from './components/integrated-combine-ability.vue';
|
||||
import CombineAbility from './components/combine-ability.vue';
|
||||
import Cookies from 'js-cookie'
|
||||
import { tableColumns } from './IntegratedServices.vue';
|
||||
import { getFuseResourceList, getListParams, modalTypeText } from "./assignedScene/add-update-scene.vue";
|
||||
import debounce from 'lodash/debounce'
|
||||
import InfrastructureModal from './assignedScene/components/infrastructure-modal.vue'
|
||||
import CombineAbility from './components/combine-ability.vue'
|
||||
import { getFuseResourceList, getListParams } from './assignedScene/add-update-scene.vue'
|
||||
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: {
|
||||
CommonQuestion,
|
||||
IntegratedCombineAbility,
|
||||
CombineAbility,
|
||||
InfrastructureModal,
|
||||
InfrastructureModal
|
||||
// SceneUseStep,
|
||||
// CombineAbility,
|
||||
// SceneOneInput,
|
||||
// upload,
|
||||
// CommonQuestion,
|
||||
// InfrastructureModal,
|
||||
// AbilityAdd
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
|
||||
watch: {
|
||||
|
||||
dataForm: {
|
||||
"infrastructureCount":null,
|
||||
"dataSourceCount":null,
|
||||
"componentCount":null,
|
||||
"name": "",
|
||||
"applicationArea": "",
|
||||
"description": "",
|
||||
"fuseAttrList": [
|
||||
{
|
||||
"attrType": "服务图片",
|
||||
"attrValue": "",
|
||||
handler (newVal) {
|
||||
this.dataForm = newVal
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
},
|
||||
cityVisible: {
|
||||
handler (newVal) {
|
||||
this.cityVisible = newVal
|
||||
if (this.modalType == 'add' && newVal) {
|
||||
this.getDetail(this.dataForm)
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
props: {
|
||||
modalType: {
|
||||
type: String,
|
||||
default: 'add'
|
||||
},
|
||||
cityVisible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
||||
data () {
|
||||
return {
|
||||
domArr: [],
|
||||
scrollTop: 0,
|
||||
selectNow: '',
|
||||
areaList: [],
|
||||
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' }],
|
||||
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
|
||||
|
||||
painKeyTextObj: getDescJson('痛点'),
|
||||
solutionKeyTextObj: getDescJson('方案'),
|
||||
dataForm: {
|
||||
infrastructureCount: null,
|
||||
dataSourceCount: null,
|
||||
componentCount: null,
|
||||
name: '',
|
||||
applicationArea: '',
|
||||
description: '',
|
||||
fuseAttrList: [
|
||||
{
|
||||
attrType: '服务图片',
|
||||
attrValue: ''
|
||||
}
|
||||
],
|
||||
// 选择的能力
|
||||
"fuseResourceList": [
|
||||
fuseResourceList: [
|
||||
{
|
||||
"resourceId": 0,
|
||||
"sequence": ""
|
||||
resourceId: 0,
|
||||
sequence: ''
|
||||
}
|
||||
],
|
||||
type: '打包模式'
|
||||
|
@ -130,225 +214,432 @@ export default {
|
|||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入融合服务名称",
|
||||
trigger: "change",
|
||||
},
|
||||
message: '请输入名称',
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
description: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入融合服务描述",
|
||||
trigger: "change",
|
||||
message: '请输入描述',
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
btnList: ['基本信息', '组合能力'],
|
||||
checkList: ['基本信息', '组合能力'],
|
||||
areaList: [],
|
||||
addOrUpdateVisibleCopy: this.addOrUpdateVisible,
|
||||
displayInfo: tableColumns,
|
||||
getListParams: getListParams,
|
||||
refsParseArray: {
|
||||
'zjfwDom': '组件服务',
|
||||
'sjzyDom': '数据资源',
|
||||
'jcssDom': '基础设施',
|
||||
checkList: ['基本信息', '场景痛点', '解决方案', '使用能力', '构建步骤'],
|
||||
cityVisibleCopy: this.cityVisible,
|
||||
displayInfo: {
|
||||
name: '名称',
|
||||
description: '描述'
|
||||
},
|
||||
modalTypeText: modalTypeText,
|
||||
getListParams: getListParams,
|
||||
refsParseArray: {
|
||||
zjfwDom: '组件服务',
|
||||
sjzyDom: '数据资源',
|
||||
jcssDom: '基础设施'
|
||||
},
|
||||
|
||||
abilityListObj: {},
|
||||
imgData: [],
|
||||
// 限定图片
|
||||
handleExceed() {
|
||||
handleExceed () {
|
||||
this.$message({ type: 'error', message: '最多支持一张图片上传' })
|
||||
},
|
||||
imageUrl: ''
|
||||
};
|
||||
},
|
||||
props: {
|
||||
modalType: {
|
||||
type: String,
|
||||
default: 'add'
|
||||
},
|
||||
addOrUpdateVisible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
dataForm: {
|
||||
handler(newVal) {
|
||||
this.dataForm = newVal
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
},
|
||||
addOrUpdateVisible: {
|
||||
handler(newVal) {
|
||||
this.addOrUpdateVisibleCopy = newVal;
|
||||
if (this.modalType == 'add' && newVal) {
|
||||
this.getDetail(this.dataForm)
|
||||
}
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// 获取应用领域
|
||||
this.getAreaInfo()
|
||||
},
|
||||
|
||||
methods: {
|
||||
clearForm() {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields();
|
||||
|
||||
handleStep (item, index) {
|
||||
this.activeStepIndex = index
|
||||
this.selectNow = item.id // 设置选中的锚点为当前点击的
|
||||
const top = document.querySelector('#' + item.id).offsetTop - 100
|
||||
document.querySelectorAll('.customClass .el-dialog__body')[0].scrollTop = top
|
||||
},
|
||||
closeModal() {
|
||||
this.$emit('closeModal')
|
||||
},
|
||||
// 获取应用领域
|
||||
getAreaInfo() {
|
||||
// 获取赋能场景
|
||||
getSceneArea () {
|
||||
const params = {
|
||||
page: 1,
|
||||
limit: 99,
|
||||
dictTypeId: "1513712507692818433",
|
||||
};
|
||||
this.$http
|
||||
.get("/sys/dict/data/page" + "?" + qs.stringify(params))
|
||||
.then(({ data: res }) => {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg);
|
||||
topCategoryName: '应用资源'
|
||||
}
|
||||
res.data.list.map((item) => {
|
||||
this.areaList.push({
|
||||
label: item.dictLabel,
|
||||
value: item.dictLabel
|
||||
});
|
||||
});
|
||||
}).catch(err => {
|
||||
this.$message.error(err);
|
||||
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) {
|
||||
updateDataForm (data) {
|
||||
if (Object.keys(this.getListParams).includes(data.title)) {
|
||||
this.abilityListObj[data.title] = data.list;
|
||||
this.abilityListObj[data.title] = data.list
|
||||
}
|
||||
},
|
||||
getFuseResourceList() {
|
||||
return getFuseResourceList(this.abilityListObj)
|
||||
// 更新数量
|
||||
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
|
||||
}
|
||||
},
|
||||
// 改变按钮状态
|
||||
changeBtn(data) {
|
||||
this.checkList = data;
|
||||
getFuseResourceList () {
|
||||
return getFuseResourceList(this.abilityListObj)
|
||||
},
|
||||
// 表单提交
|
||||
dataFormSubmitHandle: debounce(
|
||||
function () {
|
||||
this.$refs.dataForm.validate((valid) => {
|
||||
if (!valid) {
|
||||
this.$message.error("请检查表单是否填写完整");
|
||||
return false;
|
||||
this.$message.error('请检查表单是否填写完整')
|
||||
return false
|
||||
}
|
||||
let methodsObj = {
|
||||
'add': 'post',
|
||||
'update': 'put'
|
||||
const methodsObj = {
|
||||
add: 'post',
|
||||
update: 'put'
|
||||
}
|
||||
this.dataForm.fuseResourceList = this.getFuseResourceList()
|
||||
if (this.imageUrl == '') {
|
||||
this.$message.error("请上传图片!");
|
||||
return;
|
||||
this.$message.error('请上传图片!')
|
||||
return
|
||||
}
|
||||
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || '';
|
||||
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
|
||||
this.$http
|
||||
[methodsObj[this.modalType]]("/fuse", this.dataForm)
|
||||
[methodsObj[this.modalType]]('/fuse', this.dataForm)
|
||||
.then(({ data: res }) => {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg);
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.$message({
|
||||
message: this.$t("prompt.success"),
|
||||
type: "success",
|
||||
message: this.$t('prompt.success'),
|
||||
type: 'success',
|
||||
duration: 500,
|
||||
onClose: () => {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields();
|
||||
this.$emit("refreshDataList");
|
||||
this.$emit("closeModal");
|
||||
},
|
||||
});
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields()
|
||||
this.$emit('refreshDataList')
|
||||
this.$emit('closeModal')
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$message.error(err)
|
||||
});
|
||||
});
|
||||
})
|
||||
})
|
||||
},
|
||||
1000,
|
||||
{ leading: true, trailing: false }
|
||||
),
|
||||
// 详情
|
||||
getDetail(data) {
|
||||
this.dataForm = data;
|
||||
getDetail (data) {
|
||||
this.dataForm = data
|
||||
this.$nextTick(() => {
|
||||
for (const key in this.refsParseArray) {
|
||||
console.log('11111111111', data)
|
||||
this.$refs[key] && this.$refs[key].getDataInfo && this.$refs[key].getDataInfo(data)
|
||||
}
|
||||
let _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {};
|
||||
this.imageUrl = _imgObj.attrValue;
|
||||
const _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {}
|
||||
this.imageUrl = _imgObj.attrValue
|
||||
|
||||
// 组合能力
|
||||
Object.keys(this.getListParams).map(k => {
|
||||
let arr = data.fuseResourceList.filter(v => v.type == k);
|
||||
let arr2 = [];
|
||||
const arr = data.fuseResourceList.filter(v => v.type == k)
|
||||
const arr2 = []
|
||||
arr.map(v => {
|
||||
arr2.push(v.resourceId)
|
||||
})
|
||||
this.abilityListObj[k] = arr2
|
||||
})
|
||||
|
||||
console.log('this.dataForm----详情-------->', this.dataForm);
|
||||
console.log('this.dataForm----详情-------->', this.dataForm)
|
||||
})
|
||||
},
|
||||
beforeAvatarUpload(file) {
|
||||
const isImage =
|
||||
file.type === 'image/jpeg' ||
|
||||
file.type === 'image/jpg' ||
|
||||
file.type === 'image/png'
|
||||
|
||||
if (!isImage) {
|
||||
this.$message.error('上传头像图片只能是 jpg/png 格式!')
|
||||
// 获取应用领域
|
||||
getAreaInfo () {
|
||||
const params = {
|
||||
page: 1,
|
||||
limit: 99,
|
||||
dictTypeId: '1513712507692818433'
|
||||
}
|
||||
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 格式!')
|
||||
this.$http
|
||||
.get('/sys/dict/data/page' + '?' + qs.stringify(params))
|
||||
.then(({ data: res }) => {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
return isImage
|
||||
res.data.list.map((item) => {
|
||||
this.areaList.push({
|
||||
label: item.dictLabel,
|
||||
value: item.dictLabel
|
||||
})
|
||||
})
|
||||
}).catch(err => {
|
||||
this.$message.error(err)
|
||||
})
|
||||
},
|
||||
editUploadRemoveFile(file, fileList) {
|
||||
this.$refs.editUpload.clearFiles()
|
||||
this.imageUrl = ''
|
||||
},
|
||||
eidtHandleAvatarSuccess(res, file) {
|
||||
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
|
||||
},
|
||||
beforeDestroy() {
|
||||
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 () {
|
||||
// 获取应用领域
|
||||
this.getAreaInfo()
|
||||
const that = this
|
||||
this.$nextTick(() => {
|
||||
document.querySelector('.el-dialog__body').onscroll = function () {
|
||||
const 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 {
|
||||
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 {
|
||||
|
@ -379,7 +670,7 @@ export default {
|
|||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
.mod-sys__menu {
|
||||
|
||||
.menu-list,
|
||||
|
@ -448,19 +739,14 @@ export default {
|
|||
line-height: 32px;
|
||||
}
|
||||
|
||||
.input-box {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
|
||||
.first-title {
|
||||
.title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.title {
|
||||
.first-title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
|
|
|
@ -0,0 +1,474 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog :visible.sync="addOrUpdateVisibleCopy" :title="modalTypeText[modalType]" @close="closeModal"
|
||||
:close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<div class="first-title">
|
||||
填写字段
|
||||
</div>
|
||||
<el-checkbox-group v-model="checkList" @change="changeBtn" style="margin-bottom: 20px">
|
||||
<el-checkbox-button v-for="(item) in btnList" :label="item" :key="item">{{ item }}
|
||||
</el-checkbox-button>
|
||||
</el-checkbox-group>
|
||||
|
||||
<!-- 挂载和修改-->
|
||||
<div key="1">
|
||||
<el-form :model="dataForm" :rules="rules" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
|
||||
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'">
|
||||
<!-- 基本信息 -->
|
||||
<div style="margin-bottom:20px" v-show="checkList.includes('基本信息')">
|
||||
<div style="
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
">
|
||||
基本信息
|
||||
</div>
|
||||
<el-form-item label="融合服务名称" prop="name">
|
||||
<el-input class="input-box" v-model="dataForm.name" placeholder="请输入融合服务名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="融合服务描述" prop="description">
|
||||
<el-input type="textarea" :rows="3" class="input-box" v-model="dataForm.description"
|
||||
placeholder="请输入融合服务描述"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="应用领域" prop="applicationArea">
|
||||
<el-select v-model="dataForm.applicationArea" placeholder="请选择应用领域" filterable>
|
||||
<el-option v-for="item in areaList" :key="item.value" :label="item.label" :value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</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">
|
||||
<el-button size="small" type="primary" class="button-new">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">只能上传图片文件</div>
|
||||
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 组合能力 -->
|
||||
<div class="" style="marigin-bottom:40px" v-show="checkList.includes('组合能力')">
|
||||
<div class="title">
|
||||
组合能力
|
||||
</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" placeholder="请输入组件服务总数"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<template slot="footer">
|
||||
<el-button @click="closeModal">{{ $t("cancel") }}</el-button>
|
||||
<el-button type="primary" @click="dataFormSubmitHandle()">{{
|
||||
$t("confirm")
|
||||
}}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import debounce from 'lodash/debounce'
|
||||
import qs from 'qs'
|
||||
import CommonQuestion from './components/common-question.vue'
|
||||
import IntegratedCombineAbility from './components/integrated-combine-ability.vue'
|
||||
import CombineAbility from './components/combine-ability.vue'
|
||||
import Cookies from 'js-cookie'
|
||||
import { tableColumns } from './IntegratedServices.vue'
|
||||
import { getFuseResourceList, getListParams, modalTypeText } from './assignedScene/add-update-scene.vue'
|
||||
import InfrastructureModal from './assignedScene/components/infrastructure-modal.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
CommonQuestion,
|
||||
IntegratedCombineAbility,
|
||||
CombineAbility,
|
||||
InfrastructureModal
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
|
||||
dataForm: {
|
||||
infrastructureCount: null,
|
||||
dataSourceCount: null,
|
||||
componentCount: null,
|
||||
name: '',
|
||||
applicationArea: '',
|
||||
description: '',
|
||||
fuseAttrList: [
|
||||
{
|
||||
attrType: '服务图片',
|
||||
attrValue: ''
|
||||
}
|
||||
],
|
||||
// 选择的能力
|
||||
fuseResourceList: [
|
||||
{
|
||||
resourceId: 0,
|
||||
sequence: ''
|
||||
}
|
||||
],
|
||||
type: '打包模式'
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入融合服务名称',
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
description: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入融合服务描述',
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
},
|
||||
btnList: ['基本信息', '组合能力'],
|
||||
checkList: ['基本信息', '组合能力'],
|
||||
areaList: [],
|
||||
addOrUpdateVisibleCopy: this.addOrUpdateVisible,
|
||||
displayInfo: tableColumns,
|
||||
getListParams: getListParams,
|
||||
refsParseArray: {
|
||||
zjfwDom: '组件服务',
|
||||
sjzyDom: '数据资源',
|
||||
jcssDom: '基础设施'
|
||||
},
|
||||
modalTypeText: modalTypeText,
|
||||
abilityListObj: {},
|
||||
// 限定图片
|
||||
handleExceed () {
|
||||
this.$message({ type: 'error', message: '最多支持一张图片上传' })
|
||||
},
|
||||
imageUrl: ''
|
||||
}
|
||||
},
|
||||
props: {
|
||||
modalType: {
|
||||
type: String,
|
||||
default: 'add'
|
||||
},
|
||||
addOrUpdateVisible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
dataForm: {
|
||||
handler (newVal) {
|
||||
this.dataForm = newVal
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
},
|
||||
addOrUpdateVisible: {
|
||||
handler (newVal) {
|
||||
this.addOrUpdateVisibleCopy = newVal
|
||||
if (this.modalType == 'add' && newVal) {
|
||||
this.getDetail(this.dataForm)
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
// 获取应用领域
|
||||
this.getAreaInfo()
|
||||
},
|
||||
methods: {
|
||||
clearForm () {
|
||||
this.$refs.dataForm && this.$refs.dataForm.resetFields()
|
||||
},
|
||||
closeModal () {
|
||||
this.$emit('closeModal')
|
||||
},
|
||||
// 获取应用领域
|
||||
getAreaInfo () {
|
||||
const params = {
|
||||
page: 1,
|
||||
limit: 99,
|
||||
dictTypeId: '1513712507692818433'
|
||||
}
|
||||
this.$http
|
||||
.get('/sys/dict/data/page' + '?' + qs.stringify(params))
|
||||
.then(({ data: res }) => {
|
||||
if (res.code !== 0) {
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
res.data.list.map((item) => {
|
||||
this.areaList.push({
|
||||
label: item.dictLabel,
|
||||
value: item.dictLabel
|
||||
})
|
||||
})
|
||||
}).catch(err => {
|
||||
this.$message.error(err)
|
||||
})
|
||||
},
|
||||
// 更新表单
|
||||
updateDataForm (data) {
|
||||
if (Object.keys(this.getListParams).includes(data.title)) {
|
||||
this.abilityListObj[data.title] = data.list
|
||||
}
|
||||
},
|
||||
getFuseResourceList () {
|
||||
return getFuseResourceList(this.abilityListObj)
|
||||
},
|
||||
// 改变按钮状态
|
||||
changeBtn (data) {
|
||||
this.checkList = data
|
||||
},
|
||||
// 表单提交
|
||||
dataFormSubmitHandle: debounce(
|
||||
function () {
|
||||
this.$refs.dataForm.validate((valid) => {
|
||||
if (!valid) {
|
||||
this.$message.error('请检查表单是否填写完整')
|
||||
return false
|
||||
}
|
||||
const methodsObj = {
|
||||
add: 'post',
|
||||
update: 'put'
|
||||
}
|
||||
this.dataForm.fuseResourceList = this.getFuseResourceList()
|
||||
if (this.imageUrl == '') {
|
||||
this.$message.error('请上传图片!')
|
||||
return
|
||||
}
|
||||
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
|
||||
this.$http
|
||||
[methodsObj[this.modalType]]('/fuse', this.dataForm)
|
||||
.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
|
||||
|
||||
// 组合能力
|
||||
Object.keys(this.getListParams).map(k => {
|
||||
const arr = data.fuseResourceList.filter(v => v.type == k)
|
||||
const arr2 = []
|
||||
arr.map(v => {
|
||||
arr2.push(v.resourceId)
|
||||
})
|
||||
this.abilityListObj[k] = arr2
|
||||
})
|
||||
|
||||
console.log('this.dataForm----详情-------->', this.dataForm)
|
||||
})
|
||||
},
|
||||
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
|
||||
}
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.clearForm()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-dialog__body {
|
||||
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">
|
||||
.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;
|
||||
}
|
||||
|
||||
.input-box {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.first-title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
|
@ -38,10 +38,9 @@
|
|||
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
|
||||
@current-change="pageCurrentChangeHandle">
|
||||
</el-pagination>
|
||||
|
||||
<!-- 弹窗, 新增 / 修改 -->
|
||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="query" @closeModal="closeModal"
|
||||
:addOrUpdateVisible="addOrUpdateVisible" :modalType="modalType">
|
||||
:cityVisible="addOrUpdateVisible" :addOrUpdateVisible="addOrUpdateVisible" :modalType="modalType">
|
||||
</add-or-update>
|
||||
|
||||
</div>
|
||||
|
@ -49,50 +48,51 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import mixinViewModule from "@/mixins/view-module";
|
||||
import AddOrUpdate from "./IntegratedServices-add";
|
||||
import qs from "qs";
|
||||
import { type } from "os";
|
||||
import mixinViewModule from '@/mixins/view-module'
|
||||
import AddOrUpdate from './IntegratedServices-add'
|
||||
// import AddOrUpdate from './IntegratedServices-add_back'
|
||||
import qs from 'qs'
|
||||
import { type } from 'os'
|
||||
|
||||
export const tableColumns = {
|
||||
'name': '名称',
|
||||
'description': '描述',
|
||||
'applicationArea': '应用领域',
|
||||
name: '名称',
|
||||
description: '描述',
|
||||
applicationArea: '应用领域'
|
||||
}
|
||||
|
||||
export default {
|
||||
mixins: [mixinViewModule],
|
||||
data() {
|
||||
data () {
|
||||
return {
|
||||
// 表格--列
|
||||
tableColumns: tableColumns,
|
||||
tableData: [],
|
||||
mixinViewModuleOptions: {
|
||||
getDataListURL: "/fuse/page",
|
||||
exportURL: "/ability/bsabilityai/export",
|
||||
deleteURL: "/fuse/delete",
|
||||
getDataListURL: '/fuse/page',
|
||||
exportURL: '/ability/bsabilityai/export',
|
||||
deleteURL: '/fuse/delete',
|
||||
getDataListIsPage: true,
|
||||
deleteIsBatch: false,
|
||||
deleteIsBatch: false
|
||||
},
|
||||
dataForm: {
|
||||
name: "",
|
||||
name: '',
|
||||
order: 'desc',
|
||||
orderField: 'create_date',
|
||||
type: '打包模式'
|
||||
},
|
||||
qp: false,
|
||||
modalType: 'add',
|
||||
};
|
||||
modalType: 'add'
|
||||
}
|
||||
},
|
||||
components: {
|
||||
AddOrUpdate,
|
||||
AddOrUpdate
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener("resize", this.a);
|
||||
this.fullScreen();
|
||||
mounted () {
|
||||
window.addEventListener('resize', this.a)
|
||||
this.fullScreen()
|
||||
},
|
||||
methods: {
|
||||
deleteRow(id) {
|
||||
deleteRow (id) {
|
||||
this.$confirm('确认是否删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
|
@ -103,50 +103,50 @@ export default {
|
|||
}).then(res => {
|
||||
console.log('删除成功', res)
|
||||
if (res.data.code !== 0) {
|
||||
return this.$message.error(res.msg);
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: "success",
|
||||
type: 'success',
|
||||
duration: 500,
|
||||
onClose: () => {
|
||||
this.query()
|
||||
},
|
||||
});
|
||||
}
|
||||
})
|
||||
}).catch(err => {
|
||||
this.$message.error(err);
|
||||
this.$message.error(err)
|
||||
})
|
||||
}).catch(() => {
|
||||
});
|
||||
})
|
||||
},
|
||||
// 查询
|
||||
searchData() {
|
||||
searchData () {
|
||||
this.query()
|
||||
},
|
||||
// 重置
|
||||
reset() {
|
||||
this.dataForm.name = "";
|
||||
reset () {
|
||||
this.dataForm.name = ''
|
||||
this.query()
|
||||
},
|
||||
// 修改
|
||||
handleUpdate(val) {
|
||||
this.addOrUpdateVisible = true;
|
||||
this.modalType = 'update';
|
||||
handleUpdate (val) {
|
||||
this.addOrUpdateVisible = true
|
||||
this.modalType = 'update'
|
||||
const cloneVal = JSON.parse(JSON.stringify(val))
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.getDetail(cloneVal)
|
||||
})
|
||||
},
|
||||
// 挂接
|
||||
addServe() {
|
||||
addServe () {
|
||||
this.addOrUpdateVisible = true
|
||||
this.modalType = 'add';
|
||||
this.modalType = 'add'
|
||||
},
|
||||
closeModal() {
|
||||
this.addOrUpdateVisible = false;
|
||||
closeModal () {
|
||||
this.addOrUpdateVisible = false
|
||||
},
|
||||
// 详情
|
||||
showDetail(val) {
|
||||
showDetail (val) {
|
||||
// window.open(window.SITE_CONFIG.previewUrl + '#/packagingDetails?id=' + val.id)
|
||||
window.open(window.SITE_CONFIG.previewUrl + '#/integrationServicesDetails?id=' + val.id)
|
||||
},
|
||||
|
@ -157,28 +157,28 @@ export default {
|
|||
// "_blank"
|
||||
// );
|
||||
// },
|
||||
fullScreen() {
|
||||
fullScreen () {
|
||||
if (window.outerHeight === screen.availHeight) {
|
||||
if (window.outerWidth === screen.availWidth) {
|
||||
console.log(
|
||||
"全屏1",
|
||||
);
|
||||
this.qp = false;
|
||||
'全屏1'
|
||||
)
|
||||
this.qp = false
|
||||
} else {
|
||||
console.log(
|
||||
"不是全屏2",
|
||||
);
|
||||
this.qp = true;
|
||||
'不是全屏2'
|
||||
)
|
||||
this.qp = true
|
||||
}
|
||||
} else {
|
||||
console.log(
|
||||
"不是全屏3",
|
||||
);
|
||||
this.qp = true;
|
||||
'不是全屏3'
|
||||
)
|
||||
this.qp = true
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.el-tooltip__popper {
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<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>
|
||||
:value="item.dict_label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="场景名称:" prop="name">
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
:value="item.dict_label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="场景名称:" prop="name">
|
||||
|
|
|
@ -80,14 +80,13 @@
|
|||
}}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<DisplayList :displayList="displayList" showKey="channelName"></DisplayList>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import InfrastructureTree from './infrastructure-tree.vue'
|
||||
import DisplayList from './display-list.vue';
|
||||
import DisplayList from './display-list.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
@ -102,17 +101,17 @@ export default {
|
|||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: "基础设施"
|
||||
default: '基础设施'
|
||||
},
|
||||
modalType: {
|
||||
type: String,
|
||||
default: 'add'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
data () {
|
||||
const getYunList = () => {
|
||||
let yunList = ['云主机', '算力主机', '对象存储', '堡垒机', '防火墙', '网闸', '负载均衡', '公网IP'];
|
||||
let arr = []
|
||||
const yunList = ['云主机', '算力主机', '对象存储', '堡垒机', '防火墙', '网闸', '负载均衡', '公网IP']
|
||||
const arr = []
|
||||
yunList.map(v => arr.push({ labelCode: v, labelName: v }))
|
||||
return arr
|
||||
}
|
||||
|
@ -124,9 +123,9 @@ export default {
|
|||
displayList: [], // 用于展示的list
|
||||
btnList: ['视频资源', '云资源', '感知资源'],
|
||||
showText: {
|
||||
'视频资源': '视频标签',
|
||||
'云资源': '云资源分类',
|
||||
'感知资源': '感知资源分类',
|
||||
视频资源: '视频标签',
|
||||
云资源: '云资源分类',
|
||||
感知资源: '感知资源分类'
|
||||
},
|
||||
tabData: [
|
||||
{
|
||||
|
@ -140,13 +139,13 @@ export default {
|
|||
{
|
||||
tabName: '感知资源',
|
||||
list: []
|
||||
},
|
||||
}
|
||||
],
|
||||
currentList: [],
|
||||
dataListLoading: false,
|
||||
dataList: [],
|
||||
pageData: {
|
||||
total: 0,
|
||||
total: 0
|
||||
},
|
||||
cameraName: '',
|
||||
postData: {},
|
||||
|
@ -162,7 +161,7 @@ export default {
|
|||
}
|
||||
},
|
||||
watch: {
|
||||
async showModal(newVal) {
|
||||
async showModal (newVal) {
|
||||
if (newVal) {
|
||||
// 默认选中复选框
|
||||
this.$nextTick(() => {
|
||||
|
@ -174,14 +173,14 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
mounted () {
|
||||
// 获取视频资源
|
||||
this.getVideoBtn()
|
||||
},
|
||||
methods: {
|
||||
selectCheckbox() {
|
||||
selectCheckbox () {
|
||||
if (this.selectedArray.length > 0) {
|
||||
let list = []
|
||||
const list = []
|
||||
this.dataList.forEach((item) => {
|
||||
this.selectedArray.forEach(val => {
|
||||
if (val === item.idtCameraChannel) {
|
||||
|
@ -196,85 +195,84 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
showAction() {
|
||||
this.showModal = true;
|
||||
showAction () {
|
||||
this.showModal = true
|
||||
},
|
||||
// 详情
|
||||
async getDataInfo(dataForm) {
|
||||
async getDataInfo (dataForm) {
|
||||
this.modalType == 'edit'
|
||||
this.dataFormCopy = dataForm;
|
||||
await this.getVideoBtn();
|
||||
let arr = [];
|
||||
let attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type);
|
||||
this.dataFormCopy = dataForm
|
||||
await this.getVideoBtn()
|
||||
const arr = []
|
||||
const attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type)
|
||||
if (attrValue.length > 0) {
|
||||
attrValue.map(val => {
|
||||
let _obj = Object.assign({}, val, val.resource)
|
||||
arr.push(_obj);
|
||||
});
|
||||
const _obj = Object.assign({}, val, val.resource)
|
||||
arr.push(_obj)
|
||||
})
|
||||
}
|
||||
// 展示
|
||||
this.displayList = JSON.parse(JSON.stringify(arr));
|
||||
this.displayList = JSON.parse(JSON.stringify(arr))
|
||||
// 已选中
|
||||
this.selectedArray = arr.map(v => v.idtCameraChannel);
|
||||
this.selectedArrayCopy = JSON.parse(JSON.stringify(arr));
|
||||
this.selectedArray = arr.map(v => v.idtCameraChannel)
|
||||
this.selectedArrayCopy = JSON.parse(JSON.stringify(arr))
|
||||
|
||||
this.dataList = JSON.parse(JSON.stringify(arr));
|
||||
this.pageData.total = arr.length;
|
||||
this.dataList = JSON.parse(JSON.stringify(arr))
|
||||
this.pageData.total = arr.length
|
||||
// 默认选中复选框
|
||||
this.$nextTick(() => {
|
||||
this.selectCheckbox()
|
||||
})
|
||||
},
|
||||
// 点击复选框
|
||||
dataListSelectionChangeHandle(data) {
|
||||
this.selectedArray = data;
|
||||
dataListSelectionChangeHandle (data) {
|
||||
this.selectedArray = data
|
||||
},
|
||||
pageCurrentChangeHandle(pageNum) {
|
||||
this.searchData.pageNum = pageNum;
|
||||
pageCurrentChangeHandle (pageNum) {
|
||||
this.searchData.pageNum = pageNum
|
||||
this.getData()
|
||||
},
|
||||
pageSizeChangeHandle(pageSize) {
|
||||
this.searchData.pageSize = pageSize;
|
||||
pageSizeChangeHandle (pageSize) {
|
||||
this.searchData.pageSize = pageSize
|
||||
this.getData()
|
||||
},
|
||||
changeBtn(btn) {
|
||||
this.activeBtn = btn;
|
||||
this.currentList = this.tabData.find(v => v.tabName == btn).list || [];
|
||||
this.checkList = [];
|
||||
this.searchData.cameraName = '';
|
||||
changeBtn (btn) {
|
||||
this.activeBtn = btn
|
||||
this.currentList = this.tabData.find(v => v.tabName == btn).list || []
|
||||
this.checkList = []
|
||||
this.searchData.cameraName = ''
|
||||
this.getData()
|
||||
},
|
||||
// 获取视频标签列表
|
||||
getVideoBtn() {
|
||||
getVideoBtn () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('/api/project/selectAllLabel', {}).then(res => {
|
||||
resolve(res)
|
||||
if (res.data.code !== 1) {
|
||||
return this.$message.error(res.msg);
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.tabData[0].list = res.data.data || [];
|
||||
this.tabData[0].list = res.data.data || []
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.currentList = this.tabData.find(v => v.tabName == this.activeBtn).list || [];
|
||||
this.currentList = this.tabData.find(v => v.tabName == this.activeBtn).list || []
|
||||
if (this.modalType == 'add') {
|
||||
this.clear()
|
||||
}
|
||||
})
|
||||
}).catch(err => {
|
||||
reject(err)
|
||||
this.$message.error(err);
|
||||
this.$message.error(err)
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
// 视频-清空标签
|
||||
clearVideo() {
|
||||
clearVideo () {
|
||||
this.checkList = []
|
||||
this.getData()
|
||||
},
|
||||
// 切换视频
|
||||
changeVideoBtn(item) {
|
||||
let _index = this.checkList.findIndex(v => item.labelCode == v)
|
||||
changeVideoBtn (item) {
|
||||
const _index = this.checkList.findIndex(v => item.labelCode == v)
|
||||
if (_index > -1) {
|
||||
this.checkList.splice(_index, 1)
|
||||
} else {
|
||||
|
@ -285,74 +283,73 @@ export default {
|
|||
})
|
||||
},
|
||||
// 获取列表
|
||||
getData() {
|
||||
let postData = Object.assign({}, {
|
||||
getData () {
|
||||
const postData = Object.assign({}, {
|
||||
checkStatus: 1,
|
||||
gpsX: '',
|
||||
gpsY: '',
|
||||
radius: '',
|
||||
labelCodes: this.checkList.join(),
|
||||
}, this.searchData);
|
||||
labelCodes: this.checkList.join()
|
||||
}, this.searchData)
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('/api/project/selectByParentIdNew', { params: postData }).then(res => {
|
||||
resolve(res)
|
||||
if (res.data.code !== 1) {
|
||||
return this.$message.error(res.msg);
|
||||
return this.$message.error(res.msg)
|
||||
}
|
||||
this.dataList = res.data.data || []
|
||||
this.pageData.total = res.data.count || 0;
|
||||
this.pageData.total = res.data.count || 0
|
||||
}).catch(err => {
|
||||
reject(err)
|
||||
this.$message.error(err);
|
||||
this.$message.error(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
changeParentId(parentId) {
|
||||
this.searchData.parentId = parentId;
|
||||
changeParentId (parentId) {
|
||||
this.searchData.parentId = parentId
|
||||
this.getData(parentId)
|
||||
},
|
||||
clearSelectArray() {
|
||||
clearSelectArray () {
|
||||
this.selectedArrayCopy = []
|
||||
this.selectedArray = []
|
||||
this.getData()
|
||||
},
|
||||
confirmSubmitHandle() {
|
||||
confirmSubmitHandle () {
|
||||
// 新选择的
|
||||
let idtCameraChannelArray = this.selectedArray.map(v => v.idtCameraChannel)
|
||||
const idtCameraChannelArray = this.selectedArray.map(v => v.idtCameraChannel)
|
||||
// 选过的
|
||||
let newIdArray = this.selectedArrayCopy.map(v => v.idtCameraChannel)
|
||||
let idArray = [...new Set(newIdArray.concat(idtCameraChannelArray))]
|
||||
const newIdArray = this.selectedArrayCopy.map(v => v.idtCameraChannel)
|
||||
const idArray = [...new Set(newIdArray.concat(idtCameraChannelArray))]
|
||||
if (idArray.length > this.maxNum) {
|
||||
return this.$message.error('最多选择十条数据!');
|
||||
return this.$message.error('最多选择十条数据!')
|
||||
}
|
||||
|
||||
let listArray = [].concat(this.selectedArrayCopy, this.dataList);
|
||||
this.displayList = [];
|
||||
const listArray = [].concat(this.selectedArrayCopy, this.dataList)
|
||||
this.displayList = []
|
||||
idArray.map(v => {
|
||||
let obj = listArray.find(k => k.idtCameraChannel === v)
|
||||
const obj = listArray.find(k => k.idtCameraChannel === v)
|
||||
if (obj) {
|
||||
this.displayList.push({
|
||||
channelName: obj.channelName
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
this.$emit('update', {
|
||||
title: this.type,
|
||||
list: idArray,
|
||||
list: idArray
|
||||
})
|
||||
this.showModal = false;
|
||||
this.showModal = false
|
||||
},
|
||||
close() {
|
||||
this.showModal = false;
|
||||
close () {
|
||||
this.showModal = false
|
||||
this.searchData.cameraName = ''
|
||||
// this.selectedArray = [];
|
||||
this.$emit('closeModal');
|
||||
this.$emit('closeModal')
|
||||
},
|
||||
clear() {
|
||||
clear () {
|
||||
this.changeBtn('视频资源')
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -167,9 +167,9 @@
|
|||
<el-button type="text" size="small" @click="showDetail(scope.row)"
|
||||
>详情</el-button
|
||||
>
|
||||
<el-button type="text" size="small" @click="showDocument(scope.row)"
|
||||
<!-- <el-button type="text" size="small" @click="showDocument(scope.row)"
|
||||
>技术文档</el-button
|
||||
>
|
||||
> -->
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
|
|
|
@ -155,9 +155,9 @@
|
|||
<el-button type="text" size="small" @click="showDetail(scope.row)"
|
||||
>详情</el-button
|
||||
>
|
||||
<el-button type="text" size="small" @click="showDocument(scope.row)"
|
||||
<!-- <el-button type="text" size="small" @click="showDocument(scope.row)"
|
||||
>技术文档</el-button
|
||||
>
|
||||
> -->
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
|
|
|
@ -79,7 +79,7 @@ export default {
|
|||
}
|
||||
],
|
||||
tableData: [],
|
||||
maxSize: { y: 195 },
|
||||
maxSize: { y: 235 },
|
||||
loadingDynamic: false,
|
||||
loadingTable: false
|
||||
}
|
||||
|
@ -170,6 +170,7 @@ export default {
|
|||
font-size: 16px;
|
||||
color: #212121;
|
||||
text-align: center;
|
||||
box-shadow: 2px 2px 5px #ccc;
|
||||
}
|
||||
.container {
|
||||
background: #fff;
|
||||
|
@ -177,6 +178,7 @@ export default {
|
|||
height: 335px;
|
||||
padding: 0px 0 0 10px;
|
||||
box-sizing: border-box;
|
||||
box-shadow: 2px 2px 5px #ccc;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,6 +258,10 @@ export default {
|
|||
::v-deep .ant-table-thead {
|
||||
background-color: #f4f5f8;
|
||||
}
|
||||
::v-deep .ant-table-header{
|
||||
margin-right: -17px;
|
||||
}
|
||||
::v-deep .ant-table-body::-webkit-scrollbar{width:0;}
|
||||
</style>
|
||||
<style lang="scss">
|
||||
.testTooltip {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<!--
|
||||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-07-05 12:53:03
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-08-26 10:24:16
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-30 10:07:30
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
|
@ -35,5 +35,9 @@ export default {
|
|||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
&>div{
|
||||
|
||||
box-shadow: 2px 2px 5px #ccc;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -211,6 +211,7 @@ export default {
|
|||
|
||||
.num {
|
||||
font-size: 30px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.unit {
|
||||
|
|
|
@ -69,7 +69,6 @@ export default {
|
|||
days.unshift(valueItem) // 添加至数组
|
||||
}
|
||||
|
||||
|
||||
return days
|
||||
},
|
||||
|
||||
|
@ -88,7 +87,6 @@ export default {
|
|||
endDate: this.endDate
|
||||
},
|
||||
(res) => {
|
||||
|
||||
if (res.data.data && res.data.data.length > 0) {
|
||||
this.data = res.data.data[0].values
|
||||
this.data.map((item) => {
|
||||
|
@ -106,7 +104,7 @@ export default {
|
|||
} else {
|
||||
this.trendChartData = {
|
||||
xaxis: this.ydata,
|
||||
ydata:this.xaxis
|
||||
ydata: this.xaxis
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -73,13 +73,13 @@ export default {
|
|||
},
|
||||
// 部门申请
|
||||
resourceData: [],
|
||||
resourceColor: ['#7b2cff', '#fd5151' , '#2ca1ff', '#0adbfa', '#febe13', '#65e5dd', '#f071ff', '#85f67a'],
|
||||
resourceColor: ['#fe845e', '#0058e1', '#48c6c7', '#48c760', '#9c78ed', '#ff9999', '#d5c438', '#ff3e55'],
|
||||
// 部门申请
|
||||
applyData: [],
|
||||
applyColor: ['#5085f2', '#e75fc3', '#f87be2', '#f2719a', '#fca4bb', '#f59a8f', '#fdb301', '#57e7ec', '#cf9ef1'],
|
||||
applyColor: ['#fe845e', '#0058e1', '#48c6c7', '#48c760', '#9c78ed', '#ff9999', '#d5c438', '#ff3e55'],
|
||||
// 部门需求
|
||||
requireData: [],
|
||||
requireColor: ['#FD866A', '#9E87FF', '#58D5FF', '#73DDFF', '#73ACFF', '#FDD56A', '#FDB36A'],
|
||||
requireColor: ['#fe845e', '#0058e1', '#48c6c7', '#48c760', '#9c78ed', '#ff9999', '#d5c438', '#ff3e55'],
|
||||
loadingToDo: false,
|
||||
loadingHasToDo: false,
|
||||
loadingResource: false,
|
||||
|
@ -252,12 +252,20 @@ export default {
|
|||
width: 836px;
|
||||
background: #fff;
|
||||
margin-right: 16px;
|
||||
box-shadow: 2px 2px 5px #ccc;
|
||||
}
|
||||
|
||||
.dept-chart-box {
|
||||
width: 780px;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
box-shadow: 2px 2px 5px #ccc;
|
||||
&>div{
|
||||
border-left: 1px solid rgba($color: #d0d4de, $alpha: 0.5);
|
||||
}
|
||||
&>div:nth-of-type(1){
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2020-07-07 16:03:23
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-12-29 17:34:17
|
||||
* @LastEditTime: 2023-01-05 09:23:54
|
||||
* @Description: 系统静态参数配置
|
||||
*/
|
||||
var _global = {}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-05-06 11:12:00
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-12-29 17:34:24
|
||||
* @LastEditTime: 2023-01-05 09:24:02
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
|
@ -94,6 +94,7 @@
|
|||
// realName = res.data.data.realName
|
||||
// }
|
||||
realName = store.getters['user/realName']
|
||||
console.log('真实姓名', realName)
|
||||
if (realName.length > 13) {
|
||||
onWholeWaterMark(
|
||||
[realName, moment().format('YYYY-MM-DD')],
|
||||
|
@ -148,6 +149,7 @@
|
|||
// if (newValue == '/home') {
|
||||
// waterMarkInit(newValue)
|
||||
// }
|
||||
waterMarkInit()
|
||||
changeWaterMark(newValue)
|
||||
},
|
||||
{ immediate: true }
|
||||
|
|
|
@ -588,3 +588,11 @@ export function sysnoticemanagement(params) {
|
|||
params,
|
||||
})
|
||||
}
|
||||
//获取所有区市
|
||||
export function getRegion(params) {
|
||||
return request({
|
||||
url: '/sys/region/list/',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 470 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 152 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 303 B |
|
@ -56,7 +56,7 @@
|
|||
</div>
|
||||
|
||||
<div class="volume_box">
|
||||
<div class="fugai"></div>
|
||||
<!-- <div class="fugai"></div> -->
|
||||
<div
|
||||
v-for="(item, index) in dataLists"
|
||||
:key="item"
|
||||
|
@ -201,20 +201,20 @@
|
|||
})
|
||||
}
|
||||
let photoBg = ref([
|
||||
require('../../../assets/abilityStatistics/yingyongziyuan-bg.png'),
|
||||
require('../../../assets/abilityStatistics/zhishiku-bg.png'),
|
||||
require('../../../assets/abilityStatistics/zujianfuwu-bg.png'),
|
||||
require('../../../assets/abilityStatistics/shujuziyuan-bg.png'),
|
||||
require('../../../assets/abilityStatistics/jichujianshe-bg.png'),
|
||||
require('../../../assets/abilityStatistics/yingyongziyuan-bg.png'),
|
||||
require('../../../assets/abilityStatistics/yyzy-bg.png'),
|
||||
require('../../../assets/abilityStatistics/kfzj-bg.png'),
|
||||
require('../../../assets/abilityStatistics/ywzj-bg.png'),
|
||||
require('../../../assets/abilityStatistics/tcfw-bg.png'),
|
||||
require('../../../assets/abilityStatistics/znsf-bg.png'),
|
||||
require('../../../assets/abilityStatistics/hkt-bg.png'),
|
||||
])
|
||||
let photo = ref([
|
||||
require('../../../assets/abilityStatistics/yingyongziyuan.png'),
|
||||
require('../../../assets/abilityStatistics/zhishiku.png'),
|
||||
require('../../../assets/abilityStatistics/zujianfuwu.png'),
|
||||
require('../../../assets/abilityStatistics/shujuziyuan.png'),
|
||||
require('../../../assets/abilityStatistics/jichujianshe.png'),
|
||||
require('../../../assets/abilityStatistics/yingyongziyuan.png'),
|
||||
require('../../../assets/abilityStatistics/yyzy.png'),
|
||||
require('../../../assets/abilityStatistics/kfzj.png'),
|
||||
require('../../../assets/abilityStatistics/ywzj.png'),
|
||||
require('../../../assets/abilityStatistics/tcfw.png'),
|
||||
require('../../../assets/abilityStatistics/znsf.png'),
|
||||
require('../../../assets/abilityStatistics/hkt.png'),
|
||||
])
|
||||
//申请量接口
|
||||
let dataLists = ref([])
|
||||
|
@ -379,12 +379,12 @@
|
|||
display: flex;
|
||||
margin-bottom: 20px;
|
||||
color: #fff;
|
||||
.fugai {
|
||||
width: 40px;
|
||||
height: 390px;
|
||||
background: #0058e1;
|
||||
margin-top: 1px;
|
||||
}
|
||||
// .fugai {
|
||||
// width: 40px;
|
||||
// height: 390px;
|
||||
// background: #0058e1;
|
||||
// margin-top: 1px;
|
||||
// }
|
||||
.volume_box-son {
|
||||
width: 120px;
|
||||
height: 390px;
|
||||
|
@ -417,6 +417,11 @@
|
|||
bottom: 44px;
|
||||
}
|
||||
}
|
||||
.volume_box-son:nth-of-type(1) {
|
||||
width: 140px;
|
||||
padding-left: 28px;
|
||||
background-position-x: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 11:32:22
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-07-18 18:49:30
|
||||
* @LastEditTime: 2022-12-30 14:38:26
|
||||
* @Description: 算法详情页
|
||||
-->
|
||||
<template>
|
||||
|
@ -192,7 +192,7 @@
|
|||
<style lang="less" scoped>
|
||||
.fixed {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
z-index: 10012;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -9.56rem;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.gaoyuanwei
|
||||
* @Date: 2022-06-20 10:12:22
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-07-18 18:49:01
|
||||
* @LastEditTime: 2023-01-03 16:56:08
|
||||
* @Description: 业务组件详情页
|
||||
-->
|
||||
<template>
|
||||
|
@ -175,7 +175,7 @@
|
|||
<style lang="less" scoped>
|
||||
.fixed {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
z-index: 10012;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -9.56rem;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 11:32:22
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-07-18 18:48:32
|
||||
* @LastEditTime: 2023-01-03 16:57:14
|
||||
* @Description: 图层服务详情页
|
||||
-->
|
||||
<template>
|
||||
|
@ -184,7 +184,7 @@
|
|||
<style lang="less" scoped>
|
||||
.fixed {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
z-index: 10012;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -9.56rem;
|
||||
|
|
|
@ -289,6 +289,9 @@
|
|||
margin-bottom: 0.2rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
background: url("~@/assets/newHome/biaoti.png") no-repeat;
|
||||
background-position-y: 7px;
|
||||
padding-left: 17px;
|
||||
}
|
||||
|
||||
.ability-to-apply-for-content {
|
||||
|
@ -297,7 +300,7 @@
|
|||
|
||||
.dep-name {
|
||||
color: #0558e1;
|
||||
font-size: 0.22rem;
|
||||
font-size: 0.18rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
line-height: 0.22rem;
|
||||
|
@ -346,7 +349,7 @@
|
|||
|
||||
.description {
|
||||
width: 8.8rem;
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
color: rgba(0, 0, 0, 0.70);
|
||||
}
|
||||
|
||||
.remove {
|
||||
|
|
|
@ -74,7 +74,11 @@
|
|||
<span v-else>
|
||||
{{ item.name }}
|
||||
</span>
|
||||
|
||||
<div :class="item.name === Cardsname ? 'sanjiao' : ''"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="top-content-father" :key="listKey">
|
||||
<template
|
||||
|
@ -215,6 +219,7 @@
|
|||
<span v-else>
|
||||
{{ item.name }}
|
||||
</span>
|
||||
<div :class="item.name === Cardsname ? 'sanjiao' : ''"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-content-father">
|
||||
|
@ -276,6 +281,7 @@
|
|||
<span v-else>
|
||||
{{ item.name }}
|
||||
</span>
|
||||
<div :class="item.name === Cardsname ? 'sanjiao' : ''"></div>
|
||||
</div>
|
||||
</div>
|
||||
<KnowledgeBase
|
||||
|
@ -333,6 +339,7 @@
|
|||
}"
|
||||
></span>
|
||||
<span>{{ item.name }}</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="resultListSearchInput-father">
|
||||
|
@ -465,6 +472,7 @@
|
|||
}"
|
||||
></span>
|
||||
<span>{{ item.name }}</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-content-father">
|
||||
|
@ -491,6 +499,7 @@
|
|||
}"
|
||||
></span>
|
||||
<span>{{ item.name }}</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="resultListSearchInput-father" style="background: unset">
|
||||
|
@ -2274,18 +2283,32 @@
|
|||
margin-right: 0.1rem;
|
||||
}
|
||||
div {
|
||||
padding: 0 0.1rem;
|
||||
padding-left: 33px;
|
||||
width: 220px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
// display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
div span{
|
||||
vertical-align:middle;
|
||||
}
|
||||
div:hover {
|
||||
color: #0087ff;
|
||||
color: #0058e1;
|
||||
}
|
||||
|
||||
.sanjiao{
|
||||
background: url('~@/assets/home/sanjiao.png');
|
||||
background-repeat: no-repeat;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
margin-left: 67px;
|
||||
position: absolute;
|
||||
}
|
||||
.sel {
|
||||
font-weight: 600;
|
||||
color: #0087ff;
|
||||
border-bottom: 0.02rem solid #0087ff;
|
||||
color: #000000;
|
||||
border-bottom: 0.03rem solid #0058e1;
|
||||
// background: url('~@/assets/home/sanjiao.png');
|
||||
// background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
.top-content-father {
|
||||
|
@ -2301,6 +2324,7 @@
|
|||
display: flex;
|
||||
margin-top: 0rem;
|
||||
span:nth-child(1) {
|
||||
font-size: 0.14rem;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
line-height: 0.3614rem;
|
||||
|
|
|
@ -667,22 +667,43 @@
|
|||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.ant-modal-footer {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
:deep(.ant-table-tbody > tr.ant-table-row-selected > td){
|
||||
background: #e6eefb;
|
||||
}
|
||||
:deep(.ant-checkbox-checked .ant-checkbox-inner){
|
||||
background-color: #0058e1;
|
||||
}
|
||||
:deep(.ant-checkbox-indeterminate .ant-checkbox-inner::after){
|
||||
background-color: #0058e1;
|
||||
}
|
||||
.bg {
|
||||
background: #fff;
|
||||
height: 100vh;
|
||||
width: 100%;
|
||||
}
|
||||
:deep .ant-anchor-link{
|
||||
height: 50px !important;
|
||||
line-height: 50px;
|
||||
margin:0px !important;
|
||||
}
|
||||
:deep .ant-anchor-link-active > .ant-anchor-link-title {
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #0058e1;
|
||||
}
|
||||
:deep .ant-anchor-link-title:only-child {
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'num-typeface';
|
||||
// src: url('~@/assets/newHome/font/num-typeface.otf');
|
||||
// }
|
||||
padding-left: 14px;
|
||||
}
|
||||
|
||||
.border {
|
||||
border: 1px solid #dddee1;
|
||||
|
@ -744,7 +765,7 @@
|
|||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
justify-content: left;
|
||||
font-size: 16px;
|
||||
color: #212121;
|
||||
border-bottom: 1px solid #dddee1;
|
||||
|
@ -768,22 +789,22 @@
|
|||
|
||||
.top {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
height: 137px;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
justify-content: flex-end;
|
||||
|
||||
.td-name {
|
||||
height: 100px;
|
||||
height: 137px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.td {
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
height: 137px;
|
||||
line-height: 137px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
@ -874,12 +895,13 @@
|
|||
.modal-box {
|
||||
height: 650px;
|
||||
width: 800px;
|
||||
|
||||
}
|
||||
|
||||
.add-img {
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
background: url('~@/assets/newHome/add-on.png');
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
background: url('~@/assets/newHome/add-grey.png');
|
||||
background-size: 100% 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -931,7 +953,7 @@
|
|||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
justify-content: left;
|
||||
font-size: 16px;
|
||||
color: #212121;
|
||||
border-bottom: 1px solid #dddee1;
|
||||
|
|
|
@ -8,96 +8,44 @@
|
|||
</div>
|
||||
<div class="form-container">
|
||||
<div v-if="applySuccess">
|
||||
<a-form
|
||||
ref="formRef"
|
||||
:model="formName"
|
||||
name="basic"
|
||||
:label-col="{ style: { width: '106px' } }"
|
||||
:wrapper-col="{ style: { width: '230px' } }"
|
||||
labelAlign="left"
|
||||
autocomplete="off"
|
||||
>
|
||||
<div style=" background: #f6f7f9;
|
||||
padding: 24px 14px 14px 20px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 20px">
|
||||
<a-form ref="formRef" :model="formName" name="basic" :label-col="{ style: { width: '106px' } }"
|
||||
:wrapper-col="{ style: { width: '230px' } }" labelAlign="left" autocomplete="off">
|
||||
<div class="base-info flex-row-start">
|
||||
<a-form-item
|
||||
label="申请标题"
|
||||
name="title"
|
||||
:rules="[{ required: true, message: '请输入申请标题' }]"
|
||||
>
|
||||
<a-input
|
||||
placeholder="请输入能力申请标题"
|
||||
v-model:value="formName.title"
|
||||
/>
|
||||
<a-form-item label="申请标题" name="title" :rules="[{ required: true, message: '请输入申请标题' }]">
|
||||
<a-input placeholder="请输入能力申请标题" v-model:value="formName.title" />
|
||||
</a-form-item>
|
||||
<!-- 西海岸-摄像头-增加过期时间 -->
|
||||
<a-form-item
|
||||
v-if="isCamera && isXiHaiAn"
|
||||
label="过期时间"
|
||||
name="expireDate"
|
||||
:rules="[{ required: true, message: '请选择过期时间' }]"
|
||||
style="margin-left: 22px"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="formName.expireDate"
|
||||
placeholder="请选择过期时间"
|
||||
style="width: 200px"
|
||||
:options="expireDateOptions"
|
||||
></a-select>
|
||||
<a-form-item v-if="isCamera && isXiHaiAn" label="过期时间" name="expireDate"
|
||||
:rules="[{ required: true, message: '请选择过期时间' }]" style="margin-left: 22px">
|
||||
<a-select v-model:value="formName.expireDate" placeholder="请选择过期时间" style="width: 200px"
|
||||
:options="expireDateOptions"></a-select>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="base-info">
|
||||
<a-form-item
|
||||
label="申请人信息"
|
||||
name="user"
|
||||
:rules="[{ required: true, message: '请输入申请人' }]"
|
||||
>
|
||||
<a-input
|
||||
placeholder="请输入申请人"
|
||||
v-model:value="formName.user"
|
||||
disabled
|
||||
/>
|
||||
<a-form-item label="申请人信息" name="user" :rules="[{ required: true, message: '请输入申请人' }]">
|
||||
<a-input placeholder="请输入申请人" v-model:value="formName.user" disabled />
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
style="margin: 0 22px"
|
||||
label="电话"
|
||||
name="phone"
|
||||
:rules="[
|
||||
<a-form-item style="margin: 0 0px" label="电话" name="phone" :rules="[
|
||||
{
|
||||
required: true,
|
||||
pattern: /^1[3456789]\d{9}$/,
|
||||
message: '请输入正确的电话号码',
|
||||
},
|
||||
]"
|
||||
>
|
||||
<a-input
|
||||
placeholder="请输入申请人电话"
|
||||
v-model:value="formName.phone"
|
||||
/>
|
||||
]">
|
||||
<a-input placeholder="请输入申请人电话" v-model:value="formName.phone" />
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
label="单位"
|
||||
name="unit"
|
||||
:rules="[{ required: true, message: '请输入单位' }]"
|
||||
>
|
||||
<a-input
|
||||
placeholder="请输入单位"
|
||||
v-model:value="formName.unit"
|
||||
disabled
|
||||
v-if="deptFlage"
|
||||
/>
|
||||
<a-select
|
||||
v-else
|
||||
placeholder="请选择归属部门"
|
||||
v-model:value="formName.unit"
|
||||
:getPopupContainer="(triggerNode) => triggerNode.parentNode"
|
||||
show-search
|
||||
:filterOption="true"
|
||||
@change="deptIdChangeFunction"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="(item, index) in deptNameAll"
|
||||
:key="`${index}-${item}`"
|
||||
:value="item.name"
|
||||
>
|
||||
<a-form-item label="单位" name="unit" :rules="[{ required: true, message: '请输入单位' }]">
|
||||
<a-input placeholder="请输入单位" v-model:value="formName.unit" disabled v-if="deptFlage" />
|
||||
<a-select v-else placeholder="请选择归属部门" v-model:value="formName.unit"
|
||||
:getPopupContainer="(triggerNode) => triggerNode.parentNode" show-search :filterOption="true"
|
||||
@change="deptIdChangeFunction">
|
||||
<a-select-option v-for="(item, index) in deptNameAll" :key="`${index}-${item}`"
|
||||
:value="item.name">
|
||||
{{ item.name }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
|
@ -105,63 +53,29 @@
|
|||
</div>
|
||||
<div class="base-info" v-if="flag">
|
||||
<div style="margin-bottom: 24px">
|
||||
<a-form-item
|
||||
style="margin-bottom: 0"
|
||||
label="应用系统"
|
||||
name="applicationSystem"
|
||||
:rules="[{ required: true, message: '请选择应用系统' }]"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="formName.applicationSystem"
|
||||
show-search
|
||||
placeholder="请选择应用系统"
|
||||
style="width: 230px"
|
||||
:options="systemOptions"
|
||||
@focus="handleFocus"
|
||||
@blur="handleBlur"
|
||||
@change="systemHandleChange"
|
||||
@search="systemHandleSearch"
|
||||
></a-select>
|
||||
<a-form-item style="margin-bottom: 0" label="应用系统" name="applicationSystem"
|
||||
:rules="[{ required: true, message: '请选择应用系统' }]">
|
||||
<a-select v-model:value="formName.applicationSystem" show-search placeholder="请选择应用系统"
|
||||
style="width: 230px" :options="systemOptions" @focus="handleFocus" @blur="handleBlur"
|
||||
@change="systemHandleChange" @search="systemHandleSearch"></a-select>
|
||||
</a-form-item>
|
||||
<span
|
||||
style="font-size: 12px; color: #666; padding-left: 106px"
|
||||
>
|
||||
<span style="font-size: 12px; color: #666; padding-left: 106px">
|
||||
如选项没有系统请新增
|
||||
</span>
|
||||
</div>
|
||||
<a-form-item
|
||||
class="applicationScene"
|
||||
label="应用领域"
|
||||
name="applicationScene"
|
||||
:rules="[{ required: true, message: '请选择应用领域' }]"
|
||||
style="width: 6.93rem"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="formName.applicationScene"
|
||||
:options="applicationSceneOpthion"
|
||||
mode="tags"
|
||||
:size="size"
|
||||
placeholder="请选择应用领域"
|
||||
:filterOption="false"
|
||||
:searchValue="false"
|
||||
style="width: 5.87rem"
|
||||
></a-select>
|
||||
<a-form-item class="applicationScene" label="应用领域" name="applicationScene"
|
||||
:rules="[{ required: true, message: '请选择应用领域' }]" style="width: 6.93rem">
|
||||
<a-select v-model:value="formName.applicationScene" :options="applicationSceneOpthion" mode="tags"
|
||||
:size="size" placeholder="请选择应用领域" :filterOption="false" :searchValue="false"
|
||||
style="width: 5.87rem"></a-select>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div>
|
||||
<a-form-item
|
||||
label="需求依据"
|
||||
name="applicationBackground"
|
||||
:rules="[
|
||||
<a-form-item label="需求依据" name="applicationBackground" :rules="[
|
||||
{ required: true, message: '请输入需求依据' },
|
||||
{ min: 50, message: '需求依据最少为50个字' },
|
||||
]"
|
||||
>
|
||||
<a-textarea
|
||||
placeholder="请输入需求依据"
|
||||
v-model:value="formName.applicationBackground"
|
||||
:rows="4"
|
||||
/>
|
||||
]">
|
||||
<a-textarea placeholder="请输入需求依据" v-model:value="formName.applicationBackground" :rows="4" />
|
||||
</a-form-item>
|
||||
</div>
|
||||
|
||||
|
@ -169,20 +83,10 @@
|
|||
<div v-if="isXiHaiAn">
|
||||
<a-row style="margin-top: 0.4rem">
|
||||
<a-col :span="24">
|
||||
<a-form-item
|
||||
name="attachment"
|
||||
label="附件上传"
|
||||
class="introduction"
|
||||
:rules="[{ required: true, message: '请上传附件' }]"
|
||||
>
|
||||
<a-upload
|
||||
:max-count="1"
|
||||
accept=".doc,.docx,pdf"
|
||||
v-model:file-list="fileList"
|
||||
:action="`${apiURL}/upload`"
|
||||
@remove="handleRemove"
|
||||
@change="roomUpload"
|
||||
>
|
||||
<a-form-item name="attachment" label="附件上传" class="introduction"
|
||||
:rules="[{ required: true, message: '请上传附件' }]">
|
||||
<a-upload :max-count="1" accept=".doc,.docx,pdf" v-model:file-list="fileList"
|
||||
:action="`${apiURL}/upload`" @remove="handleRemove" @change="roomUpload">
|
||||
<a-button>
|
||||
<upload-outlined>选择上传附件</upload-outlined>
|
||||
</a-button>
|
||||
|
@ -195,35 +99,25 @@
|
|||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="24" style="margin-left: 106px">
|
||||
<a
|
||||
href="/static/download/感知资源申请表.doc"
|
||||
download="感知资源申请表"
|
||||
>
|
||||
<a href="/static/download/感知资源申请表.doc" download="感知资源申请表">
|
||||
感知资源申请表模板下载
|
||||
</a>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
|
||||
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="bottom-btn">
|
||||
<a-button
|
||||
class="cancel-apply"
|
||||
type="primary"
|
||||
html-type="cancle"
|
||||
@click="resetFields()"
|
||||
>
|
||||
退出申请
|
||||
|
||||
<a-button class="confirm-apply" type="primary" html-type="submit" @click="processStartHandle()">
|
||||
申请
|
||||
</a-button>
|
||||
<a-button
|
||||
class="confirm-apply"
|
||||
type="primary"
|
||||
html-type="submit"
|
||||
@click="processStartHandle()"
|
||||
>
|
||||
提交申请
|
||||
<a-button class="cancel-apply" type="primary" html-type="cancle" @click="resetFields()">
|
||||
取消
|
||||
</a-button>
|
||||
</div>
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="success" v-else>
|
||||
<div>
|
||||
|
@ -237,15 +131,15 @@
|
|||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { willApplyCameraBatchDelete } from '@/api/home'
|
||||
import AbilityToApplyFor from './AbilityToApplyFor.vue'
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import { reactive, ref, watch, onBeforeUnmount } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { message } from 'ant-design-vue'
|
||||
import qs from 'qs'
|
||||
import { Upload } from 'ant-design-vue'
|
||||
import {
|
||||
import { willApplyCameraBatchDelete } from '@/api/home'
|
||||
import AbilityToApplyFor from './AbilityToApplyFor.vue'
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import { reactive, ref, watch, onBeforeUnmount } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { message } from 'ant-design-vue'
|
||||
import qs from 'qs'
|
||||
import { Upload } from 'ant-design-vue'
|
||||
import {
|
||||
lastestPage,
|
||||
tabilityapplication,
|
||||
startOfBusinessKey,
|
||||
|
@ -256,22 +150,22 @@
|
|||
getUserInfo,
|
||||
relaunch,
|
||||
selectOne,
|
||||
} from '@/api/home'
|
||||
import { getDeptAll } from '@/api/user'
|
||||
import { getCategoryTreePage, endProcess } from '@/api/personalCenter'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { sgcDel, getApplyForm } from '@/api/personalCenter'
|
||||
import {
|
||||
} from '@/api/home'
|
||||
import { getDeptAll } from '@/api/user'
|
||||
import { getCategoryTreePage, endProcess } from '@/api/personalCenter'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { sgcDel, getApplyForm } from '@/api/personalCenter'
|
||||
import {
|
||||
pageWithAttrs,
|
||||
updateIntegrationServices,
|
||||
getAppListByDept,
|
||||
} from '@/api/home'
|
||||
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
|
||||
import { getIntegrationDetail, soldierApply } from '@/api/home'
|
||||
import { useStore } from 'vuex'
|
||||
import * as moment from 'moment'
|
||||
} from '@/api/home'
|
||||
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
|
||||
import { getIntegrationDetail, soldierApply } from '@/api/home'
|
||||
import { useStore } from 'vuex'
|
||||
import * as moment from 'moment'
|
||||
|
||||
export default {
|
||||
export default {
|
||||
name: '',
|
||||
props: {},
|
||||
components: {
|
||||
|
@ -352,8 +246,7 @@
|
|||
const isCamera = ref(false)
|
||||
// 西海岸-是否是开发区公安分局,是的话,增加上传附件字段
|
||||
let note1 = JSON.parse(
|
||||
(list.value[0] && list.value[0].arr && list.value[0].arr[0].note1) ||
|
||||
'[]'
|
||||
(list.value[0] && list.value[0].arr && list.value[0].arr[0].note1) || '[]'
|
||||
)
|
||||
let iskfq = ref(
|
||||
note1.some(
|
||||
|
@ -758,10 +651,10 @@
|
|||
processDefinitionKey: processDefinitionKey,
|
||||
businessKey: businessKey,
|
||||
})
|
||||
updateInstanceId(params).then(() => {})
|
||||
updateInstanceId(params).then(() => { })
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
.catch(() => { })
|
||||
}
|
||||
const options = ref([
|
||||
{
|
||||
|
@ -974,10 +867,14 @@
|
|||
iskfq,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
#apply-container {
|
||||
:deep .ant-form-item-label-left {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#apply-container {
|
||||
// background-color: #f5f8fc;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
@ -1002,8 +899,11 @@
|
|||
}
|
||||
|
||||
.form-container {
|
||||
padding: 20px 20px 30px 20px;
|
||||
//padding: 20px 20px 30px 20px;
|
||||
overflow: hidden;
|
||||
margin-top: 15px;
|
||||
|
||||
// background: #f6f7f9;
|
||||
.title {
|
||||
font-size: 20px;
|
||||
color: #000;
|
||||
|
@ -1056,9 +956,9 @@
|
|||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.applicationScene {
|
||||
.applicationScene {
|
||||
:deep(.ant-select-selector) {
|
||||
overflow-x: scroll;
|
||||
}
|
||||
|
@ -1066,41 +966,51 @@
|
|||
:deep(.ant-select-selection-overflow) {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
textarea {
|
||||
resize: none;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom-btn {
|
||||
.bottom-btn {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
// position: fixed;
|
||||
}
|
||||
}
|
||||
|
||||
.cancel-apply {
|
||||
.cancel-apply {
|
||||
width: 80px;
|
||||
height: 38px;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.cancel-apply:hover {
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.confirm-apply {
|
||||
margin-right: 20px;
|
||||
background: #e1edfa;
|
||||
color: #0087ff;
|
||||
font-size: 14px;
|
||||
border-radius: 6px;
|
||||
border: none;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.confirm-apply {
|
||||
width: 80px;
|
||||
height: 38px;
|
||||
background: #0087ff;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
border-radius: 6px;
|
||||
border: none;
|
||||
padding: 0;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
}
|
||||
background: #0558e1;
|
||||
color: #fff;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.confirm-apply :hover {
|
||||
background: #0558e1;
|
||||
color: #fff;
|
||||
opacity: 0.8;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -84,9 +84,9 @@ watch(
|
|||
.caseBox {
|
||||
width: 3.5rem;
|
||||
height: 3rem;
|
||||
box-shadow: 1px 1px 5px 5px rgba(222, 222, 222, 0.152);
|
||||
border: 1px solid #ebecef;
|
||||
box-shadow: 1px 1px 5px 5px rgb(222 222 222 / 15%);
|
||||
background: #ffffff;
|
||||
border-radius: 0.05rem;
|
||||
padding: 0.2rem;
|
||||
margin-bottom: 0.2rem;
|
||||
cursor: pointer;
|
||||
|
|
|
@ -147,19 +147,19 @@
|
|||
cursor: pointer;
|
||||
}
|
||||
.zskTag {
|
||||
margin: 20px 10px;
|
||||
margin: 20px 20px;
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #dddee1;
|
||||
padding-top: 18px;
|
||||
.type {
|
||||
padding: 0 10px 0 0;
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
border-right: 1px solid #eee;
|
||||
border-right: 1px solid #dddee1;
|
||||
}
|
||||
.ant-tag {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
padding: 5px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
@ -170,15 +170,20 @@
|
|||
}
|
||||
.top {
|
||||
display: flex;
|
||||
padding-top: 10px;
|
||||
justify-content: space-between;
|
||||
border-top: 1px solid #eee;
|
||||
margin: 10px 0;
|
||||
padding: 30px 10px 0;
|
||||
border-top: 1px solid #dddee1;
|
||||
margin: 3px 18px 5px;
|
||||
font-size: 14px;
|
||||
span {
|
||||
color: #0058e1;
|
||||
font-weight: 600;
|
||||
font-size:16px;
|
||||
}
|
||||
}
|
||||
:deep(.ant-list-lg .ant-list-item){
|
||||
padding: 18px 17px 12px 49px;
|
||||
}
|
||||
:deep(.ant-list-bordered) {
|
||||
border: none;
|
||||
.ant-list-item {
|
||||
|
@ -192,11 +197,12 @@
|
|||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
svg {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: #0087ff;
|
||||
|
|
|
@ -75,10 +75,12 @@
|
|||
<div class="mynotice" v-show="mynoticeFlag">
|
||||
<a-list item-layout="horizontal" :data-source="mynoticeData">
|
||||
<template #renderItem="{ item }">
|
||||
<a-tooltip placement="left">
|
||||
<!-- <a-tooltip placement="left">
|
||||
<template #title>
|
||||
<span>{{ item.content }}</span>
|
||||
</template>
|
||||
|
||||
</a-tooltip> -->
|
||||
<a-list-item>
|
||||
<a-list-item-meta :description="item.senderDate">
|
||||
<template #title>
|
||||
|
@ -86,10 +88,26 @@
|
|||
</template>
|
||||
</a-list-item-meta>
|
||||
</a-list-item>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-list>
|
||||
<div class="bottom" @click="goToView()">查看更多</div>
|
||||
<div class="bottom" @click="goToView()">
|
||||
查看更多
|
||||
<svg
|
||||
t="1672387024761"
|
||||
class="icon"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="2682"
|
||||
width="20"
|
||||
height="20"
|
||||
>
|
||||
<path
|
||||
d="M185.884 327.55 146.3 367.133 512.021 732.779 877.7 367.133 838.117 327.55 511.997 653.676Z"
|
||||
p-id="2683"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<i
|
||||
|
@ -127,7 +145,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted, onBeforeUnmount, defineProps } from 'vue'
|
||||
import { ref, onMounted, onBeforeUnmount, defineProps,watch } from 'vue'
|
||||
import { getUserInfo, getRole } from '@/api/user'
|
||||
import { recordRoute } from '@/config'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
|
@ -162,6 +180,22 @@
|
|||
}
|
||||
const targetRouter = ref('')
|
||||
const backFlag = ref(false)
|
||||
watch(
|
||||
() => router.currentRoute.value.path,
|
||||
(newValue, oldValue) => {
|
||||
|
||||
if(newValue=='/apply' || newValue=='/details'){
|
||||
select.value='DetailsPageconetent'
|
||||
}else if(newValue=='/demandDetails'){
|
||||
select.value='demandCenter'
|
||||
}
|
||||
else if(newValue=='/integrationServicesDetails'){
|
||||
select.value='integrationServices'
|
||||
}
|
||||
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
getUserInfo().then((res) => {
|
||||
if (res.data.data.superAdmin == '1') {
|
||||
backFlag.value = true
|
||||
|
@ -176,7 +210,6 @@
|
|||
}
|
||||
})
|
||||
|
||||
console.log('navList------------>', navList)
|
||||
|
||||
const props = defineProps({
|
||||
showView: { type: String, default: '' },
|
||||
|
@ -197,7 +230,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
console.log('3333333------------>', props)
|
||||
|
||||
// 返回首页
|
||||
const goToHome = () => {
|
||||
// 西海岸
|
||||
|
@ -226,6 +259,7 @@
|
|||
return message.warn('暂无权限')
|
||||
}
|
||||
}
|
||||
|
||||
select.value = item.key
|
||||
switch (item.name) {
|
||||
case '个人中心':
|
||||
|
@ -693,6 +727,9 @@
|
|||
text-align: center;
|
||||
color: #000;
|
||||
font-size: 0.16rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -721,6 +758,9 @@
|
|||
-webkit-box-orient: vertical;
|
||||
cursor: default;
|
||||
}
|
||||
a:hover {
|
||||
color: #0058e1;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 0.7rem;
|
||||
|
|
|
@ -969,6 +969,7 @@
|
|||
// margin: 11px 0 20px;
|
||||
// background: #e5f2ff;
|
||||
// padding-left: 20px;
|
||||
padding-top:10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
|
|
@ -372,6 +372,7 @@
|
|||
li {
|
||||
width: 90px;
|
||||
height: 12px;
|
||||
align-items: right;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
|
|
|
@ -117,11 +117,14 @@
|
|||
</div>
|
||||
<a-button
|
||||
style="
|
||||
margin-left: 0.8rem;
|
||||
background: #e1edfa;
|
||||
color: #0087ff;
|
||||
border: none;
|
||||
border-radius: 0.06rem;
|
||||
width: 80px;
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
background: #0558e1;
|
||||
color: #fff;
|
||||
border: 1px solid #0558e1;
|
||||
border-radius: 2px;
|
||||
font-size: 14px;
|
||||
"
|
||||
@click="appointment(item)"
|
||||
>
|
||||
|
@ -405,18 +408,23 @@
|
|||
:wrapper-col="{ span: 14, offset: 4 }"
|
||||
style="text-align: center; margin-top: 0.4rem"
|
||||
>
|
||||
<a-button @click="appointmentRoom = false" type="primary" danger>
|
||||
取消
|
||||
</a-button>
|
||||
<a-button
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
class="tijiao"
|
||||
|
||||
@click="onSubmit"
|
||||
>
|
||||
提交
|
||||
</a-button>
|
||||
<a-button class="quxiao" @click="appointmentRoom = false" >
|
||||
取消
|
||||
</a-button>
|
||||
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
|
||||
|
||||
|
||||
|
||||
</a-modal>
|
||||
</div>
|
||||
<div v-if="room">
|
||||
|
@ -1207,7 +1215,7 @@
|
|||
if (item && item.status != 1) {
|
||||
return
|
||||
// return message.warning('当前设备离线, 不可预览!')
|
||||
}
|
||||
}handleChose
|
||||
console.log('打开视频', id)
|
||||
const param = {
|
||||
key: id,
|
||||
|
@ -2512,6 +2520,38 @@
|
|||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
|
||||
.quxiao{
|
||||
margin-right:12px;
|
||||
cursor: pointer;
|
||||
width: 90px;
|
||||
height: 32px;
|
||||
background: #ffffff;
|
||||
color:#0058e1;
|
||||
border-radius: 2px;
|
||||
border: 1px #0058e1 solid;
|
||||
}
|
||||
.quxiao:hover{
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.tijiao{
|
||||
margin-right:12px;
|
||||
cursor: pointer;
|
||||
width: 90px;
|
||||
height: 32px;
|
||||
background: #0058e1;
|
||||
color:#ffffff;
|
||||
border-radius: 2px;
|
||||
border: 1px #0058e1 solid;
|
||||
margin-left:20px;
|
||||
}
|
||||
.tijiao:hover{
|
||||
background: #0558e1;
|
||||
color: #fff;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.queding {
|
||||
margin-left: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -2830,7 +2870,7 @@
|
|||
.rightContent {
|
||||
height: 1.75rem;
|
||||
width: 5.8rem;
|
||||
|
||||
margin-right:72px;
|
||||
.topContent {
|
||||
font-size: 0.2rem;
|
||||
color: #000;
|
||||
|
@ -2859,10 +2899,20 @@
|
|||
// }
|
||||
}
|
||||
:deep(.ant-table-thead > tr > th) {
|
||||
color: #5580f7 !important;
|
||||
color: #0058e1 !important;
|
||||
font-size: 16px !important;
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
:deep(.ant-table-tbody > tr.ant-table-row-selected > td){
|
||||
background: #e6eefb;
|
||||
}
|
||||
:deep(.ant-checkbox-checked .ant-checkbox-inner){
|
||||
background-color: #0058e1;
|
||||
}
|
||||
:deep(.ant-checkbox-indeterminate .ant-checkbox-inner::after){
|
||||
background-color: #0058e1;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style lang="less">
|
||||
.eia-dropdown-class {
|
||||
|
@ -2894,16 +2944,19 @@
|
|||
|
||||
.appModal {
|
||||
.ant-modal-body {
|
||||
height: 4.8rem !important;
|
||||
height: 3.8rem !important;
|
||||
overflow-y: scroll !important;
|
||||
}
|
||||
|
||||
.ant-modal-title {
|
||||
font-weight: 600;
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.ant-modal-content {
|
||||
.ant-modal-header {
|
||||
background: #0058e1;
|
||||
margin-bottom: 16px;
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,90 +1,92 @@
|
|||
<template>
|
||||
<!-- 青岛 -->
|
||||
<div class="details-pageconetent">
|
||||
<home-header></home-header>
|
||||
<div class="top">
|
||||
<div class="top-title">
|
||||
全部:
|
||||
<div
|
||||
v-for="item in titleName"
|
||||
:key="item.index"
|
||||
class="tabAll"
|
||||
@click="changeCards(item.index)"
|
||||
:class="{ sel: item.index === number }"
|
||||
>
|
||||
|
||||
<div v-for="item in titleName" :key="item.index" class="tabAll" @click="changeCards(item.index)"
|
||||
:class="{ sel: item.index === number }">
|
||||
<span>
|
||||
{{ item.name === '赋能场景' ? '典型赋能场景' : '打包模式' }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resultListSearchInput-father" v-if="number === 0">
|
||||
<div class="resultListSearchInput-son">
|
||||
模糊搜索
|
||||
<a-input-search
|
||||
v-model:value="searchValue"
|
||||
placeholder="请输入关键词"
|
||||
enter-button="搜索"
|
||||
size="large"
|
||||
@search="getIntegrationList"
|
||||
@change="onSearch"
|
||||
class="resultListSearchInput"
|
||||
/>
|
||||
<i class="searchImg" aria-hidden="true"></i>
|
||||
<button class="button-reset" @click="resetAction()">重置</button>
|
||||
<div class="details-pageconetent">
|
||||
<home-header></home-header>
|
||||
<div class="top">
|
||||
|
||||
<div class="hengxian"></div>
|
||||
<div class="resultListSearchInput-father" v-if="number === 0">
|
||||
<div class="second-title">
|
||||
<div :class="[cityOrArea === 0 ? 'departmentStyle' : 'departmentStyle1']" @click="handleChose(0)">
|
||||
<img src="~@/assets/home/city.png" /> 市级领域场景
|
||||
<div :class="cityOrArea === 0 ? 'sanjiao' : ''"></div>
|
||||
</div>
|
||||
|
||||
<div :class="[cityOrArea === 1 ? 'departmentStyle' : 'departmentStyle1']" @click="handleChose(1)">
|
||||
<img src="~@/assets/home/area.png" /> 基层场景
|
||||
<div :class="cityOrArea === 1 ? 'sanjiao' : ''"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="resultListSearchInput-son">
|
||||
<div class="son-input">
|
||||
<a-input-search v-model:value="searchValue" placeholder="请输入关键字" enter-button="搜索" size="large"
|
||||
@search="getIntegrationList" @change="onSearch" class="resultListSearchInput" />
|
||||
<i class="searchImg" aria-hidden="true"></i>
|
||||
<!-- <button class="button-reset" @click="resetAction()">重置</button> -->
|
||||
</div>
|
||||
<div>
|
||||
|
||||
<div class="all">全部</div>
|
||||
<div class="choose-tab" v-if="cityOrArea === 0">
|
||||
<span v-for="item in senses" :key="item.data" @click="tabSensesClick(item.dict_label)" :class="
|
||||
clickSensesList.indexOf(item.dict_label) != -1
|
||||
? 'down'
|
||||
: ''
|
||||
">
|
||||
{{ item.dict_label }}
|
||||
</span>
|
||||
</div>
|
||||
<div v-else class="choose-tab">
|
||||
<span v-for="item in areas" :key="item.data" @click="tabAreasClick(item.name)" :class="
|
||||
clickAreasList.indexOf(item.name) != -1
|
||||
? 'down'
|
||||
: ''
|
||||
">
|
||||
{{ item.name }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="number === 0" class="checkResult">检测结果: <span>{{resourceTotal}}</span>个</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background:#fff;margin-left:16px;margin-right:16px;">
|
||||
<div v-if="number === 0" class="checkResult">检测结果: <span>{{ resourceTotal }}</span>个</div>
|
||||
<div v-loading="loadingData">
|
||||
<searchResultList
|
||||
v-if="number === 1"
|
||||
v-show="resourceList.data && resourceList.data.length > 0"
|
||||
:resourceList="resourceList"
|
||||
:resourceTotal="resourceTotal"
|
||||
@saveSearchCodition="saveSearchCodition"
|
||||
ref="searchResultListDom"
|
||||
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
|
||||
/>
|
||||
<CanAssignCase
|
||||
v-else
|
||||
v-show="resourceList.data && resourceList.data.length > 0"
|
||||
:resourceList="resourceList"
|
||||
@saveSearchCodition="saveSearchCodition"
|
||||
:resourceTotal="resourceTotal"
|
||||
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
|
||||
/>
|
||||
<searchResultList v-if="number === 1" v-show="resourceList.data && resourceList.data.length > 0"
|
||||
:resourceList="resourceList" :resourceTotal="resourceTotal" @saveSearchCodition="saveSearchCodition"
|
||||
ref="searchResultListDom" :selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
|
||||
<CanAssignCase v-else v-show="resourceList.data && resourceList.data.length > 0" :resourceList="resourceList"
|
||||
@saveSearchCodition="saveSearchCodition" :resourceTotal="resourceTotal"
|
||||
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
|
||||
|
||||
<div class="pagination">
|
||||
|
||||
<a-pagination
|
||||
v-if="resourceList.data && resourceList.data.length > 0"
|
||||
v-model:current="currentPage"
|
||||
v-model:pageSize="currentPageSize"
|
||||
show-size-changer
|
||||
show-less-items
|
||||
show-quick-jumper
|
||||
|
||||
:total="resourceTotal"
|
||||
:page-size-options="pageSizeOptions"
|
||||
@change="pageChange"
|
||||
@showSizeChange="onShowSizeChange"
|
||||
/>
|
||||
<a-pagination v-if="resourceList.data && resourceList.data.length > 0" v-model:current="currentPage"
|
||||
v-model:pageSize="currentPageSize" show-size-changer show-less-items show-quick-jumper
|
||||
:total="resourceTotal" :page-size-options="pageSizeOptions" @change="pageChange"
|
||||
@showSizeChange="onShowSizeChange" />
|
||||
</div>
|
||||
<div
|
||||
v-if="resourceList.data && resourceList.data.length <= 0"
|
||||
style="margin-top: 2rem"
|
||||
>
|
||||
<div v-if="resourceList.data && resourceList.data.length <= 0" style="margin-top: 2rem">
|
||||
<a-empty />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<home-footer></home-footer>
|
||||
</template>
|
||||
<script>
|
||||
import HomeFooter from '@/views/newHome/components/Footer'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import qs from 'qs'
|
||||
import {
|
||||
defineComponent,
|
||||
reactive,
|
||||
|
@ -93,14 +95,14 @@
|
|||
onMounted,
|
||||
nextTick,
|
||||
} from 'vue'
|
||||
import { getIntegrationServicesList } from '@/api/home.js'
|
||||
import { useRouter } from 'vue-router'
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import searchResultList from '@/views/home/components/searchResultList.vue'
|
||||
import CanAssignCase from '@/views/home/components/CanAssignCase.vue'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { getIntegrationServicesList, getRegion, selectDicStoreAll } from '@/api/home.js'
|
||||
import { useRouter } from 'vue-router'
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import searchResultList from '@/views/home/components/searchResultList.vue'
|
||||
import CanAssignCase from '@/views/home/components/CanAssignCase.vue'
|
||||
import { message } from 'ant-design-vue'
|
||||
|
||||
export default defineComponent({
|
||||
export default defineComponent({
|
||||
beforeRouteLeave(to, from, next) {
|
||||
console.log('to---integrationServices--beforeRouteLeave------->', to)
|
||||
console.log('from---integrationServices--beforeRouteLeave------->', from)
|
||||
|
@ -147,7 +149,15 @@
|
|||
name: searchValue.value,
|
||||
orderField: 'create_date',
|
||||
orderType: 'DESC', // ASC 升序 DESC 降序
|
||||
areas:[],
|
||||
senses:[],
|
||||
district: 1,//0市级,1基层
|
||||
}
|
||||
let cityOrArea = ref(0)//0市级 1基层
|
||||
let senses = ref([])//场景领域
|
||||
let areas = ref([])//区市
|
||||
let clickSensesList = ref([])//多选场景领域
|
||||
let clickAreasList = ref([])//多选区域领域
|
||||
const searchResultListDom = ref(null)
|
||||
const storageSearchInfo = JSON.parse(
|
||||
localStorage.getItem('integrationServices')
|
||||
|
@ -180,12 +190,34 @@
|
|||
}
|
||||
|
||||
const changeCards = (val) => {
|
||||
// 打包模式
|
||||
number.value = val
|
||||
paramsGetResources.type = titleName.value[number.value].name
|
||||
resetAction()
|
||||
}
|
||||
//市级或者基层
|
||||
const handleChose = (index) => {
|
||||
cityOrArea.value = index;
|
||||
getIntegrationList()
|
||||
}
|
||||
//多选区域
|
||||
const tabAreasClick = (name) => {
|
||||
if (clickAreasList.value.indexOf(name) == -1) {
|
||||
clickAreasList.value.push(name);
|
||||
} else {
|
||||
clickAreasList.value.splice(clickAreasList.value.indexOf(name), 1)
|
||||
}
|
||||
getIntegrationList()
|
||||
}
|
||||
//多选场景领域
|
||||
const tabSensesClick = (name) => {
|
||||
|
||||
if (clickSensesList.value.indexOf(name) == -1) {
|
||||
clickSensesList.value.push(name);
|
||||
} else {
|
||||
clickSensesList.value.splice(clickSensesList.value.indexOf(name), 1)
|
||||
}
|
||||
getIntegrationList()
|
||||
}
|
||||
// 查询
|
||||
const onSearch = () => {
|
||||
currentPage.value = 1
|
||||
|
@ -203,21 +235,48 @@
|
|||
paramsGetResources.limit = 10
|
||||
paramsGetResources.orderField = 'create_date'
|
||||
paramsGetResources.orderType = 'DESC'
|
||||
|
||||
mybus.emit('resetAction', {
|
||||
type: titleName.value[number.value].name,
|
||||
})
|
||||
getIntegrationList()
|
||||
}
|
||||
//查询领域和地区
|
||||
const searchAreas = () => {
|
||||
const params = {
|
||||
topCategoryName: '应用资源'
|
||||
}
|
||||
selectDicStoreAll(params).then(
|
||||
(res) => {
|
||||
senses.value = res.data.data[0].typeList
|
||||
console.log("==================== senses.value", senses.value)
|
||||
})
|
||||
const params1 = {
|
||||
pid: '250000'
|
||||
}
|
||||
getRegion(params1).then(
|
||||
(res) => {
|
||||
|
||||
areas.value = res.data.data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取融合服务列表
|
||||
const getIntegrationList = () => {
|
||||
loadingData.value = true
|
||||
paramsGetResources.name = searchValue.value
|
||||
console.log(
|
||||
'paramsGetResources------参数下发------>',
|
||||
paramsGetResources
|
||||
)
|
||||
if(number.value==1){
|
||||
paramsGetResources.district=''
|
||||
}else{
|
||||
if(cityOrArea.value==0){//市级挂接
|
||||
paramsGetResources.district=0
|
||||
paramsGetResources.areas=[]
|
||||
paramsGetResources.senses=JSON.stringify(clickSensesList.value)
|
||||
}else{//基层挂接
|
||||
paramsGetResources.district=1
|
||||
paramsGetResources.senses=[]
|
||||
paramsGetResources.areas=JSON.stringify(clickAreasList.value)
|
||||
}
|
||||
}
|
||||
getIntegrationServicesList(paramsGetResources).then(
|
||||
(res) => {
|
||||
loadingData.value = false
|
||||
|
@ -291,17 +350,20 @@
|
|||
}
|
||||
|
||||
onMounted(() => {
|
||||
if(returnType=='典型赋能场景'){
|
||||
searchAreas()
|
||||
if (returnType == '典型赋能场景') {
|
||||
changeCards(0)
|
||||
}else if(returnType=='打包模式'){
|
||||
|
||||
} else if (returnType == '打包模式') {
|
||||
changeCards(1)
|
||||
}else{
|
||||
} else {
|
||||
if (storageSearchInfo) {
|
||||
handleSetSearchData()
|
||||
} else {
|
||||
getIntegrationList()
|
||||
}
|
||||
}
|
||||
|
||||
// if (storageSearchInfo) {
|
||||
// handleSetSearchData()
|
||||
// } else {
|
||||
|
@ -310,6 +372,9 @@
|
|||
})
|
||||
|
||||
return {
|
||||
|
||||
tabSensesClick,
|
||||
tabAreasClick,
|
||||
searchValue,
|
||||
currentPage,
|
||||
resourceList,
|
||||
|
@ -327,9 +392,16 @@
|
|||
returnType,
|
||||
number,
|
||||
loadingData,
|
||||
cityOrArea,
|
||||
onShowSizeChange,
|
||||
saveSearchCodition,
|
||||
handleChose,
|
||||
searchAreas,
|
||||
senses,
|
||||
areas,
|
||||
searchResultListDom,
|
||||
clickSensesList,
|
||||
clickAreasList,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
@ -344,29 +416,142 @@
|
|||
mybus.off('refresh')
|
||||
mybus.off('changePage')
|
||||
},
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.checkResult{
|
||||
margin-left: 0.2rem;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
.top-title {
|
||||
|
||||
display: flex;
|
||||
font-size: 20px;
|
||||
margin-top: 65px;
|
||||
background: #e5eefc;
|
||||
opacity: 0.8;
|
||||
height: 72px;
|
||||
|
||||
.tabAll {
|
||||
color: #212121;
|
||||
margin-top: 10px;
|
||||
margin-right: 35px;
|
||||
cursor: pointer;
|
||||
margin-top: 24px;
|
||||
text-align: center;
|
||||
width: 240px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
.tabAll:nth-child(1) {
|
||||
margin-left: 720px;
|
||||
}
|
||||
|
||||
.sel {
|
||||
border-top: 2px solid #0058e1;
|
||||
height: 48px;
|
||||
background: #fff;
|
||||
width: 240px;
|
||||
|
||||
span {
|
||||
font-size: 18px;
|
||||
color: #0087ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.resultListSearchInput-father {
|
||||
|
||||
.checkResult {
|
||||
margin-left: 16px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #212121;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
|
||||
span {
|
||||
font-size: 18px;
|
||||
color: #0058e1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.resultListSearchInput-father {
|
||||
background: #f3f5f9;
|
||||
padding: 0rem 0.2rem;
|
||||
margin-bottom:24px;
|
||||
.sanjiao {
|
||||
background: url('~@/assets/home/sanjiao.png');
|
||||
background-repeat: no-repeat;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
margin-left: 80px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.second-title {
|
||||
padding-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
font-size: 18px;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
background: #fff;
|
||||
height: 53px;
|
||||
border-bottom: 1px solid #d9d9d9;
|
||||
}
|
||||
|
||||
.departmentStyle {
|
||||
float: left;
|
||||
width: 180px;
|
||||
// color: #0058e1;
|
||||
background-color: #fff;
|
||||
|
||||
border-bottom: 3px solid #0058e1;
|
||||
}
|
||||
|
||||
.departmentStyle1 {
|
||||
|
||||
float: left;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
.resultListSearchInput-son {
|
||||
background: #fff;
|
||||
padding: 0.2rem 0.2rem 0rem 0.3rem;
|
||||
.son-input {
|
||||
margin: 24px 0px 12px 340px;
|
||||
}
|
||||
|
||||
// background: #fff;
|
||||
//padding: 0.2rem 0.2rem 0rem 0.3rem;
|
||||
.all {
|
||||
float: left;
|
||||
display: inline;
|
||||
width: 42px;
|
||||
margin-top: 12px;
|
||||
margin-left: 100px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.choose-tab {
|
||||
float: left;
|
||||
display: inline;
|
||||
width: 940px;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
height: 28px;
|
||||
font-size: 14px;
|
||||
width: 90px;
|
||||
line-height: 28px;
|
||||
border-radius: 1px;
|
||||
margin-left: 14px;
|
||||
text-align: center;
|
||||
color: #212121;
|
||||
background: #e8e9eb;
|
||||
cursor: pointer;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.down {
|
||||
background: #0058e1;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.hengxian {
|
||||
width: 100%;
|
||||
|
@ -374,29 +559,30 @@
|
|||
background: rgba(150, 144, 144, 0.3);
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
.searchImg{
|
||||
|
||||
.searchImg {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
background: url('~@/assets/home/searchInner.png');
|
||||
position: absolute;
|
||||
top: 119px;
|
||||
left: 500px;
|
||||
}
|
||||
top: 85px;
|
||||
left: 668px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.resultListSearchInput {
|
||||
.resultListSearchInput {
|
||||
margin-left: 0.1rem;
|
||||
|
||||
:deep(.ant-input) {
|
||||
width: 4rem;
|
||||
width: 340px;
|
||||
height: 0.32rem;
|
||||
background: #fff;
|
||||
border-radius: 0.02rem;
|
||||
}
|
||||
|
||||
:deep(.ant-input-search-button) {
|
||||
width: 0.8rem;
|
||||
// width: 56px;
|
||||
height: 0.32rem;
|
||||
background: #0558e1;
|
||||
border-radius: 0.02rem !important;
|
||||
|
@ -410,12 +596,12 @@
|
|||
:deep(.ant-input-group-addon) {
|
||||
left: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button-reset {
|
||||
.button-reset {
|
||||
border: 0;
|
||||
outline: none;
|
||||
width: 0.8rem;
|
||||
width: 56px;
|
||||
height: 0.32rem;
|
||||
//background: #e1edfa;
|
||||
background: #0558e1;
|
||||
|
@ -427,15 +613,15 @@
|
|||
line-height: 0.32rem;
|
||||
margin-left: 2.5rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.details-pageconetent {
|
||||
.details-pageconetent {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-top: 0.67rem;
|
||||
//margin-top: 0.67rem;
|
||||
position: relative;
|
||||
background: rgba(245, 243, 243, 0.3);
|
||||
|
||||
|
@ -454,7 +640,7 @@
|
|||
position: relative;
|
||||
width: 11.5rem;
|
||||
display: flex;
|
||||
padding-top: 0.2rem;
|
||||
// padding-top: 0.2rem;
|
||||
flex-direction: column;
|
||||
font-size: 0.16rem;
|
||||
justify-content: left;
|
||||
|
@ -462,39 +648,19 @@
|
|||
|
||||
.pagination {
|
||||
background: #f3f5f9;
|
||||
padding-bottom: 0.6rem;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 23px;
|
||||
}
|
||||
|
||||
.top-title {
|
||||
padding: 0.2rem;
|
||||
display: flex;
|
||||
font-size: 18px;
|
||||
|
||||
.tabAll {
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
margin-right: 35px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.tabAll:nth-child(1) {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.sel {
|
||||
font-weight: 600;
|
||||
color: #0087ff;
|
||||
border-bottom: 0.02rem solid #0087ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.ant-card-grid) {
|
||||
:deep(.ant-card-grid) {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 1;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
<template>
|
||||
<div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }">
|
||||
<home-header></home-header>
|
||||
<detail-back v-show="!hiddenBackFlag" :returnType="returnType"></detail-back>
|
||||
<detail-back
|
||||
v-show="!hiddenBackFlag"
|
||||
:returnType="returnType"
|
||||
></detail-back>
|
||||
<!-- 头部基本信息 -->
|
||||
<application-top-details
|
||||
:dataList="detailInfoObj"
|
||||
|
@ -10,7 +13,7 @@
|
|||
></application-top-details>
|
||||
|
||||
<!-- 导航 -->
|
||||
<div :class="{ fixed: scrollTop >= 600 }">
|
||||
<div :class="{ fixed: scrollTop >= 600 }" style="z-index: 10012">
|
||||
<div class="application-navigation">
|
||||
<template v-for="nav in navList" :key="nav.key">
|
||||
<div
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="content-box">
|
||||
<!-- 提供服务 -->
|
||||
<div class="img-bg service-box">
|
||||
<div class="title" style="margin-bottom: 20px">
|
||||
<div class="title titleMargin">
|
||||
<div class="text text-white">提供服务</div>
|
||||
<div class="line line-white"></div>
|
||||
</div>
|
||||
|
@ -32,7 +32,12 @@
|
|||
<!-- 总体流程 -->
|
||||
<TheOverallProcess></TheOverallProcess>
|
||||
<!-- imgList -->
|
||||
<div class="img-box" v-for="(item, i) in imgList" :key="i">
|
||||
<div
|
||||
class="img-box"
|
||||
:class="item.btnText === '立即上架' ? '' : 'img-box-new'"
|
||||
v-for="(item, i) in imgList"
|
||||
:key="i"
|
||||
>
|
||||
<div class="title">
|
||||
<div class="text">{{ item.name }}</div>
|
||||
<div class="line"></div>
|
||||
|
@ -42,7 +47,12 @@
|
|||
:class="item.className"
|
||||
:style="{ 'background-image': `url(${item.bgImg || ''})` }"
|
||||
></div>
|
||||
<div v-if="item.btnText" class="btn" @click="toWhere(item.name)">
|
||||
<div
|
||||
v-if="item.btnText"
|
||||
class="btn"
|
||||
:class="item.btnText === '立即上架' ? '' : 'btn-new'"
|
||||
@click="toWhere(item.name)"
|
||||
>
|
||||
{{ item.btnText }} >>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -316,7 +326,6 @@
|
|||
align-items: center;
|
||||
height: 0.26rem;
|
||||
}
|
||||
|
||||
.component-type-content {
|
||||
width: 100%;
|
||||
height: unset;
|
||||
|
@ -420,6 +429,10 @@
|
|||
color: #fff;
|
||||
}
|
||||
}
|
||||
.titleMargin {
|
||||
margin-bottom: 20px;
|
||||
padding-top: 52px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 150px;
|
||||
|
@ -432,14 +445,21 @@
|
|||
border-radius: 2px;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
|
||||
background: white;
|
||||
&:hover {
|
||||
background: #e5eefc;
|
||||
}
|
||||
}
|
||||
.btn-new {
|
||||
position: relative;
|
||||
top: -104px;
|
||||
}
|
||||
|
||||
.img-box {
|
||||
margin-bottom: 50px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.img-box-new {
|
||||
margin-bottom: -60px;
|
||||
}
|
||||
|
||||
.service-box {
|
||||
|
|
|
@ -195,7 +195,7 @@ onMounted(() => {
|
|||
|
||||
.new-guide-box {
|
||||
position: absolute;
|
||||
top: 300px;
|
||||
top: 375px;
|
||||
right: 205px;
|
||||
width: 74px;
|
||||
height: 150px;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-21 11:55:07
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-07-27 15:57:26
|
||||
* @LastEditors: Light
|
||||
* @LastEditTime: 2022-12-30 16:05:18
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
|
@ -15,7 +15,12 @@
|
|||
</a-breadcrumb>
|
||||
<div class="top">
|
||||
<div class="left">
|
||||
<div class="item" :class="{ select: selectNav == nav.key }" v-for="nav in navList" :key="nav.key">
|
||||
<div
|
||||
class="item"
|
||||
:class="{ select: selectNav == nav.key }"
|
||||
v-for="nav in navList"
|
||||
:key="nav.key"
|
||||
>
|
||||
<i :class="nav.key" @click="changeNav(nav)"></i>
|
||||
<div>{{ nav.title + '(' + nav.num + ')' }}</div>
|
||||
</div>
|
||||
|
@ -23,11 +28,25 @@
|
|||
</div>
|
||||
<div class="btn">
|
||||
<div class="left">
|
||||
<a-select ref="select" v-model:value="value" style="width: 120px" @focus="focus" @change="handleChange">
|
||||
<a-select
|
||||
ref="select"
|
||||
v-model:value="value"
|
||||
style="width: 120px"
|
||||
@focus="focus"
|
||||
@change="handleChange"
|
||||
>
|
||||
<a-select-option value="全部消息">全部消息</a-select-option>
|
||||
<a-select-option value="已读消息">已读消息</a-select-option>
|
||||
<a-select-option value="未读消息">未读消息</a-select-option>
|
||||
</a-select>
|
||||
<a-checkbox
|
||||
:checked="
|
||||
selectData.length !== 0 && selectData.length === data.length
|
||||
"
|
||||
stlye="margin-right:0.3rem;"
|
||||
@change="changeCheckAll()"
|
||||
></a-checkbox>
|
||||
<div style="margin-left: 10px">全选当前页</div>
|
||||
<div class="check">
|
||||
<div>
|
||||
共
|
||||
|
@ -37,26 +56,30 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<a-checkbox :checked="
|
||||
selectData.length !== 0 && selectData.length === data.length
|
||||
" stlye="margin-right:0.3rem;" @change="changeCheckAll()"></a-checkbox>
|
||||
<div>全选当前页</div>
|
||||
<span @click="read()">标记为已读</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-box">
|
||||
<div class="main">
|
||||
<a-list item-layout="horizontal" :data-source="data">
|
||||
<template #renderItem="{ item }" @click="goNoticePage(item)">
|
||||
<a-list-item>
|
||||
<a-list-item-meta description="">
|
||||
<template #title>
|
||||
<div class="left" @click="read(item)" :class="item.readStatus === 0 ? 'bold-text' : ''">
|
||||
<div
|
||||
class="left"
|
||||
@click="read(item)"
|
||||
:class="item.readStatus === 0 ? 'bold-text' : ''"
|
||||
>
|
||||
{{ item.content }}
|
||||
</div>
|
||||
<div class="right">{{ '发布时间:' + item.senderDate }}</div>
|
||||
</template>
|
||||
<template #avatar>
|
||||
<a-checkbox :checked="item.checked" @change="changeCheckBox(item)"></a-checkbox>
|
||||
<a-checkbox
|
||||
:checked="item.checked"
|
||||
@change="changeCheckBox(item)"
|
||||
></a-checkbox>
|
||||
<a-badge dot :offset="[-30, 5]" v-show="item.readStatus == 0">
|
||||
<a-avatar :src="item.src" />
|
||||
</a-badge>
|
||||
|
@ -67,23 +90,30 @@
|
|||
</template>
|
||||
</a-list>
|
||||
</div>
|
||||
<a-pagination v-model:current="pageNum" v-model:pageSize="pageSize" :total="total" show-less-items
|
||||
:show-size-changer="false" @change="changePageNum" />
|
||||
</div>
|
||||
<a-pagination
|
||||
v-model:current="pageNum"
|
||||
v-model:pageSize="pageSize"
|
||||
:total="total"
|
||||
show-less-items
|
||||
:show-size-changer="false"
|
||||
@change="changePageNum"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, reactive, onBeforeUnmount } from 'vue'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { mynotice, mynoticeRead } from '@/api/home'
|
||||
import { useRouter } from 'vue-router'
|
||||
const router = useRouter()
|
||||
const total = ref(0)
|
||||
const pageSize = ref(8)
|
||||
const pageNum = ref(1)
|
||||
const value = ref('全部消息')
|
||||
const obj = reactive({ page: pageNum.value, limit: pageSize.value })
|
||||
const navList = reactive([
|
||||
import { ref, reactive, onBeforeUnmount } from 'vue'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { mynotice, mynoticeRead } from '@/api/home'
|
||||
import { useRouter } from 'vue-router'
|
||||
const router = useRouter()
|
||||
const total = ref(0)
|
||||
const pageSize = ref(8)
|
||||
const pageNum = ref(1)
|
||||
const value = ref('全部消息')
|
||||
const obj = reactive({ page: pageNum.value, limit: pageSize.value })
|
||||
const navList = reactive([
|
||||
{
|
||||
title: '全部',
|
||||
key: 'all',
|
||||
|
@ -104,11 +134,11 @@ const navList = reactive([
|
|||
key: 'other',
|
||||
num: 0,
|
||||
},
|
||||
])
|
||||
const selectNav = ref('all')
|
||||
const selectData = ref([])
|
||||
const data = ref([])
|
||||
const changeNav = (nav) => {
|
||||
])
|
||||
const selectNav = ref('all')
|
||||
const selectData = ref([])
|
||||
const data = ref([])
|
||||
const changeNav = (nav) => {
|
||||
selectNav.value = nav.key
|
||||
if (nav.key === 'all') {
|
||||
delete obj.from
|
||||
|
@ -118,16 +148,16 @@ const changeNav = (nav) => {
|
|||
value.value = '全部消息'
|
||||
delete obj.readStatus
|
||||
init()
|
||||
}
|
||||
const changeCheckBox = (item) => {
|
||||
}
|
||||
const changeCheckBox = (item) => {
|
||||
item.checked = !item.checked
|
||||
if (item.checked) {
|
||||
selectData.value.push(item.id)
|
||||
} else {
|
||||
selectData.value = selectData.value.filter((val) => val !== item.id)
|
||||
}
|
||||
}
|
||||
const changeCheckAll = () => {
|
||||
}
|
||||
const changeCheckAll = () => {
|
||||
if (selectData.value.length == data.value.length) {
|
||||
selectData.value = []
|
||||
data.value.forEach((val) => {
|
||||
|
@ -140,13 +170,13 @@ const changeCheckAll = () => {
|
|||
selectData.value.push(val.id)
|
||||
})
|
||||
}
|
||||
}
|
||||
const changePageNum = (page) => {
|
||||
}
|
||||
const changePageNum = (page) => {
|
||||
pageNum.value = page
|
||||
obj.page = pageNum.value
|
||||
init()
|
||||
}
|
||||
const handleChange = () => {
|
||||
}
|
||||
const handleChange = () => {
|
||||
pageNum.value = 1
|
||||
obj.page = pageNum.value
|
||||
switch (value.value) {
|
||||
|
@ -164,19 +194,19 @@ const handleChange = () => {
|
|||
break
|
||||
}
|
||||
init()
|
||||
}
|
||||
const goBack = (url) => {
|
||||
}
|
||||
const goBack = (url) => {
|
||||
router.push({
|
||||
path: url,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 申请状态
|
||||
let applyStateObj = {
|
||||
// 申请状态
|
||||
let applyStateObj = {
|
||||
0: '待办',
|
||||
1: '已办',
|
||||
}
|
||||
let typeObj = {
|
||||
}
|
||||
let typeObj = {
|
||||
0: '申请前台',
|
||||
1: '申请后台',
|
||||
2: '上架前台',
|
||||
|
@ -189,56 +219,56 @@ let typeObj = {
|
|||
9: '评论后台',
|
||||
10: '会客厅前台',
|
||||
11: '会客厅后台',
|
||||
12: '其他'
|
||||
}
|
||||
12: '其他',
|
||||
}
|
||||
|
||||
// 对应的后台管理的页面
|
||||
let pageObj = {
|
||||
'申请后台': {
|
||||
// 对应的后台管理的页面
|
||||
let pageObj = {
|
||||
申请后台: {
|
||||
0: 'myAgent-CompetencyApplication',
|
||||
1: 'hasToDoTasks-CompetencyApplication',
|
||||
},
|
||||
'上架后台': {
|
||||
上架后台: {
|
||||
0: 'myAgent-AbilityResourceShelf',
|
||||
1: 'hasToDoTasks-AbilityResourceShelf',
|
||||
},
|
||||
'下架后台': {
|
||||
下架后台: {
|
||||
0: 'myAgent-AbilityResourcesRemoved',
|
||||
1: 'hasToDoTasks-AbilityResourcesRemoved',
|
||||
},
|
||||
'需求后台': {
|
||||
需求后台: {
|
||||
0: 'myAgent-ApplicationforCompetencyRequirements',
|
||||
1: 'hasToDoTasks-ApplicationForCompetencyRequirements',
|
||||
},
|
||||
'评论后台': {
|
||||
评论后台: {
|
||||
0: 'myAgent-CommentModeration',
|
||||
1: 'hasToDoTasks-CommentModeration',
|
||||
},
|
||||
'会客厅后台': {
|
||||
会客厅后台: {
|
||||
0: 'activiti-RoomExamineAdmin',
|
||||
1: 'activiti-RoomExamineAdmin',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// 前台tab名称
|
||||
const tabTypeObj = {
|
||||
'申请前台': '能力申请',
|
||||
'上架前台': '能力上架',
|
||||
'下架前台': '能力下架',
|
||||
'需求前台': '需求评论',
|
||||
'评论前台': '需求评论',
|
||||
'会客厅前台': '会客厅前台'
|
||||
}
|
||||
// 前台tab名称
|
||||
const tabTypeObj = {
|
||||
申请前台: '能力申请',
|
||||
上架前台: '能力上架',
|
||||
下架前台: '能力下架',
|
||||
需求前台: '需求评论',
|
||||
评论前台: '需求评论',
|
||||
会客厅前台: '会客厅前台',
|
||||
}
|
||||
|
||||
// 会客厅后台
|
||||
const goPage = (item) => {
|
||||
// 会客厅后台
|
||||
const goPage = (item) => {
|
||||
if (item.jumpUrl && item.type !== 12) {
|
||||
let typeText = typeObj[item.type];
|
||||
console.log('item------------>', item);
|
||||
console.log('typeText类型------------>', typeText);
|
||||
let typeText = typeObj[item.type]
|
||||
console.log('item------------>', item)
|
||||
console.log('typeText类型------------>', typeText)
|
||||
// "http://192.168.124.236:9796/#/personalCenter?tabTypeName=能力申请"
|
||||
let _url = item.jumpUrl && item.jumpUrl.split('#')
|
||||
let openType = '_self';
|
||||
let openType = '_self'
|
||||
// 如果是跳转到后台管理,重新打开页面
|
||||
if (typeText && typeText.indexOf('后台') !== -1) {
|
||||
openType = '_blank'
|
||||
|
@ -248,9 +278,8 @@ const goPage = (item) => {
|
|||
}
|
||||
}
|
||||
window.open(item.jumpUrl, openType)
|
||||
|
||||
}
|
||||
return;
|
||||
return
|
||||
// if (typeText) {
|
||||
// console.log('typeText类型------------>', typeText);
|
||||
// // 是后台,跳转到后台相关页面
|
||||
|
@ -279,10 +308,10 @@ const goPage = (item) => {
|
|||
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
// 更改消息状态
|
||||
const read = (item) => {
|
||||
// 更改消息状态
|
||||
const read = (item) => {
|
||||
if (selectData.value.length === 0 && !item) {
|
||||
return message.error('未选择消息!')
|
||||
}
|
||||
|
@ -292,7 +321,8 @@ const read = (item) => {
|
|||
if (item.readStatus === 1) {
|
||||
return goPage(item)
|
||||
}
|
||||
mynoticeRead(item.id).then((res) => {
|
||||
mynoticeRead(item.id)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
message.success('通知已读!')
|
||||
mybus.emit('getMynotice')
|
||||
|
@ -304,7 +334,8 @@ const read = (item) => {
|
|||
} else {
|
||||
message.error('操作失败!')
|
||||
}
|
||||
}).catch(err => {
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error(err)
|
||||
})
|
||||
} else {
|
||||
|
@ -321,8 +352,8 @@ const read = (item) => {
|
|||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
const init = () => {
|
||||
}
|
||||
const init = () => {
|
||||
// from 通知 评论 readStatus 0 未读 1 已读
|
||||
mynotice(obj).then((res) => {
|
||||
console.log('消息=============>', res.data.data)
|
||||
|
@ -340,8 +371,8 @@ const init = () => {
|
|||
total.value = res.data.data.total
|
||||
selectData.value = []
|
||||
})
|
||||
}
|
||||
navList.forEach((val) => {
|
||||
}
|
||||
navList.forEach((val) => {
|
||||
if (val.title === '全部') {
|
||||
mynotice({ page: pageNum.value, limit: pageSize.value }).then((res) => {
|
||||
val.num = res.data.data.total
|
||||
|
@ -355,17 +386,17 @@ navList.forEach((val) => {
|
|||
val.num = res.data.data.total
|
||||
})
|
||||
}
|
||||
})
|
||||
init()
|
||||
mybus.on('noticeListInit', () => {
|
||||
})
|
||||
init()
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
mybus.on('noticeListInit', () => {
|
||||
init()
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
mybus.off('noticeListInit')
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.notice-list {
|
||||
.notice-list {
|
||||
padding: 0.64rem 0 0;
|
||||
background: #f4f5f8;
|
||||
|
||||
|
@ -380,11 +411,8 @@ onBeforeUnmount(() => {
|
|||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
|
||||
|
||||
.left {
|
||||
display: flex;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
@ -452,19 +480,19 @@ onBeforeUnmount(() => {
|
|||
.btn {
|
||||
background: #fff;
|
||||
margin-top: 0.16rem;
|
||||
padding: 0.14rem 3.1rem 0;
|
||||
padding: 0.14rem 3.1rem 0.1rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
& > div:nth-of-type(2) {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.ant-select {
|
||||
margin-right: 0.24rem;
|
||||
}
|
||||
|
||||
|
||||
.check {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
@ -507,12 +535,14 @@ onBeforeUnmount(() => {
|
|||
}
|
||||
}
|
||||
|
||||
.main-box {
|
||||
background: #fff;
|
||||
.main {
|
||||
background: #fff;
|
||||
padding: 0 3.1rem;
|
||||
margin: 0 3.1rem;
|
||||
height: 4.75rem;
|
||||
overflow-y: scroll;
|
||||
|
||||
border-top: 1px solid #dddee1;
|
||||
:deep(.ant-list-item-meta) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
@ -553,11 +583,12 @@ onBeforeUnmount(() => {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ant-pagination {
|
||||
background: #fff;
|
||||
margin-top: 0;
|
||||
padding: 0.2rem 0 0.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -619,7 +619,13 @@
|
|||
right: 0rem;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1921px) and (max-width: 3840px) {
|
||||
@media only screen and (min-width: 1921px) and (max-width: 2560px) {
|
||||
.fixedmount {
|
||||
bottom: 1.56rem;
|
||||
right: 0.37rem;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 2561px) and (max-width: 3840px) {
|
||||
.fixedmount {
|
||||
bottom: 1.56rem;
|
||||
right: 9.6rem;
|
||||
|
|
|
@ -118,7 +118,7 @@
|
|||
</div>
|
||||
<!-- // todo -->
|
||||
<span class="time">
|
||||
<span v-if="!itShowXiHaiAn">
|
||||
<span class="time-line" v-if="!itShowXiHaiAn">
|
||||
加购时间:{{ item.time }}
|
||||
</span>
|
||||
<a-popconfirm
|
||||
|
@ -128,7 +128,7 @@
|
|||
@confirm="handleDelete(item, valIndex)"
|
||||
@cancel="cancel"
|
||||
>
|
||||
<a-button
|
||||
<!-- <a-button
|
||||
type="primary"
|
||||
style="
|
||||
width: 0.7rem;
|
||||
|
@ -141,7 +141,8 @@
|
|||
@click="del"
|
||||
>
|
||||
删除
|
||||
</a-button>
|
||||
</a-button> -->
|
||||
<span class="del-record" @click="del"></span>
|
||||
</a-popconfirm>
|
||||
</span>
|
||||
<svg
|
||||
|
@ -852,13 +853,32 @@
|
|||
margin-left: 0.3rem;
|
||||
font-size: 0.12rem;
|
||||
color: #ccc;
|
||||
display: flex;
|
||||
align-content: center;
|
||||
.time-line{
|
||||
line-height: 32px;
|
||||
}
|
||||
.del-record {
|
||||
width:32px;
|
||||
height: 32px;
|
||||
background: url('~@/assets/home/del.png') no-repeat;
|
||||
cursor: pointer;
|
||||
background-size: 100%;
|
||||
margin-left: 0.12rem;
|
||||
&:hover{
|
||||
background: url('~@/assets/home/del-on.png') no-repeat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.type {
|
||||
margin-left: 0.1rem;
|
||||
padding: 0.03rem 0.1rem;
|
||||
background: #00a7e3;
|
||||
border-radius: 3px;
|
||||
// background: linear-gradient(-80deg, transparent 10%, #00a7e3 10%, #00a7e3 90%, transparent 0);
|
||||
color: #fff;
|
||||
transform: skewX(-10deg);
|
||||
}
|
||||
|
||||
:deep(.ant-list-item-meta-description) {
|
||||
|
@ -929,7 +949,7 @@
|
|||
}
|
||||
|
||||
.sousuokuang {
|
||||
width: 3.25rem;
|
||||
width: 3.13rem;
|
||||
margin: 0.1rem 0rem 0.21rem 0.2rem;
|
||||
|
||||
.ant-input-search {
|
||||
|
@ -1104,6 +1124,7 @@
|
|||
width: 1rem;
|
||||
height: 0.36rem;
|
||||
border-radius: 2px;
|
||||
margin-left: 0.12rem;
|
||||
background: #fff;
|
||||
color: #0558e1;
|
||||
}
|
||||
|
@ -1114,4 +1135,5 @@
|
|||
margin-left: 0.12rem;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|