Browse Source

Merge branch 'dev' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev

dev-用户反馈
jiangyy 3 years ago
parent
commit
e071cfdf79
  1. 4
      package.json
  2. 25
      src/views/components/tinymce2/index.vue
  3. 333
      src/views/modules/communityParty/article/index.vue
  4. 11
      src/views/modules/cpts/base/index.vue
  5. 18
      src/views/modules/shequzhili/issue/cpts/evaluationDetail.vue
  6. 21
      src/views/modules/shequzhili/issue/cpts/issue-detail.vue
  7. 7
      src/views/modules/shequzhili/issue/cpts/issue-info.vue
  8. 2
      src/views/modules/shequzhili/issue/cpts/suggestDetail.vue
  9. 26
      src/views/modules/shequzhili/issue/cptsAudit/issue-detail.vue
  10. 19
      src/views/modules/shequzhili/issue/cptsAudit/issue-info.vue
  11. 2
      src/views/modules/shequzhili/issue/issueAuditList.vue
  12. 21
      src/views/modules/shequzhili/issue/issueList.vue
  13. 432
      src/views/modules/shequzhili/xiangmu/index.vue
  14. 6
      src/views/modules/shujuduibi/canji.vue
  15. 6
      src/views/modules/shujuduibi/siwang.vue

4
package.json

@ -60,7 +60,7 @@
},
"devDependencies": {
"@antv/f2": "^3.8.10-beta.1",
"@tinymce/tinymce-vue": "^3.2.8",
"@tinymce/tinymce-vue": "3.2.8",
"@vue/cli-plugin-babel": "^3.10.0",
"@vue/cli-plugin-eslint": "^3.10.0",
"@vue/cli-service": "^3.10.0",
@ -71,7 +71,7 @@
"ol": "^6.9.0",
"sass-loader": "^7.3.1",
"script-loader": "^0.7.2",
"tinymce": "^5.8.2",
"tinymce": "5.8.2",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {

25
src/views/components/tinymce2/index.vue

@ -87,11 +87,12 @@ export default {
toolbar_mode: "none",
toolbar_drawer: "sliding",
toolbar_mode: "sliding",
outputFormat: 'p',
outputFormat: "p",
plugins:
"wordcount visualchars visualblocks toc textpattern template tabfocus spellchecker searchreplace save quickbars print preview paste pagebreak noneditable nonbreaking media insertdatetime importcss imagetools image hr help fullscreen fullpage directionality codesample code charmap link code table lists advlist anchor autolink autoresize autosave", // import
toolbar:
"formats undo redo paste print fontsizeselect fontselect template fullpage|wordcount ltr rtl visualchars visualblocks toc spellchecker searchreplace|save preview pagebreak nonbreaking|media image|outdent indent aligncenter alignleft alignright alignjustify lineheight underline quicklink h2 h3 blockquote numlist bullist table removeformat forecolor backcolor bold italic strikethrough hr charmap link insertdatetime|subscript superscript cut codesample code |anchor preview fullscreen|help",
// "formats undo redo paste print fontsizeselect fontselect template fullpage|wordcount ltr rtl visualchars visualblocks toc spellchecker searchreplace|save preview pagebreak nonbreaking|media image|outdent indent aligncenter alignleft alignright alignjustify lineheight underline quicklink h2 h3 blockquote numlist bullist table removeformat forecolor backcolor bold italic strikethrough hr charmap link insertdatetime|subscript superscript cut codesample code |anchor preview fullscreen|help",
"formats undo redo|fontsizeselect|fontselect|forecolor backcolor bold italic underline strikethrough removeformat|image media link|outdent indent|aligncenter alignleft alignright alignjustify lineheight quicklink h2 h3 blockquote numlist bullist table|subscript superscript codesample code|preview fullscreen|wordcount|help",
content_style: "p {margin: 5px 0; font-size: 14px}",
fontsize_formats: "12px 14px 16px 18px 24px 36px 48px 56px 72px",
font_formats:
@ -171,17 +172,16 @@ export default {
if (editor && val !== prevVal && val !== editor.getContent()) {
if (typeof val !== "string") val = val.toString();
debounceSetContent.call(editor, val);
return
return;
}
// debounceSetContent.call(editor, this.dormatHtml(val));
});
editor.on("change keyup undo redo", () => {
// console.log('editor.getContent()---', editor.getContent({ format : 'p' }))
const c = editor.getContent({ format : 'p' })
const c = editor.getContent({ format: "p" });
this.$emit("input", editor.getContent());
// debounce(500, this.$emit("input", editor.getContent({ format : 'p' })));
;
});
editor.on("blur", () => {
// console.log('editor.blur--', editor.getContent({ format : 'p' }))
@ -190,12 +190,12 @@ export default {
});
},
dormatHtml(content) {
let c = ''
if (content.indexOf('DOCTYPE') != -1) {
let c = "";
if (content.indexOf("DOCTYPE") != -1) {
c = content.slice(45, -16);
}
console.log('content', typeof content)
return c || content
console.log("content", typeof content);
return c || content;
},
getUserToken() {
return localStorage.getItem("token");
@ -211,3 +211,10 @@ export default {
},
};
</script>
<style lang="scss">
//
.tox-tinymce-aux {
z-index: 5000 !important;
}
</style>

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

@ -1,71 +1,144 @@
<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'"
v-show="item.statusFlag == 'published'"
@click="handleCancleTopArticle(item, 'cancel_top')"
type="text"
size="small"
style="color: #fe6252"
>取消置顶</el-button
>
<el-button
v-show="item.statusFlag == 'published'"
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 +154,7 @@ import nextTick from "dai-js/tools/nextTick";
export default {
props: {},
data () {
data() {
return {
offlineShowed: false,
@ -97,7 +170,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 +211,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 +268,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 +305,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 +341,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 +385,7 @@ export default {
type: "date",
value: dateFormat(new Date(), "yyyy-MM-dd"),
pickerOptions: {
disabledDate (time) {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
@ -333,7 +406,7 @@ export default {
optionType: "group",
supKeys: ["publisherName", "publisherType"],
supValues: ["", ""],
optionCook (data) {
optionCook(data) {
let ret = [];
const { agencyDeptList, agencyGridList, agencyId, agencyName } =
data;
@ -375,7 +448,7 @@ export default {
}
return ret;
},
handleChangeFn (vals, item, that) {
handleChangeFn(vals, item, that) {
const { optionList } = item;
let opts = [];
optionList.forEach((g) => {
@ -403,7 +476,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 +509,7 @@ export default {
editElseRules: {},
editConfig: {
confirmBtnName: "发布",
cookInfoFn (data) {
cookInfoFn(data) {
if (data.richTextFlag == "0") {
data.content = data.contentList
.map((item) => {
@ -467,7 +540,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 +548,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 +698,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