yanyan 1 year ago
parent
commit
63331ef785
  1. 11
      src/api/enforce.js
  2. 2
      src/router/enforceHome.js
  3. 6
      src/router/home.js
  4. 179
      src/views/enforce/enforceNoticeBase.vue
  5. 890
      src/views/enforce/enforceNoticeDetail.vue
  6. 547
      src/views/enforce/enforceNoticeSystem.vue

11
src/api/enforce.js

@ -19,6 +19,17 @@ export const queryEnforcementInspectionProgramList = (params, success, error) =
* @returns
*/
export const queryEnforcementInspectionProgramListNoPermission = (params, success, error) => _get("/app/code/enforcementInspectionProgram/queryListNoPermission", params, success, error);
/**
* 后台通知接口
* @param {*} params
* @param {*} success
* @param {*} error
* @returns
*/
export const queryEnforceSystemNotice = (params, success, error) => _get("/app/system/enforceNotice/listNoPermission", params, success, error);
export const queryEnforceSystemNoticeDetail = (id, success, error) =>_get("/app/system/enforceNotice/detail/" + id,null,success,error)
/**
* 执法计划列表 无权限 不分页接口
* @param {*} params

2
src/router/enforceHome.js

@ -96,7 +96,7 @@ const routes = [
{
path: "/enforce/enforceNotice",
name: "enforceNotice",
component: () => import("@/views/enforce/enforceNotice.vue"),
component: () => import("@/views/enforce/enforceNoticeBase.vue"),
meta: {
isKeepAlive: false
},

6
src/router/home.js

@ -106,6 +106,12 @@ const routes = [
name: "registrationDetail",
component: () => import("@/views/enterprise/registrationDetail.vue"),
},
// 通知详情
{
path: "/enforceNoticeDetail",
name: "enforceNoticeDetail",
component: () => import("@/views/enforce/enforceNoticeDetail.vue"),
},
// 二维码管理
{
path: "/qrCodeHistory",

179
src/views/enforce/enforceNoticeBase.vue

@ -0,0 +1,179 @@
<template>
<div class="home app_content">
<van-tabs v-model:active="active" sticky @click-tab="onClickTab">
<van-tab v-for="(item, index) in data.list" :title="item.title">
<div v-if="data.TabId == 0" style="height: calc(100vh - 1.2rem);">
<enforcementPlanAdd :isReg="0" />
</div>
<div v-if="data.TabId == 1" style="height: calc(100vh - 1.2rem);">
<enforcementPlanList :isReg="1" />
</div>
</van-tab>
</van-tabs>
</div>
</template>
<script setup name="enforceNoticeBase">
import enforcementPlanAdd from '@/views/enforce/enforceNotice.vue';
import enforcementPlanList from '@/views/enforce/enforceNoticeSystem.vue';
const {useCommon} = $globalStore;
//路由参数
const router = useRouter();
const route = useRoute();
//tab切换
const active = ref(0);
const data = reactive({
status: 0,
TabId: 0,
list: [
{
title: '检查计划通知',
value: '0'
},
{
title: '通知',
value: '1'
},
],
});
const onClickTab = ({ title }) => {
if(title == '检查计划通知'){
data.TabId = 0;
}else{
data.TabId = 1;
}
};
onMounted(() => {
})
</script>
<style lang="less" scoped>
.home {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
background-color: #ebf3fb;
.warp_body {
position: relative;
background-image: linear-gradient(to bottom, #ebf3fb, transparent);
}
.white-body {
margin: 0 3%;
width: 94%;
height: 99%;
background-color: #fff;
border-radius: 0.27rem;
}
}
.tohome {
position: absolute;
top: 1.25%;
right: 5%;
font-size: 0.5rem;
}
.tabs {
padding: 3% 3% 0;
width: 94%;
height: 1.25rem;
box-sizing: content-box;
}
.tabs ul {
display: flex;
width: 100%;
height: 100%;
font-size: 0.4rem;
line-height: 1.25rem;
text-align: center;
align-content: center;
justify-items: center;
}
.tabs ul li {
float: left;
width: 50%;
height: 100%;
}
.tabs ul li span {
display: block;
width: 100%;
height: 100%;
color: #4aa1f9;
background: url("src/assets/images/tab_bg1_1.png") no-repeat;
background-size: 100% 100%;
}
.tabs ul li.active span {
background: url("src/assets/images/tab_bg1.png") no-repeat;
background-size: 100% 100%;
color: #fff;
}
.tabs ul li span.warn-tab {
margin-left: -2%;
background: url("src/assets/images/tab_bg.png") no-repeat;
background-size: 100% 100%;
}
.tabs ul li.active span.warn-tab {
background: url("src/assets/images/tab_bg_1.png") no-repeat;
background-size: 100% 100%;
color: #fff;
}
.tabs ul li span.level1 {
background: url("src/assets/images/tab_shine_red.gif") no-repeat !important;
background-size: 100% 100% !important;
color: #fff !important;
}
.tabs ul li span.level2 {
background: url("src/assets/images/tab_shine_org.gif") no-repeat !important;
background-size: 100% 100% !important;
color: #fff !important;
}
.tabs ul li span.level3 {
background: url("src/assets/images/tab_shine_yel.gif") no-repeat !important;
background-size: 100% 100% !important;
color: #fff !important;
}
.addinfo {
position: absolute;
bottom: 3%;
right: 2%;
z-index: 99999;
width: 1.5rem;
height: 1.5rem;
background-color: #1367fe;
border-radius: 50%;
box-shadow: 0 0 0.27rem #1367fe;
color: #fff;
font-size: 0.4rem;
text-align: center;
vertical-align: middle;
padding-top: 0.45rem;
box-sizing: border-box;
}
/deep/ .van-tabs__line {
width: 44%;
height: 0.06rem;
}
</style>

890
src/views/enforce/enforceNoticeDetail.vue

@ -0,0 +1,890 @@
<template>
<div class="address_edit">
<div class="warp_body">
<van-form @failed="onFailed" @submit="submit">
<van-cell-group v-if="data">
<div class="qy-name">通知信息</div>
<van-field
v-model="data.noticeTitle"
label="通知标题"
readonly
/>
<van-field
class="mult-line"
v-model="data.objectType"
label="通知对象"
readonly
/>
<van-field
class="mult-line"
v-model="data.bureauDeptNames"
label="发布部门"
readonly
/>
<van-field label="发布内容" readonly/>
<van-field
class="complaint-cont"
v-html="data.noticeContent"
rows="5"
autosize
readonly
type="textarea"
show-word-limit
/>
<div class="file-upload">
<div class="file-upload-center">
<label>附&nbsp; &nbsp; &nbsp; &nbsp;件</label>
</div>
<div class="zoom">
<img
v-for="(ite, index) in data.images"
class="img"
:src="ite"
alt="预览图片"
@click="imagePreview(index)"
:key="index"
/>
<van-image-preview
v-model:show="data.show"
:images="data.imageList"
@change="onChange"
ref="imagePre"
>
<template v-slot:index>第{{ indexImg + 1 }}页</template>
</van-image-preview>
</div>
</div>
</van-cell-group>
<van-divider class="divdsty"/>
</van-form>
</div>
</div>
</template>
<script setup name="register">
import {showSuccessToast, showImagePreview} from "vant";
import {
queryEnforcementRegistrationById,
getAttr, queryEnforceSystemNoticeDetail,
} from "@/api/enforce";
import {reactive, ref, nextTick} from "vue";
import {uploadFile} from "@/util/fileUpload";
import {queryLinkageById} from "@/api/linkage";
import {baseUrl} from "@/config/env";
//用户筛选弹窗
// import Popup from './userFilter.vue';
const {useMy} = $globalStore;
const router = useRouter();
//路由参数
const route = useRoute();
const data = reactive({
showLawEnforcerFlag: false,
currentPage: 1,
good: "#7FFFD4",
bad: "#D3D3D3",
popupVisible: false,
popupContent: "",
popupVisible2: false,
popupContent2: "",
imgstr: "",
lawList: [{text: "", id: ""}],
lawCer: [{text: "", id: ""}],
imageList: [],
show: ref(false),
show2: ref(false),
dataList: [],
evaluateImageList: [],
regList: [],
lawList: [],
arrayLength: 1,
noticeTitle: "",
noticeContent: "",
bureauDeptNames: "",
objectType: "",
createTime: "",
images: "",
});
//保存参数
const submitData = reactive({
//执法部门
lawEnforcement: "",
lawEnforcementId: "",
//执法人员1
lawEnforcer: "",
lawEnforcerId: "",
//执法人员2
lawEnforcerTwo: "",
lawEnforcerIdTwo: "",
//辅助人员
subsidiaryer: "",
subsidiaryerId: "",
//执法事项
lawEnforcementItem: "",
enforce: "",
//执法依据
lawEnforcementBasis: "",
// 检查时间
enforcementTime: "",
//执法结果
reslut: 0,
//备注
remark: "",
//企业名称
enterpriseName: "",
//统一信用码
enterpriseNumber: "",
//后台保存图片列表
fileList: [],
//vant组件上传照片列表
fileListObj: [],
/**局级部门 */
bureauDeptName: "",
bureauDeptId: "",
isEvaluate: 0,
lawFieldText: "",
checkCategoryText: "",
uniteCheck: "",
satisfactionLevel: 3,
serviceExperience: 0,
checkEffect: 0,
proceduralLegality: 0,
checkEffectiveness: 0,
otherProblemSwitch: 0,
otherProblemSwitchBoolean: true,
problem1: 0,
problem2: 0,
problem3: 0,
problem4: 0,
problem5: 0,
});
const tapGood = () => {
data.good = "#7FFFD4";
data.bad = "#D3D3D3";
submitData.reslut = 0;
};
const tapBad = () => {
data.good = "#D3D3D3";
data.bad = "#7FFFD4";
submitData.reslut = 1;
};
const indexImg = ref(0);
const indexImg2 = ref(0);
const imagePreview = (newIndex) => {
var imgstrArr = data.imgstr.split(",");
nextTick(() => {
// console.log(this.$refs.testRef)
// this.$refs.imagePre.change(newIndex)
// const imagePre = ref("imagePre");
// imagePre.change(newIndex);
});
data.show = ref(true);
};
const imagePreview2 = (newIndex) => {
var imgstrArr = data.imgstr.split(",");
nextTick(() => {
// console.log(this.$refs.testRef)
// this.$refs.imagePre.change(newIndex)
// const imagePre = ref("imagePre");
// imagePre.change(newIndex);
});
data.show2 = ref(true);
};
const setLinkageItem = (id) => {
queryLinkageById(
{id: id},
(success) => {
submitData.lawEnforcementItem = success.title;
},
(error) => {
}
);
};
const setLinkageGA = (id) => {
queryLinkageById(
{id: id},
(success) => {
submitData.lawEnforcementBasis = success.title;
},
(error) => {
}
);
};
const setAttr = () => {
// 查询检查要求字典信息
getAttr(
route?.query?.id,
(success) => {
if (success.data.filePreview != null) {
if (success.data.filePreview.fileList != null) {
for (var i = 0; i < success.data.filePreview.fileList.length; i++) {
data.imgstr += success.data.filePreview.fileList[i] + ",";
}
data.imgstr = data.imgstr.substring(0, data.imgstr.length - 1);
}
data.imageList = success.data.filePreview.fileList;
success.data.filePreview.fileList;
for (const key in success.data.filePreview.fileList) {
console.log(success.data.filePreview.fileList[key]);
data.imageList[key] = success.data.filePreview.fileList[key];
}
}
},
(error) => {
}
);
};
const setEvaluateFile = (id) => {
// 查询检查要求字典信息
getAttr(
id,
(success) => {
if (success.data.filePreview != null) {
if (success.data.filePreview.fileList != null) {
for (var i = 0; i < success.data.filePreview.fileList.length; i++) {
data.imgstr += success.data.filePreview.fileList[i] + ",";
}
data.imgstr = data.imgstr.substring(0, data.imgstr.length - 1);
}
data.evaluateImageList = success.data.filePreview.fileList;
success.data.filePreview.fileList;
for (const key in success.data.filePreview.fileList) {
console.log(success.data.filePreview.fileList[key]);
data.evaluateImageList[key] =
baseUrl + success.data.filePreview.fileList[key];
}
}
},
(error) => {
}
);
};
const onChange = (newIndex) => {
indexImg.value = newIndex;
};
const onChange2 = (newIndex) => {
indexImg2.value = newIndex;
};
//3a0096181c184e5aa56f70923680856d$6e74ceda1463c165fd43eeeadce4f7cd
//初始化参数,获取扫码的企业统一信用编码
onMounted(() => {
queryRegUniteById();
});
const showArrays = (item) => {
if (item.downShow) {
item.downShow = false;
data.arrayLength = data.regList.length;
} else {
data.regList[0].downShow = true;
data.arrayLength = 1;
}
};
const queryRegUniteById = () => {
queryEnforceSystemNoticeDetail(
route?.query?.id,
(success) => {
convertReg(success.data)
},
(error) => {
}
);
};
const convertReg = (regs) => {
data.id = regs.noticeId;
data.noticeTitle = regs.noticeTitle;
data.noticeContent = regs.noticeContent;
data.bureauDeptNames = regs.bureauDeptNames;
data.createTime = regs.createTime;
if (regs.objectType != null) {
if (regs.objectType == 1) {
data.objectType = "监督端";
} else if (regs.objectType == 2) {
data.objectType = "执法端";
} else if (regs.objectType == 3) {
data.objectType = "企业端";
} else {
data.objectType = "全部";
}
}
// 附件
getAttr(
data.id,
(success) => {
if (success.data.filePreview != null) {
let images = [];
for (const key in success.data.filePreview.fileList) {
images[key] = baseUrl + success.data.filePreview.fileList[key];
data.imageList.push(
baseUrl + success.data.filePreview.fileList[key]
);
}
data.images = images;
}
console.log(data.imageList);
},
(error) => {
}
);
}
// 返回
const goBack = () => {
router.go(-1);
};
const uploadFiles = (file) => {
uploadFile(file, (res) => {
console.log(res);
submitData.fileList.push(res.url);
console.log(submitData.fileList);
});
};
const deleteFile = (file, index) => {
console.log(index);
submitData.fileListObj.filter((item, indexs) => {
if (index.index == indexs) {
submitData.fileListObj.splice(indexs, 1); //splice 删除
}
});
submitData.fileList.filter((item, indexs) => {
if (index.index == indexs) {
submitData.fileList.splice(indexs, 1); //splice 删除
}
});
console.log(submitData.fileList);
return true;
};
const submit = () => {
addEnforcementRegistration(
submitData,
(success) => {
//跳转首页
if (success.success) {
showSuccessToast("登记成功");
router.push({path: "/home"});
}
},
(error) => {
console.log("登记失败");
}
);
};
const showPopup = () => {
data.popupVisible = true;
};
const showPopup2 = () => {
data.popupVisible2 = true;
};
const closePopup = () => {
data.popupVisible = false;
data.popupVisible2 = false;
};
const reciveData = (item) => {
submitData.lawEnforcerTwo = item.userName;
submitData.lawEnforcerIdTwo = item.userId;
};
const reciveData2 = (item) => {
submitData.subsidiaryer = item.userName;
submitData.subsidiaryerId = item.userId;
};
</script>
<script>
export default {
data() {
return {
is_show: false,
};
},
computed: {
words() {
if (this.is_show === false) return "展开";
else if (this.is_show === true) return "收起";
else if (this.is_show === "") return null;
else return null;
},
},
};
</script>
<style lang="less" scoped>
.address_edit {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
background-color: #ebf3fb;
}
.warp_body {
margin: 3%;
padding-bottom: 3rem;
width: 94%;
height: 100%;
//border-radius: 0.25rem;
background-image: linear-gradient(to bottom, #ebf3fb, #fff);
overflow-y: auto;
}
.qy-name {
margin: 0 0.27rem;
font-size: 0.42rem;
height: 1.2rem;
background-color: white;
font-weight: 600;
line-height: 3.5;
}
.zf-name {
padding: 0 0.27rem;
font-size: 0.42rem;
height: 1.2rem;
background-color: white;
font-weight: 600;
line-height: 3.5;
}
/* vant4的 Toast 和 Popup 样式冲突,会导致 Toast 变成白底 */
.van-popup.van-toast {
background: var(--van-toast-background) !important;
box-sizing: content-box !important;
/* 下面3条css,影响不大 */
transition: all var(--van-duration-fast) !important;
width: var(--van-toast-default-width) !important;
max-width: var(--van-toast-max-width) !important;
}
.van-popup.van-toast .van-toast__icon {
font-size: var(--van-toast-icon-size) !important;
}
.divdsty {
margin: auto;
width: 100%;
height: 0.25rem;
background-color: #f4f4f4;
border: 0;
}
.file-upload {
position: relative;
min-height: 3rem;
// max-height: 6.5rem;
padding: 1rem 0.27rem 0.27rem 0.43rem;
box-sizing: border-box;
border-top: 5px solid #f4f4f4;
}
.file-upload-center {
position: absolute;
top: 0.27rem;
left: 0.43rem;
width: 90%;
height: 0.65rem;
font-size: 0.37rem;
span {
font-size: 0.32rem;
color: rgb(221, 229, 227);
}
}
.file {
position: relative;
width: 100%;
height: calc(100% - 1.5rem);
}
/deep/ .van-uploader__upload,
/deep/ .van-uploader__preview-image {
width: 1.95rem !important;
}
.preview-cover {
position: absolute;
bottom: 0;
box-sizing: border-box;
width: 100%;
padding: 4px;
color: #fff;
font-size: 0.32rem;
text-align: center;
background: rgba(0, 0, 0, 0.3);
}
.zoom {
/*margin-top: 0.65rem;
padding-top: 0.27rem;
padding-left: 0.27rem;*/
img {
width: 1.95rem;
height: 2rem;
// margin: 0 0.21rem 0.21rem 0;
margin: 0 0.6rem 0.21rem 0;
font-size: 0.35rem;
}
}
/deep/ .van-picker-column__item--selected {
background: #e5eef9;
color: #000;
font-weight: 600;
}
/deep/ .van-field .van-field__control {
color: #666;
}
/deep/ .van-field__label--required:before {
margin-left: -0.2rem;
}
/deep/ .mult-line .van-field__label {
padding-right: 0.5rem;
line-height: 1.25;
}
.complaint-cont {
margin: -1px 0.43rem 2%;
padding: 0 0 0.5rem;
width: calc(100% - 0.86rem);
border-radius: 0.15rem;
box-sizing: border-box;
line-height: 1.5;
font-size: 0.37rem;
}
/deep/ .complaint-cont textarea.van-field__control {
padding: 0.1rem 0.2rem;
background: #f5f6f7;
border-radius: 0.15rem;
line-height: 1.25;
}
.fold-div {
position: relative;
display: flex;
padding: 0 0.43rem 0.13rem;
width: 100%;
box-sizing: border-box;
color: rgb(50, 50, 51);
font-size: 0.37rem;
}
.fold-div::after {
position: absolute;
left: 0.43rem;
bottom: 0;
width: calc(100% - 0.86rem);
border-bottom: 1px solid #f5f6f7;
content: "";
}
.fold-div label {
width: 2.6rem;
padding: 0.27rem 0px 0.27rem 0;
}
.fold-div .van-text-ellipsis {
padding: 0.27rem 0;
width: calc(100% - 2.6rem);
color: #666;
}
.one-label {
position: relative;
padding-bottom: 0.25rem;
}
.one-label::after {
position: absolute;
left: 0.43rem;
bottom: 0;
width: calc(100% - 0.86rem);
border-bottom: 1px solid #ebedf0;
content: "";
transform: scaleY(0.5);
}
.one-label .van-cell {
padding-bottom: 0;
}
.one-label .no-label {
margin-top: -1px;
padding-top: 0;
padding-bottom: 0;
}
.joint-mark {
position: relative;
top: -0.05rem;
display: inline-block;
margin: 0 0.25rem;
width: 0.55rem;
height: 0.55rem;
background: #2d94fa;
border-radius: 50%;
color: #fff;
font-size: 0.35rem;
line-height: 1.65;
text-align: center;
}
/***折叠**/
.look_all {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 0.75rem;
font-size: 0.3rem;
color: #666;
cursor: pointer;
user-select: none;
border-radius: 0.05rem;
background-color: #fff;
}
.look_all i {
margin: 0 0.2rem;
padding: 0.1rem 0.3rem 0;
color: rgba(0, 0, 0, 0.35);
font-size: 0.4rem;
height: 0.5rem;
/*background: linear-gradient(to bottom, rgba(0, 0, 0, .1), transparent);*/
border-radius: 0.2rem 0.2rem 0 0;
}
.new_detail {
padding-top: 0.3rem;
height: 100%;
transition: height 2s linear;
}
.work_detail {
padding-top: 0.3rem;
height: 0.2rem;
overflow: hidden;
}
.new_up {
position: absolute;
bottom: 0;
}
/***/
/*.eval-star {
margin: 0 0.7rem 0 0.2rem;
}
.eval-star i {
margin: 0 0.3rem;
color: #ddd;
font-size: 0.5rem;
}
.eval-star i.active {
color: #fbb516;
}
.eval-star-font{
font-weight: bold;
font-size: 0.4rem;
}*/
.eval-list {
display: flex;
justify-content: space-between;
margin: 3%;
}
.eval-list > div {
width: 30%;
text-align: center;
}
.eval-list > div > label {
margin: 0.2rem 0;
color: #999;
// font-size: 0.35rem;
}
.eval-list > div.active > label {
color: #323233;
font-weight: 600;
}
.eval-list > div > span {
display: block;
margin: 0.5rem auto 0.2rem;
width: 0.8rem;
height: 1rem;
}
.eval-list > div#evalBad > span {
background: url("../../assets/images/eval-bad-dis.png") no-repeat;
background-size: 100%;
opacity: 0.5;
}
.eval-list > div#evalGood > span {
background: url("../../assets/images/eval-good-dis.png") no-repeat;
background-size: 100%;
opacity: 0.5;
}
.eval-list > div#evalVeryGood > span {
background: url("../../assets/images/eval-verygood-dis.png") no-repeat;
background-size: 100%;
opacity: 0.5;
}
.eval-list > div#evalBad.active > span {
background: url("../../assets/images/eval-bad.png") no-repeat;
background-size: 100%;
opacity: 1;
}
.eval-list > div#evalGood.active > span {
background: url("../../assets/images/eval-good.png") no-repeat;
background-size: 100%;
opacity: 1;
}
.eval-list > div#evalVeryGood.active > span {
background: url("../../assets/images/eval-verygood.png") no-repeat;
background-size: 100%;
opacity: 1;
}
.van-hairline--top-bottom:after,
.van-hairline-unset--top-bottom:after {
border: 0;
}
.evaluateText {
font-size: 0.42rem;
}
.cardsty {
margin: 3% 0;
width: 100%;
padding: 5%;
background: #fff;
border-radius: 0.2rem;
font-size: 0.37rem;
box-sizing: border-box;
}
.cardsty label {
margin-right: 0.4rem;
color: #323233;
}
.eval-star {
margin: 0 0.7rem 0 0.2rem;
}
.eval-item {
display: flex;
align-items: center;
margin: 0.27rem 0;
font-weight: 800;
}
.otherProBlem {
margin: 3% 0;
width: 100%;
background: #fff;
border-radius: 0.2rem;
box-sizing: border-box;
}
// .otherProBlem span{
// font-size: 0.37rem;
// }
.otherProBlemItem {
padding: 7px;
line-height: 30px;
}
.otherProBlemText {
font-size: 16px;
margin-right: 10px;
}
.otherProBlemItemIconList {
padding-right: 15px;
display: flex;
float: right;
}
.otherProBlemItemIcon {
display: flex;
padding: 3px;
}
.onbad {
background: url("../../assets/images/onbad.png") no-repeat;
background-size: 100%;
height: 20px;
width: 20px;
opacity: 1;
}
.ongood {
background: url("../../assets/images/ongood.png") no-repeat;
background-size: 100%;
height: 20px;
width: 20px;
opacity: 1;
}
.bad {
background: url("../../assets/images/bad.png") no-repeat;
background-size: 100%;
height: 20px;
width: 20px;
opacity: 1;
}
.good {
background: url("../../assets/images/good.png") no-repeat;
background-size: 100%;
height: 20px;
width: 20px;
opacity: 1;
}
</style>

