Commit bf784c55 authored by 罗新东's avatar 罗新东

Merge branch 'develop' of http://git.censoft.com.cn/BCDH-HSE/bcdh-app into develop

parents 3e5e4088 57380a7e
Pipeline #7122 passed with stage
in 12 seconds
......@@ -233,6 +233,24 @@ const routes = [{
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/notice/noticeList'),
},
{
path: '/noticeListDetail',
name: 'noticeListDetail',
meta: {
title: '整改通知管理详情',
index: 3
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/notice/noticeList/detail'),
},
{
path: '/noticeListEdit',
name: 'noticeListEdit',
meta: {
title: '整改通知管理编辑',
index: 3
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/notice/noticeList/edit'),
},
{
path: '/sign',
name: 'sign',
......@@ -242,6 +260,33 @@ const routes = [{
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/notice/noticeList/sign'),
},
{
path: '/checked-confirm',
name: 'checked-confirm',
meta: {
title: '整改确认',
index: 3
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/checkedConfirm'),
},
{
path: '/confirmNote',
name: 'confirmNote',
meta: {
title: '整改确认问题记录',
index: 3
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/checkedConfirm/confirmNote'),
},
{
path: '/confirmDetail',
name: 'confirmDetail',
meta: {
title: '整改确认问题记录',
index: 3
},
component: () => import( /* webpackChunkName: "create-order" */ '../views/checkedConfirm/confirmNote/detail'),
},
// 登录页
{
path: '/login2',
......
......@@ -118,6 +118,7 @@ export default {
finish:this.finish
}
})
sessionStorage.setItem('noteId',this.nums.id)
},
formwork(){
this.$router.push({name:'formwork',query:{id:this.id,finish:this.finish}})
......
......@@ -13,7 +13,7 @@
<LHeader v-bind:text="text"></LHeader>
<div class="card">
<div>问题位置:{{list.address}}</div>
<div>责任单位:{{list.deptId}}</div>
<div>责任单位:{{list.deptNames.join('/')}}</div>
<div>问题描述:{{list.context}}</div>
<div>法律依据:{{list.checkBasis}}</div>
<div>图片展示:<van-uploader multiple :deletable="false" :show-upload="false" v-model="list.pictures" /></div>
......
......@@ -57,8 +57,8 @@ export default {
}
},
mounted() {
if(this.$route.query.id){
this.id=this.$route.query.id
if(sessionStorage.getItem('nodeId')){
this.id=sessionStorage.getItem('nodeId')
}
if(this.$route.query.finish){
this.finish=this.$route.query.finish
......@@ -169,17 +169,19 @@ export default {
},
//修改卡片值
update(index,item){
console.log(item)
item.show=false
//向编辑页面传值做数据回显
var obj={
id:item.id,//问题ID
address:item.address,//问题位置
deptId:item.deptId,//责任单位ID
deptId:item.deptIds,//责任单位ID
context:item.context,//问题描述
checkBasis:item.checkBasis,//法律依据
pictures:item.pictures,//图片
videos:item.videos//视频
}
console.log(obj,'检查')
this.$forceUpdate()//强制刷新
this.$router.push({name:'edit',query:{name:'note',obj:JSON.stringify(obj)}})
},
......
<!--
* 严肃声明:
* 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
* 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
* 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
* Copyright (c) 2020 陈尼克 all rights reserved.
* 版权所有,侵权必究!
*
-->
<template>
<div>
<LHeader v-bind:text="text"></LHeader>
<div class="card">
<div>问题位置:{{list.address}}</div>
<div>责任单位:{{list.deptId}}</div>
<div>问题描述:{{list.context}}</div>
<div>法律依据:{{list.checkBasis}}</div>
<div>图片展示:<van-uploader multiple :deletable="false" :show-upload="false" v-model="list.pictures" /></div>
<div>视频展示:<van-uploader multiple :deletable="false" :show-upload="false" :disabled="true" v-model="list.videos" /></div>
</div>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from '@/components/header.vue'
import { getFun,postFun } from '@/service/table'
export default {
name: 'confirmDetail',
components: {
"LHeader":LHeader,
"tabBar":tabBar
},
data() {
return {
text:'问题详情',//顶部文本
list:{},//详情列表
id:'',//详情列表id
}
},
mounted() {
this.id=this.$route.query.id
this.init()
},
methods: {
/* 获取详情列表 */
init(){
this.list={}
getFun('check/confirm/trouble/list',{planId:this.id}).then((Response)=>{
this.list=Response.data.list
})
}
}
}
</script>
<style lang="less" scoped>
.card{
width:90%;
box-shadow: 0px 0px 10px 2px #F3F3F3;
padding: 0.25rem;
margin:0.4rem auto;
background: white;
border-radius: 4%;
}
.card div{
font-size: 0.4rem;
line-height: 0.8rem;
}
</style>
This diff is collapsed.
<!--
* 严肃声明:
* 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
* 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
* 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
* Copyright (c) 2020 陈尼克 all rights reserved.
* 版权所有,侵权必究!
*
-->
<template>
<div>
<LHeader v-bind:text="text"></LHeader>
<div class="card" v-for="(item,index) in checkedConfirmList" :key="index" @click="cardLocation(item)">
<div>负责人:{{item.name}}</div>
<div>部门名称:{{item.realName}}</div>
<div>开始时间:{{item.planStartTime}}</div>
<div>结束时间:{{item.planEndTime}}</div>
<div>检查地点:{{item.address}}</div>
<div>检查类型:{{item.type}}</div>
</div>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from '@/components/header.vue'
import { getFun,postFun } from '@/service/table'
export default {
name: 'checked-confirm',
components: {
"LHeader":LHeader,
"tabBar":tabBar
},
data() {
return {
checkedConfirmList:[],//检查确认列表
text:'检查确认列表',//顶部文本
}
},
mounted() {
this.list()
},
methods: {
/* 首次进入页面请求检查执行列表接口 */
list(){
this.checkedConfirmList=[]
this.$toast.loading({
message:'加载中...',
forbidClick: true,
loadingType: 'spinner',
duration: 0
})
getFun('check/confirm/list').then((Response)=>{
this.checkedConfirmList=Response.data
this.$toast.clear()
}).catch(()=>{
this.$toast.clear()
this.$toast.fail('加载失败,请稍后再试')
})
},
cardLocation(item){
this.$router.push({name:'confirmNote',query:{projectId:item.projectId,id:item.id}})//此id来判断是否加载问题上报新数据
}
}
}
</script>
<style lang="less" scoped>
.card{
width:90%;
box-shadow: 0px 0px 10px 2px #F3F3F3;
padding: 0.25rem;
margin:0.4rem auto;
background: white;
border-radius: 4%;
}
.card div{
font-size: 0.4rem;
line-height: 0.8rem;
}
</style>
<!--
* 严肃声明:
* 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
* 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
* 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
* Copyright (c) 2020 陈尼克 all rights reserved.
* 版权所有,侵权必究!
*
-->
<template>
<div>
<LHeader v-bind:text="text"></LHeader>
<div class="card">
<div>问题位置:{{list.address}}</div>
<div>责任单位:{{list.deptNames}}</div>
<div>问题描述:{{list.context}}</div>
<div>法律依据:{{list.checkBasis}}</div>
<div>图片展示:<van-uploader multiple :deletable="false" :show-upload="false" v-model="list.pictures" /></div>
<div>视频展示:<van-uploader multiple :deletable="false" :show-upload="false" :disabled="true" v-model="list.videos" /></div>
</div>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from '@/components/header.vue'
import { getFun,postFun } from '@/service/table'
export default {
name: 'detail',
components: {
"LHeader":LHeader,
"tabBar":tabBar
},
data() {
return {
text:'整改问题详情',//顶部文本
list:{},//详情列表
id:'',//详情列表id
}
},
mounted() {
this.id=this.$route.query.id
this.init()
},
methods: {
/* 获取详情列表 */
init(){
this.list={}
getFun('check/notify/trouble/'+this.id).then((Response)=>{
this.list=Response.data
})
}
}
}
</script>
<style lang="less" scoped>
.card{
width:90%;
box-shadow: 0px 0px 10px 2px #F3F3F3;
padding: 0.25rem;
margin:0.4rem auto;
background: white;
border-radius: 4%;
}
.card div{
font-size: 0.4rem;
line-height: 0.8rem;
}
</style>
<!--
* 严肃声明:
* 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
* 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
* 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
* Copyright (c) 2020 陈尼克 all rights reserved.
* 版权所有,侵权必究!
*
-->
<template>
<div>
<LHeader v-bind:text="text"></LHeader>
<van-form @submit="onSubmit" @failed="onFailed">
<van-field
v-model="editObj.context"
name="问题描述"
label="问题描述"
placeholder="问题描述"
:rules="[{ required: true, message: '请填写问题描述' }]"
/>
<van-field
v-model="editObj.checkBasis"
name="法律依据"
label="法律依据"
placeholder="法律依据"
:rules="[{ required: true, message: '请填写法律依据' }]"
/>
<van-field
v-model="editObj.address"
name="问题位置"
label="问题位置"
placeholder="问题位置"
:rules="[{ required: true, message: '请填写问题位置' }]"
/>
<van-field
readonly
clickable
name="picker"
:value="editObj.value"
label="责任单位"
placeholder="请选择部门"
@click="showPicker = true"
:rules="[{ required: true, message: '请填写问题位置' }]"
/>
<van-popup v-model="showPicker" position="bottom">
<van-picker ref="apicker"
show-toolbar
:columns="columns"
@confirm="onConfirm"
@cancel="showPicker = false"
@change="checkScroll"
/>
<!-- <van-area title="标题" :area-list="areaList" @confirm="onConfirm" /> -->
</van-popup>
<van-field name="uploader" label="图像上传" :rules="[{ required: true, message: '请上传图像' }]">
<template #input>
<van-uploader multiple :max-count="5" upload-text="最多上传五个" v-model="editObj.pictures" />
</template>
</van-field>
<van-field name="uploader2" label="视频上传" :rules="[{ required: true, message: '请上传视频' }]">
<template #input>
<van-uploader multiple :max-count="5" upload-text="最多上传五个" v-model="editObj.videos" />
</template>
</van-field>
<div style="margin: 0.5rem">
<van-button round block type="info" native-type="submit">提交</van-button>
</div>
</van-form>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from '@/components/header.vue'
import { getFun,postFun } from '@/service/table'
export default {
name: 'list',
components: {
"LHeader":LHeader,
"tabBar":tabBar
},
data() {
return {
/* form表单 */
editObj:{},
value:'',//责任单位
showPicker:false,//默认是否展示弹出层
columns: [],//下拉数组
text:'整改通知问题编辑',//顶部文本
ids:[],//下拉框选中值数组id
}
},
mounted() {
if(this.$route.query.name=='noticeList'){
this.editObj=JSON.parse(this.$route.query.obj)
this.editObj.value=""
this.editObj.pictures=[]
this.editObj.videos=[]
}
console.log(this.editObj)
this.init()
},
methods: {
/* 获取下拉树级联列表 */
init(){
getFun('check/dept/tree').then((Response)=>{
this.columns=Response.data
})
},
/* 下拉框文本溢出动画效果 */
checkScroll () {
this.$nextTick(() => {
// 获取选中元素
let selectedItems = [...document.querySelectorAll('.van-picker-column__item--selected')]
selectedItems.forEach(item => {
let child = item.querySelector('.van-ellipsis')
if (child.offsetWidth > item.offsetWidth) { // 判断child文字宽度
item.classList.add('scroll')
} else {
item.classList.remove('scroll')
}
})
})
},
onFailed(errorInfo){
this.$toast.fail('提交失败,请完善信息')
},
/* 问题提交 */
onSubmit(value){
var pictures=[];
value.uploader.forEach((item) => {
pictures.push(item.content)
});
var videos=[];
value.uploader2.forEach((item) => {
videos.push(item.content)
});
var obj={
id:this.editObj.id,//列表ID
pictures:pictures,//图片
videos:videos,//视频
address:value['问题位置'],//问题位置
deptIds:this.ids,//责任单位
context:value['问题描述'],//问题描述
checkBasis:value['法律依据']//法律依据
}
this.$dialog.confirm({
title: '提示',
message: '确定提交检查问题?',
}).then(()=>{
this.$toast.loading({
message:'提交中...',
forbidClick: true,
loadingType: 'spinner',
duration: 0
})
postFun('check/notify/trouble/update',obj).then((Response)=>{
this.$toast.clear()
this.$toast.success({
message:'提交成功',
duration: 2000
})
this.$router.push({
name:'note',
query:{
pageName:'problemList'
}
})
}).catch(()=>{
this.$toast.clear()
this.$toast.fail('提交失败,请稍后再试')
})
}).catch(()=>{
})
},
/* 确认选择级联菜单的回显数据处理 */
onConfirm(){
//获取回显的部门值和部门id数组
this.value=""
this.ids=[]
var valueList=this.$refs.apicker.getValues()
valueList.forEach((item)=>{
this.ids.push(item.id)
this.editObj.value+=item.text+' / '
})
this.showPicker = false;
}
}
}
</script>
<style lang="less" scoped>
.card{
width:90%;
box-shadow: 0px 0px 10px 2px #F3F3F3;
padding: 0.25rem;
margin:0.4rem auto;
background: white;
}
.card div{
font-size: 0.4rem;
}
/deep/ .van-picker-column__item--selected {
/* 重写选中后的效果 */
.van-ellipsis {
text-overflow: unset;
overflow: visible;
}
/* 增加scroll类 */
&.scroll > .van-ellipsis {
animation: move 4s linear infinite;
}
}
@keyframes move {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
</style>
......@@ -14,7 +14,22 @@
<LHeader v-bind:text="text"></LHeader>
<van-tabs v-model="active" @click="tabClick">
<van-tab title="上报状态">
<table border="1" cellspacing="0">
<div class="card-status" v-for="(item,index) in noticeTableList" :key="index">
<van-row>
<van-col span="5" class="card-left">
<van-image round width="1.5rem" height="1.5rem" src="http://192.168.4.157:8096/hse/profile/upload/2021/10/27/8d91706250358ddad8499e3fec21578f.jpg"/>
</van-col>
<van-col span="7" class="card-middle">
<div>{{item.realName}}</div>
<div><span>提交时间 </span>{{item.submitTime}}</div>
</van-col>
<van-col span="10" class="card-right">
<div>{{item.troubleNumber}}</div>
<div>问题数量</div>
</van-col>
</van-row>
</div>
<!-- <table border="1" cellspacing="0">
<thead>
<tr>
<th>序号</th>
......@@ -31,7 +46,7 @@
<td align="center" v-text="user.troubleNumber"></td>
</tr>
</tbody>
</table>
</table> -->
</van-tab>
<van-tab title="问题记录">
<van-checkbox-group v-model="result" @change="checkedEvent" ref="checkboxGroup">
......@@ -51,26 +66,6 @@
</div>
</div>
</van-checkbox-group>
<van-dialog v-model="dialogShow" @confirm="commitDialog()" :title="dialogTitle" show-cancel-button>
<van-field
v-model="updateObj.title"
name="问题名称"
label="问题名称"
placeholder="问题名称"
/>
<van-field
v-model="updateObj.address"
name="问题位置"
label="问题位置"
placeholder="问题位置"
/>
<van-field
v-model="updateObj.context"
name="问题内容"
label="问题内容"
placeholder="问题内容"
/>
</van-dialog>
<div class="page-footer">
<van-checkbox v-model="checkedAll" @change="checkedAllEvent" @click="checkedAllClick" :disabled="finish=='true'?true:false">全选</van-checkbox>
</div>
......@@ -229,7 +224,6 @@ export default {
//初始化每个div的弹框,遮罩层显示状态
this.noticeQuestionList.forEach((item)=>{
item.show=false
item.dialogShow=false
})
console.log(this.noticeQuestionList)
/* ----详情---- */
......@@ -379,58 +373,58 @@ export default {
//修改卡片值
update(index,item){
item.show=false
this.dialogShow=true
//把列表可编辑数据回显到弹框表单中
this.dialogTitle='问题'+(index+1),//标题
this.updateObj.id=item.id,//问题ID
this.updateObj.title=item.title,//问题名称
this.updateObj.address=item.address,//问题位置
this.updateObj.context=item.context//问题内容
//向编辑页面传值做数据回显
var obj={
id:item.id,//问题ID
address:item.address,//问题位置
deptId:item.deptIds,//责任单位ID
context:item.context,//问题描述
checkBasis:item.checkBasis,//法律依据
pictures:item.pictures,//图片
videos:item.videos//视频
}
this.$forceUpdate()//强制刷新
this.$router.push({name:'noticeListEdit',query:{name:'noticeList',obj:JSON.stringify(obj)}})
},
//列表详情
detail(){
detail(index,item){
item.show=false
this.$forceUpdate()//强制刷新
this.$router.push({name:'noticeListDetail',query:{id:item.id}})
},
//卡片删除
Delete(item){
item.show=false
this.$forceUpdate()//强制刷新
alert('删除成功')
},
//弹框数据提交
commitDialog(){
this.noticeQuestionList.forEach((item)=>{
if(item.id==this.updateObj.id){
item.title=this.updateObj.title,//问题名称
item.address=this.updateObj.address,//问题位置
item.context=this.updateObj.context//问题内容
}
})
console.log(this.updateObj,123)
this.$forceUpdate()//强制刷新
this.$toast.loading({
message:'提交中...',
forbidClick: true,
loadingType: 'spinner',
duration: 0
})
postFun('check/trouble/update',this.updateObj).then((Response)=>{
if(Response.code==0){
this.$toast.clear()
this.$toast.success('提交成功')
}
this.$dialog.confirm({
title: '提示',
message: '确定删除该记录?',
}).then(()=>{
this.$toast.loading({
message:'删除中...',
forbidClick: true,
loadingType: 'spinner',
duration: 0
})
postFun('check/notify/trouble/delete/'+item.id).then((Response)=>{
this.$toast.clear()
this.$toast.success('删除成功')
this.init()
}).catch(()=>{
this.$toast.clear()
this.$toast.fail('删除失败,请稍后再试')
})
this.$toast.clear()
}).catch(()=>{
this.$toast.clear()
this.$toast.fail('提交失败,请稍后再试')
this.$toast.success('取消删除')
})
}
},
}
}
</script>
<style lang="less" scoped>
/* 问题记录卡片样式 */
.card{
position: relative;
width:90%;
......@@ -451,13 +445,55 @@ export default {
position: absolute;
}
}
.card div{
.card div,.card-status{
font-size: 0.4rem;
line-height: 0.8rem;
}
table{
width: 100%;
/* 状态列表卡片样式 */
.card-status{
width:90%;
box-shadow: 0px 0px 10px 2px #F3F3F3;
padding: 0.25rem;
margin:0.4rem auto;
background: white;
border-radius: 4%;
}
.card-left{
vertical-align: middle;
}
.card-middle div:nth-child(1){
font-size: 0.5rem;
font-weight: bolder;
width: 5rem;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
.card-middle div:nth-child(2){
font-size: 0.3rem;
font-weight: bolder;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
.card-right{
font-size: 0.3rem;
text-align: right;
font-weight: bolder;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
.card-right div:nth-child(1){
font-size: 0.9rem;
color:#2980F7;
text-align: right;
margin-right: 0.3rem;
font-weight: bolder;
}
// table{
// width: 100%;
// }
.page-footer{
text-align: right;
padding: 0.25rem;
......
......@@ -248,8 +248,14 @@ export default {
key: "7",
path: "",
imgUrl: require("@/assets/workbench/ehcek-record.png"),
text: "检查记录",
text: "检查记录"
},
{
key: "8",
path: "/checked-confirm",
imgUrl: require("@/assets/workbench/ehcek-record.png"),
text: "整改确认"
}
],
// 后台给的数据权限对象
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment