合并版本v0.8.7.1

This commit is contained in:
wuhongjian 2022-08-23 16:38:48 +08:00
commit 931e3a0e0a
34 changed files with 1159 additions and 188 deletions

View File

@ -1,3 +1,10 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-07-05 12:53:03
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 16:37:05
* @Description: 告诉大家这是什么
*/
import Vue from 'vue'
import Vuex from 'vuex'
import cloneDeep from 'lodash/cloneDeep'
@ -62,12 +69,12 @@ export default new Vuex.Store({
// dispatch('getDepartmentSelects')
},
getCatalogueTree ({ commit }) {
http.get('bscatalogue/bscatalogue/page').then(res => {
if (res.data.code === 0) {
console.log(22222, res.data)
commit('setCatalogueTree', res.data.data)
}
})
// http.get('bscatalogue/bscatalogue/page').then(res => {
// if (res.data.code === 0) {
// console.log(22222, res.data)
// commit('setCatalogueTree', res.data.data)
// }
// })
},
getDepartmentSelects ({ commit }) {
http.get('applyRecord/bsAbilityApplyRecord/page').then(({ data: res }) => {

View File

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

View File

@ -9,7 +9,7 @@
<div class="basic-information-content">
<p>
<span class="text">
能力申请标题<span> {{ dataForm.name || '--' }}</span></span
能力申请标题<span> {{ dataForm.undercarriageTitle || '--' }}</span></span
>
<span class="text"
>下架单号<span>{{ dataForm.applyNumber || '--' }}</span></span
@ -22,17 +22,22 @@
></span
>
<span class="text"
>电话<span>{{ dataForm.deptPhone || '--' }}</span></span
>电话<span>{{ dataForm.undercarriageUserPhone || '--' }}</span></span
>
<span class="text"
>单位<span>{{ dataForm.deptName || deptName }}</span></span
>
</p>
<p v-if="dataForm.enclosure" class="accessory">
<p>
<span class="text"
>能力下架原因<span>{{ dataForm.undercarriageReason || '--' }}</span></span
>
</p>
<p v-if="dataForm.undercarriageEnclosure" class="accessory">
<span>
申请附件<span>
{{ dataForm.enclosure || '--'
}}<button @click="downloadFile2(dataForm.enclosure)">
{{ dataForm.undercarriageEnclosureName || '--'
}}<button @click="downloadFile2(dataForm.undercarriageEnclosure)">
预览
</button></span
></span

View File

@ -109,6 +109,7 @@
<script>
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
import returnLocationStr from '@/utils/location'
import qs from 'qs'
export default {
mixins: [mixinViewModule, processModule],
@ -122,7 +123,7 @@ export default {
},
dataForm: {
processDefinitionId: '',
processDefinitionKey: 'abilityprocess_v2'
processDefinitionKey: returnLocationStr() == 'qingdao' ? 'abilityprocess_v3' : 'abilityprocess_v2'
}
}
},

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-25 09:39:01
* @LastEditTime: 2022-08-23 10:37:29
* @Description: 能力申请
-->
<template>
@ -121,6 +121,7 @@
import bus from '@/views/bus.js'
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
import returnLocationStr from '@/utils/location'
export default {
mixins: [mixinViewModule, processModule],
data () {
@ -135,7 +136,7 @@ export default {
dataForm: {
taskName: '',
taskId: '',
processDefinitionKey: 'abilityprocess_v2'
processDefinitionKey: returnLocationStr() == 'qingdao' ? 'abilityprocess_v3' : 'abilityprocess_v2'
},
processInstanceId: ''
}
@ -144,7 +145,7 @@ export default {
methods: {
//
taskHandle (row) {
console.log('row======================>', row, this.forwardHandleUrl)
console.log('row======================>', row, this.forwardHandleUrl, this.dataForm.processDefinitionKey)
if (!row.businessKey) {
return this.$message.error(this.$t('task.businessKeyError'))
}

View File

@ -65,6 +65,8 @@
</el-table-column>
</el-table>
<el-dialog
:destroy-on-close="true"
:close-on-click-modal="false"
@close="outDialog"
:title="
flge === 'add'
@ -104,21 +106,24 @@
</el-col>
<el-col :span="12">
<el-form-item
label="会议室面积"
label="会议室面积(m²)"
prop="area"
:label-width="formLabelWidth"
>
<el-input v-model="ruleForm.area" style="width: 90%"></el-input>
<el-input
v-model.number="ruleForm.area"
style="width: 90%"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="可容纳人数"
label="可容纳人数(人)"
prop="capacity"
:label-width="formLabelWidth"
>
<el-input
v-model="ruleForm.capacity"
v-model.number="ruleForm.capacity"
style="width: 90%"
></el-input>
</el-form-item>
@ -144,7 +149,7 @@
>
<div v-if="flge != 'look'">
<span slot="tip" class="el-upload__tip">
支持图片类型且不超过500kb
支持图片jpgjpegpng类型只能上传一张图片且不超过100MB
</span>
</div>
<!-- :file-list="fileList" -->
@ -156,6 +161,7 @@
:on-preview="handlePictureCardPreview"
:on-success="onSuccess"
:on-remove="onRemove"
:on-exceed="beforeUpload"
:file-list="fileList"
list-type="picture-card"
:limit="1"
@ -240,13 +246,19 @@ export default {
],
area: [
{ required: true, message: '请输入会议室面积', trigger: 'blur' },
{ min: 1, trigger: 'blur' },
{ min: 1, type: 'number', trigger: 'blur' },
],
description: [
{ required: true, message: '请填写描述内容', trigger: 'blur' },
{
min: 1,
max: 500,
message: '长度在 1 到 500 个字符',
trigger: 'blur',
},
],
},
formLabelWidth: '100px',
formLabelWidth: '120px',
checkImgSuccess: true,
dialogVisible: false,
flge: '',
@ -285,11 +297,21 @@ export default {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
//
beforeUpload(file, fileList) {
this.$message.error('最多只能上传一张图片!')
},
//
onSuccess(response, file, fileList) {
const isLt2M = file.size / 1024 / 1024 < 100
if (!isLt2M) {
this.$message.error('上传图片大小不能超过100MB')
this.fileList = []
} else {
this.ruleForm.pic = response.data
// this.$refs.ruleForm.clearValidate() //
this.checkImgSuccess = true
}
},
//
onRemove(file, fileList) {
@ -302,13 +324,16 @@ export default {
},
//
submitForm(formName, i) {
console.log(i, 9999999)
this.$refs[formName].validate((valid) => {
if (valid) {
if (i === 'add') {
this.dialogFormVisible = false
this.$http.post('/meeting', this.ruleForm).then(({ data: res }) => {
if (res.msg === 'success') {
this.queryData()
} else {
this.$message.error('保存接口调用失败')
}
})
} else if (i === 'edit') {
this.dialogFormVisible = false
@ -356,11 +381,25 @@ export default {
},
//
taskDelete(row) {
console.log(row, '点击了删除')
this.$http
.put(`/meeting`, { delFlag: 1, id: row.id })
.then(({ data: res }) => {
this.$confirm('此操作将永久删除该会议室, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.$http.put(`/meeting`, { delFlag: 1, id: row.id }).then(() => {
this.queryData()
this.$message({
type: 'success',
message: '删除成功!',
})
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除',
})
})
},
//
@ -378,4 +417,8 @@ export default {
::v-deep .el-dialog__footer {
text-align: center;
}
::v-deep .el-image {
width: 100%;
height: 100%;
}
</style>

View File

@ -86,8 +86,8 @@
<!-- <div>{{ multipleAdditionsItem }}</div> -->
</div>
</div>
<el-tooltip v-else placement="top">
<div slot="content">{{ itemsonson.note1 }}</div>
<el-tooltip v-else placement="top" :disabled="itemsonson.note1 !== null?false:true" :content="itemsonson.note1">
<!-- <div slot="content" v-show="itemsonson.note1">{{ itemsonson.note1 }}</div> -->
<el-input
v-model="itemsonson.note1"
disabled="disabled"
@ -107,10 +107,13 @@
(itemsonson.name === '服务接口' && showInterface)
"
>
<el-tooltip placement="top" :disabled="itemsonson.note1 !== null?false:true" :content="itemsonson.note1">
<el-input
v-model="itemsonson.note1"
disabled="disabled"
></el-input>
</el-tooltip>
</el-form-item>
</div>
<div

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-16 14:11:20
* @LastEditTime: 2022-08-23 16:38:21
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -34,7 +34,7 @@
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
// window.SITE_CONFIG['websocketURL'] = '15.72.183.90:8000/renren-admin';
window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 包头
// window.SITE_CONFIG['backUrl'] = 'http://10.110.205.1:8001';
// window.SITE_CONFIG['previewUrl'] = 'http://10.110.205.1:8002/';

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-16 09:57:33
* @LastEditTime: 2022-08-23 16:38:39
* @Description: 数据资源参数配置
*/
//const newLocation = 'qingdao'
@ -40,6 +40,7 @@ if (newLocation === 'qingdao') {
// { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' },
{ name: 'CIM专区', key: 'cimSpecialArea' },
]
footerDataList.footerList = {
company: {

View File

@ -0,0 +1,36 @@
/*
* @Author: hisense.liangjunhua
* @Date: 2022-08-19 14:25:45
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-19 15:25:03
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
// cim
export function countByType() {
return request({
url: '/resource/countByType',
method: 'get',
})
}
// cim+
export function getCIMApplyApplicationList() {
return request({
url: '/resource/getCIMApplyApplicationList',
method: 'get',
})
}
// cim+
export function cimImgResources(params) {
return request({
url: '/resource/cimImgResources?type=' + params,
method: 'get',
})
}
// cim+
export function cimAssemblyResources() {
return request({
url: '/resource/cimAssemblyResources',
method: 'get',
})
}

View File

@ -2,10 +2,11 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-13 14:54:04
* @LastEditTime: 2022-08-23 09:37:58
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
import returnLocationStr from '@/utils/location'
export function selectDicStoreAll(params) {
return request({
@ -113,16 +114,30 @@ export function lastestPage(params) {
//
export function submitApply(data) {
const newLocation = returnLocationStr()
let url = ''
if (newLocation == 'qingdao') {
url = '/ability/center/v3/apply'
} else {
url = '/ability/center/v2/apply'
}
return request({
url: '/ability/center/v2/apply',
url: url,
method: 'post',
data,
})
}
//
//
export function applyAllApplication(data) {
const newLocation = returnLocationStr()
let url = ''
if (newLocation == 'qingdao') {
url = '/ability/center/v3/applyAllApplication'
} else {
url = '/ability/center/v2/applyAllApplication'
}
return request({
url: '/ability/center/v2/applyAllApplication',
url: url,
method: 'post',
data,
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -5,7 +5,9 @@
* @LastEditTime: 2022-08-06 15:00:49
* @Description: 告诉大家这是什么
*/
import { createApp } from 'vue'
import {
createApp
} from 'vue'
import Antd from 'ant-design-vue'
import mitt from 'mitt'
import App from './App'
@ -15,7 +17,8 @@ import store from './store'
import 'ant-design-vue/dist/antd.css'
import '@/vab'
import * as echarts from 'echarts'
import * as moment from 'moment'
import * as moment from "moment"
import "dayjs/locale/zh-cn";
import vue3videoPlay from 'vue3-video-play-emiyagm' //
import 'vue3-video-play-emiyagm/dist/style.css' // css
import ElementPlus from 'element-plus'

View File

@ -405,6 +405,16 @@ export const constantRoutes = [
icon: 'error-warning-line',
},
},
// CIM
{
path: '/cimSpecialArea',
name: 'cimSpecialArea',
component: () => import('@/views/cimSpecialArea/index'),
meta: {
title: 'CIM专区',
icon: 'error-warning-line',
},
},
//
{
path: '/capabilityCloud',

View File

@ -0,0 +1,13 @@
/*
* @Author: hisense.liangjunhua
* @Date: 2022-08-22 18:22:16
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-23 09:31:02
* @Description: 告诉大家这是什么
*/
const returnLocationStr = () => {
return 'qingdao'
}
export default returnLocationStr

View File

@ -0,0 +1,87 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-08-19 10:00:16
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-19 15:55:05
* @Description: 告诉大家这是什么
-->
<template>
<div class="algorithm">
<div class="header">CIM+算法</div>
<div class="main">
<div
class="item"
v-for="val in data.list"
:key="val.id"
@click="goToView(val.id)"
>
<div class="name">{{ val.name }}</div>
<div class="img"></div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive } from 'vue'
import { cimAssemblyResources } from '@/api/cimSpecialArea'
import { useRouter } from 'vue-router'
const router = useRouter()
const data = reactive({ list: [] })
cimAssemblyResources().then((res) => {
console.log('算法================>', res.data.data)
data.list = res.data.data
})
const goToView = (id) => {
const newpage = router.resolve({
path: '/details',
query: {
id: id,
},
})
window.open(newpage.href, '_blank')
}
</script>
<style lang="less" scoped>
.algorithm {
padding: 0.7rem 1.05rem 0.5rem;
.header {
padding-bottom: 0.15rem;
border-bottom: 1px solid #bdbdbd;
font-size: 30px;
font-weight: 600;
}
.main {
padding: 0 0.93rem;
display: flex;
flex-wrap: wrap;
.item {
width: 3.39rem;
height: 1rem;
border: 2px solid #7dbbff;
border-radius: 0.2rem;
margin: 0.3rem 0.2rem 0;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.41rem 0.4rem;
transition: all 0.5s;
.name {
font-size: 26px;
color: #7dbbff;
}
.img {
width: 0.57rem;
height: 0.57rem;
background: url('~@/assets/cimSpecialArea/zj.png') no-repeat;
background-size: 100%;
}
}
.item:hover {
cursor: pointer;
width: 3.45rem;
height: 1.1rem;
margin: 0.25rem 0.17rem -0.05rem;
}
}
}
</style>

View File

@ -0,0 +1,104 @@
<template>
<div class="box">
<div class="header">
<div class="headerbox" v-for="(item, index) in headerList" :key="index">
<div>
<img :src="item.img" />
<h3>{{ item.name }}</h3>
</div>
<i></i>
<h2>{{ item.num }}</h2>
</div>
</div>
</div>
</template>
<script setup>
import { countByType } from '@/api/cimSpecialArea'
import { ref } from 'vue'
const headerList = ref([
{
name: 'CIM+平台',
img: require('@/assets/cimSpecialArea/platform.png'),
num: 0,
},
{
name: 'CIM+图层',
img: require('@/assets/cimSpecialArea/coverage.png'),
num: 0,
},
{
name: 'CIM+算法',
img: require('@/assets/cimSpecialArea/algorithm.png'),
num: 0,
},
])
countByType().then((res) => {
if (res.status === 200) {
console.log(res.data.data, '====>各个cim总数')
res.data.data.map((item) => {
if (item.type === '平台') {
headerList.value[0].num = item.count
} else if (item.type === '图层') {
headerList.value[1].num = item.count
} else if (item.type === '组件') {
headerList.value[2].num = item.count
}
})
}
})
</script>
<style lang="less" scoped>
.box {
width: 100%;
height: 3.02rem;
background: url('~@/assets/cimSpecialArea/cimBG.png') no-repeat;
display: flex;
.header {
width: 100%;
display: flex;
justify-content: center;
.headerbox {
width: 5.34rem;
height: 2rem;
border-radius: 00.08rem;
margin-top: 0.5rem;
margin-right: 0.6rem;
background: #ffffff;
display: flex;
align-items: center;
img {
width: 1.04rem;
height: 1.06rem;
}
h3 {
font-size: 20px;
color: #000000;
margin-bottom: 0;
}
h2 {
font-size: 34px;
color: #000000;
font-weight: bold;
margin-left: 1rem;
margin-bottom: 0;
}
i {
width: 0.01rem;
height: 1.15rem;
background: #cccccc;
}
}
.headerbox:last-child {
margin-right: 0;
}
.headerbox > div {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-left: 0.6rem;
margin-right: 0.85rem;
}
}
}
</style>

View File

@ -0,0 +1,280 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-08-19 10:00:16
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-19 17:07:55
* @Description: 告诉大家这是什么
-->
<template>
<div class="layer">
<div class="header">CIM+图层</div>
<div class="main">
<div class="top">
<div class="box">
<div
class="item"
v-for="(val, index) in data.resourcesList"
:class="selectResources.name == val.name ? 'select-item' : ''"
:key="val.id"
v-show="index < 6"
@click="chageResources(val)"
>
<a-tooltip>
<template #title>{{ val.name }}</template>
{{ val.name }}
</a-tooltip>
</div>
</div>
<caret-down-outlined
v-show="data.resourcesList.length > 6 && !boxFlag"
@click="showList"
/>
<caret-up-outlined
v-show="data.resourcesList.length > 6 && boxFlag"
@click="boxFlag = false"
/>
<div class="listBox" v-show="boxFlag">
<div
class="item"
v-for="(val, index) in data.resourcesList"
:class="selectResources.name == val.name ? 'select-item' : ''"
:key="val.id"
v-show="index > 5"
@click="chageResources(val)"
>
<a-tooltip>
<template #title>{{ val.name }}</template>
{{ val.name }}
</a-tooltip>
</div>
</div>
</div>
<div class="bottom">
<div class="left">
<div
class="list-item"
:class="selectDictLabel == val.dictLabel ? 'list-item-select' : ''"
v-for="val in data.dicList"
:key="val.id"
@click="selectLeft(val.dictLabel)"
>
{{ val.dictLabel }}
</div>
</div>
<div class="right">
<a-image
:width="1250"
:height="600"
:preview="false"
:src="selectResources.link || imgSrc"
:fallback="imgSrc"
@click="goToView"
/>
<div class="name">{{ selectResources.name }}</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, ref } from 'vue'
import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons-vue'
import { getCategoryTreePage } from '@/api/personalCenter'
import { cimImgResources } from '@/api/cimSpecialArea'
import { useRouter } from 'vue-router'
const router = useRouter()
const data = reactive({ dicList: [], resourcesList: [] })
const selectDictLabel = ref('')
const selectResources = ref({})
const boxFlag = ref(false)
const imgSrc = ref(require('@/assets/cimSpecialArea/tcmr.jpg'))
const selectLeft = (dictLabel) => {
boxFlag.value = false
selectDictLabel.value = dictLabel
getData(selectDictLabel.value)
}
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1560456227954102274',
}).then((res) => {
// console.log('==============>', res.data.data)
data.dicList = res.data.data.list
selectDictLabel.value = res.data.data.list[0].dictLabel
getData(selectDictLabel.value)
})
const getData = (type) => {
cimImgResources(type).then((res) => {
console.log('图层================》', res.data.data)
data.resourcesList = res.data.data
if (res.data.data.length > 0) {
selectResources.value = res.data.data[0]
} else {
selectResources.value = {}
}
})
}
const chageResources = (val) => {
selectResources.value = val
boxFlag.value = false
}
const showList = () => {
boxFlag.value = true
}
const goToView = () => {
if (selectResources.value.id) {
const newpage = router.resolve({
path: '/details',
query: {
id: selectResources.value.id,
},
})
window.open(newpage.href, '_blank')
}
}
</script>
<style lang="less" scoped>
.layer {
padding: 0.7rem 1.05rem;
background: url('~@/assets/cimSpecialArea/tcbg.png') no-repeat;
font-size: 100%;
.header {
padding-bottom: 0.15rem;
border-bottom: 1px solid #bdbdbd;
font-size: 30px;
font-weight: 600;
}
.main {
margin-top: 0.4rem;
.top {
display: flex;
flex-wrap: wrap;
text-align: center;
padding-left: 3rem;
padding-right: 1.56rem;
position: relative;
.box {
display: flex;
flex-wrap: wrap;
text-align: center;
.item {
font-size: 18px;
width: 2.08rem;
height: 30px;
padding: 0 10px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
word-break: break-all;
color: #707070;
// margin-left: 0.2rem;
}
.item:hover {
cursor: pointer;
border-radius: 10px;
background: #ddd;
}
.select-item {
font-weight: 600;
}
}
:deep(.anticon) {
cursor: pointer;
position: absolute;
top: 0.06rem;
right: 1.35rem;
}
.listBox {
width: 12.5rem;
position: absolute;
top: 0.35rem;
left: 3.2rem;
z-index: 200;
background: #fff;
border: 1px solid #000;
display: flex;
flex-wrap: wrap;
text-align: center;
.item {
font-size: 18px;
width: 2.08rem;
height: 30px;
padding: 0 10px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
word-break: break-all;
color: #707070;
// margin-left: 0.2rem;
}
.item:hover {
cursor: pointer;
border-radius: 10px;
background: #ddd;
}
.select-item {
font-weight: 600;
}
}
}
.bottom {
margin-top: 0.2rem;
padding: 0 1.1rem;
display: flex;
.left {
width: 1.5rem;
text-align: center;
border-right: 1px solid #ccc;
.list-item {
height: 0.3rem;
line-height: 0.3rem;
font-size: 20px;
margin-bottom: 0.35rem;
color: #707070;
border-right: 1px solid #fff;
}
.list-item:hover {
cursor: pointer;
color: #6771fa;
}
.list-item-select,
.list-item-select:hover {
border-right: 1px solid #2433ff;
color: #2433ff;
font-weight: 600;
}
}
.right {
flex: 1;
height: 6rem;
margin-left: 40px;
position: relative;
// background: #ccc;
.name {
width: 100%;
height: 0.75rem;
line-height: 0.75rem;
padding-left: 0.2rem;
background: rgba(255, 255, 255, 0.58);
font-size: 30px;
font-weight: 600;
color: #707070;
position: absolute;
top: 0;
left: 0;
}
:deep(.ant-image-img) {
cursor: pointer;
width: 100%;
height: 100%;
object-fit: contain;
}
}
}
}
}
</style>

View File

@ -0,0 +1,121 @@
<template>
<div class="box">
<div>
<h1>CIM+平台</h1>
<div>
<swiper
:slidesPerView="3"
:spaceBetween="30"
:pagination="{ clickable: true }"
:modules="modules"
class="mySwiper"
@swiper="onSwiper"
@slideChange="onSlideChange"
>
<swiper-slide v-for="item in platformList" :key="item.id">
<div class="platformBox">
<h2>{{ item.name }}</h2>
<a-image
:preview="false"
:src="item.pic"
:fallback="item.pic2"
@click.stop="toView(item)"
/>
<a-tooltip>
<template #title>{{ item.description }}</template>
<p>{{ item.description }}</p>
</a-tooltip>
</div>
</swiper-slide>
</swiper>
</div>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { Pagination } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue/swiper-vue.js'
import 'swiper/swiper-bundle.min.css'
import { getCIMApplyApplicationList } from '@/api/cimSpecialArea'
import { useRouter } from 'vue-router'
const router = useRouter()
const modules = ref([Pagination])
const platformList = ref([])
getCIMApplyApplicationList().then((res) => {
if (res.status === 200) {
res.data.data.map((val) => {
if (!val.pic) {
val.pic = require('@/assets/capacitySquare/yyzy.jpg')
}
val.pic2 = require('@/assets/capacitySquare/yyzy.jpg')
})
console.log(res.data.data, '====>平台')
platformList.value.push(...res.data.data)
}
})
const toView = (data) => {
console.log('111111111111111111===========>', data)
const newpage = router.resolve({
path: '/details',
query: {
id: data.id,
},
})
window.open(newpage.href, '_blank')
}
</script>
<style lang="less" scoped>
.box {
width: 100%;
background: #f1f4fb;
padding: 0 1.05rem 0.2rem;
h1 {
font-size: 0.3rem;
color: #000000;
font-weight: bold;
padding: 0.35rem 0 0.15rem;
margin-bottom: 0.2rem;
border-bottom: 0.01rem solid #bcbdbd;
}
.platformBox {
width: 5.34rem;
height: 5.65rem;
padding: 0.28rem 0.35rem;
// border: 0.03rem solid #0077ff;
margin-right: 0.56rem;
background: url('~@/assets/cimSpecialArea/imgBG.png') no-repeat;
background-size: 100%;
h2 {
font-size: 0.2rem;
color: #000000;
margin-bottom: 0.28rem;
}
:deep(.ant-image) {
width: 4.5rem;
height: 2.8rem;
line-height: 2.8rem;
cursor: pointer;
}
:deep(.ant-image-img) {
}
p {
font-size: 0.18rem;
margin: 0.2rem 0 0;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
word-break: break-all;
}
}
:deep(.swiper) {
height: 5.9rem;
}
:deep(.swiper-horizontal
> .swiper-pagination-bullets, .swiper-pagination-bullets.swiper-pagination-horizontal, .swiper-pagination-custom, .swiper-pagination-fraction) {
bottom: -0.05rem;
}
}
</style>

View File

@ -0,0 +1,30 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-08-09 11:32:47
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-19 10:09:58
* @Description: 告诉大家这是什么
-->
<template>
<div class="cimSpecialArea">
<home-header></home-header>
<cimHead></cimHead>
<platform></platform>
<layer></layer>
<algorithm></algorithm>
<home-footer></home-footer>
</div>
</template>
<script setup>
import HomeHeader from '@/views/home/components/header'
import cimHead from './components/cimHead'
import platform from './components/platform'
import layer from './components/layer'
import algorithm from './components/algorithm'
import HomeFooter from '@/views/newHome/components/Footer'
</script>
<style lang="less" scoped>
.cimSpecialArea {
padding-top: 0.64rem;
}
</style>

View File

@ -41,10 +41,14 @@
<div class="content-left-content">
<p>
<span>{{ item.linkPlatform.name }}</span>
<a-tooltip>
<a-tooltip v-if="approveStatus == '通过'">
<template #title>{{ item.linkPlatform.value }}</template>
<span>{{ item.linkPlatform.value }}</span>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看平台地址</template>
<span>****************</span>
</a-tooltip>
</p>
</div>
</div>
@ -129,6 +133,7 @@
import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
const approveStatus = ref('')
let dataFrom = ref({
title: '使用方式',
englishTitle: 'USAGE',
@ -183,6 +188,7 @@
dataFrom.value.content[0].people.value = props.dataList.deptContacts
dataFrom.value.content[0].phone.value = props.dataList.deptPhone
dataFrom.value.content[0].postMethod.value = props.dataList.apiMethodType
approveStatus.value = props.dataList.approveStatus
console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => {
if (item.attrType === '组件地址') {
@ -218,6 +224,7 @@
dataFrom.value.content[0].people.value = val.deptContacts
dataFrom.value.content[0].phone.value = val.deptPhone
dataFrom.value.content[0].postMethod.value = val.apiMethodType
approveStatus.value = val.approveStatus
console.log('dataList', val)
val.infoList.map((item) => {
if (item.attrType === '组件地址') {

View File

@ -310,12 +310,13 @@
: list.value[0].arr && list.value[0].arr[0].type == '单兵设备'
? '单兵设备申请'
: list.value[0].children
? list.value[0].children
? '申请' +
list.value[0].children
.filter((val) => val.id == list.value[0].checkedList[0])[0]
.resourceName.concat(
num.value > 1 ? '等能力申请' + num.value + '个' : '能力申请'
num.value > 1 ? '等' + num.value + '项能力' : ''
)
: list.value[0].arr[0].resourceName.concat('能力申请'), //
: '申请' + list.value[0].arr[0].resourceName, //
applicationSystem: '', //
// applicationSystem: [], //
applicationScene: [], //

View File

@ -3,7 +3,7 @@
class="home-header"
:class="[
select !== 'home' || scrollTop > 500 ? 'white' : '',
props.showView === 'algorithm-details' ? 'blue' : '',
props.showView === 'algorithm-details' ? '' : '',
]"
>
<div class="name" @click="goToHome">
@ -38,7 +38,7 @@
>
<path
d="M384 832v85.333333h-85.333333v-85.333333h85.333333z m405.333333 0v85.333333h-85.333333v-85.333333h85.333333zM240.32 185.002667l24.149333 140.928h633.173334L835.285333 746.666667h-563.626666l-85.333334-497.685334H94.485333v-64h145.834667z m583.104 204.928H275.434667L325.632 682.666667h454.464l43.328-292.736z"
:fill="props.showView === 'algorithm-details' ? '#fff' : '#1296db'"
:fill="props.showView === 'algorithm-details' ? '#1296db' : '#1296db'"
p-id="2070"
></path>
</svg>
@ -58,7 +58,7 @@
>
<path
d="M544 161.536a330.666667 330.666667 0 0 1 298.666667 329.130667h-0.341334c0.213333 1.493333 0.341333 2.986667 0.341334 4.565333v219.434667h39.68a32 32 0 0 1 0 64h-212.053334a160 160 0 0 1-316.586666 0H141.909333a32 32 0 1 1 0-64h39.424v-219.434667c0-1.578667 0.128-3.072 0.341334-4.565333H181.333333a330.666667 330.666667 0 0 1 298.666667-329.130667V128a32 32 0 1 1 64 0v33.536z m-298.666667 553.130667h533.333334v-219.434667c0-1.578667 0.128-3.072 0.341333-4.565333h-0.341333a266.666667 266.666667 0 1 0-533.333334 0h-0.341333c0.213333 1.493333 0.341333 2.986667 0.341333 4.565333v219.434667z m359.765334 64H418.901333a96 96 0 0 0 186.197334 0z"
:fill="props.showView === 'algorithm-details' ? '#fff' : '#1296db'"
:fill="props.showView === 'algorithm-details' ? '#1296db' : '#1296db'"
p-id="2188"
></path>
</svg>
@ -97,7 +97,7 @@
</span>
</a-tooltip>
<span @click="logout" class="out">退出</span>
<svg
<!-- <svg
t="1655286092324"
class="icon"
viewBox="0 0 1024 1024"
@ -114,7 +114,11 @@
p-id="2161"
fill="#bfbfbf"
></path>
</svg>
</svg> -->
<i
@click="jumpPage({ name: '后台管理', key: 'houtaiguanli' })"
class="iconTo"
></i>
</div>
</div>
</template>
@ -252,6 +256,11 @@
},
})
break
case 'CIM专区':
router.push({
path: '/cimSpecialArea',
})
break
default:
router.push('/home')
break
@ -505,7 +514,7 @@
border-radius: 0.05rem;
position: absolute;
top: 0.45rem;
right: 2.9rem;
right: 2.4rem;
overflow-y: scroll;
.bottom {
cursor: pointer;
@ -547,6 +556,13 @@
}
}
}
.iconTo {
display: block;
width: 0.35rem;
height: 0.35rem;
background: url('~@/assets/newHome/iconTo.png') no-repeat;
cursor: pointer;
}
</style>
<style>
html::-webkit-scrollbar {

View File

@ -78,11 +78,17 @@
v-model:value="roomCreateTime"
placeholder="开始时间"
value-format="HH:mm:ss"
:disabledHours="disabledStartHours"
:disabledMinutes="disabledStartMinutes"
:disabledSeconds="disabledStartSeconds"
/>
<a-time-picker
v-model:value="roomEndTime"
placeholder="结束时间"
value-format="HH:mm:ss"
:disabledHours="disabledEndHours"
:disabledMinutes="disabledEndMinutes"
:disabledSeconds="disabledEndSeconds"
/>
</a-space>
</div>
@ -102,8 +108,8 @@
<div class="topContent">{{ item.name }}</div>
<div class="centerContent">
<span>房间号{{ item.num }}</span>
<span>可容纳人数{{ item.capacity }}</span>
<span>面积{{ item.area }}</span>
<span>可容纳人数{{ item.capacity }}</span>
<span>面积{{ item.area }}</span>
</div>
<div class="bottonmContent">
{{ item.description }}
@ -291,6 +297,9 @@
v-model:value="formState.startTime"
placeholder="开始时间"
value-format="HH:mm:ss"
:disabledHours="disabledTimeHours"
:disabledMinutes="disabledTimeMinutes"
:disabledSeconds="disabledTimeSeconds"
/>
</a-form-item>
</a-col>
@ -299,6 +308,9 @@
v-model:value="formState.endTime"
placeholder="结束时间"
value-format="HH:mm:ss"
:disabledHours="disabledTimeEndHours"
:disabledMinutes="disabledTimeEndMinutes"
:disabledSeconds="disabledTimeEndSeconds"
/>
</a-col>
</a-row>
@ -641,6 +653,7 @@
import mybus from '@/myplugins/mybus'
import dayjs from 'dayjs'
import { Form } from 'ant-design-vue'
import moment from 'moment'
const props = defineProps({
//
searchValue: { type: String, default: '' },
@ -739,12 +752,7 @@
message: '请输入预约人',
},
],
matter: [
{
required: true,
message: '请输入内容',
},
],
matter: [{ min: 1, max: 500, required: true, message: '可输入500字内容' }],
phone: [
{
required: true,
@ -949,6 +957,168 @@
searchData()
chengguoSearch()
}
// ----
//
const disabledStartHours = () => {
if (roomEndTime.value) {
let hours = []
let hour = moment().hour()
for (let i = hour + 1; i < 24; i++) {
hours.push(i)
}
return hours
}
}
//
const disabledStartMinutes = (selectedHour) => {
if (roomEndTime) {
let minutes = []
let hour = moment().hour()
let minute = moment().minute()
if (selectedHour === hour) {
for (let i = minute + 1; i < 60; i++) {
minutes.push(i)
}
}
return minutes
}
}
//
const disabledStartSeconds = (selectedHour, selectedMinute) => {
if (roomEndTime) {
let seconds = []
let hour = moment().hour()
let minute = moment().minute()
let second = moment().second()
if (selectedHour === hour && selectedMinute.value === minute) {
for (let i = second + 1; i < 60; i++) {
seconds.push(i)
}
}
return seconds
}
}
//
const disabledEndHours = () => {
if (roomCreateTime.value) {
let hours = []
let hour = moment().hour()
for (let i = 0; i < hour; i++) {
hours.push(i)
}
return hours
}
}
//
const disabledEndMinutes = (selectedHour) => {
if (roomCreateTime) {
let minutes = []
let hour = moment().hour()
let minute = moment().minute()
if (selectedHour === hour) {
for (let i = 0; i < minute; i++) {
minutes.push(i)
}
}
return minutes
}
}
//
const disabledEndSeconds = (selectedHour, selectedMinute) => {
if (roomCreateTime) {
let seconds = []
let hour = moment().hour()
let minute = moment().minute()
let second = moment().second()
if (selectedHour === hour && selectedMinute.value === minute) {
for (let i = 0; i < second; i++) {
seconds.push(i)
}
}
return seconds
}
}
// ----
//
const disabledTimeHours = () => {
if (formState.endTime) {
let hours = []
let hour = moment().hour()
for (let i = hour + 1; i < 24; i++) {
hours.push(i)
}
return hours
}
}
//
const disabledTimeMinutes = (selectedHour) => {
if (formState.endTime) {
let minutes = []
let hour = moment().hour()
let minute = moment().minute()
if (selectedHour === hour) {
for (let i = minute + 1; i < 60; i++) {
minutes.push(i)
}
}
return minutes
}
}
//
const disabledTimeSeconds = (selectedHour, selectedMinute) => {
if (formState.endTime) {
let seconds = []
let hour = moment().hour()
let minute = moment().minute()
let second = moment().second()
if (selectedHour === hour && selectedMinute.value === minute) {
for (let i = second + 1; i < 60; i++) {
seconds.push(i)
}
}
return seconds
}
}
//
const disabledTimeEndHours = () => {
if (formState.startTime) {
let hours = []
let hour = moment().hour()
for (let i = 0; i < hour; i++) {
hours.push(i)
}
return hours
}
}
//
const disabledTimeEndMinutes = (selectedHour) => {
if (formState.startTime) {
let minutes = []
let hour = moment().hour()
let minute = moment().minute()
if (selectedHour === hour) {
for (let i = 0; i < minute; i++) {
minutes.push(i)
}
}
return minutes
}
}
//
const disabledTimeEndSeconds = (selectedHour, selectedMinute) => {
if (formState.startTime) {
let seconds = []
let hour = moment().hour()
let minute = moment().minute()
let second = moment().second()
if (selectedHour === hour && selectedMinute.value === minute) {
for (let i = 0; i < second; i++) {
seconds.push(i)
}
}
return seconds
}
}
//
const onRoomChange = (pageNumber) => {
roomPage.value = pageNumber

View File

@ -171,7 +171,7 @@
width="12.1rem"
@ok="del()"
@cancel="reason = ''"
footer="{}"
footer=""
>
<TheShelvesAbility v-if="visible" :delObj="delObj"></TheShelvesAbility>
<!-- <a-input v-model:value="reason" placeholder="请输入下架原因" /> -->
@ -457,7 +457,11 @@
const del = () => {
console.log('下架================》', delObj.value)
undercarriage({
reason: reason.value,
reason: delObj2.value.reason,
title: delObj2.value.title,
phone: delObj2.value.phone,
enclosure: delObj2.value.fileList[0].response.data,
enclosureName: delObj2.value.fileList[0].name,
resource: [
{ resourceId: delObj.value.id, resourceName: delObj.value.name },
],
@ -479,8 +483,8 @@
})
//
mybus.on('Determine', (val) => {
delObj.value.name = val.title
reason.value = val.reason
console.log('下架==============》', val)
delObj2.value = val
del()
})
onBeforeUnmount(() => {
@ -490,6 +494,7 @@
const reason = ref('')
const visible = ref(false)
const delObj = ref({})
const delObj2 = ref({})
const showModal = (item) => {
if (item.delFlag == 0) {
delObj.value = item

View File

@ -263,7 +263,7 @@
getUserInfo().then((res) => {
formName.value.title = props.delObj.name
formName.value.user = res.data.data.realName
formName.value.phone = props.delObj.deptPhone
formName.value.phone = props.delObj.mobile
// formName.value.fileList = props.delObj.undercarriageEnclosure
deptIdQuery(res.data.data.deptId).then((resValue) => {
formName.value.unit = resValue.data.data.name