Browse Source

Merge branch 'dev-临时bug' into dev

# Conflicts:
#	src/views/modules/communityParty/heart/heartForm.vue
dev-用户反馈
dai 3 years ago
parent
commit
bb522e2911
  1. 331
      src/views/modules/communityParty/article/index.vue
  2. 11
      src/views/modules/cpts/base/index.vue
  3. 18
      src/views/modules/shequzhili/issue/cpts/evaluationDetail.vue
  4. 21
      src/views/modules/shequzhili/issue/cpts/issue-detail.vue
  5. 7
      src/views/modules/shequzhili/issue/cpts/issue-info.vue
  6. 2
      src/views/modules/shequzhili/issue/cpts/suggestDetail.vue
  7. 26
      src/views/modules/shequzhili/issue/cptsAudit/issue-detail.vue
  8. 19
      src/views/modules/shequzhili/issue/cptsAudit/issue-info.vue
  9. 2
      src/views/modules/shequzhili/issue/issueAuditList.vue
  10. 21
      src/views/modules/shequzhili/issue/issueList.vue
  11. 432
      src/views/modules/shequzhili/xiangmu/index.vue
  12. 6
      src/views/modules/shujuduibi/canji.vue
  13. 6
      src/views/modules/shujuduibi/siwang.vue

331
src/views/modules/communityParty/article/index.vue

