Compare commits

...

6 Commits

Author SHA1 Message Date
a0049873 2da122302f Merge branch 'hi-ucs-dev' into release 2023-01-06 11:41:37 +08:00
a0049873 28ed97e816 设计报表开发 2023-01-06 11:31:10 +08:00
gongjiale 04ce2dbd88 赋能场景修改 2023-01-06 11:07:31 +08:00
gongjiale f0b737396b 修改赋能场景bug 2023-01-06 10:54:09 +08:00
gongjiale 0df1914eb3 提交 2023-01-05 16:30:32 +08:00
gongjiale c0bb1422b1 融合服务修改 2023-01-05 16:20:48 +08:00
20 changed files with 1161 additions and 673 deletions

BIN
back/src/assets/img/del.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -41,7 +41,7 @@
<el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl" <el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
:on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1" :on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1"
:file-list="[]" :on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture"> :file-list="[]" :on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture">
<div slot="tip" class="el-upload__tip">只能上传图片文件</div> <div slot="tip" class="el-upload__tip">只能上传图片文件格式为jpg/png</div>
<div class="button-new"> <div class="button-new">
<div>点击上传</div> <div>点击上传</div>
</div> </div>
@ -299,7 +299,7 @@ export default {
file.type === 'image/jpg' || file.type === 'image/jpg' ||
file.type === 'image/png' file.type === 'image/png'
if (!isImage) { if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!') this.$message.error('上传图片只能是 jpg/png 格式!')
} }
return isImage return isImage
}, },
@ -314,7 +314,7 @@ export default {
file.type === 'image/png' file.type === 'image/png'
if (!isImage) { if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!') this.$message.error('上传图片只能是 jpg/png 格式!')
} }
return isImage return isImage
}, },

View File

@ -56,7 +56,7 @@
<el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl" <el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
:on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1" :on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1"
:file-list="[]" :on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture"> :file-list="[]" :on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture">
<div slot="tip" class="el-upload__tip">只能上传图片文件</div> <div slot="tip" class="el-upload__tip">只能上传图片文件格式为jpg/png</div>
<div class="button-new"> <div class="button-new">
<div>点击上传</div> <div>点击上传</div>
</div> </div>
@ -458,7 +458,7 @@ export default {
file.type === 'image/jpg' || file.type === 'image/jpg' ||
file.type === 'image/png' file.type === 'image/png'
if (!isImage) { if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!') this.$message.error('上传图片只能是 jpg/png 格式!')
} }
return isImage return isImage
}, },
@ -473,7 +473,7 @@ export default {
file.type === 'image/png' file.type === 'image/png'
if (!isImage) { if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!') this.$message.error('上传图片只能是 jpg/png 格式!')
} }
return isImage return isImage
}, },

View File

@ -61,11 +61,20 @@
</el-table-column> </el-table-column>
<el-table-column label="操作"> <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<span <el-popconfirm
style="color: #0058e1" confirm-button-text="确认"
@click="handleDelete(scope.$index, scope.row)" cancel-button-text="不用了"
>删除</span icon="el-icon-info"
icon-color="red"
title="确定删除该实例数据吗?"
@confirm="handleDelete(scope.$index, scope.row)"
> >
<el-button
type="danger"
icon="el-icon-delete"
slot="reference"
></el-button>
</el-popconfirm>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -15,7 +15,7 @@
style="color:red;margin-left: 6px;" style="color:red;margin-left: 6px;"
@click="deleteItem(index)" type="danger" size="small" @click="deleteItem(index)" type="danger" size="small"
v-if="dataInfo.length > 1" v-if="dataInfo.length > 1"
src="~@/assets/img/deleteRed.png" src="~@/assets/img/del.png"
alt="" alt=""
/> />
<!-- <el-button style="margin-left:10px" >删除 <!-- <el-button style="margin-left:10px" >删除

View File

