Merge branch 'hi-ucs-dev' into release

# Conflicts:
#	front/public/static/config/basicConfig.js
#	front/src/App.vue
This commit is contained in:
a0049873 2022-12-08 13:43:39 +08:00
commit ef987f2d42
64 changed files with 2715 additions and 1014 deletions

1
.gitignore vendored
View File

@ -14,3 +14,4 @@ back/dist-西海岸-后台管理-v0.8.2.4.d.zip
*.zip
front/public/static/config/basicConfig.js
front/public/static/config/basicConfig.js
front/public/static/config/basicConfig.js

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -11,7 +11,7 @@
<!-- <h4>{{ $t('process.flowImage') }}</h4>
<img :src="getResourceURL()" class="image"> -->
<!-- 流转详情 -->
<h4>{{ $t('process.circulation') }}</h4>
<div class="title">{{ $t('process.circulation') }}</div>
<div class="mod-sys__dict">
<el-table
v-loading="dataListLoading"
@ -92,3 +92,20 @@ export default {
}
}
</script>
<style scoped>
::v-deep .el-card__body{
padding: 0px;
}
::v-deep .el-card{
border:0px !important;
}
.title{
padding-left: 20px;
color: #212121;
font-size: 16px;
margin-bottom: 10px;
margin-top: 10px;
background: url("~@/assets/img/biaoti.png") no-repeat;
background-position-y: 2px;
}
</style>

View File

@ -0,0 +1,55 @@
.agreeButton{
display: inline-block;
line-height: 8px;
width:80px;
height: 32px;
white-space: nowrap;
cursor: pointer;
color: #ffffff;
-webkit-appearance: none;
text-align: center;
-webkit-box-sizing: border-box;
box-sizing: border-box;
outline: 0;
margin-left: 10px;
-webkit-transition: .1s;
transition: .1s;
font-weight: 500;
//padding: 12px 20px;
font-size: 14px;
border-radius: 4px;
background-color: #0058e1;
}
.agreeButton:hover{
background: #65a5f9;
border-color: #65a5f9;
color: #FFF;
}
.rejectButton{
display: inline-block;
line-height: 8px;
width:80px;
height: 32px;
white-space: nowrap;
cursor: pointer;
color: #F56C6C;
-webkit-appearance: none;
text-align: center;
-webkit-box-sizing: border-box;
box-sizing: border-box;
outline: 0;
margin: 0;
-webkit-transition: .1s;
transition: .1s;
font-weight: 500;
//padding: 12px 20px;
font-size: 14px;
border-radius: 4px;
border-color: #F56C6C;
margin-left: 12px;
}
.rejectButton:hover{
background-color: #F56C6C;
border-color: #F56C6C;
color: #ffffff;
}

View File

@ -71,26 +71,29 @@ export default {
return this.$message.error(res.msg)
}
this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data
this.dataList.map((item, index) => {
if (this.dataList[index].type != null) {
switch (item.type) {
case 1: this.dataList[index].type = '省'; break
case 2: this.dataList[index].type = '市'; break
case 3: this.dataList[index].type = '区'; break
case 4: this.dataList[index].type = '企业'; break
}
}
if (item.children != null) {
item.children.map((item2, index2) => {
switch (item2.type) {
case 1: this.dataList[index].children[index2].type = '省'; break
case 2: this.dataList[index].children[index2].type = '市'; break
case 3: this.dataList[index].children[index2].type = '区'; break
case 4: this.dataList[index].children[index2].type = '企业'; break
if (!['/sys/notice/page', '/sys/notice/mynotice/page'].includes(this.mixinViewModuleOptions.getDataListURL)) { // 我得通知、通知管理不需要特殊处理
this.dataList.map((item, index) => {
if (this.dataList[index].type != null) {
switch (item.type) {
case 1: this.dataList[index].type = '省'; break
case 2: this.dataList[index].type = '市'; break
case 3: this.dataList[index].type = '区'; break
case 4: this.dataList[index].type = '企业'; break
}
})
}
})
}
if (item.children != null) {
item.children.map((item2, index2) => {
switch (item2.type) {
case 1: this.dataList[index].children[index2].type = '省'; break
case 2: this.dataList[index].children[index2].type = '市'; break
case 3: this.dataList[index].children[index2].type = '区'; break
case 4: this.dataList[index].children[index2].type = '企业'; break
}
})
}
})
}
// 我的代办特殊处理
if (this.mixinViewModuleOptions.getDataListURL === '/act/task/myToDoTaskPage') {
this.$http.get('/sys/user/info').then(userRes => {
@ -162,6 +165,68 @@ export default {
dataListSelectionChangeHandle (val) {
this.dataListSelections = val
},
// 批量审批
showApproval () {
if (this.dataListSelections.length === 0) {
this.$message({
type: 'warning',
message: '请先选择需要审批的信息!'
})
return
}
this.dialogVisible = true
},
handleClose () {
this.input = ''
this.dialogVisible = false
},
approval (str) {
console.log('批量审批', this.dataListSelections, this.$store)
if (this.input.length < 1) {
this.$message({
type: 'warning',
message: '请输入审批意见!'
})
return
}
const arr = []
this.dataListSelections.map(val => {
arr.push(val.taskId)
})
if (str === '同意') {
this.$http.post('/act/task/batchComplete', { comment: this.input, taskIds: arr }).then(res => {
if (res.data.msg !== 'success') {
this.$message({
type: 'warning',
message: '审批失败!'
})
return
}
this.handleClose()
this.query()
this.$message({
type: 'success',
message: '审批成功!'
})
})
} else if (str === '驳回') {
this.$http.post('/act/task/batchBackToFirst', { comment: this.input, taskIds: arr }).then(res => {
if (res.data.msg !== 'success') {
this.$message({
type: 'warning',
message: '审批失败!'
})
return
}
this.handleClose()
this.query()
this.$message({
type: 'success',
message: '审批成功!'
})
})
}
},
// 排序
dataListSortChangeHandle (data) {
if (!data.order || !data.prop) {

View File

@ -115,6 +115,14 @@ export default {
this.$store.state.user.id = res.data.id
this.$store.state.user.name = res.data.realName
this.$store.state.user.superAdmin = res.data.superAdmin
this.$store.state.user.roleIdList = []
if (res.data.roleIdList) {
res.data.roleIdList.map(val => {
this.$http.get('/sys/role/' + val).then(res1 => {
this.$store.state.user.roleIdList.push(res1.data.data.name)
})
})
}
})
.catch(() => {})
},

View File

@ -281,6 +281,14 @@ export default {
}
</script>
<style lang="scss" scoped>
::v-deep .el-step__title .is-finish {
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-all;
color: #0058e1;
}
.title {
font-size: 22px;
color: #000;
@ -462,4 +470,5 @@ export default {
}
}
}
</style>

View File

@ -6,7 +6,7 @@
style="width: 160px"
placeholder="请输入会客厅名称"
></el-input>
<el-select
<!-- <el-select
v-model="value"
style="width: 160px"
clearable
@ -19,7 +19,7 @@
:value="item.value"
>
</el-option>
</el-select>
</el-select> -->
<el-button type="primary" @click="searchData">查询</el-button>
</div>
<div>
@ -50,13 +50,13 @@
header-align="center"
align="center"
></el-table-column>
<el-table-column
<!-- <el-table-column
label="申请状态"
prop="state"
header-align="center"
align="center"
:formatter="formatter"
></el-table-column>
></el-table-column> -->
<el-table-column
:label="$t('handle')"
fixed="right"
@ -217,19 +217,19 @@
<script>
import Cookies from 'js-cookie'
export default {
data() {
data () {
return {
options: [
{
value: '1',
label: '待审核',
label: '待审核'
},
{
value: '0',
label: '审核完成',
},
label: '审核完成'
}
],
value: '',
value: '1',
limit: 10,
page: 1,
total: 0,
@ -245,14 +245,14 @@ export default {
file: '',
name: '',
creator: '',
roomNameA: '',
roomNameA: ''
}
},
mounted() {
mounted () {
this.getSerach()
},
methods: {
getSerach() {
getSerach () {
this.$http
.get(
`/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomNameA}&state=${this.value}`
@ -262,22 +262,22 @@ export default {
this.total = res.data.total
})
},
downloadTemplate(file) {
downloadTemplate (file) {
// window.SITE_CONFIG.apiURL +
window.open(`${file}?token=` + Cookies.get('ucsToken'))
},
handleSizeChange(val) {
handleSizeChange (val) {
this.limit = val
this.getSerach()
},
handleCurrentChange(val) {
handleCurrentChange (val) {
this.page = val
this.getSerach()
},
searchData() {
searchData () {
this.getSerach()
},
taskDetails(item, num) {
taskDetails (item, num) {
if (num == '1') {
this.dialogVisibleChuli = true
this.id = item.id
@ -293,14 +293,14 @@ export default {
this.lookData = item
},
ok() {
let query = {
ok () {
const query = {
auditViem: this.desc,
state: this.radio,
id: this.id,
name: this.name,
roomName: this.roomName,
creator: this.creator,
creator: this.creator
}
this.$http.put('/bookMeeting', query).then(({ data: res }) => {
this.dialogVisibleChuli = false
@ -309,15 +309,15 @@ export default {
this.getSerach()
})
},
No() {
No () {
this.radio = '2'
this.desc = ''
this.dialogVisibleChuli = false
},
formatter(row, column) {
formatter (row, column) {
return row.state == '1' ? '待审核' : '审核完成'
},
},
}
}
}
</script>
<style scoped lang="scss">
@ -328,7 +328,7 @@ export default {
}
.roomExamineSearch {
display: flex;
width: 410px;
width: 240px;
margin-bottom: 20px;
justify-content: space-between;
}

View File

@ -0,0 +1,348 @@
<template>
<el-card shadow="never" class="roomBox">
<div class="roomExamineSearch">
<el-input
v-model="roomNameA"
style="width: 160px"
placeholder="请输入会客厅名称"
></el-input>
<!-- <el-select
v-model="value"
style="width: 160px"
clearable
placeholder="请选择审核状态"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select> -->
<el-button type="primary" @click="searchData">查询</el-button>
</div>
<div>
<el-table border style="width: 100%" :data="tableData">
<el-table-column
label="申请人"
prop="name"
header-align="center"
align="center"
>
</el-table-column>
<el-table-column
label="申请部门"
prop="dept"
header-align="center"
align="center"
>
</el-table-column>
<el-table-column
label="申请会客厅"
prop="roomName"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="申请时段"
prop="bookDate"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column
label="申请状态"
prop="state"
header-align="center"
align="center"
:formatter="formatter"
></el-table-column> -->
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="taskDetails(scope.row, scope.row.state)"
>{{ scope.row.state == '1' ? '处理' : '详情' }}</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
<el-dialog
:title="lookData.roomName"
:visible.sync="dialogVisible"
width="50%"
>
<div class="modalResult" style="margin-bottom: 20px">处理结果</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<div
class="modalExamine"
style="display: flex; flex-direction: column; margin-top: 20px"
>
<span style="margin-bottom: 20px">
审核结果{{ lookData.state === '2' ? '通过' : '不通过' }}
</span>
<span style="width: 90%; margin-bottom: 20px">
审核意见{{ lookData.auditViem }}
</span>
</div>
<div class="modalYuyue" style="margin-bottom: 20px">预约信息</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<div class="modalTime" style="margin-bottom: 20px">
<div style="margin: 20px 0 20px 0">
预约日期{{ lookData.bookDate }}
</div>
<div>预约时段{{ lookData.startTime }}-{{ lookData.endTime }}</div>
<div
class="modalContent"
style="
width: 85%;
display: flex;
justify-content: space-between;
margin: 15px 0 15px 0;
"
>
<span>预约人{{ lookData.name }}</span>
<span>联系方式{{ lookData.phone }}</span>
<span>预约部门{{ lookData.dept }}</span>
</div>
<div style="width: 800px; margin-bottom: 30px">
使用事项{{ lookData.matter }}
</div>
</div>
<div>
<div style="display: flex; align-items: center">
<span>附件</span>
<el-button
v-show="file != ''"
size="mini"
@click="downloadTemplate(file)"
>下载</el-button
>
</div>
</div>
</el-dialog>
<el-dialog
:title="lookData.roomName"
:visible.sync="dialogVisibleChuli"
width="50%"
>
<div class="modalResult" style="margin-bottom: 10px">预约信息</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="8">预约日期{{ lookData.bookDate }}</el-col>
<el-col :span="8"
>预约时段{{ lookData.startTime }}-{{ lookData.endTime }}</el-col
>
</el-row>
<div class="modalTime">
<el-row class="modalContent" style="margin: 15px 0 15px 0">
<el-col :span="8">申请人{{ lookData.name }}</el-col>
<el-col :span="8">联系方式{{ lookData.phone }}</el-col>
<el-col :span="8">申请部门{{ lookData.dept }}</el-col>
</el-row>
<el-row style="margin-bottom: 30px">
<el-col :span="24"> 使用事项{{ lookData.matter }} </el-col>
</el-row>
<el-row>
<el-col :span="2">审核结果</el-col>
<el-col :span="8" style="display: flex">
<el-radio v-model="radio" label="2">通过</el-radio>
<el-radio v-model="radio" label="3">不通过</el-radio>
</el-col>
</el-row>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="2">审核意见</el-col>
<el-col :span="16">
<el-input type="textarea" v-model="desc"></el-input>
</el-col>
</el-row>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="2">附件</el-col>
<el-col :span="16">
<el-button
v-if="file != ''"
size="mini"
@click="downloadTemplate(file)"
>下载</el-button
>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="No"> </el-button>
<el-button type="primary" @click="ok"> </el-button>
</div>
</div>
</el-dialog>
</el-card>
</template>
<script>
import Cookies from 'js-cookie'
export default {
data () {
return {
options: [
{
value: '1',
label: '待审核'
},
{
value: '0',
label: '审核完成'
}
],
value: '0',
limit: 10,
page: 1,
total: 0,
roomName: '',
tableData: [],
dialogVisible: false,
dialogVisibleChuli: false,
lookData: {},
radio: '2',
desc: '',
id: '',
num: '',
file: '',
name: '',
creator: '',
roomNameA: ''
}
},
mounted () {
this.getSerach()
},
methods: {
getSerach () {
this.$http
.get(
`/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomNameA}&state=${this.value}`
)
.then(({ data: res }) => {
this.tableData = res.data.list
this.total = res.data.total
})
},
downloadTemplate (file) {
// window.SITE_CONFIG.apiURL +
window.open(`${file}?token=` + Cookies.get('ucsToken'))
},
handleSizeChange (val) {
this.limit = val
this.getSerach()
},
handleCurrentChange (val) {
this.page = val
this.getSerach()
},
searchData () {
this.getSerach()
},
taskDetails (item, num) {
if (num == '1') {
this.dialogVisibleChuli = true
this.id = item.id
this.name = item.name
this.roomName = item.roomName
this.creator = item.creator
} else {
this.dialogVisible = true
}
this.$http.get(`bookMeeting/${item.id}`).then(({ data: res }) => {
this.file = res.data.file
})
this.lookData = item
},
ok () {
const query = {
auditViem: this.desc,
state: this.radio,
id: this.id,
name: this.name,
roomName: this.roomName,
creator: this.creator
}
this.$http.put('/bookMeeting', query).then(({ data: res }) => {
this.dialogVisibleChuli = false
this.radio = '2'
this.desc = ''
this.getSerach()
})
},
No () {
this.radio = '2'
this.desc = ''
this.dialogVisibleChuli = false
},
formatter (row, column) {
return row.state == '1' ? '待审核' : '审核完成'
}
}
}
</script>
<style scoped lang="scss">
.roomBox {
min-height: calc(calc(100vh - 50px - 38px - 30px));
.roomHeadSpan {
font-weight: 600;
}
.roomExamineSearch {
display: flex;
width: 240px;
margin-bottom: 20px;
justify-content: space-between;
}
}
.dialog-footer {
text-align: center;
margin-top: 40px;
}
// ::v-deep .el-input {
// margin-right: 15px;
// display: inline-block;
// }
// ::v-deep .el-select {
// margin-right: 20px;
// display: inline-block;
// }
</style>

View File

@ -245,10 +245,8 @@ export default {
// 退
agreeOrNot: debounce(
function (data, type) {
this.dataForm.taskId = this.$route.params.taskId
if (type === '同意') {
debugger
// if (this.input !== '') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
@ -267,6 +265,7 @@ export default {
return
}
bus.$emit('applicationforRequirementsInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -302,6 +301,7 @@ export default {
return
}
bus.$emit('applicationforRequirementsInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -338,15 +338,26 @@ export default {
}
// tab
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
//
const tab1 = this.$store.state.contentTabs.filter(val => val.name === tabName.substring(0, tabName.indexOf('__')))[0]
// tab
const tab2 =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
if (tab1) {
this.$router.push({
name: /^iframe_.+/.test(tab1.name) ? 'iframe' : tab1.name,
params: { ...tab1.params },
query: { ...tab1.query }
})
} else {
this.$router.push({
name: /^iframe_.+/.test(tab2.name) ? 'iframe' : tab2.name,
params: { ...tab2.params },
query: { ...tab2.query }
})
}
}
},
//

View File

@ -174,7 +174,8 @@ export default {
}
return
}
bus.$emit('AbilityResourcesRemovedInit')
bus.$emit('commentInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -209,7 +210,8 @@ export default {
}
return
}
bus.$emit('AbilityResourcesRemovedInit')
bus.$emit('commentInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -246,33 +248,31 @@ export default {
}
// tab
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
//
const tab1 = this.$store.state.contentTabs.filter(val => val.name === tabName.substring(0, tabName.indexOf('__')))[0]
// tab
const tab2 =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
if (tab1) {
this.$router.push({
name: /^iframe_.+/.test(tab1.name) ? 'iframe' : tab1.name,
params: { ...tab1.params },
query: { ...tab1.query }
})
} else {
this.$router.push({
name: /^iframe_.+/.test(tab2.name) ? 'iframe' : tab2.name,
params: { ...tab2.params },
query: { ...tab2.query }
})
}
}
}
},
created () {
// this.dataForm = this.$router.currentRoute.params.id
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
startProcessErrorCallback: this.startProcessErrorCallback,
taskHandleSuccessCallback: this.closeCurrentTab,
taskHandleErrorCallback: this.taskHandleErrorCallback,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
//
this.initProcessMultiple(callbacks)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
},

View File

@ -252,6 +252,7 @@ export default {
return
}
bus.$emit('AbilityResourcesRemovedInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -287,6 +288,7 @@ export default {
return
}
bus.$emit('AbilityResourcesRemovedInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -323,15 +325,26 @@ export default {
}
// tab
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
//
const tab1 = this.$store.state.contentTabs.filter(val => val.name === tabName.substring(0, tabName.indexOf('__')))[0]
// tab
const tab2 =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
if (tab1) {
this.$router.push({
name: /^iframe_.+/.test(tab1.name) ? 'iframe' : tab1.name,
params: { ...tab1.params },
query: { ...tab1.query }
})
} else {
this.$router.push({
name: /^iframe_.+/.test(tab2.name) ? 'iframe' : tab2.name,
params: { ...tab2.params },
query: { ...tab2.query }
})
}
}
},
//

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.fanchunxiang
* @Date: 2021-08-24 10:28:49
* @LastEditors: hisense.fanchunxiang
* @LastEditTime: 2021-10-14 17:10:05
* @LastEditors: Light
* @LastEditTime: 2022-12-01 14:32:43
* @Description: 企业数据 企业卡片
-->
<template>
@ -65,12 +65,12 @@
</template>
</cardDragger>
<!-- 编辑卡片按钮 -->
<div v-show="isShowEdit" class="resource-manager-edit-card">
<div @click.stop="editTopicCard" v-show="isShowEdit" class="resource-manager-edit-card">
<div>
<div />
</div>
<div>
<span @click.stop="editTopicCard">{{
<span>{{
isRemoveCard ? '完成' : '编辑'
}}</span>
</div>
@ -393,7 +393,7 @@ export default {
this.oldId = item.id
}
})
this.$message.success('删除企业成功!')
this.$message.success('删除编目成功!')
// 退
this.initTopicCardList()
this.isRemoveCard = !this.isRemoveCard
@ -401,8 +401,8 @@ export default {
this.topicCoverZIndex = this.isEditGroupName ? -999 : 1000
})
.catch((e) => {
console.log('删除企业失败!%o', e)
this.$message.error('删除企业失败!')
console.log('删除编目失败!%o', e)
this.$message.error('删除编目失败!')
})
})
},

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-25 09:45:35
* @LastEditors: Light
* @LastEditTime: 2022-12-05 18:01:39
* @Description: "能力资源上架"
-->
<template>
@ -25,6 +25,21 @@
$t('query')
}}</el-button>
</el-form-item>
<el-form-item v-if="($store.state.user.roleIdList.indexOf('运维管理员') !== -1)">
<el-button type="primary" @click="showApproval" >批量审批</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button class="agreeButton" @click="approval('同意')">同意</el-button>
<el-button class="rejectButton" @click="approval('驳回')">驳回</el-button>
</span>
</el-dialog>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
@ -147,7 +162,9 @@ export default {
taskId: '',
processDefinitionKey: 'resourcemountapply'
},
processInstanceId: ''
processInstanceId: '',
input: '',
dialogVisible: false
}
},
components: {},
@ -172,7 +189,9 @@ export default {
this.getDataList()
bus.$emit('updateTaskNum')
})
}
}
</script>
<style lang="scss" scoped>
@import '~@/mixins/view-module-css';
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-25 09:48:46
* @LastEditors: Light
* @LastEditTime: 2022-12-06 10:18:33
* @Description: "能力资源下架"
-->
<template>
@ -25,6 +25,21 @@
$t('query')
}}</el-button>
</el-form-item>
<el-form-item v-if="($store.state.user.roleIdList.indexOf('运维管理员') !== -1)">
<el-button type="primary" @click="showApproval" >批量审批</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button class="agreeButton" @click="approval('同意')">同意</el-button>
<el-button class="rejectButton" @click="approval('驳回')">驳回</el-button>
</span>
</el-dialog>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
@ -147,7 +162,9 @@ export default {
taskId: '',
processDefinitionKey: 'resourcundercarriageapply'
},
processInstanceId: ''
processInstanceId: '',
input: '',
dialogVisible: false
}
},
components: {},
@ -176,3 +193,6 @@ export default {
}
}
</script>
<style lang="scss" scoped>
@import '~@/mixins/view-module-css';
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-29 16:31:26
* @LastEditors: Light
* @LastEditTime: 2022-12-06 10:18:29
* @Description: "能力需求申请"
-->
<template>
@ -25,6 +25,21 @@
$t('query')
}}</el-button>
</el-form-item>
<el-form-item v-if="($store.state.user.roleIdList.indexOf('运维管理员') !== -1)">
<el-button type="primary" @click="showApproval" >批量审批</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button class="agreeButton" @click="approval('同意')">同意</el-button>
<el-button class="rejectButton" @click="approval('驳回')">驳回</el-button>
</span>
</el-dialog>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
@ -147,7 +162,9 @@ export default {
taskId: '',
processDefinitionKey: 'abilitydemandapply'
},
processInstanceId: ''
processInstanceId: '',
input: '',
dialogVisible: false
}
},
components: {},
@ -175,3 +192,6 @@ export default {
}
}
</script>
<style lang="scss" scoped>
@import '~@/mixins/view-module-css';
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-29 16:31:26
* @LastEditors: Light
* @LastEditTime: 2022-12-06 10:18:37
* @Description: "评论审核"
-->
<template>
@ -25,6 +25,21 @@
$t('query')
}}</el-button>
</el-form-item>
<el-form-item v-if="($store.state.user.roleIdList.indexOf('运维管理员') !== -1)">
<el-button type="primary" @click="showApproval" >批量审批</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button class="agreeButton" @click="approval('同意')">同意</el-button>
<el-button class="rejectButton" @click="approval('驳回')">驳回</el-button>
</span>
</el-dialog>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
@ -128,6 +143,7 @@
</template>
<script>
import bus from '@/views/bus.js'
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
export default {
@ -146,10 +162,20 @@ export default {
taskId: '',
processDefinitionKey: 'comment_review'
},
processInstanceId: ''
processInstanceId: '',
input: '',
dialogVisible: false
}
},
components: {},
created () {
bus.$off('commentInit')
bus.$on('commentInit', () => {
debugger
this.getDataList()
bus.$emit('updateTaskNum')
})
},
methods: {
//
taskHandle (row) {
@ -168,3 +194,6 @@ export default {
}
}
</script>
<style lang="scss" scoped>
@import '~@/mixins/view-module-css';
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-19 11:10:50
* @LastEditors: Light
* @LastEditTime: 2022-12-06 10:18:28
* @Description: 能力申请
-->
<template>
@ -25,6 +25,21 @@
$t("query")
}}</el-button>
</el-form-item>
<el-form-item v-if="($store.state.user.roleIdList.indexOf('运维管理员') !== -1)">
<el-button type="primary" @click="showApproval" >批量审批</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button class="agreeButton" @click="approval('同意')">同意</el-button>
<el-button class="rejectButton" @click="approval('驳回')">驳回</el-button>
</span>
</el-dialog>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
@ -80,7 +95,7 @@
align="center"
></el-table-column>
<el-table-column
prop="resoureType"
prop="resourceType"
label="资源类型"
header-align="center"
align="center"
@ -157,7 +172,9 @@ export default {
taskId: '',
processDefinitionKey: returnLocationStr() == 'qingdao' ? 'abilityprocess_v3' : 'abilityprocess_v2'
},
processInstanceId: ''
processInstanceId: '',
input: '',
dialogVisible: false
}
},
components: {},
@ -186,3 +203,6 @@ export default {
}
}
</script>
<style lang="scss" scoped>
@import '~@/mixins/view-module-css';
</style>