@ -1,71 +1,142 @@
<template>
<div>
<base-page ref="basePage"
:searchParams="searchParams"
:tableParams="tableParams"
:tableUrl="tableUrl"
:addUrl="addUrl"
:editUrl="editUrl"
:delUrl="delUrl"
:editAuth="editAuth"
:delAuth="delAuth"
:infoUrl="infoUrl"
:exportUrl="exportUrl"
:importUrl="importUrl"
:mubanUrl="mubanUrl"
:editParams="editParams"
:editFixedParams="editFixedParams"
:editElseRules="editElseRules"
:editConfig="editConfig"
:editParamsDiv="5"
:editBtnName="(item) => (!item.latitude ? '待完善' : '修改')"
:formBtnFixed="true"
idName="articleId">
<base-page
ref="basePage"
:searchParams="searchParams"
:tableParams="tableParams"
:tableUrl="tableUrl"
:addUrl="addUrl"
:editUrl="editUrl"
:delUrl="delUrl"
:editAuth="editAuth"
:delAuth="delAuth"
:infoUrl="infoUrl"
:exportUrl="exportUrl"
:importUrl="importUrl"
:mubanUrl="mubanUrl"
:editParams="editParams"
:editFixedParams="editFixedParams"
:editElseRules="editElseRules"
:editConfig="editConfig"
:editParamsDiv="5"
:editBtnName="(item) => '修改'"
:formBtnFixed="true"
idName="articleId"
>
<template v-slot:editOperateSup="{ id, formType, info }">
<el-button v-if="formType != 'watch'"
type="warning"
size="small"
:disabled="draftBtnDisable"
@click="handleClickDraft(info)">存草稿</el-button>
<el-button
v-if="formType == 'add'"
type="warning"
size="small"
:disabled="draftBtnDisable"
@click="handleClickDraft(info)"
>存草稿</el-button
>
</template>
<template v-slot:listBtnSup="{ item }">
<el-button v-if="
<el-button
v-if="
item.statusFlag == 'published' &&
item.agencyId == $store.state.user.agencyId
"
@click="handleOfflineShow(item)"
type="text"
size="small"
style="color: #666">下线</el-button>
@click="handleOfflineShow(item)"
type="text"
size="small"
style="color: #666"
>下线</el-button
>
</template>
<template v-slot:listBtnbefore="{ item }">
<el-button v-if="item.isTop == '1'"
@click="handleTopArticle(item,'cancel_top')"
type="text"
size="small"
style="color: #fe6252">取消置顶</el-button>
<el-button v-else
@click="handleTopArticle(item,'top')"
type="text"
size="small"
style="color: #22c1c3">置顶</el-button>
<el-button
v-if="item.isTop == '1'"
@click="handleCancleTopArticle(item, 'cancel_top')"
type="text"
size="small"
style="color: #fe6252"
>取消置顶</el-button
>
<el-button
v-else
@click="handleTopArticle(item, 'top')"
type="text"
size="small"
style="color: #22c1c3"
>置顶</el-button
>
</template>
</base-page>
<el-dialog :visible.sync="offlineShowed"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="下线"
width="850px"
top="5vh"
class="dialog-h"
@closed="offlineShowed = false">
<offline ref="offlineForm"
@close="offlineShowed = false"
@afterOffline="handleOfflineSuccess"></offline>
<el-dialog
:visible.sync="offlineShowed"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="下线"
width="850px"
top="5vh"
class="dialog-h"
@closed="offlineShowed = false"
>
<offline
ref="offlineForm"
@close="offlineShowed = false"
@afterOffline="handleOfflineSuccess"
></offline>
</el-dialog>
<el-dialog
:visible.sync="showAddImage"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="上传封面图片"
width="650px"
top="5vh"
class="dialog-h"
@closed="showAddImage = false"
>
<div class="dialog-h-content scroll-h">
<!-- <span>请先上 传封面图片</span> -->
<el-form
ref="ref_form"
:inline="true"
:model="formData"
class="div_form"
>
<div class="form_flex">
<div class="form_item">
<el-form-item
label=""
prop="selImgUrl"
label-width="150px"
style="display: block"
>
<el-upload
:headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]"
ref="uploadPic"
:action="uploadUlr"
list-type="picture-card"
:on-exceed="exceedPic"
:before-upload="beforeAvatarUpload"
:on-remove="removePic"
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="1"
>
<span class="font-14">选择图片</span>
</el-upload>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="div_btn">
<el-button size="small" @click="showAddImage = false"> </el-button>
<el-button size="small" type="primary" @click="handleAddImage"
> </el-button
>
</div>
</el-dialog>
</div>
</template>
@ -81,7 +152,7 @@ import nextTick from "dai-js/tools/nextTick";
export default {
props: {},
data () {
data() {
return {
offlineShowed: false,
@ -97,7 +168,7 @@ export default {
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook (list) {
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagId,
@ -138,12 +209,12 @@ export default {
children: "subAgencyList",
checkStrictly: true,
},
optionCook (obj) {
optionCook(obj) {
return [obj];
},
supKeys: ["publishRangeId", "publishRangeType"],
supValues: ["", ""],
handleChangeFn (vals, item) {
handleChangeFn(vals, item) {
const { optionList } = item;
if (vals.length > 0) {
item["supValues"][0] = vals[vals.length - 1];
@ -195,14 +266,14 @@ export default {
exportUrl: "",
addUrl: "/gov/voice/article/addOrSaveDraft",
editUrl: "",
editUrl: "/gov/voice/article/updateArticle",
infoUrl: "/gov/voice/article/detailV2",
delUrl: "",
editAuth (item) {
return false;
delUrl: "/gov/voice/article/delete批量",
editAuth(item) {
return item.statusFlagName == "已发布";
},
delAuth (item) {
return false;
delAuth(item) {
return item.statusFlagName == "已下线";
},
editParams: [
@ -232,7 +303,7 @@ export default {
uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/article/upload",
supKeys: ["imgUrlArr", "imgUrl"],
supValues: [() => [], ""],
beforeImgUpload (file, item, that) {
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
@ -268,10 +339,10 @@ export default {
checkStrictly: false,
emitPath: false,
},
optionCook (obj) {
optionCook(obj) {
return [obj];
},
handleChangeFn (vals, item, that) {
handleChangeFn(vals, item, that) {
console.log("handleChangeFn", vals);
const { optionList } = item;
const optionPlaneList = collapse(optionList, "subAgencyList");
@ -312,7 +383,7 @@ export default {
type: "date",
value: dateFormat(new Date(), "yyyy-MM-dd"),
pickerOptions: {
disabledDate (time) {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
@ -333,7 +404,7 @@ export default {
optionType: "group",
supKeys: ["publisherName", "publisherType"],
supValues: ["", ""],
optionCook (data) {
optionCook(data) {
let ret = [];
const { agencyDeptList, agencyGridList, agencyId, agencyName } =
data;
@ -375,7 +446,7 @@ export default {
}
return ret;
},
handleChangeFn (vals, item, that) {
handleChangeFn(vals, item, that) {
const { optionList } = item;
let opts = [];
optionList.forEach((g) => {
@ -403,7 +474,7 @@ export default {
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook (list) {
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagName,
@ -436,7 +507,7 @@ export default {
editElseRules: {},
editConfig: {
confirmBtnName: "发布",
cookInfoFn (data) {
cookInfoFn(data) {
if (data.richTextFlag == "0") {
data.content = data.contentList
.map((item) => {
@ -467,7 +538,7 @@ export default {
return data;
},
beforeSubmit (formType, fmData, that) {
beforeSubmit(formType, fmData, that) {
if (fmData.isTop == "1" && !fmData.imgUrl) {
that.$message.error("请上传封面图片");
return false;
@ -475,46 +546,130 @@ export default {
return true;
},
},
formData: {},
showAddImage: false,
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
replayImgList: [],
hideUploadBtn: false,
selType: "top",
selArticleId: "",
selImgUrl: "",
};
},
components: { basePage, offline },
computed: {},
watch: {},
async mounted () { },
async mounted() {},
methods: {
async handleOfflineShow (item) {
async handleOfflineShow(item) {
console.log(item);
this.offlineShowed = true;
await nextTick(100);
this.$refs.offlineForm.initForm(item);
},
async handleTopArticle (item, type) {
async handleAddImage() {
console.log("formData", this.formData);
this.topArticle();
},
async handleCancleTopArticle(item, type) {
this.selType = type;
this.selArticleId = item.articleId;
await this.topArticle();
},
const url = "/gov/voice/article/topArticle";
async handleTopArticle(item, type) {
this.selType = type;
this.selArticleId = item.articleId;
let hasImage = await this.isHasImage();
if (hasImage === "refrsh") {
this.$message.error("请求失败,请重新尝试");
} else if (hasImage === "no") {
// this.$message.info("");
this.showAddImage = true;
} else {
await this.topArticle();
}
},
async isHasImage() {
const url = "/gov/voice/article/detailV2";
const { tableData } = this;
const { data, code, msg } = await requestPost(url, {
articleId: item.articleId,
type: type
articleId: this.selArticleId,
});
if (code === 0) {
// this.formData = data
if (data.imgUrl) {
return "has";
} else {
return "no";
}
} else {
return "refrsh";
}
},
async topArticle() {
const url = "/gov/voice/article/topArticle";
const { tableData } = this;
let params = {
articleId: this.selArticleId,
type: this.selType,
};
if (this.selImgUrl) {
params.imgUrl = this.selImgUrl;
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("操作成功!");
this.showAddImage = false;
this.$refs.basePage.refresh();
} else {
this.$message.success("操作失败!");
}
},
handleOfflineSuccess () {
removePic(file, fileList) {
this.selImgUrl = "";
this.replayImgList = [];
this.hideUploadBtn = fileList.length >= 1;
},
// 3
handleEditChange(file, fileList) {
this.hideUploadBtn = fileList.length >= 1;
},
exceedPic() {
this.$message.warning("只能上传1张封面图");
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 10MB!");
}
return isLt2M;
},
handleSuccess(response, file, fileList) {
this.replayImgList.push(file);
this.selImgUrl = response.data.url;
},
handleOfflineSuccess() {
this.$refs.basePage.refresh();
this.offlineShowed = false;
},
async handleClickDraft (fmData) {
async handleClickDraft(fmData) {
let url = this.addUrl;
let params = {
...fmData,
@ -541,4 +696,18 @@ export default {
};
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/form-main.scss";
.avatar-uploader {
margin: 0 0 0 20px;
}
</style>
<style lang="scss">
.hide {
.el-upload--picture-card {
display: none !important;
}
}
</style>

11
src/views/modules/cpts/base/index.vue

@ -720,13 +720,18 @@ export default {
const { tableData, idName } = this;
const idValue = tableData[rowIndex][idName];
let param = {
[idName]: idValue,
};
if (url.endsWith("/")) {
url += idValue;
}
if (url.endsWith("批量")) {
url = url.slice(0, -2);
param = [idValue];
}
const { data, code, msg } = await requestPost(url, {
[idName]: idValue,
});
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
this.$message.success("删除成功!");

18
src/views/modules/shequzhili/issue/cpts/evaluationDetail.vue

@ -16,14 +16,14 @@
<el-table-column prop="userNickName"
align="center"
width="80"
min-width="120"
label="评价人"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="evaluateTimeShow"
align="center"
width="150"
min-width="170"
label="评价时间"
:show-overflow-tooltip="true">
</el-table-column>
@ -36,15 +36,15 @@
<template slot-scope="scope">
<el-image v-if="scope.row.satisfaction=='bad'"
style="width: 40px; height: 40px"
src="@/assets/img/satisfy-images/face1_light.png">
:src="badurl_light">
</el-image>
<el-image v-else-if="scope.row.satisfaction=='good'"
style="width: 40px; height: 40px"
src="@/assets/img/satisfy-images/face2_light.png">
:src="goodurl_light">
</el-image>
<el-image v-else
style="width: 40px; height: 40px"
src="@/assets/img/satisfy-images/face3_light.png">
:src="perfecturl_light">
</el-image>
</template>
@ -94,6 +94,11 @@ export default {
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
badurl_light: require('@/assets/img/satisfy-images/face1_light.png'),
goodurl_light: require('@/assets/img/satisfy-images/face2_light.png'),
perfecturl_light: require('@/assets/img/satisfy-images/face3_light.png'),
}
},
components: {},
@ -106,7 +111,7 @@ export default {
methods: {
async initForm (topicInfo) {
async initForm () {
this.startLoading()
await this.getList()
@ -127,6 +132,7 @@ export default {
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
data.forEach(element => {
element.evaluateTimeShow = dateFormat(

21
src/views/modules/shequzhili/issue/cpts/issue-detail.vue

@ -19,6 +19,10 @@
<span class="info-title-2">所属网格</span>
<span>{{ issueInfo.belongsGridName||'--' }}</span>
</div>
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">议题发表人</span>
<span>{{ issueInfo.issueInitiator||'--' }}</span>
</div>
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">议题来源</span>
@ -34,8 +38,7 @@
@click="handleToTopic">查看话题>--</div>
</div>
<div v-if="issueInfo.sourceType==='resi_topic'"
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">意见和建议</span>
<div class="line"
@click="handleToSuggest">查看全部</div>
@ -148,7 +151,7 @@
</el-popover>
</div>
<div v-if="issueInfo.issueStatus==='closed'&&issueInfo.sourceType==='resi_topic'"
<div v-if="issueInfo.issueStatus==='closed'"
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">满意度评价</span>
<div class="line"
@ -215,6 +218,7 @@ function iniData () {
issueInfo: {},
showType: '',
popSelIssueCate: [],
issueCate: [],
cateOptions: [],
visibleCatePanel: false,
@ -267,7 +271,7 @@ export default {
watch: {
selectedCateData (val) {
const { cateOptions } = this;
this.issueCate = val
this.popSelIssueCate = val
.filter((arr) => arr.length > 0)
.map((arr) => {
let ele1 = cateOptions.find((item) => item.id == arr[0]);
@ -350,7 +354,7 @@ export default {
},
async getChartInfo () {
const url = "/gov/issue/manage/votingtrend";
const url = "/gov/issue/manage/votingTrendV2";
const { data, code, msg } = await requestPost(url, {
issueId: this.issueId,
@ -440,19 +444,20 @@ export default {
async updateIssueCate () {
const url = "/gov/issue/issuecategory/save";
const { issueCate } = this;
if (issueCate.length == 0) {
const { popSelIssueCate } = this;
if (popSelIssueCate.length == 0) {
return this.$message.error("分类不能为空");
}
const { data, code, msg } = await requestPost(url, {
issueId: this.issueId,
categoryList: issueCate,
categoryList: popSelIssueCate,
});
if (code === 0) {
this.$message.success("更改成功");
this.visibleCatePanel = false;
this.issueCate = popSelIssueCate
this.getTagOptions();
} else {
this.$message.error(msg);

7
src/views/modules/shequzhili/issue/cpts/issue-info.vue

@ -414,12 +414,17 @@ export default {
handleToSuggest () {
// this.pageTypeCopy = 'topic'
this.suggestShow = true
this.$nextTick(() => {
this.$refs.ref_detail_suggest.initForm()
})
},
handleToEvaluation () {
// this.pageTypeCopy = 'topic'
this.evaluationShow = true
this.$nextTick(() => {
this.$refs.ref_detail_evaluation.initForm()
})
},
//

2
src/views/modules/shequzhili/issue/cpts/suggestDetail.vue

@ -97,7 +97,7 @@ export default {
methods: {
async initForm (topicInfo) {
async initForm () {
this.startLoading()
await this.getSuggestion()

26
src/views/modules/shequzhili/issue/cptsAudit/issue-detail.vue

@ -34,14 +34,14 @@
v-for="src in topicInfo.photoList"
@click="watchImg(src.url)" />
</div>
<div v-if="topicInfo.voiceList&&topicInfo.voiceList.length>0"
<div v-if="voiceList&&voiceList.length>0"
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">语音</span>
<audio controls>
<source :src="item.url"
type=""
:key="item.url"
v-for="item in topicInfo.voiceList" />
v-for="item in voiceList" />
</audio>
</div>
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
@ -100,6 +100,7 @@ function iniData () {
issueInfo: {},
topicInfo: {},
voiceList: {},
showType: '',
};
@ -154,11 +155,30 @@ export default {
"yyyy-MM-dd hh:mm"
);
}
this.getAttechment()
}
},
methods: {
async getAttechment () {
const url = "/resi/group/topic/topicattachmentlist"
let params = {
topicId: this.topicInfo.topicId,
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.voiceList = data.voiceList
} else {
this.$message.error(msg)
}
},
watchImg (src) {
window.open(src);
},
@ -171,8 +191,6 @@ export default {
this.$emit("handleClose");
},
async getApiData () {
},
handleToTopic () {
this.$emit("handleToTopic")

19
src/views/modules/shequzhili/issue/cptsAudit/issue-info.vue

@ -64,10 +64,21 @@
<div class="detail-field">提交审核时间</div>
<div class="detail-value">{{ item.operateTime }}</div>
</div>
<div v-if="item.actionType==='rejected'"
class="detail">
<div class="detail-field">理由</div>
<div class="detail-value">{{ item.reason }}</div>
<div v-if="item.actionType==='rejected'">
<div class="detail">
<div class="detail-field">驳回时间</div>
<div class="detail-value">{{ item.operateTime }}</div>
</div>
<div class="detail">
<div class="detail-field">驳回人</div>
<div class="detail-value">{{ item.staffName }}</div>
</div>
<div class="detail">
<div class="detail-field">驳回理由</div>
<div class="detail-value">{{ item.reason }}</div>
</div>
</div>
</div>

2
src/views/modules/shequzhili/issue/issueAuditList.vue

@ -434,7 +434,7 @@ export default {
async getTableData () {
const url = "/gov/issue/issueaudit/auditList";
// const url = "http://yapi.elinkservice.cn/mock/102/gov/issue/issue/allIssueList";
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,

21
src/views/modules/shequzhili/issue/issueList.vue

@ -134,17 +134,22 @@
:show-overflow-tooltip="true"
label="转议题时间">
</el-table-column>
<el-table-column prop="sourceTypeName"
label="来源"
width="60"
align="center"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="supportCount"
align="center"
width="80"
width="60"
label="支持"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="oppositionCount"
align="center"
width="80"
width="60"
label="反对"
:show-overflow-tooltip="true">
</el-table-column>
@ -456,7 +461,7 @@ export default {
async getTableData () {
const url = "/gov/issue/issue/allIssueList";
// const url = "http://yapi.elinkservice.cn/mock/102/gov/issue/issue/allIssueList";
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,
@ -473,6 +478,14 @@ export default {
: [];
this.tableData.forEach(item => {
if (item.sourceType === 'ic_event') {
item.sourceTypeName = '事件'
} else if (item.sourceType === 'resi_topic') {
item.sourceTypeName = '话题'
} else {
item.sourceTypeName = '--'
}
if (item.operationType === '2') {
item.operationTypeShow = '已转服务'
}

432
src/views/modules/shequzhili/xiangmu/index.vue

@ -1,80 +1,67 @@
<template>
<div class="resi-container">
<div class="g-page" v-show="pageType == 'list'">
<el-card ref="searchCard" class="search-card">
<el-form
ref="searchForm"
:inline="true"
:model="fmData"
:label-width="'100px'"
class="demo-form-inline"
>
<div class="g-page"
v-show="pageType == 'list'">
<el-card ref="searchCard"
class="search-card">
<el-form ref="searchForm"
:inline="true"
:model="fmData"
:label-width="'100px'"
class="demo-form-inline">
<div>
<el-form-item label="项目标题" prop="title">
<el-input
v-model="fmData.title"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
<el-form-item label="项目标题"
prop="title">
<el-input v-model="fmData.title"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="转项目时间" prop="date">
<el-date-picker
v-model="fmData.startDate"
size="small"
type="date"
value-format="yyyy-MM-dd"
style="width: 150px"
placeholder="开始时间"
>
<el-form-item label="转项目时间"
prop="date">
<el-date-picker v-model="fmData.startDate"
size="small"
type="date"
value-format="yyyy-MM-dd"
style="width: 150px"
placeholder="开始时间">
</el-date-picker>
<span style="margin:0 8px;"></span>
<el-date-picker
v-model="fmData.endDate"
size="small"
type="date"
style="width: 150px"
value-format="yyyy-MM-dd"
placeholder="结束时间"
>
<el-date-picker v-model="fmData.endDate"
size="small"
type="date"
style="width: 150px"
value-format="yyyy-MM-dd"
placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model.trim="fmData.status"
placeholder="请选择"
size="small"
clearable
style="width: 150px"
class="resi-cell-select"
>
<el-option
v-for="item in optionsStatus"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-form-item label="状态"
prop="status">
<el-select v-model.trim="fmData.status"
placeholder="请选择"
size="small"
clearable
style="width: 150px"
class="resi-cell-select">
<el-option v-for="item in optionsStatus"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item style="margin-left: 35px">
<el-button
class="diy-button--search"
size="small"
@click="handleSearch"
>查询</el-button
>
<el-button
class="diy-button--reset"
size="small"
@click="resetForm('searchForm')"
>重置</el-button
>
<el-button class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button class="diy-button--reset"
size="small"
@click="resetForm('searchForm')">重置</el-button>
</el-form-item>
</div>
</el-form>
@ -82,185 +69,147 @@
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button
v-if="false"
class="diy-button--add"
size="small"
@click="handleAdd"
>新增</el-button
>
<el-button
v-if="false"
class="diy-button--export"
size="small"
@click="handleExportModule('room')"
>下载模板</el-button
>
<el-upload :headers="$getElUploadHeaders()"
v-if="false"
ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:accept="'.xls,.xlsx'"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button
size="small"
class="diy-button--delete"
:loading="importLoading"
>{{ importBtnTitle }}</el-button
>
<el-button v-if="false"
class="diy-button--add"
size="small"
@click="handleAdd">新增</el-button>
<el-button v-if="false"
class="diy-button--export"
size="small"
@click="handleExportModule('room')">下载模板</el-button>
<el-upload :headers="$getElUploadHeaders()"
v-if="false"
ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:accept="'.xls,.xlsx'"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest">
<el-button size="small"
class="diy-button--delete"
:loading="importLoading">{{ importBtnTitle }}</el-button>
</el-upload>
<el-button @click="handleChu" class="diy-button--reset" size="small"
>导出</el-button
>
<el-button @click="handleChu"
class="diy-button--reset"
size="small">导出</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
class="resi-table"
:height="maxTableHeight"
>
<el-table-column
label="序号"
fixed="left"
type="index"
align="center"
width="50"
/>
<el-table-column
prop="gridName"
align="center"
label="所属网格"
:show-overflow-tooltip="true"
>
<el-table :data="tableData"
border
style="width: 100%"
class="resi-table"
:height="maxTableHeight">
<el-table-column label="序号"
fixed="left"
type="index"
align="center"
width="50" />
<el-table-column prop="gridName"
align="center"
label="所属网格"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="title"
label="项目标题"
align="center"
:show-overflow-tooltip="true"
>
<el-table-column prop="title"
label="项目标题"
align="center"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="shiftProjectTime"
width="100"
align="center"
label="转项目时间"
:show-overflow-tooltip="true"
>
<el-table-column prop="shiftProjectTime"
width="100"
align="center"
label="转项目时间"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="projectScheme"
align="center"
label="项目方案"
:show-overflow-tooltip="true"
>
<el-table-column prop="projectScheme"
align="center"
label="项目方案"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="internalRemark"
align="center"
label="内部备注"
:show-overflow-tooltip="true"
>
<el-table-column prop="internalRemark"
align="center"
label="内部备注"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="originName"
align="center"
label="来源"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="departmentNameList"
align="center"
label="当前处理部门 "
:show-overflow-tooltip="true"
>
<el-table-column prop="departmentNameList"
align="center"
label="当前处理部门 "
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="detentionDays"
align="center"
label="滞留工作日 "
:show-overflow-tooltip="true"
>
<el-table-column prop="detentionDays"
align="center"
label="滞留工作日 "
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
fixed="right"
label="操作"
align="center"
width="100"
>
<el-table-column fixed="right"
label="操作"
align="center"
width="100">
<template slot-scope="scope">
<el-button
v-if="scope.row.status == 'pending' && scope.row.processable"
@click="handleEdit(scope.$index)"
type="text"
size="small"
class="div-table-button--edit"
>处理</el-button
>
<el-button
v-else
@click="handleWatch(scope.$index)"
type="text"
size="small"
>查看</el-button
>
<el-popconfirm
v-if="false"
title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)"
>
<el-button
slot="reference"
type="text"
size="small"
class="div-table-button--delete"
style="margin-left: 10px"
>删除</el-button
>
<el-button v-if="scope.row.status == 'pending' && scope.row.processable"
@click="handleEdit(scope.$index)"
type="text"
size="small"
class="div-table-button--edit">处理</el-button>
<el-button v-else
@click="handleWatch(scope.$index)"
type="text"
size="small">查看</el-button>
<el-popconfirm v-if="false"
title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)">
<el-button slot="reference"
type="text"
size="small"
class="div-table-button--delete"
style="margin-left: 10px">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next, total"
:total="total"
>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</el-card>
</div>
<div class="g-page" v-if="pageType == 'edit' || pageType == 'info'">
<project-info
ref="eleEditForm"
:type="pageType"
:projectId="currentProject.projectId"
@close="handleClose"
@afterEdit="handleEditSuccess"
/>
<div class="g-page"
v-if="pageType == 'edit' || pageType == 'info'">
<project-info ref="eleEditForm"
:type="pageType"
:projectId="currentProject.projectId"
@close="handleClose"
@afterEdit="handleEditSuccess" />
</div>
</div>
</template>
@ -275,7 +224,7 @@ import axios from "axios";
export default {
components: { projectInfo },
data() {
data () {
return {
pageType: "list", // list dispose info issue-info
@ -315,7 +264,7 @@ export default {
};
},
computed: {
maxTableHeight() {
maxTableHeight () {
return this.$store.state.inIframe
? this.clientHeight - 360 + this.iframeHeigh
: this.clientHeight - 360;
@ -333,11 +282,11 @@ export default {
}
},
},
mounted() {
mounted () {
this.getTableData();
},
methods: {
async handleExportModule() {
async handleExportModule () {
let url = "/heart/iccommunityselforganization/import-template-download";
let params = {};
@ -374,18 +323,18 @@ export default {
});
},
//
handleExcelSuccess(res, file) {
handleExcelSuccess (res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("resss---ppp", res);
} else {
this.$message.error(res.msg);
}
},
handleProgress(event, file, fileList) {
handleProgress (event, file, fileList) {
console.log("percentage", file.percentage);
},
beforeExcelUpload(file) {
beforeExcelUpload (file) {
console.log("file", file);
const isType = file.type === "application/vnd.ms-excel";
const isTypeComputer =
@ -402,7 +351,7 @@ export default {
}
return fileType && isLt1M;
},
async uploadHttpRequest(file) {
async uploadHttpRequest (file) {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
this.$message({
@ -457,29 +406,29 @@ export default {
this.$refs.upload.clearFiles();
},
handleSizeChange(val) {
handleSizeChange (val) {
console.log(`每页 ${val}`);
this.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getTableData();
},
handleCurrentChange(val) {
handleCurrentChange (val) {
console.log(`当前页: ${val}`);
this.pageNo = val;
this.getTableData();
},
handleSearch(val) {
handleSearch (val) {
console.log(this.fmData);
this.pageNo = 1;
this.getTableData();
},
resetForm(formName) {
resetForm (formName) {
this.$refs[formName].resetFields();
this.handleSearch();
},
async handleChu() {
async handleChu () {
const url = "/gov/project/project/project-list-export";
const { pageSize, pageNo, fmData } = this;
axios({
@ -514,8 +463,8 @@ export default {
});
},
async handleAdd() {},
async handleWatch(rowIndex) {
async handleAdd () { },
async handleWatch (rowIndex) {
let item = this.tableData[rowIndex];
this.currentProject = {
projectId: item.projectId,
@ -523,7 +472,7 @@ export default {
this.pageType = "info";
},
async handleEdit(rowIndex) {
async handleEdit (rowIndex) {
let item = this.tableData[rowIndex];
this.currentProject = {
projectId: item.projectId,
@ -531,19 +480,19 @@ export default {
this.pageType = "edit";
},
handleClose() {
handleClose () {
this.pageType = "list";
this.currentProject = {
projectId: "",
};
},
handleEditSuccess() {
handleEditSuccess () {
this.handleClose();
this.getTableData();
},
async handleDel(rowData, rowIndex) {
async handleDel (rowData, rowIndex) {
console.log(rowData, rowIndex);
const url =
"/heart/iccommunityselforganization/delcommunityselforganization";
@ -561,7 +510,7 @@ export default {
}
},
async getTableData() {
async getTableData () {
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/project/project-list";
const url = "/gov/project/project/project-list";
const { pageSize, pageNo, fmData } = this;
@ -575,9 +524,28 @@ export default {
this.total = data.total || 0;
this.tableData = data.list
? data.list.map((item) => {
return item;
})
return item;
})
: [];
this.tableData.forEach(item => {
if (item.origin === 'issue') {
item.originName = '议题 '
} else if (item.origin === 'agency') {
item.originName = '项目立项'
} else if (item.origin === 'resi_event') {
item.originName = '旧版事件上报'
} else if (item.origin === 'work_event') {
item.originName = '巡查上报'
} else if (item.origin === 'ic_event') {
item.originName = '事件'
} else {
item.sourceTypeName = '--'
}
});
} else {
}
},

6
src/views/modules/shujuduibi/canji.vue

@ -19,7 +19,11 @@
</template>
<template v-slot:listBtnSup="{ item }">
<el-button type="text" @click="handleSync(item)" size="small"
<el-button
type="text"
v-if="item.dealStatus != 1"
@click="handleSync(item)"
size="small"
>全部更新</el-button
>
</template>

6
src/views/modules/shujuduibi/siwang.vue

@ -19,7 +19,11 @@
</template>
<template v-slot:listBtnSup="{ item }">
<el-button type="text" @click="handleSync(item)" size="small"
<el-button
type="text"
v-if="item.dealStatus != 1"
@click="handleSync(item)"
size="small"
>全部更新</el-button
>
</template>

Loading…
Cancel
Save