@ -16,7 +16,7 @@
type="danger" type="danger"
size="small" size="small"
v-if="!disabledType && dataInfo.length > 1" v-if="!disabledType && dataInfo.length > 1"
src="~@/assets/img/deleteRed.png" src="~@/assets/img/del.png"
alt="" alt=""
/> />
</div> </div>
@ -31,18 +31,28 @@
v-if="index != item.answer.length - 1" v-if="index != item.answer.length - 1"
v-model="itemson.answer" v-model="itemson.answer"
placeholder="请输入步骤小节" placeholder="请输入步骤小节"
style="width: 200px" style="width: 160px"
:disabled="disabledType" :disabled="disabledType"
> >
</el-input> </el-input>
<img
style="color: red; margin-left: 6px"
@click="deleteItem1(item.answer,index)"
type="danger"
size="small"
v-if="!disabledType && index != item.answer.length - 1"
src="~@/assets/img/del.png"
alt=""
/>
<div v-else style="display: inline"> <div v-else style="display: inline">
<el-input <el-input
v-model="itemson.answer" v-model="itemson.answer"
placeholder="请输入步骤小节" placeholder="请输入步骤小节"
style="width: 200px" style="width: 160px"
:disabled="disabledType" :disabled="disabledType"
> >
</el-input> </el-input>
<div class="submit1"> <div class="submit1">
<a-button type="primary" @click="addAnswerItem(item.answer)"> <a-button type="primary" @click="addAnswerItem(item.answer)">
<img <img
@ -55,22 +65,7 @@
</div> </div>
</div> </div>
</div> </div>
<!-- <a-button type="primary" v-if="!disabledType && index == dataInfo.length - 1"
@click="addItem">
<img
style="height: 12px; width: 12px;margin-top: -2px;"
src="~@/assets/img/jiahao.png"
alt=""
/>
<span style="margin-left: 4px">添加小节</span>
</a-button> -->
<!-- <div class="question-box-right">
<span>步骤小节: </span>
<el-input v-model="itemson.answer" placeholder="请输入步骤小节" style="width:200px"
:disabled="disabledType">
</el-input>
</div> -->
</div> </div>
<div class="submit"> <div class="submit">
@ -89,33 +84,7 @@
</div> </div>
</div> </div>
<!-- <div class="question-box">
<div v-for="(item, index) in dataInfo" :key="index">
<el-form-item label="步骤标题" prop="question">
<el-input v-model="item.question" placeholder="请输入标题" style="width:90%" :disabled="disabledType">
</el-input>
</el-form-item>
<el-form-item label="步骤" prop="question">
<el-input type="textarea" :rows="3" v-model="item.answer" placeholder="请输入解释说明" style="width:90%"
:disabled="disabledType">
</el-input>
<el-button style="margin-left:10px" @click="deleteItem(index)" type="danger" size="small"
v-if="!disabledType && dataInfo.length > 1">删除
</el-button>
</el-form-item>
<el-button class="add-btn" size="small" v-if="!disabledType && index == dataInfo.length - 1"
@click="addItem" type="primary">添加
</el-button>
</div> -->
<!-- <div class="step-box">
<el-steps :active="2">
<el-step status="finish" :title="item.question || `标题${index + 1}`" v-for="(item, index) in dataInfo"
:key="index">
</el-step>
</el-steps>
</div> -->
</div> </div>
</template> </template>
<script> <script>
@ -207,6 +176,22 @@ export default {
}) })
.catch(() => {}); .catch(() => {});
}, },
//
deleteItem1(item,index) {
this.$confirm("确认是否删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$message({
type: "success",
message: "删除成功!",
});
item.splice(index,1)
})
.catch(() => {});
},
}, },
}; };
</script> </script>
@ -262,7 +247,7 @@ export default {
} }
.question-box { .question-box {
float: left; float: left;
width: 42%; width: 295px;
} }
.question-box1 { .question-box1 {
float: left; float: left;

View File

@ -0,0 +1,292 @@
<!--
* @Author: Light
* @Date: 2023-01-04 16:29:33
* @LastEditors: Light
* @LastEditTime: 2023-01-06 10:50:23
* @Description: 数据统计
-->
<template>
<div class="data-statistics-box">
<div class="top">
<div class="item" v-for="item in topData" :key="item.type">
<div class="left">
<div>{{ item.type }}</div>
<div><span>{{ item.count }}</span></div>
</div>
<div class="right">
<div>
较上周<span>{{ item.weekly_change }}</span>
<svg v-if="item.weekly_change>0" t="1672972210380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28931" width="15" height="15"><path d="M470.016 976.896q-44.032 0-59.392-20.48t-15.36-65.536q0-20.48-0.512-64.512t-1.024-93.696-1.536-96.768-1.024-74.752q0-39.936-7.68-62.464t-35.328-21.504q-20.48 0-48.64-1.024t-49.664 0q-35.84 0-45.568-19.456t13.824-50.176q24.576-30.72 57.344-72.704t67.584-86.016 68.096-87.04 58.88-75.776q23.552-29.696 45.568-30.72t46.592 26.624q24.576 29.696 56.832 69.632t67.072 82.432 68.608 83.968 60.416 73.216q29.696 35.84 23.04 58.88t-43.52 23.04q-11.264 0-25.088 0.512t-29.184 1.024-30.208 1.024-27.136 0.512q-25.6 1.024-32.256 16.384t-5.632 41.984q0 29.696 0.512 77.824t1.024 100.352 1.536 101.376 1.024 79.872q0 13.312-2.048 27.648t-9.728 26.112-21.504 19.968-36.352 8.192q-27.648 0-52.736 0.512t-56.832 1.536z" p-id="28932" fill="#67c23a"></path></svg>
<svg v-else-if="item.weekly_change==0" t="1672902733121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5742" width="15" height="15"><path d="M152 560 152 464 472 464 472 560 152 560ZM552 560 552 464 872 464 872 560 552 560Z" fill="#409eff" p-id="5743"></path></svg>
<svg v-else t="1672972414152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29200" width="15" height="15"><path d="M564.224 44.032q43.008 0 58.368 20.48t15.36 65.536q0 20.48 0.512 64.512t0.512 93.696 0.512 96.768 0.512 74.752q0 38.912 7.68 61.952t35.328 22.016q19.456 0 48.128 1.024t49.152 1.024q35.84 0 45.568 18.944t-13.824 49.664q-24.576 30.72-57.344 72.704t-68.096 86.016-69.12 86.528-59.392 75.264q-23.552 29.696-45.568 30.72t-45.568-27.648q-24.576-29.696-57.344-69.632t-67.072-82.432-67.584-83.968-59.904-74.24q-29.696-35.84-22.528-58.88t44.032-23.04l24.576 0q14.336 0 29.696-0.512t30.208-1.536 26.112-1.024q26.624 0 32.768-15.36t6.144-41.984q0-29.696-0.512-77.824t-0.512-100.352-0.512-101.376-0.512-79.872q0-13.312 2.048-27.648t9.728-26.112 20.992-19.456 36.864-7.68q27.648 0 53.248-0.512t57.344-0.512z" p-id="29201" fill="#f56c6c"></path></svg>
</div>
<div>
较上月<span>{{ item.month_change }}</span>
<svg v-if="item.month_change>0" t="1672972210380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28931" width="15" height="15"><path d="M470.016 976.896q-44.032 0-59.392-20.48t-15.36-65.536q0-20.48-0.512-64.512t-1.024-93.696-1.536-96.768-1.024-74.752q0-39.936-7.68-62.464t-35.328-21.504q-20.48 0-48.64-1.024t-49.664 0q-35.84 0-45.568-19.456t13.824-50.176q24.576-30.72 57.344-72.704t67.584-86.016 68.096-87.04 58.88-75.776q23.552-29.696 45.568-30.72t46.592 26.624q24.576 29.696 56.832 69.632t67.072 82.432 68.608 83.968 60.416 73.216q29.696 35.84 23.04 58.88t-43.52 23.04q-11.264 0-25.088 0.512t-29.184 1.024-30.208 1.024-27.136 0.512q-25.6 1.024-32.256 16.384t-5.632 41.984q0 29.696 0.512 77.824t1.024 100.352 1.536 101.376 1.024 79.872q0 13.312-2.048 27.648t-9.728 26.112-21.504 19.968-36.352 8.192q-27.648 0-52.736 0.512t-56.832 1.536z" p-id="28932" fill="#67c23a"></path></svg>
<svg v-else-if="item.month_change==0" t="1672902733121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5742" width="15" height="15"><path d="M152 560 152 464 472 464 472 560 152 560ZM552 560 552 464 872 464 872 560 552 560Z" fill="#409eff" p-id="5743"></path></svg>
<svg v-else t="1672972414152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29200" width="15" height="15"><path d="M564.224 44.032q43.008 0 58.368 20.48t15.36 65.536q0 20.48 0.512 64.512t0.512 93.696 0.512 96.768 0.512 74.752q0 38.912 7.68 61.952t35.328 22.016q19.456 0 48.128 1.024t49.152 1.024q35.84 0 45.568 18.944t-13.824 49.664q-24.576 30.72-57.344 72.704t-68.096 86.016-69.12 86.528-59.392 75.264q-23.552 29.696-45.568 30.72t-45.568-27.648q-24.576-29.696-57.344-69.632t-67.072-82.432-67.584-83.968-59.904-74.24q-29.696-35.84-22.528-58.88t44.032-23.04l24.576 0q14.336 0 29.696-0.512t30.208-1.536 26.112-1.024q26.624 0 32.768-15.36t6.144-41.984q0-29.696-0.512-77.824t-0.512-100.352-0.512-101.376-0.512-79.872q0-13.312 2.048-27.648t9.728-26.112 20.992-19.456 36.864-7.68q27.648 0 53.248-0.512t57.344-0.512z" p-id="29201" fill="#f56c6c"></path></svg>
</div>
</div>
<el-image
:style="'width: ' + imgConfig[item.type].size + ' height: ' + imgConfig[item.type].size + ' position: absolute; bottom:' + imgConfig[item.type].bottom + ' right: '+imgConfig[item.type].right"
:src="imgConfig[item.type].url"
:fit="cover"></el-image>
</div>
</div>
<div class="bottom">
<div class="item-box" v-for="item in bottomData" :key="item.tip">
<div class="name">
<div>{{ item.tip }}<span>{{ item.dept_count }}</span></div>
</div>
<div class="item">
<div class="left">
<div>能力上架</div>
<div><span>{{ item.resource_sum }}</span></div>
</div>
<div class="right">
<div>
较上周<span>{{ item.resource_weekly_change }}</span>
<svg v-if="item.resource_weekly_change>0" t="1672972210380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28931" width="15" height="15"><path d="M470.016 976.896q-44.032 0-59.392-20.48t-15.36-65.536q0-20.48-0.512-64.512t-1.024-93.696-1.536-96.768-1.024-74.752q0-39.936-7.68-62.464t-35.328-21.504q-20.48 0-48.64-1.024t-49.664 0q-35.84 0-45.568-19.456t13.824-50.176q24.576-30.72 57.344-72.704t67.584-86.016 68.096-87.04 58.88-75.776q23.552-29.696 45.568-30.72t46.592 26.624q24.576 29.696 56.832 69.632t67.072 82.432 68.608 83.968 60.416 73.216q29.696 35.84 23.04 58.88t-43.52 23.04q-11.264 0-25.088 0.512t-29.184 1.024-30.208 1.024-27.136 0.512q-25.6 1.024-32.256 16.384t-5.632 41.984q0 29.696 0.512 77.824t1.024 100.352 1.536 101.376 1.024 79.872q0 13.312-2.048 27.648t-9.728 26.112-21.504 19.968-36.352 8.192q-27.648 0-52.736 0.512t-56.832 1.536z" p-id="28932" fill="#67c23a"></path></svg>
<svg v-else-if="item.resource_weekly_change==0" t="1672902733121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5742" width="15" height="15"><path d="M152 560 152 464 472 464 472 560 152 560ZM552 560 552 464 872 464 872 560 552 560Z" fill="#409eff" p-id="5743"></path></svg>
<svg v-else t="1672972414152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29200" width="15" height="15"><path d="M564.224 44.032q43.008 0 58.368 20.48t15.36 65.536q0 20.48 0.512 64.512t0.512 93.696 0.512 96.768 0.512 74.752q0 38.912 7.68 61.952t35.328 22.016q19.456 0 48.128 1.024t49.152 1.024q35.84 0 45.568 18.944t-13.824 49.664q-24.576 30.72-57.344 72.704t-68.096 86.016-69.12 86.528-59.392 75.264q-23.552 29.696-45.568 30.72t-45.568-27.648q-24.576-29.696-57.344-69.632t-67.072-82.432-67.584-83.968-59.904-74.24q-29.696-35.84-22.528-58.88t44.032-23.04l24.576 0q14.336 0 29.696-0.512t30.208-1.536 26.112-1.024q26.624 0 32.768-15.36t6.144-41.984q0-29.696-0.512-77.824t-0.512-100.352-0.512-101.376-0.512-79.872q0-13.312 2.048-27.648t9.728-26.112 20.992-19.456 36.864-7.68q27.648 0 53.248-0.512t57.344-0.512z" p-id="29201" fill="#f56c6c"></path></svg>
</div>
<div>
较上月<span>{{ item.resource_month_change }}</span>
<svg v-if="item.resource_month_change>0" t="1672972210380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28931" width="15" height="15"><path d="M470.016 976.896q-44.032 0-59.392-20.48t-15.36-65.536q0-20.48-0.512-64.512t-1.024-93.696-1.536-96.768-1.024-74.752q0-39.936-7.68-62.464t-35.328-21.504q-20.48 0-48.64-1.024t-49.664 0q-35.84 0-45.568-19.456t13.824-50.176q24.576-30.72 57.344-72.704t67.584-86.016 68.096-87.04 58.88-75.776q23.552-29.696 45.568-30.72t46.592 26.624q24.576 29.696 56.832 69.632t67.072 82.432 68.608 83.968 60.416 73.216q29.696 35.84 23.04 58.88t-43.52 23.04q-11.264 0-25.088 0.512t-29.184 1.024-30.208 1.024-27.136 0.512q-25.6 1.024-32.256 16.384t-5.632 41.984q0 29.696 0.512 77.824t1.024 100.352 1.536 101.376 1.024 79.872q0 13.312-2.048 27.648t-9.728 26.112-21.504 19.968-36.352 8.192q-27.648 0-52.736 0.512t-56.832 1.536z" p-id="28932" fill="#67c23a"></path></svg>
<svg v-else-if="item.resource_month_change==0" t="1672902733121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5742" width="15" height="15"><path d="M152 560 152 464 472 464 472 560 152 560ZM552 560 552 464 872 464 872 560 552 560Z" fill="#409eff" p-id="5743"></path></svg>
<svg v-else t="1672972414152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29200" width="15" height="15"><path d="M564.224 44.032q43.008 0 58.368 20.48t15.36 65.536q0 20.48 0.512 64.512t0.512 93.696 0.512 96.768 0.512 74.752q0 38.912 7.68 61.952t35.328 22.016q19.456 0 48.128 1.024t49.152 1.024q35.84 0 45.568 18.944t-13.824 49.664q-24.576 30.72-57.344 72.704t-68.096 86.016-69.12 86.528-59.392 75.264q-23.552 29.696-45.568 30.72t-45.568-27.648q-24.576-29.696-57.344-69.632t-67.072-82.432-67.584-83.968-59.904-74.24q-29.696-35.84-22.528-58.88t44.032-23.04l24.576 0q14.336 0 29.696-0.512t30.208-1.536 26.112-1.024q26.624 0 32.768-15.36t6.144-41.984q0-29.696-0.512-77.824t-0.512-100.352-0.512-101.376-0.512-79.872q0-13.312 2.048-27.648t9.728-26.112 20.992-19.456 36.864-7.68q27.648 0 53.248-0.512t57.344-0.512z" p-id="29201" fill="#f56c6c"></path></svg>
</div>
</div>
</div>
<div class="item">
<div class="left">
<div>能力申请</div>
<div><span>{{ item.apply_sum }}</span></div>
</div>
<div class="right">
<div>
较上周<span>{{ item.apply_weekly_change }}</span>
<svg v-if="item.apply_weekly_change>0" t="1672972210380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28931" width="15" height="15"><path d="M470.016 976.896q-44.032 0-59.392-20.48t-15.36-65.536q0-20.48-0.512-64.512t-1.024-93.696-1.536-96.768-1.024-74.752q0-39.936-7.68-62.464t-35.328-21.504q-20.48 0-48.64-1.024t-49.664 0q-35.84 0-45.568-19.456t13.824-50.176q24.576-30.72 57.344-72.704t67.584-86.016 68.096-87.04 58.88-75.776q23.552-29.696 45.568-30.72t46.592 26.624q24.576 29.696 56.832 69.632t67.072 82.432 68.608 83.968 60.416 73.216q29.696 35.84 23.04 58.88t-43.52 23.04q-11.264 0-25.088 0.512t-29.184 1.024-30.208 1.024-27.136 0.512q-25.6 1.024-32.256 16.384t-5.632 41.984q0 29.696 0.512 77.824t1.024 100.352 1.536 101.376 1.024 79.872q0 13.312-2.048 27.648t-9.728 26.112-21.504 19.968-36.352 8.192q-27.648 0-52.736 0.512t-56.832 1.536z" p-id="28932" fill="#67c23a"></path></svg>
<svg v-else-if="item.apply_weekly_change==0" t="1672902733121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5742" width="15" height="15"><path d="M152 560 152 464 472 464 472 560 152 560ZM552 560 552 464 872 464 872 560 552 560Z" fill="#409eff" p-id="5743"></path></svg>
<svg v-else t="1672972414152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29200" width="15" height="15"><path d="M564.224 44.032q43.008 0 58.368 20.48t15.36 65.536q0 20.48 0.512 64.512t0.512 93.696 0.512 96.768 0.512 74.752q0 38.912 7.68 61.952t35.328 22.016q19.456 0 48.128 1.024t49.152 1.024q35.84 0 45.568 18.944t-13.824 49.664q-24.576 30.72-57.344 72.704t-68.096 86.016-69.12 86.528-59.392 75.264q-23.552 29.696-45.568 30.72t-45.568-27.648q-24.576-29.696-57.344-69.632t-67.072-82.432-67.584-83.968-59.904-74.24q-29.696-35.84-22.528-58.88t44.032-23.04l24.576 0q14.336 0 29.696-0.512t30.208-1.536 26.112-1.024q26.624 0 32.768-15.36t6.144-41.984q0-29.696-0.512-77.824t-0.512-100.352-0.512-101.376-0.512-79.872q0-13.312 2.048-27.648t9.728-26.112 20.992-19.456 36.864-7.68q27.648 0 53.248-0.512t57.344-0.512z" p-id="29201" fill="#f56c6c"></path></svg>
</div>
<div>
较上月<span>{{ item.apply_month_change }}</span>
<svg v-if="item.apply_month_change>0" t="1672972210380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28931" width="15" height="15"><path d="M470.016 976.896q-44.032 0-59.392-20.48t-15.36-65.536q0-20.48-0.512-64.512t-1.024-93.696-1.536-96.768-1.024-74.752q0-39.936-7.68-62.464t-35.328-21.504q-20.48 0-48.64-1.024t-49.664 0q-35.84 0-45.568-19.456t13.824-50.176q24.576-30.72 57.344-72.704t67.584-86.016 68.096-87.04 58.88-75.776q23.552-29.696 45.568-30.72t46.592 26.624q24.576 29.696 56.832 69.632t67.072 82.432 68.608 83.968 60.416 73.216q29.696 35.84 23.04 58.88t-43.52 23.04q-11.264 0-25.088 0.512t-29.184 1.024-30.208 1.024-27.136 0.512q-25.6 1.024-32.256 16.384t-5.632 41.984q0 29.696 0.512 77.824t1.024 100.352 1.536 101.376 1.024 79.872q0 13.312-2.048 27.648t-9.728 26.112-21.504 19.968-36.352 8.192q-27.648 0-52.736 0.512t-56.832 1.536z" p-id="28932" fill="#67c23a"></path></svg>
<svg v-else-if="item.apply_month_change==0" t="1672902733121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5742" width="15" height="15"><path d="M152 560 152 464 472 464 472 560 152 560ZM552 560 552 464 872 464 872 560 552 560Z" fill="#409eff" p-id="5743"></path></svg>
<svg v-else t="1672972414152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29200" width="15" height="15"><path d="M564.224 44.032q43.008 0 58.368 20.48t15.36 65.536q0 20.48 0.512 64.512t0.512 93.696 0.512 96.768 0.512 74.752q0 38.912 7.68 61.952t35.328 22.016q19.456 0 48.128 1.024t49.152 1.024q35.84 0 45.568 18.944t-13.824 49.664q-24.576 30.72-57.344 72.704t-68.096 86.016-69.12 86.528-59.392 75.264q-23.552 29.696-45.568 30.72t-45.568-27.648q-24.576-29.696-57.344-69.632t-67.072-82.432-67.584-83.968-59.904-74.24q-29.696-35.84-22.528-58.88t44.032-23.04l24.576 0q14.336 0 29.696-0.512t30.208-1.536 26.112-1.024q26.624 0 32.768-15.36t6.144-41.984q0-29.696-0.512-77.824t-0.512-100.352-0.512-101.376-0.512-79.872q0-13.312 2.048-27.648t9.728-26.112 20.992-19.456 36.864-7.68q27.648 0 53.248-0.512t57.344-0.512z" p-id="29201" fill="#f56c6c"></path></svg>
</div>
</div>
</div>
<div class="bx"></div>
<div class="bx"></div>
</div>
</div>
</div>
</template>
<script>
export default {
name: '',
components: {
},
props: {
},
data () {
return {
sortList: ['四大类资源', '组件服务', '应用资源', '基础设施', '数据资源'],
imgConfig: {
四大类资源: {
url: require('@/assets/img/workBench/banner-gg.png'),
size: '80px;',
right: '20px;',
bottom: '40px;'
},
组件服务: {
url: require('@/assets/img/workBench/banner-zj.png'),
size: '60px;',
right: '20px;',
bottom: '48px;'
},
应用资源: {
url: require('@/assets/img/workBench/banner-yy.png'),
size: '60px;',
right: '20px;',
bottom: '43px;'
},
基础设施: {
url: require('@/assets/img/workBench/banner-jc.png'),
size: '60px;',
right: '20px;',
bottom: '46px;'
},
数据资源: {
url: require('@/assets/img/workBench/banner-sj.png'),
size: '60px;',
right: '20px;',
bottom: '50px;'
}
},
topData: [],
bottomData: []
}
},
methods: {
},
created () {
this.$http.get('/census/center/similitude').then(res => {
res.data.data = res.data.data.sort((a, b) => this.sortList.indexOf(a.type) - this.sortList.indexOf(b.type))
this.topData = res.data.data
console.log('获取数据', res.data.data)
})
this.$http.get('/census/center/similitude_dept').then(res => {
this.bottomData = res.data.data
console.log('获取数据', res.data.data)
})
},
mounted () {
}
}
</script>
<style lang='scss' scoped>
.data-statistics-box{
padding:10px;
.top{
display: flex;
justify-content: space-between;
align-items: center;
.item{
width: 290px;
height: 120px;
padding: 15px;
display: flex;
flex-direction: column;
align-items: flex-start;
background: #fff;
box-shadow: 2px 2px 5px #ccc;
border-radius: 10px;
position: relative;
.left{
width: 100px;
display: flex;
flex-direction: column;
align-items: flex-start;
font-size: 16px;
div{
margin-bottom: 1px;
}
span{
font-size: 24px;
font-weight: 600;
}
}
.right{
width: 180px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
margin-top: 10px;
div{
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 5px;
font-size: 14px;
color: #666;
span{
width: 30px;
margin-left: 30px;
}
svg{
margin-left: 10px;
}
}
}
}
}
.bottom{
margin-top: 10px;
.item-box{
display: flex;
margin-top: 10px;
justify-content: space-between;
align-items: center;
.name{
width: 290px;
height: 80px;
padding: 10px;
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
border-radius: 10px;
box-shadow: 2px 2px 5px #ccc;
div{
width: 200px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
span{
margin-left: 10px;
font-size: 28px;
font-weight: 600;
}
}
}
.item{
width: 290px;
height: 80px;
padding: 10px;
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
border-radius: 10px;
box-shadow: 2px 2px 5px #ccc;
.left{
width: 100px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 16px;
span{
font-size: 24px;
font-weight: 600;
}
}
.right{
width: 120px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
margin-top: 10px;
div{
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 5px;
font-size: 14px;
color: #666;
span{
width: 30px;
margin-left: 10px;
}
svg{
margin-left: 10px;
}
}
}
}
.bx{
width: 290px;
height: 80px;
}
}
}
}
</style>

View File

@ -1,5 +1,9 @@
<template> <template>
<div class="work-brnch-box"> <div class="work-brnch-box">
<!-- 数据统计 -->
<div class="data-statistics" v-if="($store.state.user.roleIdList.indexOf('运维管理员') !== -1)">
<DataStatistics></DataStatistics>
</div>
<!-- --> <!-- -->
<div class="flex-row-start top"> <div class="flex-row-start top">
<div class="flex-row-start dept-left"> <div class="flex-row-start dept-left">
@ -33,6 +37,7 @@
import BottomView from '../workBench/components/bottom-view.vue' import BottomView from '../workBench/components/bottom-view.vue'
import CenterView from '../workBench/components/center-view.vue' import CenterView from '../workBench/components/center-view.vue'
import DeptChartView from '../workBench/components/dept-chart-view.vue' import DeptChartView from '../workBench/components/dept-chart-view.vue'
import DataStatistics from './components/DataStatistics'
import deptTodoView from '../workBench/components/dept-todo-view.vue' import deptTodoView from '../workBench/components/dept-todo-view.vue'
import * as Apis from './api.js' import * as Apis from './api.js'
import bus from '@/views/bus.js' import bus from '@/views/bus.js'
@ -41,7 +46,8 @@ export default {
deptTodoView, deptTodoView,
BottomView, BottomView,
CenterView, CenterView,
DeptChartView DeptChartView,
DataStatistics
}, },
data () { data () {
return { return {
@ -241,7 +247,12 @@ export default {
} }
.work-brnch-box { .work-brnch-box {
.data-statistics{
background: #fff;
height: 324px;
margin-bottom: 16px;
box-shadow: 2px 2px 5px #ccc;
}
.top { .top {
height: 284px; height: 284px;
margin-bottom: 16px; margin-bottom: 16px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

View File

@ -9,7 +9,7 @@
<div class="algorithm-top-details"> <div class="algorithm-top-details">
<div class="left"> <div class="left">
<div class="top"> <div class="top">
<a-tooltip placement="top" v-if="(props.dataList.name.length>20)"> <a-tooltip placement="top" v-if="(props.dataList.name.length > 20)">
<template #title>{{ props.dataList.name }}</template> <template #title>{{ props.dataList.name }}</template>
<span class="name"> <span class="name">
{{ props.dataList.name }} {{ props.dataList.name }}
@ -47,24 +47,21 @@
</div> </div>
<div class="bottomdesc" v-else-if="dowmOrUp === '展开>>'"> <div class="bottomdesc" v-else-if="dowmOrUp === '展开>>'">
场景描述 {{ props.dataList.description.slice(0, 183) }}... 场景描述 {{ props.dataList.description.slice(0, 183) }}...
<span <span style="cursor: pointer; color: rgb(241 211 112)" @click="showDetail(dowmOrUp)">
style="cursor: pointer; color: rgb(241 211 112)"
@click="showDetail(dowmOrUp)"
>
{{ dowmOrUp }} {{ dowmOrUp }}
</span> </span>
</div> </div>
<div class="bottomdesc1" v-else> <div class="bottomdesc1" v-else>
场景描述 {{ props.dataList.description }} 场景描述 {{ props.dataList.description }}
<span <span style="cursor: pointer; color: rgb(241 211 112)" @click="showDetail(dowmOrUp)">
style="cursor: pointer; color: rgb(241 211 112)"
@click="showDetail(dowmOrUp)"
>
{{ dowmOrUp }} {{ dowmOrUp }}
</span> </span>
</div> </div>
<div style="padding-top: 20px"> <div style="padding-top: 20px">
<span>场景入口:</span> <a-button class="rukou" @click="openScene(props.dataList.sceneUrl)">
进入场景
</a-button>
<!-- <span>场景入口:</span>
<span <span
style=" style="
margin-left: 10px; margin-left: 10px;
@ -74,7 +71,7 @@
@click="openScene(props.dataList.sceneUrl)" @click="openScene(props.dataList.sceneUrl)"
> >
{{ props.dataList.sceneUrl }} {{ props.dataList.sceneUrl }}
</span> </span> -->
</div> </div>
</div> </div>
<div class="bottom" v-if="props.dataList.id"> <div class="bottom" v-if="props.dataList.id">
@ -200,7 +197,7 @@ function toView() {
// -- // --
const handleAKeyApplication = () => { const handleAKeyApplication = () => {
let _applyList = [] let _applyList = []
;(props.dataList.fuseResourceList || []).map((v) => { ; (props.dataList.fuseResourceList || []).map((v) => {
let resource = v.resource || {} let resource = v.resource || {}
let obj = { let obj = {
arr: [ arr: [
@ -339,6 +336,17 @@ watch(
} }
.main { .main {
.rukou {
margin-top:24px;
background: #0058e1;
color: #ffffff;
width: 90px;
height: 32px;
border-radius: 2px;
border: 1px #0058e1 solid;
}
.bottomdesc { .bottomdesc {
display: -webkit-box; display: -webkit-box;
/*设置为弹性盒子*/ /*设置为弹性盒子*/
@ -353,12 +361,14 @@ watch(
width: 800px; width: 800px;
font-size: 16px; font-size: 16px;
} }
.bottomdesc1 { .bottomdesc1 {
overflow: auto; overflow: auto;
width: 800px; width: 800px;
font-size: 16px; font-size: 16px;
height: 200px; height: 200px;
} }
margin-top: 0.2rem; margin-top: 0.2rem;
font-size: 0.18rem; font-size: 0.18rem;
line-height: 0.34rem; line-height: 0.34rem;

View File

@ -58,6 +58,7 @@ function toView(item) {
path: '/integrationServicesDetails', path: '/integrationServicesDetails',
query: { query: {
id: item.id, id: item.id,
districtType:item.district,
type:'典型赋能场景' type:'典型赋能场景'
}, },
}) })

View File

@ -26,16 +26,26 @@ const oldValue1 = ref('')
const props = defineProps({ const props = defineProps({
textColor: { type: String, default: '' }, textColor: { type: String, default: '' },
returnType: { type: String, default: '' }, returnType: { type: String, default: '' },
districtType:{ type: Number, default: 0 },
}) })
const returnType = props.returnType const returnType = props.returnType
const districtType = props.districtType
const previousPage = () => { const previousPage = () => {
if (returnType =='典型赋能场景'|| returnType =='打包模式') { if (returnType =='打包模式') {
router.push({ router.push({
path: '/integrationServices', path: '/integrationServices',
query: { query: {
returnType: returnType, returnType: returnType,
}, },
}) })
}else if(returnType =='典型赋能场景'){
router.push({
path: '/integrationServices',
query: {
returnType: returnType,
districtType:districtType,
},
})
} else { } else {
if (window.history.state.back) { if (window.history.state.back) {
window.history.go(-1) window.history.go(-1)

View File

@ -124,6 +124,7 @@ export default defineComponent({
const router = useRouter() const router = useRouter()
const select = router.currentRoute.value.query.select const select = router.currentRoute.value.query.select
const returnType = router.currentRoute.value.query.returnType const returnType = router.currentRoute.value.query.returnType
const districtType = router.currentRoute.value.query.districtType
const searchValue = ref('') const searchValue = ref('')
const Cardsname = ref(select) const Cardsname = ref(select)
const resourceList = reactive({ data: [] }) const resourceList = reactive({ data: [] })
@ -352,9 +353,15 @@ export default defineComponent({
onMounted(() => { onMounted(() => {
searchAreas() searchAreas()
if (returnType == '典型赋能场景') { if (returnType == '典型赋能场景') {
changeCards(0)
} else if (returnType == '打包模式') { if(districtType==0){
cityOrArea.value=0
}else{
cityOrArea.value=1
}
changeCards(0)
}
else if (returnType == '打包模式') {
changeCards(1) changeCards(1)
} else { } else {
if (storageSearchInfo) { if (storageSearchInfo) {
@ -390,6 +397,7 @@ export default defineComponent({
titleName, titleName,
changeCards, changeCards,
returnType, returnType,
districtType,
number, number,
loadingData, loadingData,
cityOrArea, cityOrArea,
@ -545,7 +553,10 @@ export default defineComponent({
cursor: pointer; cursor: pointer;
margin-top: 12px; margin-top: 12px;
} }
span:hover{
background: #0058e1;
color: #fff;
}
.down { .down {
background: #0058e1; background: #0058e1;
color: #ffffff; color: #ffffff;

View File

@ -2,25 +2,16 @@
<template> <template>
<div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }"> <div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }">
<home-header></home-header> <home-header></home-header>
<detail-back <detail-back v-show="!hiddenBackFlag" :returnType="returnType" :districtType="districtType"></detail-back>
v-show="!hiddenBackFlag"
:returnType="returnType"
></detail-back>
<!-- 头部基本信息 -->
<application-top-details
:dataList="detailInfoObj"
:navList="navList"
></application-top-details>
<template v-if="districtType == 0 || returnType == '打包模式'">
<!-- 头部基本信息 -->
<application-top-details :dataList="detailInfoObj" :navList="navList"></application-top-details>
<!-- 导航 --> <!-- 导航 -->
<div :class="{ fixed: scrollTop >= 600 }" style="z-index: 10012"> <div :class="{ fixed: scrollTop >= 600 }" style="z-index: 10012">
<div class="application-navigation"> <div class="application-navigation">
<template v-for="nav in navList" :key="nav.key"> <template v-for="nav in navList" :key="nav.key">
<div <div class="nav" :class="{ selectNow: nav.key == selectNow }" @click="selectNav(nav.key)">
class="nav"
:class="{ selectNow: nav.key == selectNow }"
@click="selectNav(nav.key)"
>
{{ nav.name }} {{ nav.name }}
<span class="line"></span> <span class="line"></span>
</div> </div>
@ -39,16 +30,11 @@
</div> </div>
<div class="content" style="margin-left: 0.5rem"> <div class="content" style="margin-left: 0.5rem">
<div <div class="content-item" v-for="(item, i) in painPoint" :key="i" style="
class="content-item"
v-for="(item, i) in painPoint"
:key="i"
style="
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
font-size: 0.18rem; font-size: 0.18rem;
line-height: 0.3rem; line-height: 0.3rem;
" ">
>
{{ i + 1 + '、' + item.description }} {{ i + 1 + '、' + item.description }}
</div> </div>
</div> </div>
@ -56,26 +42,17 @@
</div> </div>
<!-- 解决方案 --> <!-- 解决方案 -->
<div <div id="integration-solution" class="solution scrollBox" style="background: #eee">
id="integration-solution"
class="solution scrollBox"
style="background: #eee"
>
<div class="title-1"> <div class="title-1">
<DetalsTitle title="解决方案" type="SOLUTION"></DetalsTitle> <DetalsTitle title="解决方案" type="SOLUTION"></DetalsTitle>
</div> </div>
<div class="flex-row-center"> <div class="flex-row-center">
<div class="content" style="background: #fff; margin-top: 0.2rem"> <div class="content" style="background: #fff; margin-top: 0.2rem">
<div <div class="content-item" v-for="(item, i) in solution" :key="i" style="
class="content-item"
v-for="(item, i) in solution"
:key="i"
style="
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
font-size: 0.18rem; font-size: 0.18rem;
line-height: 0.3rem; line-height: 0.3rem;
" ">
>
{{ i + 1 + '、' + item.description }} {{ i + 1 + '、' + item.description }}
</div> </div>
</div> </div>
@ -87,22 +64,11 @@
<div class="title-1"> <div class="title-1">
<DetalsTitle title="使用能力" type="ABILITY"></DetalsTitle> <DetalsTitle title="使用能力" type="ABILITY"></DetalsTitle>
</div> </div>
<div <div class="flex-row-center combine-content" v-for="(item, i) in combineList" :key="i" style="display: block">
class="flex-row-center combine-content" <div class="top" style="font-size: 0.24rem; text-align: center; margin-bottom: 0.3rem">
v-for="(item, i) in combineList"
:key="i"
style="display: block"
>
<div
class="top"
style="font-size: 0.24rem; text-align: center; margin-bottom: 0.3rem"
>
{{ i == 0 ? '基础设施' : i == 1 ? '组件服务' : '数据资源' }} {{ i == 0 ? '基础设施' : i == 1 ? '组件服务' : '数据资源' }}
</div> </div>
<div <div class="data-count" style="font-size: 0.14rem; text-align: right; margin-bottom: 0.2rem">
class="data-count"
style="font-size: 0.14rem; text-align: right; margin-bottom: 0.2rem"
>
<span style="color: #909399"> <span style="color: #909399">
{{ {{
@ -116,34 +82,24 @@
</div> </div>
<div class="bottom" style="display: flex; align-items: flex-start"> <div class="bottom" style="display: flex; align-items: flex-start">
<div class="title" :class="'title' + i"></div> <div class="title" :class="'title' + i"></div>
<div class="table-box"> <div class="table-box" v-if="returnType == '典型赋能场景'">
<el-table <el-table class="table" :data="item.list" stripe :header-cell-style="{ 'text-align': 'center' }">
class="table" <el-table-column prop="name" label="资源名称" align="center" width="200"
:data="item.list" show-overflow-tooltip="true"></el-table-column>
stripe <el-table-column prop="type" label="资源类型" align="center" width="100"
:header-cell-style="{ 'text-align': 'center' }" show-overflow-tooltip="true"></el-table-column>
> <el-table-column prop="dept" label="来源部门" align="center" width="300"
<el-table-column show-overflow-tooltip="true"></el-table-column>
prop="name" </el-table>
label="资源名称" </div>
align="center" <div class="table-box" v-else>
width="200" <el-table class="table" :data="item.list" stripe :header-cell-style="{ 'text-align': 'center' }">
show-overflow-tooltip="true" <el-table-column prop="name" label="资源名称" align="center" width="200"
></el-table-column> show-overflow-tooltip="true"></el-table-column>
<el-table-column <el-table-column prop="platform" label="资源类型" align="center" width="100"
prop="platform" show-overflow-tooltip="true"></el-table-column>
label="资源类型" <el-table-column prop="dept" label="能力来源" align="center" width="300"
align="center" show-overflow-tooltip="true"></el-table-column>
width="100"
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="dept"
label="能力来源"
align="center"
width="300"
show-overflow-tooltip="true"
></el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
@ -155,59 +111,110 @@
<div class="title-1"> <div class="title-1">
<DetalsTitle title="构建步骤" type="STEP"></DetalsTitle> <DetalsTitle title="构建步骤" type="STEP"></DetalsTitle>
</div> </div>
<div class="flex-row-center step-content"> <div class="step-content">
<el-steps direction="vertical" :space="150" :active="step.length"> <!-- <el-steps direction="vertical" :space="150" :active="step.length">
<el-step <el-step
v-for="(item, i) in step" v-for="(item, i) in step"
:key="i" :key="i"
:title="item.question" :title="item.question"
:description="item.answer" :description="item.answer"
></el-step> ></el-step>
</el-steps> </el-steps> -->
<!-- <div v-for="(item,i) in step" :key="i">
<div><div class="step-span" >{{i+1}}</div>
<div class="step-question">{{i+1}}:{{item.question}}</div>
<div v-for="itemson in item.answer" :key="itemson">
{{itemson.answer}}
</div> </div>
</div> </div>
</div> -->
<div class="left-process">
<div class="li1" v-for="(item, i) in step" :key="i">
<div>
<div class="node">
<div class="step-span">{{ i+ 1}}</div>
<div>
<div class="step-question">{{ i+ 1}}:{{ item.question }}</div>
<div class="question-son" v-for="(itemson, i) in item.answer" :key="i">
<img src="~@/assets/home/arrow.png" style="margin-right:8px" />{{ i+ 1}}>{{ itemson.answer }}
</div>
</div>
</div>
<div class="borderLeft"></div>
</div>
<div class="advice"></div>
</div>
</div>
</div>
</div>
</template>
<template v-else>
<div class="area">
<a-image style="width:615px;height:345px" :preview="false" :src="bgImg || imgSrcYyzy" />
<div class="label-name">{{ detailInfoObj.name }} <span class="label">
{{ detailInfoObj.type }}
</span>
<span class="label1">
{{ detailInfoObj.area }}
</span>
</div>
<a-button class="rukou" @click="openScene(detailInfoObj.sceneUrl)">
进入场景
</a-button>
</div>
<div class="area-desc">
{{ detailInfoObj.description || '--' }}
</div>
</template>
<home-footer></home-footer> <home-footer></home-footer>
</div> </div>
</template> </template>
<script setup> <script setup>
import ApplicationTopDetails from './components/ApplicationTopDetails.vue' import ApplicationTopDetails from './components/ApplicationTopDetails.vue'
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' // import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' //
import HomeFooter from '@/views/newHome/components/Footer' import HomeFooter from '@/views/newHome/components/Footer'
import HomeHeader from '@/views/home/components/header' import HomeHeader from '@/views/home/components/header'
import detailBack from '@/views/home/detailBack.vue' import detailBack from '@/views/home/detailBack.vue'
import { ref, onMounted, onBeforeUnmount } from 'vue' import { ref, onMounted, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { getIntegrationDetail } from '@/api/home' import { getIntegrationDetail } from '@/api/home'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
const router = useRouter() const router = useRouter()
const scrollTop = ref(0) const scrollTop = ref(0)
const domArr = ref([]) const domArr = ref([])
const painPoint = ref([]) const painPoint = ref([])
const solution = ref([]) const solution = ref([])
const step = ref([]) const step = ref([])
const bgImg = ref('') const bgImg = ref('')
const dataSourceCount = ref(0) const dataSourceCount = ref(0)
const infrastructureCount = ref(0) const infrastructureCount = ref(0)
const componentCount = ref(0) const componentCount = ref(0)
const id = router.currentRoute.value.query.id const id = router.currentRoute.value.query.id
const returnType = router.currentRoute.value.query.type const returnType = router.currentRoute.value.query.type
const hiddenBackFlag = router.currentRoute.value.query.hiddenBackFlag const districtType = router.currentRoute.value.query.districtType
document.documentElement.style.transition = 'all 0.3s ease' const hiddenBackFlag = router.currentRoute.value.query.hiddenBackFlag
document.documentElement.scrollTop = 0 const imgSrcYyzy = ref(require('@/assets/newHome/empty.png'))
document.body.style.transition = 'all 0.3s ease' document.documentElement.style.transition = 'all 0.3s ease'
document.body.scrollTop = 0 document.documentElement.scrollTop = 0
mybus.on('flyToView', (id) => { document.body.style.transition = 'all 0.3s ease'
document.body.scrollTop = 0
mybus.on('flyToView', (id) => {
let top = let top =
document.querySelector('#' + id) && document.querySelector('#' + id) &&
document.querySelector('#' + id).offsetTop - 50 document.querySelector('#' + id).offsetTop - 50
document.documentElement.scrollTop = top document.documentElement.scrollTop = top
document.body.scrollTop = top document.body.scrollTop = top
}) })
const navList = ref([ const navList = ref([
{ {
name: '场景痛点', name: '场景痛点',
key: 'integration-pain-point', key: 'integration-pain-point',
@ -224,11 +231,11 @@
name: '构建步骤', name: '构建步骤',
key: 'integration-step', key: 'integration-step',
}, },
]) ])
const selectNow = ref('integration-pain-point') const selectNow = ref('integration-pain-point')
const useWayShowList = ref([ const useWayShowList = ref([
{ {
title: '归属部门', title: '归属部门',
info: { info: {
@ -243,9 +250,9 @@
providerMobile: '联系人电话', providerMobile: '联系人电话',
}, },
}, },
]) ])
const combineList = ref([ const combineList = ref([
{ {
title: '基础设施', title: '基础设施',
list: [], list: [],
@ -258,10 +265,10 @@
title: '数据资源', title: '数据资源',
list: [], list: [],
}, },
]) ])
const detailInfoObj = ref({}) const detailInfoObj = ref({})
onMounted(() => { onMounted(() => {
window.addEventListener('scroll', () => { window.addEventListener('scroll', () => {
domArr.value = document.querySelectorAll('.scrollBox') domArr.value = document.querySelectorAll('.scrollBox')
scrollTop.value = scrollTop.value =
@ -285,21 +292,21 @@
} }
} }
}) })
}) })
const selectNav = (key) => { const selectNav = (key) => {
selectNow.value = key selectNow.value = key
mybus.emit('flyToView', selectNow.value) mybus.emit('flyToView', selectNow.value)
} }
const getAttrValue = (fuseAttrList, text) => { const getAttrValue = (fuseAttrList, text) => {
let _obj = fuseAttrList.find((v) => v.attrType === text) || {} let _obj = fuseAttrList.find((v) => v.attrType === text) || {}
let data = JSON.parse(_obj.attrValue || '[]') || [] let data = JSON.parse(_obj.attrValue || '[]') || []
return data return data
} }
// -- // --
const getIntegrationServicesDeatil = (id) => { const getIntegrationServicesDeatil = (id) => {
getIntegrationDetail(id).then( getIntegrationDetail(id).then(
(res) => { (res) => {
if (res.data.code !== 0) { if (res.data.code !== 0) {
@ -311,8 +318,7 @@
componentCount.value = res.data.data.componentCount || 0 componentCount.value = res.data.data.componentCount || 0
// //
let fuseAttrList = res.data.data.fuseAttrList || [] let fuseAttrList = res.data.data.fuseAttrList || []
//
let fuseResourceList = res.data.data.fuseResourceList || []
let questionValue = let questionValue =
fuseAttrList.find((v) => v.attrType === '常见问题') || {} fuseAttrList.find((v) => v.attrType === '常见问题') || {}
let questionObj = { let questionObj = {
@ -321,13 +327,42 @@
} }
painPoint.value = getAttrValue(fuseAttrList, '场景痛点') painPoint.value = getAttrValue(fuseAttrList, '场景痛点')
solution.value = getAttrValue(fuseAttrList, '解决方案') solution.value = getAttrValue(fuseAttrList, '解决方案')
step.value = getAttrValue(fuseAttrList, '使用步骤')
step.value = getAttrValue(fuseAttrList, '构建步骤')
bgImg.value = bgImg.value =
fuseAttrList.find((v) => v.attrType === '服务图片').attrValue || '' fuseAttrList.find((v) => v.attrType === '服务图片').attrValue || ''
let areaObj = { let areaObj = {
attrType: '应用领域', attrType: '应用领域',
attrValue: '', attrValue: '',
} }
if (returnType === '典型赋能场景') {
let fuseResourceList = res.data.data.fuseAttrList || []
combineList.value.forEach((item) => {
let arr = []
let resource = fuseResourceList.filter(
(v) => v.attrType == item.title
)
// let a=resource[0].attrValue
let resourceArrList = JSON.parse(resource[0].attrValue)
if (resourceArrList.length > 0) {
arr = resourceArrList.map((res) => ({
name: res.name,
dept: res.dept,
type: res.type,
}))
item.list = arr
}
})
} else {
//
let fuseResourceList = res.data.data.fuseResourceList || []
combineList.value.forEach((item) => { combineList.value.forEach((item) => {
let arr = [] let arr = []
let resource = fuseResourceList.filter( let resource = fuseResourceList.filter(
@ -367,6 +402,9 @@
item.list = arr item.list = arr
}) })
}
detailInfoObj.value.infoList = [] detailInfoObj.value.infoList = []
detailInfoObj.value.infoList.push(questionObj) detailInfoObj.value.infoList.push(questionObj)
detailInfoObj.value.infoList.push(areaObj) detailInfoObj.value.infoList.push(areaObj)
@ -375,10 +413,10 @@
message.error(err) message.error(err)
} }
) )
} }
getIntegrationServicesDeatil(id) getIntegrationServicesDeatil(id)
function handleOpenUrl(type) { function handleOpenUrl(type) {
let obj = let obj =
(detailInfoObj.value.fuseAttrList || []).find( (detailInfoObj.value.fuseAttrList || []).find(
(v) => v.attrType == type (v) => v.attrType == type
@ -392,36 +430,88 @@
'hisense_office/onlinePreview?url=' + 'hisense_office/onlinePreview?url=' +
btoa(encodeURI(url)) btoa(encodeURI(url))
) )
} }
onBeforeUnmount(() => { onBeforeUnmount(() => {
mybus.off('flyToView') mybus.off('flyToView')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.flex-row-between { .area {
padding-top: 93px;
text-align: center;
margin-bottom: 32px;
.label-name {
font-size: 26px;
color: #212121;
font-weight: bold;
margin-top: 32px;
}
.label {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
font-size: 14px;
color: #fff;
background: #7294c8;
}
.label1 {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
font-size: 14px;
color: #fff;
background: #c66132;
}
.rukou {
margin-top: 24px;
background: #0058e1;
color: #ffffff;
width: 90px;
height: 32px;
border-radius: 2px;
border: 1px #0058e1 solid;
}
}
.area-desc {
background: #f6f7f9;
padding: 24px;
width: 1300px;
margin-left: 343px;
margin-bottom: 24px;
}
.flex-row-between {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.flex-row-start { .flex-row-start {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
.flex-row-center { .flex-row-center {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.IntegrationServicesDetails { .IntegrationServicesDetails {
.fixed { .fixed {
position: fixed !important; position: fixed !important;
z-index: 2000; z-index: 2000;
@ -429,7 +519,7 @@
left: 0; left: 0;
} }
.fixed2 > div:nth-of-type(3) { .fixed2>div:nth-of-type(3) {
margin-top: 0.84rem; margin-top: 0.84rem;
} }
@ -467,9 +557,9 @@
} }
} }
} }
} }
.use-way { .use-way {
padding: 0.8rem 0; padding: 0.8rem 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -512,11 +602,9 @@
height: 1.5rem; height: 1.5rem;
width: 6.2rem; width: 6.2rem;
border-radius: 0.2rem; border-radius: 0.2rem;
background: linear-gradient( background: linear-gradient(to right,
to right,
rgba(113, 132, 252, 0.4), rgba(113, 132, 252, 0.4),
rgba(148, 163, 252, 0.4) rgba(148, 163, 252, 0.4));
);
padding: 0 0.3rem; padding: 0 0.3rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -547,9 +635,9 @@
} }
} }
} }
} }
.pain-point { .pain-point {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
@ -567,6 +655,7 @@
background: url('~@/assets/home/fn/cjtd.png') no-repeat; background: url('~@/assets/home/fn/cjtd.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.cjtd img { .cjtd img {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -583,9 +672,9 @@
margin: 0rem 0rem 0.1rem 0.1rem; margin: 0rem 0rem 0.1rem 0.1rem;
} }
} }
} }
.solution { .solution {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
@ -597,9 +686,9 @@
margin: 0.3rem; margin: 0.3rem;
} }
} }
} }
.step { .step {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
@ -608,23 +697,92 @@
padding: 0.3rem; padding: 0.3rem;
background: #fff; background: #fff;
:deep(.el-step__description.is-finish) { .left-process {
color: #333;
line-height: 0.24rem; padding-left: 18px;
margin-top: 0.05rem; padding-top: 24px;
.li1 {
list-style: none;
box-sizing: border-box;
padding-left: 20px;
position: relative;
} }
/deep/ .el-step__title { .borderLeft {
font-size: 18px; width: 1px;
height: 100%;
background-color: #e8f0fc;
position: absolute;
top: 11.225px;
bottom: 0;
left: -1px;
} }
/deep/ .el-step__description {
font-size: 14px; .step-question {
} color: #0058e1;
} font-weight: bold;
font-size: 20px;
padding-top: 8px;
margin-left: 12px;
margin-bottom: 15px;
} }
.ability { .question-son {
background: #f6f7f9;
font-size: 16px;
color: #414040;
margin-left: 12px;
line-height: 24px;
padding: 12px 0px 12px 16px;
}
.node {
cursor: pointer;
font-size: 16px;
line-height: 22.5px;
font-weight: 500;
color: #212121;
}
.step-span {
z-index: 1;
color: #0058e1;
width: 50px;
height: 41px;
position: relative;
font-size: 30px;
font-weight: bold;
margin-left: -42px;
padding-left: 14px;
padding-top: 6px;
float: left;
background: url('~@/assets/home/step.png') no-repeat;
background-color: #fff;
}
.advice {
font-size: 10px;
color: #0058e1;
opacity: 0.1;
padding-bottom: 40px;
}
.li1:last-child .borderLeft {
display: none;
}
}
}
}
.ability {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
@ -667,6 +825,7 @@
background: url('~@/assets/home/fn/sjzy.png') no-repeat; background: url('~@/assets/home/fn/sjzy.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
.table-box { .table-box {
height: 3.45rem; height: 3.45rem;
flex: 1; flex: 1;
@ -677,8 +836,8 @@
// width: 100%; // width: 100%;
font-size: 16px; font-size: 16px;
} }
.data-count {
} .data-count {}
} }
.name-box { .name-box {
@ -709,5 +868,5 @@
width: 50%; width: 50%;
box-sizing: border-box; box-sizing: border-box;
} }
} }
</style> </style>