View File

@ -2,38 +2,133 @@
<div class="wrapper">
<el-form :model="dataView">
<div v-for="(item, index) in dataView.children" :key="item">
<!-- <div class="dataTitle">{{ item.name }}</div> -->
<div v-for="itemson in item.children" :key="itemson.name">
<div class="dataTitleSon">
{{ itemson.name }}
</div>
<div class="dataContent" v-if="
itemson.name !== '算法优势' &&
itemson.name !== '应用场景' &&
itemson.name !== '功能介绍'
">
<el-form-item v-for="itemsonson in itemson.children" :key="itemsonson.name" :label="
itemsonson.type != ' multipleAdditions' ? itemsonson.name : ''
" v-show="
!(
itemsonson.name === '平台地址' ||
itemsonson.name === 'SDK安装包' ||
itemsonson.name === '接口请求方式' ||
itemsonson.name === '服务接口'
)
">
<div class="videoAndImgCss" v-if="
itemsonson.type === 'video' || itemsonson.type === 'image'
" @click="videoAndImg(itemsonson.note1)">
浏览
<div class="info-content" v-if="itemson.name ==='基本信息'">
<div class="info-left">
<template v-for="itemsonson in itemson.children">
<div class="left-inner" v-if="itemsonson.type !== 'video' && itemsonson.type !== 'image'">
<span style="font-size:14px;color:#212121;">{{itemsonson.name}}</span>:
<el-tooltip placement="top" v-if="(itemsonson.note1 && itemsonson.note1.length>18)">
<div slot="content">{{itemsonson.note1}}</div>
<span style="font-size:14px;color:#212121;font-weight: bold;">{{itemsonson.note1}}</span>
</el-tooltip>
<span style="font-size:14px;color:#212121;font-weight: bold;" v-else>{{ itemsonson.note1 }}</span>
</div>
</template>
</div>
<div class="info-right">
<div id="lib_Tab1_sx" class="lib_tabborder_sx">
<div class="lib_Menubox_sx ">
<ul>
<li id="one1" @click="setTab('one',1,5)" class="hover">图片</li>
<li id="one2" @click="setTab('one',2,5)">视频</li>
</ul>
</div>
<div class="lib_Contentbox_sx ">
<div id="con_one_1">
<template v-for="itemsonson1 in itemson.children">
<div v-if="(itemsonson1.type === 'image' )">
<img v-if=" itemsonson1.note1" @click="videoAndImg(itemsonson1.note1)" :src="itemsonson1.note1"
style="height:270px;width:490px;" />
<div v-else style="height: 270px;line-height: 270px;text-align: center;color:grey">暂无图片</div>
</div>
</template>
</div>
<div id="con_one_2" style="display:none">
<template v-for="itemsonson1 in itemson.children">
<div v-if="(itemsonson1.type === 'video' )">
<video v-if=" itemsonson1.note1" @click="videoAndImg(itemsonson1.note1)" :src="itemsonson1.note1"
style="height:270px;width:490px;" />
<div v-else style="height: 270px;line-height: 270px;text-align: center;;color:grey">暂无视频</div>
</div>
</template>
</div>
</div>
</div>
<div class="videoAndImgCss" v-if="
itemsonson.name === '上传附件'
" @click="videoAndImg(itemsonson.note1)">
下载
</div>
</div>
<div v-else-if="itemson.name === '功能介绍'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '功能介绍'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon1" >
<div class="Son1-left">
<img v-if="itemDataFormValue.img" @click="videoAndImg(itemDataFormValue.img)" :src="itemDataFormValue.img"
style="height:270px;width:490px;" />
<div v-else style="height: 270px;line-height: 270px;text-align: center;">暂无图片</div>
</div>
<div class="textAndImgSon">
<div >{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top" v-if="(itemDataFormValue.desc && itemDataFormValue.desc.length>50)">
<div slot="content">{{ itemDataFormValue.desc }}</div>
<div>功能介绍{{ itemDataFormValue.desc }}</div>
</el-tooltip>
<div v-else>功能介绍{{ itemDataFormValue.desc }}</div>
</div>
<!-- <div @click="videoAndImg(itemDataFormValue.img)">浏览</div> -->
</div>
</div>
<div v-else-if="itemsonson.type === ' multipleAdditions'" class="multipleAdditionsClass">
<div v-for="multipleAdditionsItem in itemsonson.note1" :key="multipleAdditionsItem">
</div>
</div>
<div v-else-if="itemson.name === '应用场景'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '应用场景'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon1" >
<div class="Son1-left">
<img v-if="itemDataFormValue.img" @click="videoAndImg(itemDataFormValue.img)" :src="itemDataFormValue.img"
style="height:270px;width:490px;" />
<div v-else style="height: 270px;line-height: 270px;text-align: center;">暂无图片</div>
</div>
<div class="textAndImgSon" >
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top" v-if="(itemDataFormValue.desc && itemDataFormValue.desc.length>50)">
<div slot="content">{{ itemDataFormValue.desc }}</div>
<div>应用描述{{ itemDataFormValue.desc }}</div>
</el-tooltip>
<div v-else>应用描述{{ itemDataFormValue.desc }}</div>
</div>
</div>
</div>
</div>
</div>
<div v-else-if="itemson.name === '算法优势'" style="margin-top: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '算法优势'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" >
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top" v-if="(itemDataFormValue.desc && itemDataFormValue.desc.length>100)">
<div slot="content">{{ itemDataFormValue.desc }}</div>
<div>算法描述{{ itemDataFormValue.desc }}</div>
</el-tooltip>
<div v-else>算法描述{{ itemDataFormValue.desc }}</div>
</div>
</div>
</div>
</div>
<div class="other-content" v-else>
<div class="other-info">
<template v-for="itemsonson in itemson.children">
<div v-if="itemsonson.type === ' multipleAdditions'" class="textAndImg">
<div v-for="multipleAdditionsItem in itemsonson.note1" :key="multipleAdditionsItem"
class="textAndImgSon" >
<el-tooltip placement="top">
<div slot="content">
{{
@ -73,70 +168,50 @@
<!-- <div>{{ multipleAdditionsItem }}</div> -->
</div>
</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"></el-input>
</el-tooltip>
</el-form-item>
<el-form-item v-for="itemsonson in itemson.children" :key="itemsonson.name" :label="
itemsonson.type != ' multipleAdditions' ? itemsonson.name : ''
" v-show="
(itemsonson.name === '平台地址' && showDocking) ||
(itemsonson.name === 'SDK安装包' && showSDK) ||
(itemsonson.name === '接口请求方式' && showInterface) ||
(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 v-else-if="itemson.name === '算法优势'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '算法优势'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" style="border: 1px solid #3c9bcd;margin">
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top">
<div slot="content">{{ itemDataFormValue.desc }}</div>
<div>{{ itemDataFormValue.desc }}</div>
</el-tooltip>
</div>
</div>
<div class="info-inner" v-else-if="
(
itemsonson.name === '上传附件'||
itemsonson.name === '技术文档' )
">
<span style="font-size:14px;color:#212121;" >{{itemsonson.name}}</span>:
<span style="color: #0058e1;font-weight: bold;text-decoration: underline;cursor: pointer;"
v-if="itemsonson.note1" @click="videoAndImg(itemsonson.note1)">点击下载</span>
<span v-else style="color: grey;">暂未上传</span>
</div>
</div>
<div v-else-if="itemson.name === '应用场景'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '应用场景'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" style="border: 1px solid #3c9bcd;margin">
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top">
<div slot="content">{{ itemDataFormValue.desc }}</div>
<div>{{ itemDataFormValue.desc }}</div>
<div class="info-inner" v-else-if="
(itemsonson.name === '平台地址' && showDocking) ||
(itemsonson.name === 'SDK安装包' && showSDK) ||
(itemsonson.name === '接口请求方式' && showInterface) ||
(itemsonson.name === '服务接口' && showInterface)
">
<span style="font-size:14px;color:#212121;">{{itemsonson.name}}</span>:
<el-tooltip placement="top" v-if="(itemsonson.note1 && itemsonson.note1.length>10)">
<div slot="content">{{itemsonson.note1}}</div>
<span style="font-size:14px;color:#212121;font-weight: bold;">{{itemsonson.note1}}</span>
</el-tooltip>
<div @click="videoAndImg(itemDataFormValue.img)">浏览</div>
</div>
</div>
<span style="font-size:14px;color:#212121;font-weight: bold;" v-else>{{ itemsonson.note1 }}</span>
</div>
</div>
<div v-else-if="itemson.name === '功能介绍'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '功能介绍'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" style="border: 1px solid #3c9bcd;margin">
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top">
<div slot="content">{{ itemDataFormValue.desc }}</div>
<div>{{ itemDataFormValue.desc }}</div>
<div class="info-inner" v-else-if="
!(
itemsonson.name === '平台地址' ||
itemsonson.name === 'SDK安装包' ||
itemsonson.name === '接口请求方式' ||
itemsonson.name === '服务接口'
)
">
<span style="font-size:14px;color:#212121;">{{itemsonson.name}}</span>:
<el-tooltip placement="top" v-if="(itemsonson.note1 && itemsonson.note1.length>10)">
<div slot="content">{{itemsonson.note1}}</div>
<span style="font-size:14px;color:#212121;font-weight: bold;">{{itemsonson.note1}}</span>
</el-tooltip>
<div @click="videoAndImg(itemDataFormValue.img)">浏览</div>
</div>
</div>
<span style="font-size:14px;color:#212121;font-weight: bold;" v-else>{{ itemsonson.note1 }}</span>
</div>
</div>
</template>
</div>
</div>
</div>
</div>
</el-form>
@ -145,9 +220,10 @@
<script>
import qs from 'qs'
import Template from '../../devtools/template.vue'
export default {
components: {},
components: {Template},
props: {
dataForm: {
type: Object
@ -173,6 +249,7 @@ export default {
watch: {
dataList (item) {
if (item) {
this.dataList = item
}
},
@ -184,11 +261,11 @@ export default {
)[0]
this.dataForm.infoList.map((item, index) => {
this.dataView.children.map((itemView, indexView) => {
// console.log('itemView', itemView)
itemView.children.map((itemViewSon, indexViewSon) => {
// console.log('itemViewSon', itemViewSon)
itemViewSon.children.map((itemSon, indexSon) => {
// console.log('itemSon', itemSon)
if (itemSon.name.indexOf('描述') != -1) {
this.dataView.children[indexView].children[
indexViewSon
@ -206,7 +283,7 @@ export default {
indexViewSon
].children[indexSon].note1 = this.dataForm.shareCondition
} else if (itemSon.name === '部门联系人') {
console.log('itemSon.name', itemSon.name)
this.dataView.children[indexView].children[
indexViewSon
].children[indexSon].note1 = this.dataForm.deptContacts
@ -260,11 +337,11 @@ export default {
)[0]
this.dataForm.infoList.map((item, index) => {
this.dataView.children.map((itemView, indexView) => {
console.log('itemView', itemView)
itemView.children.map((itemViewSon, indexViewSon) => {
console.log('itemViewSon', itemViewSon)
itemViewSon.children.map((itemSon, indexSon) => {
console.log('itemSon', itemSon)
if (itemSon.name.indexOf('描述') != -1) {
this.dataView.children[indexView].children[
indexViewSon
@ -286,7 +363,7 @@ export default {
indexViewSon
].children[indexSon].note1 = this.dataForm.shareType
} else if (itemSon.name === '部门联系人') {
console.log('itemSon.name', itemSon.name)
this.dataView.children[indexView].children[
indexViewSon
].children[indexSon].note1 = this.dataForm.deptContacts
@ -336,22 +413,26 @@ export default {
}
})
console.log(
'valvalvalvalvalvalvalvalvalvalval',
this.dataForm,
'valvalvalvalvalvalvalvalvalvalval============',
this.dataView
)
// -使-3
this.dataView.children.map((val) => {
if (val.name === '部署与使用') {
val.children.map((val) => {
if (val.name === '使用方式') {
val.children.map((val) => {
if (val.name === '使用方式') {
if (val.note1 === 'SDK') {
this.showSDK = true
} else if (val.note1 === '平台对接') {
this.showDocking = true
} else if (val.note1 === '调用接口') {
this.showInterface = true
}
}
@ -366,7 +447,16 @@ export default {
},
computed: {},
methods: {
setTab(name,cursel,n){
for(let i=1;i<=n;i++){
var menu=document.getElementById(name+i);
var con=document.getElementById("con_"+name+"_"+i);
menu.className=i==cursel?"hover":"";
con.style.display=i==cursel?"block":"none";
}
},
videoAndImg (link) {
if (link) {
window.open(link)
} else {
@ -377,11 +467,11 @@ export default {
}
},
deptName () {
console.log(this.dataForm.deptId)
this.$http
.get(`/sys/dept/${this.dataForm.deptId}`)
.then(({ data: res }) => {
console.log(res.data.name, 'res')
this.unit = res.data.name
})
},
@ -437,20 +527,117 @@ export default {
</style>
<style lang="scss" scoped>
.wrapper {
.dataTitle {
text-align: center;
color: #333333;
font-size: 22px;
margin-bottom: 25px;
padding: 10px 100px;
background: #ffffff;
.other-content{
// height: 278px;
overflow-y: auto;
background: #f4f5f8;
.other-info{
display: inline;
}
.info-inner{
padding: 0px 24px;
width:33%;
height:60px;
float:left;
line-height: 60px;
display: flex;
span:nth-of-type(2){
width: 285px;
word-break: break-all;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
}
}
.info-content{
height:315px;
background: #f4f5f8;
.info-left{
padding: 24px 24px;
overflow-y: auto;
width:58%;
height:100%;
float:left;
display:inline;
padding:24px 24px ;
.left-inner{
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
width: 50%;
float:left;
height:32px;
line-height: 32px;
}
}
.info-right{
width:42%;
height:100%;
float:left;
display:inline;
.lib_tabborder_sx{
height: 270px;
margin-top: 24px;
}
.lib_Menubox_sx {
line-height:28px;
position:relative;
float:left;
width:48x;
height:300px;
}
.lib_Menubox_sx ul{
list-style:none;
position:absolute;
text-align:center;
}
.lib_Menubox_sx li{
cursor: pointer;
color: #212121;
height: 66px;
width: 32px;
background-color: #ffffff;
border-radius: 1px;
writing-mode: vertical-lr;
}
.lib_Menubox_sx li.hover{
color: #fff;
background-color: #0058e1;
}
.lib_Contentbox_sx{
margin-left: 72px;
background: #dadada;
height: 270px;
width: 490px;
}
}
}
.dataTitleSon {
padding-left: 30px;
color: #333333;
font-size: 22px;
margin-bottom: 20px;
background: url("~@/assets/img/sj-jx.png") no-repeat;
background-position-x: 15px;
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;
}
.multipleAdditionsClass {
@ -509,22 +696,66 @@ export default {
background: rgba(60, 155, 205, 0.1);
display: inline-block;
}
.textAndImgY{
width: 720px;
height: 270px;
margin-right: 24px;
display: table;
.ImgSon{
display: table-cell;
width: 476px;
float: left;
height: 100%;
background: red;
}
.texton{
display: table-cell;
height: 100%;
width: 244px;
float: left;
}
}
.textAndImg {
display: flex;
padding-left: 30px;
// padding-left: 30px;
background:#fff;
.textAndImgSon1 {
width: 700px;
height: 270px;
.Son1-left{
float: left;
width:476px;
height: 270px;
border-radius: 2px;
}
}
.textAndImgSon {
width: 212px;
height: 182px;
margin-right: 30px;
float:left;
background: url("~@/assets/img/gongnengjieshao.png") no-repeat;
width: 170px;
height: 270px;
margin-right: 24px;
color: #fff;
border-radius: 2px;
display: flex;
flex-direction: column;
align-items: center;
padding: 10px;
padding: 30px 24px;
position: relative;
&>div {
&>div:first-child {
text-align: center;
margin-bottom: 30px;
font-weight: bold;
font-size: 18px;
}
&>div:nth-child(2) {
text-align: left;
-webkit-line-clamp: 5;
overflow: hidden;
text-overflow: ellipsis;
@ -532,24 +763,18 @@ export default {
-webkit-box-orient: vertical;
word-break: break-all;
}
&>div:first-child {
margin-bottom: 10px;
font-weight: bold;
&>div:nth-child(3) {
margin-top: 24px;
text-align: left;
-webkit-line-clamp: 3;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
word-break: break-all;
}
&>div:nth-child(3) {
margin-top: 10px;
position: absolute;
bottom: 8px;
cursor: pointer;
font-size: 12px;
border: 1px solid #3c9bcd;
line-height: 12px;
padding: 5px;
margin-top: 10px;
background: rgba(60, 155, 205, 0.1);
}
}
}

View File

@ -34,7 +34,7 @@
></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr" v-if="taskId">
<h3>审批</h3>
<div>审批</div>
<div class="approvalOperation">
<div class="contentOperation">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
@ -42,35 +42,14 @@
<el-button class="rejectButton" @click="agreeOrNot($store.state.contentTabsActiveName,'驳回')">驳回</el-button>
<el-button class="transferButton" @click="entrustTask()" v-if='taskEntrustFlag && taskEntrustFlag2'>转办</el-button>
</div>
<!-- <el-button type="info" @click="entrustTask()" v-if='taskEntrustFlag && taskEntrustFlag2'>转办</el-button>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('驳回')"
>驳回</el-button
> -->
<!-- <el-radio-group v-model="agreeOrList" style="width: 230px">
<el-radio-button label="同意" class="blueAll">同意</el-radio-button>
<el-radio-button label="退回" class="redAll">退回</el-radio-button>
</el-radio-group>
<el-input
v-if="agreeOrList === '同意'"
v-model="inputAgree"
placeholder="请输入同意意见"
></el-input>
<el-input
v-if="agreeOrList === '退回'"
v-model="inputNo"
placeholder="请输入退回意见"
></el-input>
<el-button
class="inputBule"
@click.native="agreeOrNot($store.state.contentTabsActiveName)"
>提交</el-button
> -->
</div>
</div>
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<!-- 流程详情 -->
<div style="padding: 10px 100px;background: #ffffff;">
<ren-process-detail></ren-process-detail>
</div>
<el-dialog
title="审批意见"
:close-on-click-modal="false"
@ -142,7 +121,6 @@ export default {
watch: {},
created () {
// KEY
console.log('params=================>', this.$route, this.$route.params)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
this.$http.get('/sys/user/info').then(({ data: res }) => {
@ -154,7 +132,7 @@ export default {
.get(
'/act/task/getTaskVariables?taskId=' + this.$route.params.taskId + '&variableName=allowEntrust'
).then(entrust => {
console.log('11111111111111', entrust, this.dataForm)
if (entrust.data.data && entrust.data.data.allowEntrust === true) {
this.taskEntrustFlag2 = true
if (this.taskEntrustFlag && this.taskEntrustFlag2) {
@ -175,7 +153,7 @@ export default {
})
})
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
@ -192,7 +170,6 @@ export default {
const businessKey = this.$router.currentRoute.params.businessKey
this.getInfo(businessKey)
this.methodsThree()
console.log(this.taskId, 'this.dataForm.taskId')
},
computed: {},
methods: {
@ -209,7 +186,6 @@ export default {
this.$http.get('/resourceMountApply/' + id).then(({ data: res }) => {
this.dataForm = res.data.resourceDTO
if (this.dataForm) {
console.log('this.dataForm', this.dataForm)
this.flagShow = true
}
})
@ -243,7 +219,6 @@ export default {
// KEY
this.fieldDisabled = true
// this.id = this.$router.currentRoute.businessKey
console.log('id', this.$router.currentRoute.params.businessKey)
// }
})
},
@ -252,12 +227,12 @@ export default {
function (data, type) {
if (type === '同意') {
// if (this.input !== '') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.taskId,
comment: this.input || '同意'
})
console.log(params)
this.$http
.post('/act/task/complete?' + params)
.then(({ data: res }) => {
@ -269,6 +244,7 @@ export default {
return
}
bus.$emit('abilityResourceShelfInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -306,6 +282,7 @@ export default {
return
}
bus.$emit('abilityResourceShelfInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -328,7 +305,7 @@ export default {
{ leading: true, trailing: false }
),
tabRemoveHandle (tabName) {
console.log(tabName, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
if (tabName === 'home') {
return false
}
@ -342,15 +319,26 @@ export default {
}
// tab
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
//
const tab1 = this.$store.state.contentTabs.filter(val => val.name === tabName.substring(0, tabName.indexOf('__')))[0]
// tab
const tab2 =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
if (tab1) {
this.$router.push({
name: /^iframe_.+/.test(tab1.name) ? 'iframe' : tab1.name,
params: { ...tab1.params },
query: { ...tab1.query }
})
} else {
this.$router.push({
name: /^iframe_.+/.test(tab2.name) ? 'iframe' : tab2.name,
params: { ...tab2.params },
query: { ...tab2.query }
})
}
}
}
}
@ -362,16 +350,26 @@ export default {
}
.wrapper {
}
::v-deep .agreeOr > div {
display: flex;
//align-items: center;
.el-input {
margin-right: 10px;
margin-left: 32px;
}
::v-deep .agreeOr{
padding: 10px 100px;
background: #ffffff;
}
::v-deep .agreeOr > div:first-of-type {
padding-left: 20px;
color: #212121;
font-size: 16px;
margin-bottom: 10px;
margin-top: 10px;
background: url("~@/assets/img/biaoti.png") no-repeat;
background-position-y: 2px;
}
::v-deep .agreeOr > div:last-of-type {
margin-top: 15px;
.el-input {
margin-right: 10px;
}
}
.blueAll {
::v-deep .el-radio-button__inner {

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua
* @Date: 2022-06-29 15:59:51
* @LastEditors: Light
* @LastEditTime: 2022-11-30 15:45:35
* @LastEditTime: 2022-12-03 16:25:55
* @Description: 告诉大家这是什么
-->
<!-- 流程业务表单 -->
@ -443,6 +443,7 @@ export default {
return
}
bus.$emit('competencyApplicationInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -478,6 +479,7 @@ export default {
return
}
bus.$emit('competencyApplicationInit')
bus.$emit('workInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
@ -514,15 +516,26 @@ export default {
}
// tab
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
//
const tab1 = this.$store.state.contentTabs.filter(val => val.name === tabName.substring(0, tabName.indexOf('__')))[0]
// tab
const tab2 =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
if (tab1) {
this.$router.push({
name: /^iframe_.+/.test(tab1.name) ? 'iframe' : tab1.name,
params: { ...tab1.params },
query: { ...tab1.query }
})
} else {
this.$router.push({
name: /^iframe_.+/.test(tab2.name) ? 'iframe' : tab2.name,
params: { ...tab2.params },
query: { ...tab2.query }
})
}
}
},
//

View File

@ -0,0 +1,197 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-demo__sysnotice">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getData()">
<el-form-item>
<el-input v-model="dataForm.content" dict-type="notice_type" :placeholder="$t('notice.type')"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getData()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogVisible = true">添加公告</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogVisible2 = true">公告周期设置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border
style="width: 100%;">
<el-table-column prop="content" label="内容" header-align="center" align="center" width="950">
</el-table-column>
<el-table-column prop="publishTime" label="发布时间" header-align="center" align="center" width="300">
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="viewHandle(scope.row)">
详情
</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="dataForm.page" :page-size="dataForm.limit" :total="total"
layout="total, prev, pager, next"
@current-change="currentChange">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
<el-dialog
title="添加公告"
:visible.sync="dialogVisible"
width="30%"
:close-on-click-modal="false">
<el-input
type="textarea"
:rows="5"
:maxlength="200"
show-word-limit
placeholder="请输入公告内容6-200字"
v-model="submitData.content">
</el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
<el-dialog
title="设置公告周期"
:visible.sync="dialogVisible2"
width="30%"
:close-on-click-modal="false">
<el-input
placeholder="请输入公告周期(天)"
v-model="cycle">
</el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="submitCycle"> </el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import qs from 'qs'
import AddOrUpdate from './notice-add-or-update'
import { addDynamicRoute } from '@/router'
export default {
data () {
return {
cycle: 0,
total: 0,
dataListLoading: false,
dialogVisible: false,
dialogVisible2: false,
dataList: [],
dataForm: {
page: 1,
limit: 5,
content: ''
},
submitData: {
content: ''
}
}
},
components: {
AddOrUpdate
},
methods: {
currentChange (current) {
this.dataForm.page = current
this.getData()
},
getData () {
this.$http.get('/sysnoticemanagement/page?' + qs.stringify(this.dataForm)).then(res => {
console.log('获取通知数据', res.data.data)
this.dataList = res.data.data.list
this.total = res.data.data.total
this.dataListLoading = false
})
},
getCycle () {
this.$http.get('/sys/dict/data/page?dictTypeId=1598237460358852610&page=1&limit=9999').then(res => {
console.log('字典', res.data.data)
this.cycle = res.data.data.list[0].dictLabel
})
},
handleClose () {
this.dialogVisible = false
this.dialogVisible2 = false
this.submitData.content = ''
this.getCycle()
},
submit () {
console.log(this.submitData)
if (this.submitData.content.length < 6) {
this.$message({
message: '最少发布6个字的公告',
type: 'warning'
})
return
}
this.$http.post('/sysnoticemanagement', this.submitData).then(res => {
console.log('获取通知数据', res.data.data)
this.clear()
})
},
submitCycle () {
this.$http.put('/sys/dict/data', {
dictLabel: this.cycle,
dictTypeId: '1598237460358852610',
id: '1598237627208265730'
}).then(res => {
this.clear()
})
},
clear () {
this.dialogVisible = false
this.dialogVisible2 = false
this.submitData.content = ''
this.dataForm.content = ''
this.dataForm.page = 1
this.getData()
this.getCycle()
},
deleteHandle (item) {
console.log(item)
this.$http.post('/sysnoticemanagement/delete', [item.id]).then(res => {
this.clear()
})
},
viewHandle (row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
title: this.$t('notice.view1'),
path: 'notice/notice-view',
params: {
id: row.id
}
}
//
addDynamicRoute(routeParams, this.$router)
}
},
created () {
this.getData()
this.getCycle()
}
}
</script>
<style scoped>
.text-ellipsis {
/*1. 先强制一行内显示文本*/
white-space: nowrap;
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;
}
::v-deep .el-textarea__inner {
resize: none;
}
</style>

View File

@ -48,10 +48,12 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
console.log("========================this.dataForm",this.dataForm)
}).catch(() => {})
}
}

View File

@ -12,7 +12,7 @@
<ren-select v-model="dataForm.gender" dict-type="gender" :placeholder="$t('user.gender')"></ren-select>
</el-form-item> -->
<el-form-item label="所属部门">
<el-select v-model="dataForm.deptId" :placeholder="$t('infrastructure.department')" clearable>
<el-select v-model="dataForm.deptId" :placeholder="$t('infrastructure.department')" clearable filterable >
<el-option :label="data.name" v-for="data in deptList" :key="data.id" :value="data.id">{{ data.name
}}</el-option>
</el-select>
@ -105,8 +105,8 @@ export default {
mixins: [mixinViewModule],
data () {
return {
//
checkVisible:false,
//
checkVisible: false,
mixinViewModuleOptions: {
getDataListURL: '/sys/user/page',
getDataListIsPage: true,
@ -131,14 +131,14 @@ export default {
this.getDeptList()
},
methods: {
check(){
this.checkVisible=true
this.$nextTick(() => {
check () {
this.checkVisible = true
this.$nextTick(() => {
this.$refs.check.init()
})
},
refreshCheck(val){
this.checkVisible=val
refreshCheck (val) {
this.checkVisible = val
},
reset () {
this.dataForm.username = ''

View File

@ -3,8 +3,8 @@
<!-- 部门发布动态 -->
<div class="left container">
<content-title :title="title.dynamic"></content-title>
<div class="dynamic-box" v-loading="loadingDynamic">
<div class="dynamicView" v-for="(item, index) in list" :key="index" :number="index + 1" :item="item">
<div v-if="(list.length>0)" class="dynamic-box" v-loading="loadingDynamic">
<div class="dynamicView" v-for="(item, index) in list" :key="index" :number="index + 1" :item="item">
<div class="wrapper">
<div class="content">
<div class="left">{{ item.createDate }}</div>
@ -16,6 +16,13 @@
</div>
<div class="more" @click="jumpTo">查看更多 ></div>
</div>
<div
class="no-data"
v-else
style="display: flex; align-items: center; justify-content: center"
>
暂无数据
</div>
</div>
<!-- 部门推荐能力 -->
@ -156,7 +163,14 @@ export default {
box-sizing: border-box;
display: flex;
justify-content: space-between;
.no-data {
width: 800px;
height: 335px;
line-height: 335px;
font-size: 16px;
color: #212121;
text-align: center;
}
.container {
background: #fff;
width: 800px;

View File

@ -68,7 +68,7 @@ export default {
const valueItem = y + '-' + m + '-' + d //
days.unshift(valueItem) //
}
console.log('最近七天日期:', days)
return days
},
@ -88,6 +88,7 @@ export default {
endDate: this.endDate
},
(res) => {
// if (res.data.code !== 0) {
// return
// }
@ -111,7 +112,7 @@ export default {
ydata: []
}
}
this.$nextTick(() => {
trendLineChart('trendId', this.trendChartData)
})
@ -124,7 +125,7 @@ export default {
handleTitleSwitch (idx) {
this.selectedTitle = idx
this.startDate = this.getData(this.selectedTitle == 0 ? 7 : 30)
console.log(this.startDate)
this.initChart()
},
getData (aa) {

View File

@ -35,7 +35,7 @@ import CenterView from '../workBench/components/center-view.vue'
import DeptChartView from '../workBench/components/dept-chart-view.vue'
import deptTodoView from '../workBench/components/dept-todo-view.vue'
import * as Apis from './api.js'
import bus from '@/views/bus.js'
export default {
components: {
deptTodoView,
@ -87,6 +87,14 @@ export default {
loadingRequire: false
}
},
created () {
bus.$off('workInit')
bus.$on('workInit', () => {
console.log("刷新工作台===================")
this.getToDo()
this.getHasToDo()
})
},
mounted () {
//
this.getToDo()

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: Light
* @LastEditTime: 2022-12-01 12:32:58
* @LastEditTime: 2022-12-08 13:42:49
* @Description: 系统静态参数配置
*/
var _global = {}
@ -68,7 +68,7 @@ var CONFIGITEM = {
// cameraUrl: '192.168.124.236:9537', // vpn
},
backUrl: 'http://10.134.135.9:9797',
apiURL: 'http://10.134.135.92:8888/renren-admin',
apiURL: 'http://10.134.135.9:8888/renren-admin',
// apiURL: 'http://192.168.124.233:8888/ucs-admin',
// previewUrl: 'http://10.134.135.9:9796/',
// websocketURL: '10.134.135.9:8888/ucs-admin', //

View File

@ -1,117 +1,132 @@
* {
font-weight: normal;
font-style: normal;
font-weight: normal;
font-style: normal;
}
.mask-layer {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
}
.model-container {
width: 446px;
height: 194px;
background: #fff;
text-align: center;
font-size: 18px;
color: #707070;
font-family: 'Alibaba PuHuiTi';
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
z-index: 99999999999;
width: 446px;
height: 194px;
background: #fff;
text-align: center;
font-size: 18px;
color: #707070;
font-family: 'Alibaba PuHuiTi';
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
z-index: 99999999999;
}
.model-container .model-title {
height: 40px;
padding-left: 24px;
padding-right: 24px;
padding-top: 10px;
background: #007fff;
text-align: left;
height: 40px;
padding-left: 24px;
padding-right: 24px;
padding-top: 10px;
background: #007fff;
text-align: left;
}
.model-container .title-span {
font-family: 'Alibaba PuHuiTi';
font-size: 18px !important;
color: #ffffff;
font-family: 'Alibaba PuHuiTi';
font-size: 18px !important;
color: #ffffff;
}
.model-container .model-close {
position: absolute;
right: 20px;
top: 10px;
width: 18px;
height: 18px;
cursor: pointer;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABHNCSVQICAgIfAhkiAAAALZJREFUOE9jZACC////ZwIpcyBOZGRk/A8SIwSAehqAatiB6itBahmBAhVAuh2qcRGQTiBkGNSQeqie6UA6G2QQyGSYIEgOr2E41UO9RpRh+CxlhIUFIZcRkocbhM9lUK/j9T6KQTgMuwgU10eKRaxhiGEQDsNg5uCMCKwGQQ07AKTtkVxyF8hWxZU0aOciLLFDehjhimKSYo1QOiEkDw4jQoqISbTUy2tUy/1Qr1FeHiElOIqYAKkPngur14nOAAAAAElFTkSuQmCC);
position: absolute;
right: 20px;
top: 10px;
width: 18px;
height: 18px;
cursor: pointer;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABHNCSVQICAgIfAhkiAAAALZJREFUOE9jZACC////ZwIpcyBOZGRk/A8SIwSAehqAatiB6itBahmBAhVAuh2qcRGQTiBkGNSQeqie6UA6G2QQyGSYIEgOr2E41UO9RpRh+CxlhIUFIZcRkocbhM9lUK/j9T6KQTgMuwgU10eKRaxhiGEQDsNg5uCMCKwGQQ07AKTtkVxyF8hWxZU0aOciLLFDehjhimKSYo1QOiEkDw4jQoqISbTUy2tUy/1Qr1FeHiElOIqYAKkPngur14nOAAAAAElFTkSuQmCC);
}
.model-container .model-content {
margin-top: 24px;
margin-top: 24px;
}
.model-container .controls {
position: absolute;
bottom: 10px;
width: 100%;
padding: 12px;
padding-top: 40px;
position: absolute;
bottom: 10px;
width: 100%;
padding: 12px;
padding-top: 40px;
}
.model-container a {
display: inline-block;
width: 49%;
text-align: center;
cursor: pointer;
display: inline-block;
width: 49%;
text-align: center;
cursor: pointer;
}
.ant-message {
z-index: 10010!important;
}
.ant-modal-wrap{
z-index: 10010!important;
}
.ant-notification {
z-index: 10012!important;
}
.ant-popconfirm {
z-index: 10010!important;
}
.ant-tooltip{
z-index: 10010!important;
}
.model-container .confirmChrome {
width: 140px;
height: 36px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 16px;
font-family: 'Alibaba PuHuiTi';
color: #fff;
line-height: 36px;
border-radius: 6px;
width: 140px;
height: 36px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 16px;
font-family: 'Alibaba PuHuiTi';
color: #fff;
line-height: 36px;
border-radius: 6px;
}
.model-container .confirm360 {
width: 140px;
height: 36px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 16px;
font-family: 'Alibaba PuHuiTi';
color: #fff;
line-height: 36px;
margin-left: 50px;
border-radius: 6px;
width: 140px;
height: 36px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 16px;
font-family: 'Alibaba PuHuiTi';
color: #fff;
line-height: 36px;
margin-left: 50px;
border-radius: 6px;
}
@font-face {
font-family: 'Alibaba PuHuiTi';
src: url('~@/assets/home/font/Alibaba-PuHuiTi-Light.otf');
font-family: 'Alibaba PuHuiTi';
src: url('~@/assets/home/font/Alibaba-PuHuiTi-Light.otf');
}
/* 气泡提示框按钮居中 */
.ant-popover-inner-content .ant-popover-buttons {
text-align: center;
text-align: center;
}
.ApplicationTopDetails-tooltip-card {
max-width: 9rem !important;
min-width: 6rem !important;
max-height: 6rem !important;
overflow-y: auto;
}
max-width: 9rem !important;
min-width: 6rem !important;
max-height: 6rem !important;
overflow-y: auto;
}

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-05-06 11:12:0011-18 19:07:53
* @LastEditors: Light
* @LastEditTime: 2022-12-01 12:33:18
* @LastEditTime: 2022-12-08 13:43:12
* @Description: 告诉大家这是什么
-->
<template>
@ -92,13 +92,31 @@
if (res.data.code == 0) {
realName = res.data.data.realName
}
onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')],
800,
200,
24,
40
)
if (realName.length > 13) {
onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')],
800,
200,
24,
40
)
} else if (realName.length > 8) {
onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')],
600,
200,
24,
40
)
} else {
onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')],
450,
200,
24,
40
)
}
getCategoryTreePage({
page: 1,
limit: 999,

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40
* @LastEditors: Light
* @LastEditTime: 2022-11-21 16:35:03
* @LastEditTime: 2022-12-06 11:43:03
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -302,7 +302,7 @@ export function workdynamicsDetails(params) {
params,
})
}
//
//
export function selectDeptList(data) {
return request({
url: '/resource/selectDeptList',
@ -310,7 +310,15 @@ export function selectDeptList(data) {
data,
})
}
//
//
export function getDataResourceDeptList(data) {
return request({
url: '/resource/getDataResourceDeptList',
method: 'post',
data,
})
}
export function updateRes(data) {
return request({
url: '/resource/update',
@ -572,3 +580,11 @@ export function delApplyCamera(data) {
data,
})
}
//
export function sysnoticemanagement(params) {
return request({
url: '/sysnoticemanagement/page',
method: 'get',
params,
})
}

View File

@ -337,3 +337,12 @@ export function getDeviceDetail(deviceId) {
method: 'get',
})
}
//
export function treminders(data) {
return request({
url: '/reminders/treminders',
method: 'post',
data,
})
}

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:48:03
* @LastEditors: Light
* @LastEditTime: 2022-10-10 16:56:17
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-05 15:27:26
* @Description: 告诉大家这是什么
*/
import { storage, tokenTableName } from '@/config'
@ -42,8 +42,9 @@ export function setAccessToken(accessToken) {
} else if ('sessionStorage' === storage) {
return sessionStorage.setItem(tokenTableName, accessToken)
} else if ('cookie' === storage) {
let expires = new Date(new Date() * 1 + 12 * 60 * 60 * 1000)
return cookie.set(tokenTableName, accessToken, { expires: expires })
// let expires = new Date(new Date() * 1 + 12 * 60 * 60 * 1000)
// return cookie.set(tokenTableName, accessToken, { expires: expires })
return cookie.set(tokenTableName, accessToken)
// return cookie.set(tokenTableName, '213124123412341234')
} else {
return localStorage.setItem(tokenTableName, accessToken)

View File

@ -24,6 +24,10 @@ let loadingInstance
*/
const handleCode = (code, msg, res) => {
switch (code) {
case 0:
case 1:
case 200:
break
case 401:
store.dispatch('user/resetAll').catch(() => {})
break
@ -43,6 +47,8 @@ const handleCode = (code, msg, res) => {
case 302:
// window.location.href = redirect
break
default:
message.error(msg || '接口异常')
}
}

View File

@ -44,7 +44,7 @@
<div class="left-list1">排行</div>
<div class="left-list2">部门名称</div>
<div class="left-list1">应用数</div>
<div class="left-list1" style="color: #1ffefd">贡献金额</div>
<div class="left-list1" style="color: #1ffefd">节省金额</div>
</div>
<div style=" height: 1.7rem; overflow-y: auto;overflow-x: hidden;width: 100%;">
<div class="left-list" v-for="(item, index) in top5DeptFundList">
@ -105,7 +105,7 @@
<div class="left-list1">序号</div>
<div class="left-list2">部门名称</div>
<div class="left-list1">应用数</div>
<div class="left-list1" style="color: #1ffefd">贡献金额</div>
<div class="left-list1" style="color: #1ffefd">节省金额</div>
</div>
<div style="height: 200px; overfolw-y: auto">
<div

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

View File

@ -8,13 +8,14 @@
<div style="color: #bed1df; font-size: 32px">累计节省财政资金</div>
<div class="area-right">
<!-- <div class="mianJi">累计节省财政资金</div> -->
<template v-for="(item, index) in saveMonmy">
<template v-for="(item, index) in saveMonmy">
<p v-if="item == '.'" :key="index">
{{ item }}
</p>
<span v-else>{{ item }}</span>
<span @click="jumpToPage" v-else>{{ item }}</span>
</template>
<div class="mianJi">万元</div>
<div class="mianJi" >万元</div>
<!-- <div stype="margin-left:10px" ><img src="./image/jump.png"/></div> -->
</div>
<div style="color: #bed1df; font-size: 16px">
资源参考价格由部门提供或参考市场价格设定
@ -50,6 +51,7 @@
import ReservoirRight from './components/ReservoirRight'
import ReservoirBottom from './components/ReservoirBottom'
import { NumbersConvertedToArrays } from '@/utils/arrayMethod.js'
import Cookies from 'js-cookie'
export default {
//import使
components: {
@ -87,6 +89,11 @@
watch: {},
//
methods: {
//
jumpToPage(){
Cookies.remove('JSESSIONID')
window.open(window.SITE_CONFIG.backUrl + '/#/assetReport-index')
},
getSaveMoney() {
getApplyPriceCount().then((res) => {
this.saveMonmy = NumbersConvertedToArrays(res.data.data)
@ -160,7 +167,7 @@
height: 1.8rem;
}
.header1 {
top: 78px;
top: 70px;
position: absolute;
left: 795px;
align-items: center;
@ -174,6 +181,7 @@
color: #bed1df;
margin-left: 100px;
span {
cursor: pointer;
width: 36px;
// height: 45px;
// line-height: 45px;
@ -187,6 +195,10 @@
margin-right: 3px;
font-family: DinPro-Bold;
}
span:hover{
color: #f2bc0a;
}
.mianJi {
margin-top: 6px;

View File

@ -28,8 +28,8 @@
<template #renderItem="{ item }">
<a-list-item>
<div class="toptitle">
<a-tooltip placement="topLeft">
<template #title>{{ item.demandSubject }}</template>
<a-tooltip placement="topLeft" v-if="item.demandSubject.length>20">
<template #title>{{ item.demandSubject}}</template>
<span
@click="showDetail(item)"
style="cursor: pointer"
@ -38,15 +38,19 @@
{{ item.demandSubject }}
</span>
</a-tooltip>
<span v-else>
{{ item.demandSubject }}
</span>
<span class="time">{{ item.createDate }}</span>
</div>
<a-tooltip placement="topLeft">
<template #title>描述 {{ item.demandDetails }}</template>
<div class="bottomdesc">
<div class="bottomdesc" v-if="item.demandDetails.length<100">
描述 {{ item.demandDetails || '--' }}
</div>
</a-tooltip>
<div class="bottomdesc" v-else>
描述 {{ item.demandDetails.slice(0,100) }}...<span style="cursor:pointer;color:#1492ff" @click="showDetail(item)">查看更多>></span>
</div>
</a-list-item>
</template>
</a-list>
@ -194,6 +198,7 @@ onMounted(() => {
})
</script>
<style lang="less" scoped>
.main-cont {
margin-top: 64px;
width: 100%;
@ -260,6 +265,7 @@ onMounted(() => {
box-shadow: 10px 8px 10px 3px #9dc6ea;
padding: 20px;
.toptitle {
cursor: pointer;
margin-bottom: 10px;
& > span:first-child {
display: -webkit-box;
@ -287,7 +293,7 @@ onMounted(() => {
.bottomdesc {
display: -webkit-box;
/*设置为弹性盒子*/
-webkit-line-clamp: 1;
-webkit-line-clamp: 2;
/*最多显示2行*/
overflow: hidden;
/*超出隐藏*/

View File

@ -60,10 +60,10 @@
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<template #icon>
<!-- <template #icon>
<shopping-cart-outlined />
</template>
加入申购车
</template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入申购车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ props.dataList.isCollect == 'true' ? '已' : '' }}收藏
@ -95,7 +95,7 @@ const router = useRouter()
const applicationArea = ref('')
const deploymentLocation = ref('') //
//
const addShoppingCart = () => {
const addShoppingCart = () => {
if (props.dataList.isInShoppingCart) {
message.error('已经加入申购车了')
} else {

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-09 09:29:29
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-27 15:43:57
* @LastEditors: Light
* @LastEditTime: 2022-12-02 15:08:26
* @Description: 应用详情
-->
<template>
@ -16,8 +16,14 @@
<!-- <p style="cursor: pointer; filter: blur(4px)">
{{ dataFrom.link }}
</p> -->
<p style="cursor: pointer;"
:class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">
<p
style="cursor: pointer"
:class="{
'blur-word': !(approveStatus == '通过' && whoShow1.itShowXiHaiAn
? false
: true),
}"
>
{{ dataFrom.link }}
</p>
</a-tooltip>
@ -27,10 +33,20 @@
<a-tooltip>
<template #title>请申请后查看</template>
<!-- <p style="filter: blur(4px)">{{ dataFrom.number }}</p> -->
<p :class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">{{ dataFrom.number
}}</p>
<p
:class="{
'blur-word': !(approveStatus == '通过' && whoShow1.itShowXiHaiAn
? false
: true),
}"
>
{{ dataFrom.number }}
</p>
</a-tooltip>
<div @click="copyFunction(dataFrom.number, '复制账号')" v-if="dataFrom.number != '' && flag">
<div
@click="copyFunction(dataFrom.number, '复制账号')"
v-if="dataFrom.number != '' && flag"
>
复制账号
</div>
<!-- <div v-else id="zanwu">暂无</div> -->
@ -40,9 +56,21 @@
<a-tooltip>
<template #title>请申请后查看</template>
<p style="filter: blur(4px)">{{ dataFrom.password }}</p>
<p style="filter: blur(4px)" :class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">{{ dataFrom.password }}</p>
<p
style="filter: blur(4px)"
:class="{
'blur-word': !(approveStatus == '通过' && whoShow1.itShowXiHaiAn
? false
: true),
}"
>
{{ dataFrom.password }}
</p>
</a-tooltip>
<div @click="copyFunction(dataFrom.password2, '复制密码')" v-if="dataFrom.password2 != '' && flag">
<div
@click="copyFunction(dataFrom.password2, '复制密码')"
v-if="dataFrom.password2 != '' && flag"
>
复制密码
</div>
<!-- <div v-else id="zanwu">暂无</div> -->
@ -51,185 +79,185 @@
</div>
</template>
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
let flag = ref(true)
const whoShow1 = ref(whoShow)
console.log('whoShow1', whoShow1.value.itShowQingDao)
const props = defineProps({
dataList: { type: Object, default: null },
})
const dataFrom = ref({
linkName: '访问地址',
link: '',
numberName: '试用账号',
number: '',
passwordName: '试用密码',
password: '**************************',
password2: '',
})
console.log('props.dataList------------>', props.dataList);
const approveStatus = ref('')
if (props.dataList.infoList) {
let obj = props.dataList.approveStatus;
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
let flag = ref(true)
const whoShow1 = ref(whoShow)
console.log('whoShow1', whoShow1.value.itShowQingDao)
const props = defineProps({
dataList: { type: Object, default: null },
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
// }
}
const clickLink = (link) => {
window.open(link)
}
//
const copyFunction = (data, name) => {
if (data !== '') {
let url = data
let oInput = document.createElement('input')
oInput.value = url
document.body.appendChild(oInput)
oInput.select() // ;
console.log(oInput.value)
document.execCommand('Copy') //
oInput.remove() //
message.success(name + '成功')
} else {
message.error('复制为空')
}
}
message.config({
top: '100px', //
})
// const success = () => {
// message.success({
// // content: 'This is a prompt message with custom className and style',
// className: 'custom-class',
// style: {},
// })
// }
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = props.dataList.approveStatus
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
const dataFrom = ref({
linkName: '访问地址',
link: '',
numberName: '试用账号',
number: '',
passwordName: '试用密码',
password: '**************************',
password2: '',
})
console.log('props.dataList------------>', props.dataList)
const approveStatus = ref('')
if (props.dataList.infoList) {
let obj = props.dataList.approveStatus
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
// }
}
const clickLink = (link) => {
window.open(link)
}
//
const copyFunction = (data, name) => {
if (data !== '') {
let url = data
let oInput = document.createElement('input')
oInput.value = url
document.body.appendChild(oInput)
oInput.select() // ;
console.log(oInput.value)
document.execCommand('Copy') //
oInput.remove() //
message.success(name + '成功')
} else {
message.error('复制为空')
}
}
)
message.config({
top: '100px', //
})
// const success = () => {
// message.success({
// // content: 'This is a prompt message with custom className and style',
// className: 'custom-class',
// style: {},
// })
// }
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = props.dataList.approveStatus
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
}
}
)
</script>
<style lang="less" scoped>
.algorithm-on-trial {
padding: 0.8rem 0px 0.8rem;
display: flex;
flex-direction: column;
align-items: center;
.main {
margin-top: 0.3rem;
width: 13rem;
height: 2.5rem;
background: url('~@/assets/detailsAll/kfzj_sybg.png') no-repeat;
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
.algorithm-on-trial {
padding: 0.8rem 0px 0.8rem;
display: flex;
flex-direction: column;
align-items: center;
.main-left {
border-right: 0.01rem #ffffff solid;
padding-left: 0.7rem;
padding-right: 1rem;
.main {
margin-top: 0.3rem;
width: 13rem;
height: 2.5rem;
background: url('~@/assets/detailsAll/kfzj_sybg.png') no-repeat;
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center;
&>p {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
word-break: break-all;
-webkit-box-orient: vertical;
.main-left {
border-right: 0.01rem #ffffff solid;
padding-left: 0.7rem;
padding-right: 1rem;
& > p {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
word-break: break-all;
-webkit-box-orient: vertical;
}
}
.main-center {
padding-left: 1rem;
padding-right: 1rem;
}
.main-right {
padding-right: 0.7rem;
}
& > div > p:first-child {
font-size: 0.26rem;
color: #ffffff;
font-weight: bold;
}
& > div > p:nth-child(2) {
font-size: 0.22rem;
color: #ffffff;
line-height: 0.34rem;
}
& > div:first-child > p:last-child {
text-decoration: underline;
word-wrap: break-word;
word-break: normal;
}
& > div > div:last-child {
height: 0.34rem;
width: 1.1rem;
border: 0.01rem solid #ffffff;
border-radius: 0.06rem;
font-size: 0.18rem;
color: #ffffff;
cursor: pointer;
text-align: center;
line-height: 0.34rem;
}
}
.main-center {
padding-left: 1rem;
padding-right: 1rem;
}
.main-right {
padding-right: 0.7rem;
}
&>div>p:first-child {
font-size: 0.26rem;
color: #ffffff;
font-weight: bold;
}
&>div>p:nth-child(2) {
font-size: 0.22rem;
color: #ffffff;
line-height: 0.34rem;
}
&>div:first-child>p:last-child {
text-decoration: underline;
word-wrap: break-word;
word-break: normal;
}
&>div>div:last-child {
#zanwu {
height: 0.34rem;
width: 1.1rem;
border: 0.01rem solid #ffffff;
border-radius: 0.06rem;
font-size: 0.18rem;
font-size: 0.24rem;
color: #ffffff;
cursor: pointer;
text-align: center;
line-height: 0.34rem;
border: 0;
}
}
#zanwu {
height: 0.34rem;
width: 1.1rem;
font-size: 0.24rem;
color: #ffffff;
border: 0;
.blur-word {
filter: blur(4px);
}
}
.blur-word {
filter: blur(4px);
}
</style>
<style>
.custom-class {
/* top: 100px; */
}
.custom-class {
/* top: 100px; */
}
</style>

View File

@ -64,8 +64,8 @@
type="primary"
@click="addShoppingCart()"
>
<template #icon><shopping-cart-outlined /></template>
加入购物车
<!-- <template #icon><shopping-cart-outlined /></template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入购物车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ props.dataList.isCollect == 'true' ? '已' : '' }}收藏

View File

@ -57,10 +57,10 @@
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<template #icon>
<!-- <template #icon>
<shopping-cart-outlined />
</template>
加入申购车
</template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入申购车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ props.dataList.isCollect == 'true' ? '已' : '' }}收藏

View File

@ -55,8 +55,8 @@
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<template #icon><shopping-cart-outlined /></template>
加入购物车
<!-- <template #icon><shopping-cart-outlined /></template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入购物车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ props.dataList.isCollect == 'true' ? '已' : '' }}收藏

View File

@ -63,8 +63,8 @@
).length === 0
"
>
<template #icon><shopping-cart-outlined /></template>
加入申购车
<!-- <template #icon><shopping-cart-outlined /></template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入申购车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ props.dataList.isCollect == 'true' ? '已' : '' }}收藏

View File

@ -2,11 +2,18 @@
<!-- 青岛 -->
<div class="details-pageconetent" v-if="whoShow1 && whoShow1.itShowQingDao">
<home-header></home-header>
<div class="details-pageconetent-left" v-if="Cardsname != '基础设施'">
<div
class="details-pageconetent-left"
v-if="
Cardsname === '应用资源' ||
Cardsname === '组件服务' ||
Cardsname === '数据资源'
"
>
<detailsPageconetentTree />
</div>
<div class="details-pageconetent-left" v-else>
<detailsPageInfrastructureTree v-if="flag != '6'" />
<div class="details-pageconetent-left" v-else-if="Cardsname === '基础设施'">
<detailsPageInfrastructureTree v-if="flag == '1'" />
</div>
<div class="top" v-if="Cardsname != '知识库' && Cardsname != '基础设施'">
<div class="resultListSearchInput-father">
@ -1265,7 +1272,17 @@
if (Cardsname.value === arr[0] && arr[0] == '基础设施') {
getAppResources2()
} else {
changeCards(arr[0])
let newQuery = JSON.parse(
JSON.stringify(router.currentRoute.value.query)
)
newQuery.str = searchValue.value
router
.replace({
query: newQuery,
})
.then(() => {
changeCards(arr[0])
})
}
if (!mapFlag) {
return

View File

@ -9,13 +9,13 @@
<div class="algorithm-top-details">
<div class="left">
<div class="top">
<a-tooltip placement="top">
<a-tooltip placement="top" v-if="(props.dataList.name.length>20)">
<template #title>{{ props.dataList.name }}</template>
<span class="name">
{{ props.dataList.name }}
</span>
</a-tooltip>
<!-- <span class="name">{{ props.dataList.name }}</span> -->
<span class="name" v-else>{{ props.dataList.name }}</span>
<div class="label-content">
<p class="lable-father">
<span class="label" v-if="props.dataList.type">
@ -27,29 +27,55 @@
<span class="label" v-if="props.dataList.shareCondition">
{{ props.dataList.shareCondition }}
</span>
</p>
</div>
<!-- <span class="label">免费</span> -->
</div>
<div class="main">
<!-- <a-tooltip placement="top">
<template #title>应用领域{{ applicationArea }}</template>
<div>应用领域{{ applicationArea }}</div>
</a-tooltip> -->
<a-tooltip placement="top">
<!-- <a-tooltip placement="top">
<template #title>{{ props.dataList.description }}</template>
<div>
{{ props.dataList.description }}
</div>
</a-tooltip>
<div style="padding-top:20px">
<span >场景入口:</span>
<span style="margin-left:10px;cursor: pointer; text-decoration: underline;"
@click="openScene(props.dataList.sceneUrl)">{{(props.dataList.sceneUrl)}}</span>
</div>
</a-tooltip> -->
<div class="bottomdesc" v-if="(props.dataList.description.length < 183)">
场景描述 {{ props.dataList.description || '--' }}
</div>
<div class="bottomdesc" v-else-if="dowmOrUp === '展开>>'">
场景描述 {{ props.dataList.description.slice(0, 183) }}...
<span
style="cursor: pointer; color: rgb(241 211 112)"
@click="showDetail(dowmOrUp)"
>
{{ dowmOrUp }}
</span>
</div>
<div class="bottomdesc1" v-else>
场景描述 {{ props.dataList.description }}
<span
style="cursor: pointer; color: rgb(241 211 112)"
@click="showDetail(dowmOrUp)"
>
{{ dowmOrUp }}
</span>
</div>
<div style="padding-top: 20px">
<span>场景入口:</span>
<span
style="
margin-left: 10px;
cursor: pointer;
text-decoration: underline;
"
@click="openScene(props.dataList.sceneUrl)"
>
{{ props.dataList.sceneUrl }}
</span>
</div>
</div>
<div class="bottom" v-if="props.dataList.id">
<!-- 融合服务 存在fuseResourceList -->
@ -80,287 +106,299 @@
</a-button> -->
</div>
</div>
<div class="right">
</div>
<div class="right"></div>
</div>
</template>
<script setup>
// import { ShoppingCartOutlined } from '@ant-design/icons-vue'
import { defineProps, ref, watch } from 'vue'
import { scInsert, scDel } from '@/api/personalCenter'
import { sgcInsert } from '@/api/home'
import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
//
const router = useRouter()
// import { ShoppingCartOutlined } from '@ant-design/icons-vue'
import { defineProps, ref, watch } from 'vue'
import { scInsert, scDel } from '@/api/personalCenter'
import { sgcInsert } from '@/api/home'
import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
//
const router = useRouter()
const props = defineProps({
dataList: { type: Object, default: null },
let dowmOrUp = ref('展开>>') // down ; up
//
const showDetail = (val) => {
if (val === '展开>>') {
dowmOrUp.value = '收起<<'
} else {
dowmOrUp.value = '展开>>'
}
}
const props = defineProps({
dataList: { type: Object, default: null },
})
console.log('dataList------------>', props.dataList)
const applicationArea = ref('')
// //
const addShoppingCart = () => {
if (props.dataList.isInShoppingCart) {
message.error('已经加入申购车了')
} else {
console.log('加入申购车==================>', props.dataList)
sgcInsert({
delFlag: '0',
resourceId: props.dataList.id,
// userId: userId.value,
}).then((res) => {
console.log(res)
message.success('添加申购车成功!')
mybus.emit('getSgcNum')
props.dataList.isInShoppingCart = true
console.log(
props.dataList.isInShoppingCart,
'props.dataList.isInShoppingCart'
)
})
}
}
//
const openScene = (val) => {
window.open(val, '_blank')
}
// //
function toView() {
// window.open(newpage.href, '_blank')
// router.push({
// path: '/apply',
// query: {
// name: props.dataList.name,
// resourceId: [props.dataList.id],
// },
// })
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
// componentType: '',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
// --
const handleAKeyApplication = () => {
let _applyList = []
;(props.dataList.fuseResourceList || []).map((v) => {
let resource = v.resource || {}
let obj = {
arr: [
{
delFlag: resource.delFlag,
description: resource.description,
resourceId: resource.id,
resourceName: resource.name,
time: resource.createDate,
type: resource.type,
},
],
deptId: resource.deptId,
deptName: resource.deptName,
}
_applyList.push(obj)
})
console.log('dataList------------>', props.dataList)
const applicationArea = ref('')
// //
const addShoppingCart = () => {
if (props.dataList.isInShoppingCart) {
message.error('已经加入申购车了')
localStorage.setItem('applyList', JSON.stringify(_applyList))
router.push({
path: '/apply',
})
}
//
const scFlag2 = ref(true)
const goTOCollection = () => {
console.log('收藏===================》', props.dataList)
if (scFlag2.value) {
scFlag2.value = false
if (props.dataList.isCollect == 'true') {
scDel([props.dataList.id]).then((res) => {
if (res.data.msg === 'success') {
message.success('取消成功')
// eslint-disable-next-line vue/no-mutating-props
props.dataList.isCollect = 'false'
scFlag2.value = true
}
})
} else {
console.log('加入申购车==================>', props.dataList)
sgcInsert({
delFlag: '0',
resourceId: props.dataList.id,
// userId: userId.value,
}).then((res) => {
console.log(res)
message.success('添加申购车成功!')
mybus.emit('getSgcNum')
props.dataList.isInShoppingCart = true
console.log(
props.dataList.isInShoppingCart,
'props.dataList.isInShoppingCart'
)
scInsert([
{
resourceId: props.dataList.id,
},
]).then((res) => {
if (res.data.msg === 'success') {
message.success('添加收藏成功!')
// eslint-disable-next-line vue/no-mutating-props
props.dataList.isCollect = 'true'
scFlag2.value = true
}
})
}
}
//
const openScene = (val) => {
window.open(val, "_blank");
}
// //
function toView() {
// window.open(newpage.href, '_blank')
// router.push({
// path: '/apply',
// query: {
// name: props.dataList.name,
// resourceId: [props.dataList.id],
// },
// })
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
// componentType: '',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
// --
const handleAKeyApplication = () => {
let _applyList = []
;(props.dataList.fuseResourceList || []).map((v) => {
let resource = v.resource || {}
let obj = {
arr: [
{
delFlag: resource.delFlag,
description: resource.description,
resourceId: resource.id,
resourceName: resource.name,
time: resource.createDate,
type: resource.type,
},
],
deptId: resource.deptId,
deptName: resource.deptName,
}
_applyList.push(obj)
})
// scInsert([{ resourceId: props.dataList.id }]).then((res) => {
// console.log(res)
// message.success('')
// })
}
if (props.dataList.infoList) {
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
}
watch(
() => props.dataList,
(val) => {
if (val) {
console.log('props.dataList-----watch------->', val)
localStorage.setItem('applyList', JSON.stringify(_applyList))
router.push({
path: '/apply',
})
}
//
const scFlag2 = ref(true)
const goTOCollection = () => {
console.log('收藏===================》', props.dataList)
if (scFlag2.value) {
scFlag2.value = false
if (props.dataList.isCollect == 'true') {
scDel([props.dataList.id]).then((res) => {
if (res.data.msg === 'success') {
message.success('取消成功')
// eslint-disable-next-line vue/no-mutating-props
props.dataList.isCollect = 'false'
scFlag2.value = true
}
})
} else {
scInsert([
{
resourceId: props.dataList.id,
},
]).then((res) => {
if (res.data.msg === 'success') {
message.success('添加收藏成功!')
// eslint-disable-next-line vue/no-mutating-props
props.dataList.isCollect = 'true'
scFlag2.value = true
}
})
}
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
}
// scInsert([{ resourceId: props.dataList.id }]).then((res) => {
// console.log(res)
// message.success('')
// })
}
if (props.dataList.infoList) {
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
}
watch(
() => props.dataList,
(val) => {
if (val) {
console.log('props.dataList-----watch------->', val)
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
}
}
)
)
</script>
<style lang="less" scoped>
.algorithm-top-details {
height: 6rem;
padding: 1.8rem 0 0;
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.algorithm-top-details {
height: 6rem;
padding: 1.8rem 0 0;
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.left {
max-width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
.left {
max-width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
.top {
display: flex;
align-items: center;
.top {
display: flex;
align-items: center;
span {
font-size: 0.14rem;
}
.name {
// max-width: 3.3rem;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
font-size: 0.4rem;
margin-right: 0.2rem;
font-size: 0.4rem;
margin-right: 0.2rem;
max-width: 6rem;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.label-content {
position: relative;
}
.lable-father {
position: absolute;
min-width: 3.5rem;
right: -3.5rem;
top: 0;
}
.label {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
background: rgba(255, 255, 255, 0.4);
}
span {
font-size: 0.14rem;
}
.main {
margin-top: 0.2rem;
font-size: 0.18rem;
line-height: 0.34rem;
// & > div:nth-of-type(1) {
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
// }
& > div:nth-of-type(1) {
max-height: 1rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
word-break: break-all;
}
.name {
// max-width: 3.3rem;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
font-size: 0.4rem;
margin-right: 0.2rem;
font-size: 0.4rem;
margin-right: 0.2rem;
max-width: 6rem;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.bottom {
margin-top: 0.4rem;
display: flex;
.label-content {
position: relative;
}
.ant-btn {
height: 0.5rem;
margin-right: 0.2rem;
background: #ff8b55;
border-radius: 0.06rem;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
}
.lable-father {
position: absolute;
min-width: 3.5rem;
right: -3.5rem;
top: 0;
}
.ant-btn:nth-of-type(1) {
width: 1.8rem;
}
.ant-btn:nth-of-type(2) {
width: 2.2rem;
}
.ant-btn:nth-of-type(3) {
width: 1.45rem;
}
.label {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
background: rgba(255, 255, 255, 0.4);
}
}
.right {
width: 5.8rem;
height: 4rem;
background: url('~@/assets/detailsAll/sf_right_bg.png') no-repeat;
background-size: 100%;
margin-top: -0.4rem;
.main {
.bottomdesc {
display: -webkit-box;
/*设置为弹性盒子*/
-webkit-line-clamp: 4;
/*最多显示2行*/
overflow: hidden;
/*超出隐藏*/
text-overflow: ellipsis;
/*超出显示为省略号*/
-webkit-box-orient: vertical;
word-break: break-all;
width: 800px;
font-size: 16px;
}
.bottomdesc1 {
overflow: auto;
width: 800px;
font-size: 16px;
height: 200px;
}
margin-top: 0.2rem;
font-size: 0.18rem;
line-height: 0.34rem;
}
.bottom {
margin-top: 0.4rem;
display: flex;
.ant-btn {
height: 0.5rem;
margin-right: 0.2rem;
background: #ff8b55;
border-radius: 0.06rem;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
}
.ant-btn:nth-of-type(1) {
width: 1.8rem;
}
.ant-btn:nth-of-type(2) {
width: 2.2rem;
}
.ant-btn:nth-of-type(3) {
width: 1.45rem;
}
}
}
.right {
width: 5.8rem;
height: 4rem;
background: url('~@/assets/detailsAll/sf_right_bg.png') no-repeat;
background-size: 100%;
margin-top: -0.4rem;
}
}
</style>

View File

@ -420,7 +420,7 @@
})
mybus.on('changeMenuStyle', (data) => {
debugger
targetRouter.value = data
if (data.path == '/algorithmCompare') {
jumpPage(
@ -469,7 +469,7 @@
// padding: 0 1rem;
background-color: rgba(0, 0, 25, 0.7);
position: fixed;
z-index: 1000;
z-index: 10012;
top: 0;
div {
@ -673,7 +673,7 @@
top: 0.45rem;
right: 2.4rem;
overflow-y: scroll;
z-index: 9999999;
.bottom {
cursor: pointer;
width: 100%;

View File

@ -2,11 +2,11 @@
* @Author: Light
* @Date: 2022-11-24 09:07:50
* @LastEditors: Light
* @LastEditTime: 2022-11-25 09:56:50
* @LastEditTime: 2022-12-03 14:56:14
* @Description: 告诉大家这是什么
-->
<template>
<div class="detail-back" @click="goToDetailsPageconetent">
<div class="detail-back" @click="previousPage">
<!-- <div class="nav-box"> -->
<!-- <a-breadcrumb>
<a-breadcrumb-item @click="goToDetailsPageconetent" class="bread-crumb-span">能力集市</a-breadcrumb-item>
@ -37,7 +37,7 @@
}
}
const detailName = ref('应用资源')
const detailName = ref('应用资源1')
const goToDetailsPageconetent = () => {
let pathData = {

View File

@ -113,7 +113,7 @@
<script>
import { defineComponent, ref, watch } from 'vue'
import { selectDeptList } from '@/api/home.js'
import { selectDeptList, getDataResourceDeptList } from '@/api/home.js'
import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
@ -128,65 +128,45 @@
title: 'name',
}
const store = useStore()
//
const user = ref({
deptName: store.getters['user/deptName'],
deptId: store.getters['user/deptId'],
})
//
const user = ref({
deptName: store.getters['user/deptName'],
deptId: store.getters['user/deptId'],
})
const showKey = ref(0)
const treeData = ref([])
const init = () => {
treeData.value = []
console.log(
'router.currentRoute.value.query.select',
router.currentRoute.value.query.select
)
let select = router.currentRoute.value.query.select
if (select === '123') {
select = ''
}
console.log(
'获取url中的select=====================>',
router.currentRoute.value.query.select
)
if (
select !== '基础设施' &&
select !== '数据资源' &&
select !== '知识库'
) {
selectDeptList({ type: select }).then((res) => {
// console.log('=========================>', res.data.data)
res.data.data.forEach((val) => {
if (val.type !== '全部能力目录') {
let obj = {
title: val.type,
total: val.total,
show: val.type === '市级' ? true : false,
select: false,
key: val.type,
children: [],
}
switch (val.type) {
case '市级':
case '企业':
case '其他':
generateChildren(val, obj)
break
case '区级':
generateChildren2(val, obj)
break
}
treeData.value.push(obj)
}
})
//
const sortArr = ['全部能力目录', '市级', '区级', '企业', '其他']
treeData.value.sort((a, b) => {
return sortArr.indexOf(a.key) - sortArr.indexOf(b.key)
})
//
// let deptId=user.value.deptId
//
const processingData = (res) => {
res.data.data.forEach((val) => {
if (val.type !== '全部能力目录') {
let obj = {
title: val.type,
total: val.total,
show: val.type === '市级' ? true : false,
select: false,
key: val.type,
children: [],
}
switch (val.type) {
case '市级':
case '企业':
case '其他':
generateChildren(val, obj)
break
case '区级':
generateChildren2(val, obj)
break
}
treeData.value.push(obj)
}
})
//
const sortArr = ['全部能力目录', '市级', '区级', '企业', '其他']
treeData.value.sort((a, b) => {
return sortArr.indexOf(a.key) - sortArr.indexOf(b.key)
})
//
// let deptId=user.value.deptId
// treeData.value.forEach((child) => {
// let childern=child.children
// childern.forEach((childs) => {//
@ -209,11 +189,46 @@
// })
// }
// })
// })
console.log('左侧树结构数据======================>', treeData.value)
showKey.value++
console.log('左侧树结构数据======================>', treeData.value)
showKey.value++
}
const init = () => {
treeData.value = []
console.log(
'router.currentRoute.value.query.select',
router.currentRoute.value.query.select
)
let select = router.currentRoute.value.query.select
if (select === '123') {
select = ''
}
console.log(
'获取url中的select=====================>',
router.currentRoute.value.query.select
)
if (
select !== '基础设施' &&
select !== '数据资源' &&
select !== '知识库'
) {
selectDeptList({ type: select }).then((res) => {
// console.log('=========================>', res.data.data)
if (res.data.msg !== 'success') {
return
}
processingData(res)
})
} else if (select === '数据资源') {
getDataResourceDeptList({ type: select }).then((res) => {
// console.log('=========================>', res.data.data)
if (res.data.msg !== 'success') {
return
}
processingData(res)
})
}
}
@ -222,7 +237,6 @@
})
// children
const generateChildren = (val, obj) => {
if (val.dataList.length > 0) {
val.dataList.forEach((child) => {
let children = {
@ -232,14 +246,13 @@
total: child.deptCount,
key: child.deptId,
}
obj.children.push(children)
})
}
}
//
const generateChildren2 = (val, obj) => {
if (val.dataList.length > 0) {
val.dataList.forEach((dis) => {
let children = {
@ -259,7 +272,7 @@
select: false,
key: child.deptId,
}
children.children.push(children2)
})
}

View File

@ -1,8 +1,8 @@
<!--
* @Author: Light
* @Date: 2022-11-18 11:53:43
* @LastEditors: Light
* @LastEditTime: 2022-11-30 11:55:51
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-01 16:10:15
* @Description: 告诉大家这是什么
-->
<template>
@ -17,6 +17,13 @@
{{ item.channelName }}
</a-tooltip>
</div>
<a-tag
color="cyan"
style="margin-right: 0; cursor: pointer"
@click="selectItem(item, true)"
>
预览
</a-tag>
<a-popconfirm
:title="'是否移出' + item.channelName + '?'"
ok-text="是"
@ -132,6 +139,7 @@
</a-modal>
<a-modal
v-else
wrapClassName="preview-modal"
v-model:visible="showVisible"
:title="dataList.selectItem.cameraInfo.channelName"
:footer="null"
@ -147,9 +155,22 @@
justify-content: center;
"
>
<div class="video-cover-new" @click="videoShowMsg"></div>
<div class="waterMark waterMark-left-top">
{{ '西海岸能力超市' + (deptName || '') + (userName || '') }}
</div>
<div class="waterMark waterMark-right-top">
{{ '西海岸能力超市' + (deptName || '') + (realName || '') }}
</div>
<div class="waterMark waterMark-left-bottom">
{{ '西海岸能力超市' + (deptName || '') + (userName || '') }}
</div>
<div class="waterMark waterMark-right-bottom">
{{ '西海岸能力超市' + (deptName || '') + (realName || '') }}
</div>
<h5-player
videoId="preview"
unStopable="true"
:unStopable="unStopable"
:video-url="videoUrl"
></h5-player>
</div>
@ -193,6 +214,11 @@
import { useRouter } from 'vue-router'
import H5Player from '@/views/home/components/H5Player.vue'
import { getCameraLiveStream } from '@/api/file'
import { useStore } from 'vuex'
const store = useStore()
const userName = store.getters['user/username']
const realName = store.getters['user/realName']
const deptName = store.getters['user/deptName']
const dataList = reactive({ toBeApplied: [], requested: [], selectItem: {} })
const showVisible = ref(false)
//
@ -200,6 +226,7 @@
const delWacFlag = ref(true)
const delApply = ref(true)
const visible = ref(false)
const unStopable = ref(true)
const visibleApply = ref(false)
const instanceId = ref('')
const showArr = ref([])
@ -264,6 +291,11 @@
})
}
}
//
const videoShowMsg = () => {
let msg = '请申请后在我的申请中观看视频!'
message.warning(msg)
}
const apply = () => {
let obj = {
arr: [
@ -336,18 +368,27 @@
},
})
}
const selectItem = (item) => {
if (item.approveStatus == '通过') {
dataList.selectItem = item
getVideoUrl(item.cameraInfo)
const selectItem = (item, stopableFlag) => {
if (stopableFlag) {
unStopable.value = false
console.log('111111111111', item)
dataList.selectItem.cameraInfo = item
getVideoUrl(item)
return
} else if (item.backToFirst == 'true') {
message.info('请到个人中心查看详情')
} else {
message.info('请耐心等待审核通过')
if (item.approveStatus == '通过') {
unStopable.value = true
dataList.selectItem = item
getVideoUrl(item.cameraInfo)
return
} else if (item.backToFirst == 'true') {
message.info('请到个人中心查看详情')
} else {
message.info('请耐心等待审核通过')
}
dataList.selectItem = {}
showVisible.value = false
}
dataList.selectItem = {}
showVisible.value = false
}
const handleOk = () => {
console.log('id', instanceId.value)
@ -465,6 +506,7 @@
top: 50%;
right: 0.16rem;
margin-top: -3.9rem;
z-index: 10010;
.bottom {
margin-top: 20px;
}
@ -481,7 +523,14 @@
word-break: break-all;
}
.top .name {
width: 1.8rem;
width: 1.3rem;
display: flex;
justify-content: space-between;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
:deep(.ant-list-footer) {
display: flex;
@ -500,6 +549,71 @@
height: 3rem;
}
.batch-video-cover {
position: absolute;
left: 0;
top: 0;
background: transparent;
height: 288px;
z-index: 99999999;
width: 512px;
margin-top: 14px;
cursor: pointer;
}
.waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
font-size: 22px;
font-weight: bold;
opacity: 0.4;
transform: rotate(-25deg);
width: 470px;
}
//
.waterMark-left-top {
left: 50px;
top: 100px;
text-align: left;
}
//
.waterMark-right-top {
right: 50px;
top: 100px;
text-align: right;
}
//
.waterMark-left-bottom {
left: 50px;
bottom: 100px;
text-align: left;
}
//
.waterMark-right-bottom {
right: 50px;
bottom: 100px;
text-align: right;
}
}
</style>
<style lang="less">
.preview-modal {
z-index: 10010;
.video-cover-new {
width: 798px;
height: 600px;
position: absolute;
left: 22px;
top: 80px;
background: transparent;
z-index: 99999999;
cursor: pointer;
}
.waterMark {
position: absolute;
z-index: 99999999;

View File

@ -407,7 +407,7 @@
class="map-contain"
v-if="showMap"
v-loading="spinningHome"
element-loading-text="Loading..."
element-loading-text="加载中..."
element-loading-svg-view-box="-10, -10, 50, 50"
element-loading-background="rgba(122, 122, 122, 0.9)"
:element-loading-svg="svg"

View File

@ -31,9 +31,11 @@
/>
<i class="searchImg" aria-hidden="true"></i>
<button class="button-reset" @click="resetAction()">重置</button>
<div class="hengxian"></div>
</div>
</div>
<div v-if="number === 0" class="checkResult">检测结果: <span>{{resourceTotal}}</span></div>
<div v-loading="loadingData">
<searchResultList
v-if="number === 1"
@ -52,7 +54,9 @@
:resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<div class="pagination">
<a-pagination
v-if="resourceList.data && resourceList.data.length > 0"
v-model:current="currentPage"
@ -330,9 +334,22 @@
})
</script>
<style lang="less" scoped>
.checkResult{
margin-left: 0.2rem;
font-size: 14px;
font-weight: 500;
color: #212121;
margin-top: 10px;
span {
font-size: 18px;
color: #0087ff;
}
}
.resultListSearchInput-father {
background: #f3f5f9;
padding: 0.2rem;
padding: 0rem 0.2rem;
.resultListSearchInput-son {
background: #fff;

View File

@ -7,9 +7,11 @@
<div :id="mapId" class="normal-map-content">
<tiled-map v-loading="spinning" element-loading-text="Loading..."
element-loading-svg-view-box="-10, -10, 50, 50"
element-loading-background="rgba(122, 122, 122, 0.8)"
<tiled-map v-loading="spinning"
element-loading-text="加载中..."
element-loading-svg-view-box="-10, -10, 50, 50"
element-loading-background="rgba(122, 122, 122, 0.9)"
:element-loading-svg="svg"
:hi-map="hiMap" :map-id="mapId" />
</div>
@ -144,6 +146,16 @@
checkboxGroup: [],
tabList: [],
state: '',
svg: `
<path class="path" d="
M 30 15
L 28 17
M 25.61 25.61
A 15 15, 0, 0, 1, 15 30
A 15 15, 0, 1, 1, 27.99 7.5
L 15 15
" style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>
`,
spinning: false,
timeout: null,
camreaTree: [],

View File

@ -529,7 +529,7 @@
border: 1px solid #74a9f8;
border-radius: 10px;
margin: 0 10px;
cursor: pointer;
// cursor: pointer;
.item-name {
color: #fff;

View File

@ -174,7 +174,7 @@
await this.$router.push('/home')
}
} catch (error) {
message.error('登陆失败,用户名或密码错误!')
// message.error('')
}
},
},

View File

@ -0,0 +1,147 @@
<!--
* @Author: Light
* @Date: 2022-11-30 17:43:43
* @LastEditors: Light
* @LastEditTime: 2022-12-02 16:02:26
* @Description: 告诉大家这是什么
-->
<template>
<div class="carousel" v-if="dataSource.noticeList.length > 0">
<div class="notice">
<!-- <div class="item" id="notice-item1" v-html="dataSource.str"></div>
<div class="item" id="notice-item2" v-html="dataSource.str"></div> -->
<div class="notice-item">
<svg
t="1669889820945"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="1382"
width="20"
height="20"
>
<path
d="M553.141571 59.499589a43.664726 43.664726 0 0 0-47.54116 6.253491l-255.990857 218.616193-204.061284-0.841113h-0.07314a43.884147 43.884147 0 0 0-31.377165 13.274954 46.041784 46.041784 0 0 0-13.128674 32.291418L0.018468 694.283776a46.370915 46.370915 0 0 0 12.982393 32.364558 43.884147 43.884147 0 0 0 31.523446 13.421235h206.511482l254.747473 217.81165a43.664726 43.664726 0 0 0 47.541159 6.21692 45.749223 45.749223 0 0 0 25.599086-41.360808V100.823828a45.785793 45.785793 0 0 0-25.599086-41.324239z m172.610978 228.343845a43.884147 43.884147 0 0 0-58.695047 21.466662 46.553766 46.553766 0 0 0 20.332988 60.925824 150.668905 150.668905 0 0 1 69.483233 138.271633c0 108.174422-62.352059 144.013142-64.436556 145.183387a46.261205 46.261205 0 0 0-19.930717 61.291525 44.432699 44.432699 0 0 0 39.898004 25.269955 43.481876 43.481876 0 0 0 19.857577-4.790686c4.644406-2.413628 113.623371-60.267562 113.62337-226.954181a239.607443 239.607443 0 0 0-120.169422-220.664119z m138.600764-134.139209a43.884147 43.884147 0 0 0-61.181815 13.677226 46.553766 46.553766 0 0 0 12.909253 63.120031c4.827256 3.254741 118.889468 82.977608 118.889469 281.370523s-109.417807 278.664333-113.769651 281.589943a46.370915 46.370915 0 0 0-12.360702 63.339452 43.884147 43.884147 0 0 0 61.766937 12.653262c6.253491-4.278704 153.375094-107.735581 153.375094-357.728938S870.862795 157.873219 864.353313 153.594514z m0 0"
p-id="1383"
fill="#d81e06"
></path>
</svg>
<!-- {{ item.content }} -->
<marquee
direction="left"
behavior="scroll"
onmouseover="this.stop()"
onmouseout="this.start()"
>
{{ dataSource.str }}
</marquee>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, onMounted, onBeforeUnmount, nextTick } from 'vue'
import { sysnoticemanagement } from '@/api/home'
import { getCategoryTreePage } from '@/api/personalCenter'
const dataSource = reactive({
noticeList: [],
total: 0,
str: '',
})
getCategoryTreePage({
dictTypeId: '1598237460358852610',
page: 1,
limit: 9999,
}).then((res) => {
sysnoticemanagement({
page: 1,
limit: 9999,
content: '',
days: res.data.data.list[0].dictLabel,
}).then((res1) => {
dataSource.noticeList = res1.data.data.list
dataSource.total = res1.data.data.total
dataSource.noticeList.map((val, index) => {
dataSource.str +=
'通知' + (index + 1) + '' + val.content + '     '
})
})
})
// let time = null
onMounted(() => {
// nextTick(() => {
// const domArr = document.getElementsByClassName('notice-item')
// let num = 0
// //
// const move = () => {
// num++
// for (let i = 0; i < domArr.length; i++) {
// let offsetWidth = 0
// for (let j = 0; j < i; j++) {
// offsetWidth += domArr[j].offsetWidth + 30
// }
// domArr[i].style.left = -num + offsetWidth + 'px'
// }
// }
// // transition
// const setTransition = (str) => {
// for (let i = 0; i < domArr.length; i++) {
// domArr[i].style.transition = str
// }
// }
// move()
// time = window.setInterval(() => {
// move()
// let str = domArr[dataSource.total].style.left
// if (str.substring(0, str.length - 2) < 0) {
// num = 0
// setTransition('unset')
// move()
// } else if (domArr[0].style.transition == 'unset') {
// setTransition('all 0.05s linear')
// }
// }, 50)
// })
})
onBeforeUnmount(() => {
// window.clearInterval(time)
})
</script>
<style lang="less" scoped>
.carousel {
width: 100%;
height: 50px;
line-height: 50px;
display: flex;
justify-content: center;
align-items: center;
// background: #364d79;
color: #fff;
position: absolute;
top: 60px;
left: 0;
.notice {
width: 740px;
height: 50px;
line-height: 50px;
position: relative;
overflow: hidden;
.notice-item {
font-size: 16px;
position: absolute;
top: 0;
white-space: nowrap;
transition: all 0.05s linear;
display: flex;
align-items: center;
.icon {
margin-right: 10px;
}
}
}
}
marquee {
font-weight: 600;
}
</style>

View File

@ -2,12 +2,13 @@
* @Author: hisense.liangjunhua
* @Date: 2022-06-23 16:41:49
* @LastEditors: Light
* @LastEditTime: 2022-10-13 16:40:15
* @LastEditTime: 2022-11-30 17:55:43
* @Description: 告诉大家这是什么
-->
<template>
<div class="newHome">
<new-home-header></new-home-header>
<Carousel></Carousel>
<navigation></navigation>
<navigation2></navigation2>
<capability-convergence></capability-convergence>
@ -21,6 +22,7 @@
</template>
<script setup>
import NewHomeHeader from '@/views/home/components/header'
import Carousel from '@/views/newHome/components/Carousel'
import Navigation from '@/views/newHome/components/Navigation'
import Navigation2 from '@/views/newHome/components/Navigation2'
import CapabilityConvergence from '@/views/newHome/components/CapabilityConvergence'
@ -32,21 +34,21 @@
import HomeFooter from '@/views/newHome/components/Footer'
</script>
<style lang="less" scoped>
@font-face {
font-family: 'text-typeface';
src: url('~@/assets/newHome/font/text-typeface.otf');
}
@font-face {
font-family: 'num-typeface';
src: url('~@/assets/newHome/font/num-typeface.otf');
}
.newHome {
font-family: text-typeface;
.num {
font-family: num-typeface;
@font-face {
font-family: 'text-typeface';
src: url('~@/assets/newHome/font/text-typeface.otf');
}
@font-face {
font-family: 'num-typeface';
src: url('~@/assets/newHome/font/num-typeface.otf');
}
.newHome {
font-family: text-typeface;
.num {
font-family: num-typeface;
}
}
.resource-aggregation {
background: #fff;
}
}
.resource-aggregation {
background: #fff;
}
</style>

View File

@ -152,7 +152,7 @@
>
查看详情
</a-button>
<!-- <div class="btn" v-if="val.type == '组件服务'">技术文档</div> -->
</div>
<div class="ability-bottom">
@ -175,7 +175,17 @@
</a-button>
</div>
</div>
<div v-if="item.approveStatus === '通过'" style=" margin-top: 15px;font-size: 16px; color: #ee4457;font-weight: bold;">说明已申请成功使用方式及联系人请点击"查看详情"按钮查看</div>
<div
v-if="item.approveStatus === '通过'"
style="
margin-top: 15px;
font-size: 16px;
color: #ee4457;
font-weight: bold;
"
>
说明已申请成功使用方式及联系人请点击"查看详情"按钮查看
</div>
</div>
</div>
</div>
@ -280,9 +290,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 单个预览弹窗 -->

View File

@ -30,7 +30,36 @@
<div v-if="showType !== '云资源'">
<div class="title">审批详情</div>
<template v-for="item in dataSource.data" :key="item">
<div class="oddNumbers">子单号:{{ item[0] }}</div>
<div class="oddNumbers">
<div>子单号:{{ item[0] }}</div>
<template
v-if="
item[1][0].assignee !== store.getters['user/userId'] &&
typeStrObj.indexOf(showType) !== -1
"
>
<a-popconfirm
v-if="refObj.allowReminders || item[1][0].allowReminders"
title="是否催办此流程?"
ok-text="是"
cancel-text="否"
@confirm="urgeThis(item)"
@cancel="cancel"
>
<a-button type="primary" danger>催办</a-button>
</a-popconfirm>
<a-tooltip
v-else-if="refObj.doneReminders || item[1][0].doneReminders"
>
<template #title>
{{
refObj.nextRemindersDays || item[1][0].nextRemindersDays
}}天后可再次催办
</template>
<a-button type="primary" danger>已催办</a-button>
</a-tooltip>
</template>
</div>
<a-table
:dataSource="item[1]"
:columns="dataSourceColumns"
@ -54,9 +83,11 @@
</div>
</template>
<script setup>
import { message } from 'ant-design-vue'
import AbilityApplication from './AbilityApplication.vue'
import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue'
import mybus from '@/myplugins/mybus'
import Demand from './Demand.vue'
import Comment from './Comment.vue'
import dataResourceApplication from './dataResourceApplication.vue'
@ -64,6 +95,7 @@
import DeviceApplyDetail from './DeviceApplyDetail.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import { onMounted, reactive, defineProps, ref } from 'vue'
import { useStore } from 'vuex'
import Cookies from 'js-cookie'
// import { baseURL } from '@/config'
import qs from 'qs'
@ -72,7 +104,7 @@
getTaskHandleDetailInfo,
getDemandForm,
nengliziyuanshangjiaapply,
getTaskVariables,
treminders,
} from '@/api/personalCenter'
import { selectOneDel } from '@/api/home'
const props = defineProps({
@ -83,6 +115,7 @@
refObj: { type: Object, default: null },
showType: { type: String, default: null },
})
const store = useStore()
const refObj = ref({})
const showType = ref('')
// eslint-disable-next-line vue/no-setup-props-destructure
@ -92,7 +125,13 @@
//
const dataSource = reactive({ data: [] })
console.log('refObj------------>', refObj)
const typeStrObj = [
'能力申请',
'能力上架',
'能力下架',
'能力需求',
'需求评论',
]
// console.log(props.refObj, '---------------------------------------')
const downloadFile = (path, name) => {
@ -285,6 +324,27 @@
})
}
//
const urgeThis = (item) => {
console.log('催办==========>', item)
treminders({
instanceId: item[0],
processTaskId: item[1][0].id,
processTaskStats: 1,
applyNumber: refObj.value.applyNumber,
}).then((res) => {
if (res.data.msg !== 'success') {
message.warning('催办失败')
return
}
message.success('催办成功!')
mybus.emit('closeModal', {
type: showType.value,
index: typeStrObj.indexOf(showType.value),
})
})
}
onMounted(() => {
// getInfo()
if (props.refObj.resourceApplication) {
@ -348,4 +408,20 @@
.oddNumbers {
margin-bottom: 0.05rem;
}
.oddNumbers {
display: flex;
justify-content: space-between;
align-items: center;
.button {
width: 96px;
height: 30px;
background: #ff4d4f;
font-size: 14px;
color: #fff;
border-radius: 4px;
text-align: center;
line-height: 30px;
cursor: pointer;
}
}
</style>

View File

@ -117,7 +117,7 @@
item.ended
? '审核完成'
: item.backToFirst
? '审核中(被驳回,请修改申请或终止流程'
? '审核中(请修改被驳回内容'
: '审核中'
}}
</p>

View File

@ -272,6 +272,7 @@
function handlecancel() {
abilityToTypeFunctionData.value = '组件服务'
componentTypeValue.value = ''
visible2.value = false
}
function abilityToTypeFunction(item) {
abilityToTypeFunctionData.value = item
@ -291,6 +292,7 @@
if (abilityToTypeFunctionData.value == '组件服务') {
if (!componentTypeValue.value || componentTypeValue.value == '') {
message.error('请选择组件类型!')
componentTypeValueOld.value = ''
return
} else if (
componentTypeValue.value === '智能算法' ||
@ -316,10 +318,10 @@
query: snum.value,
})
window.open(applypage.href, '_blank')
visible.value = false
visible2.value = false
abilityToTypeFunctionData.value = '组件服务'
componentTypeValue.value = ''
console.log(e)
visible2.value = false
}
let abilityToType = ref(['组件服务', '应用资源'])
let componentType = ref([
@ -687,61 +689,95 @@
margin-top: -1.44rem;
font-size: 0.14rem;
font-weight: 500;
.ant-modal-footer {
border: 0;
text-align: center;
margin-top: 24px;
padding-bottom: 24px;
.shenqing {
background: #0058e1;
color: #ffffff;
width: 90px;
height: 32px;
border-radius: 2px;
border: 1px #0058e1 solid;
}
.quxiao {
width: 90px;
height: 32px;
background: #ffffff;
color: #0058e1;
border-radius: 2px;
border: 1px #0058e1 solid;
}
}
.ant-modal-body {
padding: 0px !important;
}
.ant-radio-inner {
height: 0.16rem;
width: 0.16rem;
}
.ant-radio-inner::after {
background-color: unset;
background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat;
background-size: cover;
background-position: center;
}
.ant-modal-content {
border-radius: 0.1rem;
border-radius: 2px;
border: 1px #e6e9ed solid;
width: 690px;
box-shadow: 0px 4px 20px rgb(0, 0, 0, 0.5);
.ability-to-type,
.component-type {
display: flex;
margin-top: 0.2rem;
margin-top: 24px;
margin-left: 24px;
.title {
white-space: nowrap;
margin-right: 0.2rem;
display: flex;
align-items: center;
height: 0.26rem;
font-size: 16px;
}
.content {
.component-type-content {
width: 100%;
height: unset;
border: unset;
background: unset;
.ant-radio-group {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: auto auto auto auto;
grid-gap: 0.15rem;
}
}
}
.ability-to-type {
.content {
.ability-to-type-content {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: auto auto auto auto;
height: unset;
border: unset;
background: unset;
margin-left: 20px;
div {
margin-right: 0.15rem;
&:hover {
background: #0058e1;
cursor: pointer;
color: #ffffff;
}
margin-right: 16px;
cursor: pointer;
font-size: 0.14rem;
width: 0.9rem;
height: 0.26rem;
border-radius: 0.13rem;
color: #333333;
background: #f5f5f5;
border: 0.01rem #cccccc solid;
font-size: 16px;
width: 90px;
height: 32px;
border-radius: 2px;
color: #0058e1;
background: #ffffff;
border: 1px #0058e1 solid;
display: flex;
justify-content: center;
align-items: center;
@ -749,7 +785,7 @@
}
.ability-to-type-down {
background: #0087ff;
background: #0058e1;
color: #fff;
}
}
@ -759,16 +795,25 @@
.ant-modal-title {
display: flex;
align-items: center;
display: flex;
align-items: center;
margin: 0px 24px;
padding-top: 24px;
padding-bottom: 22px;
color: #212121;
font-weight: bold;
font-size: 20px;
border-bottom: 2px solid #ebeced;
}
.ant-modal-footer {
border: 0;
text-align: center;
padding-bottom: 0.2rem;
margin-top: 50px;
button {
margin-right: 0.2rem;
border-radius: 0.08rem;
margin-right: 12px;
border-radius: 2px;
}
}

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-02 15:48:15
* @LastEditors: Light
* @LastEditTime: 2022-12-01 14:02:17
* @Description:我的申请 能力申请 查看详情
-->
<template>
@ -51,6 +51,12 @@
refObj: { type: Object, default: null },
})
console.log(props.refObj, '=====================================')
const arr = ['算法优势', '应用场景', '计费标准信息', '常见问题', '功能介绍']
if (props.refObj.dto.infoList) {
props.refObj.dto.infoList = props.refObj.dto.infoList.filter(
(val) => arr.indexOf(val.attrType) == -1
)
}
const endThis = () => {
endProcess({ instanceId: props.refObj.processInstanceId }).then((res) => {
if (res.data.code == 0) {

View File

@ -347,6 +347,8 @@
message.success(`${info.file.name} 文件上传成功`)
formName.enclosure = info.file.response.data
} else if (info.file.status === 'error') {
formName.enclosure = ''
fileList.value=[]
message.error(`${info.file.name} 文件上传失败`)
}
}