547
src/views/enforce/enforceNoticeSystem.vue

@ -0,0 +1,547 @@
<template>
<div class="home app_content">
<!-- 导航栏 -->
<!-- <div class="header_body">
<header-nav
:leftArrow="false"
:titelText="`通知公告`"
>
</header-nav>
<header-nav :slefBack="true" @goBack="goBack" :titelText="`通知公告`"></header-nav>
</div>-->
<van-search
v-model="searchParam.noticeTitle"
show-action
placeholder="请输入通知名称"
clearable="true"
clear-icon="clear"
clear-trigger="always"
@search="onSearch"
>
<template #action>
<div @click="onClickButton">搜索</div>
</template>
</van-search>
<!-- 中间 -->
<div class="shop-center">
<van-pull-refresh v-model="data.refreshing" @refresh="onRefresh">
<van-list v-model:loading="data.loading" :finished="data.finished" finished-text="没有更多了" @load="onLoad">
<div class="goods_box" v-for="(item, index) in data.dataList" :key="index">
<div class="notice-item" @click="toDetailView(item.noticeId)"><i></i>
<div class="item-cont">
<span class="item-title">{{ item.noticeTitle }}</span>
<!-- <span class="item-time"> {{ item.enforcementDepartment }} - {{ item.createTime }}</span>-->
<!-- <div class="item-time" style="display: flex; justify-content: space-between;">
<span>{{ item.bureauDeptName }}</span>
<span>{{ item.createTime }}</span>
</div>-->
<div class="item-text">
<p><label class="card_box_label">发布部门:</label> <span>{{ item.bureauDeptNames }}</span>
</p>
</div>
<div class="item-text">
<p><label class="card_box_label">发布对象:</label> <span>
{{ item.objectType==1?"监督端": item.objectType==2?"执法端":
item.objectType==3?"企业端": "全部"}}
</span></p>
</div>
<div class="item-text">
<p><label class="card_box_label">发布时间:</label> <span>{{ item.createTime }}</span></p>
</div>
<div class="item-text">
<p><label class="card_box_label">附&nbsp; &nbsp; &nbsp; &nbsp;件:</label> <span> <a @click="toPdfView(null==item.fileObject?'':item.fileObject.fileUrl)">{{ null==item.fileObject?'':item.fileObject.fileName }}</a></span></p>
</div>
</div>
</div>
</div>
</van-list>
</van-pull-refresh>
</div>
<!-- 底部 -->
<div class="shop_footer_body">
<footer-enforcement-nav></footer-enforcement-nav>
</div>
</div>
</template>
<script setup name="enforcementInspectionProgram">
import {queryEnforceSystemNotice} from "@/api/enforce";
const {useCommon} = $globalStore;
const router = useRouter();
let allchecked = ref(false); // 是否全选
let refreshLoad = ref(false); // 是否加载中
let searchParam = reactive({
// 分页
pageNum: 1,
pageSize: 6,
//搜索框
noticeTitle: ref(''),
//日期查询
searchDate: ref(''),
//是否发布 1 是
isPublish: 1,
searchType:"notice"
});
const data = reactive({
cartList: [],
dataList: [],
dateSearch: ref(),
showDatePicker: false,
currentDate: ref(['2024', '01']),
minDate: new Date(2020, 0, 1),
maxDate: new Date(2125, 5, 1),
columnsType: ['year', 'month'],
loading: false,
finished: false,
refreshing: false,
curPage: 1,
total: 0,
});
/**
* 查看通知详情
* @param {} id
* @param {*} name
*/
const toDetailView = (id) => {
router.push(
{
path: "/enforceNoticeDetail",
query: {
id: id,
}
});
}
// 设置初始值为当前时间
onMounted(() => {
console.log(useCommon.enterpriseNumber);
// getCard();
searchParam.enterpriseNumber = useCommon.enterpriseNumber;
console.log(useCommon.enterpriseNumber)
// queryList();
data.dateSearch = nowDate(new Date());
});
const queryList = () => {
searchParam.pageNum = (data.curPage-1)*searchParam.pageSize;
queryEnforceSystemNotice(searchParam, success => {
//debugger
data.curPage++;
data.loading = false;
if (success.total <= data.dataList.length) {
// 查到最后没数据
data.finished = ref(true);
return;
}
for (let index = 0; index < success.rows.length; index++) {
const element = success.rows[index];
console.log(element);
// element.planName = element.planYear + element.planName;
if(element.timeType == 'quarter'){
let val = "";
if(element.quarter == "1") val = "一季度";
if(element.quarter == "2") val = "二季度";
if(element.quarter == "3") val = "三季度";
if(element.quarter == "4") val = "四季度";
element.planName = element.planYear + "年" + val + element.planName;
}else if (element.timeType == 'mouth') {
const val = element.mouth + "月";
element.planName = element.planYear + "年" + val + element.planName;
}
element.planName = element.bureauDeptName + element.planName;
}
// data.dataList = success.data;
data.dataList.push(...success.rows);
freshMap.refreshLoad = false;
freshMap.listLoading = false;
freshMap.listFinished = true;
isLodding.value = false;
}, error => {
})
}
const onSearch = (val) => {
// queryEnforcementInspectionProgramListNoPermission(searchParam
// , success => {
// console.log(success)
// data.dataList = success.data;
// }, error => {
// })
data.dataList = [];
queryList();
};
const onClickButton = () => {
data.curPage = 1;
data.dataList = [];
onRefresh();
}
onActivated(() => {
});
onDeactivated(() => {
});
// 返回
const goBack = () => {
router.go(-1);
};
let resetScroll = ref(0); // 滚动记录
let isLodding = ref(true); // 是否加载中
let freshMap = reactive({
refreshLoad: false, // 是否刷新
listLoading: false, // 是否加载中
listFinished: false, // 是否加载完成标识
});
//下拉刷新
const onRefresh = () => {
data.curPage = 1;
// 清空列表数据
data.dataList = [];
data.finished = false;
// 重新加载数据
// 将 loading 设置为 true,表示处于加载状态
data.loading = true;
onLoad();
};
// 触底加载
const onLoad = () => {
setTimeout(() => {
if (data.refreshing) {
data.refreshing = false;
}
queryList();
}, 1000);
};
//获取分类下的商品列表
const getGoodslist = async (onLoad) => {
// const res = await useClassify.classifyGoods();
// if (res?.code === 20000) {
// goodsList = onLoad ? goodsList.concat(res?.data) : res?.data;
// freshMap.refreshLoad = false;
// freshMap.listLoading = false;
// freshMap.listFinished = res?.listFinished;
// if (goodsList.length > 50) {
// freshMap.listFinished = true;
// }
// }
freshMap.refreshLoad = false;
freshMap.listLoading = false;
freshMap.listFinished = true;
isLodding.value = false;
};
onMounted(async () => {
// let res = await getClassify();
// if (res && res?.length) {
// classifyId = res?.[0]?.id;
// classifyId && getGoodslist();
// } else {
// isLodding.value = false;
// }
// queryList();
});
const selectDate = () => {
data.showDatePicker = true;
console.log(data.showDatePicker)
}
const onDateConfirm = (value) => {
console.log(value);
value.selectedValues.forEach((item, index) => {
console.log(item);
});
data.dateSearch = value.selectedValues[0] + "/" + value.selectedValues[1]
data.showDatePicker = false;
searchParam.dateSearch = value.selectedValues[0] + "-" + value.selectedValues[1];
data.curPage = 1;
data.dataList = [];
onRefresh();
}
const nowDate = (time) => {
var year = time.getFullYear(); // 年
var month = (time.getMonth() + 1).toString().padStart(2, '0'); // 月
var date = time.getDate().toString().padStart(2, '0'); // 日
var hour = time.getHours().toString().padStart(2, '0'); // 时
var minute = time.getMinutes().toString().padStart(2, '0'); // 分
var second = time.getSeconds().toString().padStart(2, '0'); // 秒
return (
year + "/" + month
)
}
const searchDateType = (val) => {
searchParam.dateType = val;
searchParam.isComplaint = null;
data.curPage = 1;
data.dataList = [];
onRefresh();
}
const searchComplaint = (val) => {
searchParam.isComplaint = val;
searchParam.dateType = null;
data.curPage = 1;
data.dataList = [];
onRefresh();
}
const toPdfView = (url) => {
console.log(url)
router.push(
{
path: "/pdfView",
query: {
url: url
}
});
}
</script>
<style lang="less" scoped>
.home {
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
background-color: #ebf3fb;
.header_body {
height: 1.33rem;
}
.shop-center {
flex: 1;
overflow-y: scroll;
position: relative;
.goods_box {
display: flex;
background-color: #fff;
margin: 0.27rem;
border-radius: 0.27rem;
.swipe_cell {
width: 100%;
}
.card_box {
display: flex;
width: 100%;
padding: 0.27rem 0;
flex-direction: column;
.card_body {
background-color: #fff;
border-radius: 0.27rem;
flex: 1;
}
.card_box_span {
display: flex;
align-items: center;
margin: 2% 0;
padding: 0 3%;
color: #666;
font-size: 0.35rem;
line-height: 1.5;
p {
display: flex;
margin: 0;
}
}
.card_box_action {
position: absolute;
right: 4%;
}
}
}
}
.shop_footer_body {
//height: 101px;
position: relative;
.footer-one-btn {
height: 1.33rem;
bottom: 1.34rem;
}
}
}
.search-button-list {
height: 0.7rem;
display: flex;
flex-direction: row;
padding-left: 0.27rem;
margin-top: 0.27rem;
align-items: end;
.search-button {
width: 15%;
height: 90%;
background: #ebebeb;
border-color: #ebebeb;
color: #999;
font-size: 0.3rem;
line-height: 1.5;
}
.search-button.active {
background-color: #d9e6fd;
border-color: #75a5fb;
color: #1367fe;
}
}
.search-button-date {
display: flex;
flex-direction: row;
align-items: end;
position: relative;
.date-select {
margin: 3% 0 0 4%;
color: #c1bfbf;
font-size: 0.52rem;
i {
transform: rotate(90deg);
font-size: 0.4rem;
}
}
.search-button {
width: 15%;
height: 80%;
position: absolute;
top: 1%;
right: 1%;
}
}
.noticebox {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: #fff;
border-radius: 0.2rem;
}
.notice-item {
display: flex;
position: relative;
margin: 1% 0;
padding: 1% 1% 3% 0;
width: 98%;
align-items: flex-start;
/*border-bottom: 1px solid #f3f4f5;*/
}
.notice-item > i {
display: inline-block;
margin: 0.5% 0 0 0.2rem;
width: 1.2rem;
height: 1.2rem;
background: url("../../assets/images/icon_notice2.png") no-repeat left top 50%;
background-size: auto 80%;
}
.item-cont {
display: inline-block;
margin: 3% 0 0 0;
width: calc(100% - 1.4rem);
}
.item-time {
float: left;
margin: 2% 0;
width: 100%;
color: #c1bfbf;
font-size: 0.3rem;
//height: 0.75rem;
//line-height: 1rem;
}
.item-title, .item-text {
float: left;
margin: 0;
width: 100%;
font-size: 0.40rem;
font-weight: 600;
line-height: 1.5;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.item-text {
width: 100%;
color: #666;
font-size: 0.35rem;
font-weight: normal;
}
.item-text a {
color: #2b75fd;
}
.item-text p {
display: flex;
margin: 0;
padding: 0.1rem 0;
line-height: 1.25;
}
.item-text label {
color: #323233;
}
.item-text p span {
white-space: break-spaces;
}
/deep/ .van-search__content {
height: 0.9rem;
border: 1px solid #ececec;
border-radius: 0.15rem 0 0 0.15rem;
}
/deep/ .van-search__action {
margin: 0 3% 0 0;
width: 10%;
height: 0.9rem;
background: #1367fe;
border: 1px solid #1367fe;
border-radius: 0 0.15rem 0.15rem 0;
color: #fff;
text-align: center;
line-height: 0.9rem;
}
</style>
Loading…
Cancel
Save