Browse Source

0329需求

jly/task002
mk 3 years ago
parent
commit
880b404c85
  1. 853
      src/views/modules/communityParty/regionalParty/activitys copy.vue
  2. 86
      src/views/modules/communityParty/regionalParty/activitys.vue
  3. 7
      src/views/modules/communityParty/regionalParty/activitysDetail.vue
  4. 623
      src/views/modules/communityParty/regionalParty/activitysForm copy.vue
  5. 622
      src/views/modules/communityParty/regionalParty/activitysForm.vue
  6. 123
      src/views/modules/communityParty/regionalParty/activitysResiListTable.vue

853
src/views/modules/communityParty/regionalParty/activitys copy.vue

@ -0,0 +1,853 @@
<template>
<div class="div_main">
<div class="div_search">
<el-form
:inline="true"
:model="formData"
ref="ref_searchform"
:label-width="'100px'"
>
<div>
<el-form-item label="单位名称" prop="unitId">
<el-select
class="item_width_1"
v-model="formData.unitId"
size="small"
placeholder="全部"
clearable
>
<el-option
v-for="item in unitList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="服务事项" prop="serviceMatter">
<el-select
class="item_width_2"
v-model="formData.serviceMatter"
size="small"
placeholder="请选择"
clearable
>
<el-option
v-for="item in serviceList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属网格" prop="gridId">
<el-select
class="item_width_1"
v-model="formData.gridId"
placeholder="全部"
clearable
>
<el-option
v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</div>
<div>
<el-form-item label="活动标题" prop="title">
<el-input
v-model="formData.title"
size="small"
class="item_width_1"
clearable
placeholder="请输入内容"
>
</el-input>
</el-form-item>
<el-form-item label="活动时间" prop="startTime">
<el-date-picker
v-model="timeRange"
size="small"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
@change="handleTimeChange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
>
</el-date-picker>
</el-form-item>
<el-button
style="margin-left: 10px"
class="diy-button--search"
size="small"
@click="handleSearch"
>查询</el-button
>
<el-button
style="margin-left: 10px"
class="diy-button--reset"
size="small"
@click="resetSearch"
>重置</el-button
>
</div>
</el-form>
</div>
<div class="div_table">
<div class="resi-row-btn">
<el-button
class="diy-button--add"
size="small"
@click="handleAdd"
>新增</el-button
>
<el-button
class="diy-button--export"
size="small"
@click="handleExportModule"
>下载模板</el-button
>
<el-upload
:headers="$getElUploadHeaders()"
ref="upload"
class="upload-demo"
:multiple="false"
:show-file-list="false"
:before-upload="beforeUpload"
action=""
accept=".xls,.xlsx"
:limit="1"
:on-exceed="handleExceed"
:http-request="uploadFile"
>
<el-button
style="margin-left: 10px"
size="small"
class="diy-button--delete"
>导入</el-button
>
</el-upload>
<el-button
class="diy-button--reset"
size="small"
@click="handleExport"
>导出</el-button
>
</div>
<el-table
class="table"
:data="tableData"
border
:height="tableHeight"
v-loading="tableLoading"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%"
>
<el-table-column
label="序号"
header-align="center"
align="center"
type="index"
width="50"
></el-table-column>
<el-table-column
prop="unitName"
header-align="center"
align="center"
label="单位名称"
width="180"
>
</el-table-column>
<el-table-column
prop="gridName"
header-align="center"
align="center"
label="所属网格"
width="180"
>
</el-table-column>
<el-table-column
prop="title"
header-align="center"
align="center"
label="活动标题"
min-width="180"
>
</el-table-column>
<el-table-column
prop="address"
header-align="center"
align="center"
label="活动地址"
min-width="230"
>
</el-table-column>
<el-table-column
prop="peopleCount"
header-align="center"
align="center"
label="服务人数"
width="100"
>
</el-table-column>
<el-table-column
prop="activityTime"
header-align="center"
align="center"
label="活动时间"
width="230"
>
</el-table-column>
<el-table-column
prop="activityTime"
header-align="center"
align="center"
label="来源"
width="100"
>
<template slot-scope="scope">
<span v-if="scope.row.actId">小程序</span>
<span v-else>管理平台</span>
</template>
</el-table-column>
<el-table-column
label="操作"
fixed="right"
width="140"
header-align="center"
align="center"
class="operate"
>
<template slot-scope="scope">
<el-button
type="text"
style="color: #1c6afd; text-decoration: underline"
size="small"
@click="handleDetail(scope.row)"
>查看</el-button
>
<el-button
v-if="
agencyId === scope.row.agencyId &&
!scope.row.actId
"
type="text"
style="color: #00a7a9; text-decoration: underline"
size="small"
@click="handleEdit(scope.row)"
>修改</el-button
>
<el-button
v-if="agencyId === scope.row.agencyId"
type="text"
style="color: #d51010; text-decoration: underline"
size="small"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[10, 20, 50]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total"
>
</el-pagination>
</div>
</div>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="950px"
top="5vh"
class="dialog-h"
@closed="diaClose"
>
<activitys-form
ref="ref_form"
:unitList="unitList"
:gridList="gridList"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"
></activitys-form>
</el-dialog>
<el-dialog
:visible.sync="detailShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'活动详情'"
width="950px"
top="5vh"
class="dialog-h"
@closed="detailClosed"
>
<activitys-detail
ref="ref_detail"
:serviceList="serviceList"
:gridList="gridList"
@diaDetailClose="detailClosed"
></activitys-detail>
</el-dialog>
</div>
</template>
<script>
import activitysForm from "./activitysForm";
import activitysDetail from "./activitysDetail";
import util from "@js/util.js";
import { requestPost } from "@/js/dai/request";
import { mapGetters } from "vuex";
import { Loading } from "element-ui"; // Loading
let loading; //
export default {
data() {
return {
loading: false,
total: 0,
pageSize: 10,
pageNo: 0,
tableLoading: false,
agencyId: "",
gridList: [], //
unitList: [], //list
serviceList: [
{
id: "1",
name: "积极配合社区安全巡查员进行场所消防、安全等方面的检查。",
},
{
id: "2",
name: "积极配合",
},
{
id: "3",
name: "积极配合社区安全巡查员进行",
},
{
id: "4",
name: "积极配合社区安全巡查员进行场所消防、安全等方面的检查。并具备安全意识及设备设施",
},
], //list
pickerOptions: {
//
disabledDate(time) {
return time.getTime() > Date.now() - 24 * 60 * 60 * 1000;
},
},
timeRange: [],
unitId: "",
formData: {
unitId: "",
title: "",
serviceMatter: "",
startTime: "",
endTime: "",
gridId: "",
},
tableData: [],
//form
formShow: false,
formTitle: "新增活动",
detailShow: false,
files: "",
fileName: "",
uploadUlr:
window.SITE_CONFIG["apiURL"] + "/gov/org/neighborhood/import",
};
},
components: {
activitysForm,
activitysDetail,
},
async created() {},
async mounted() {
//
await this.loadService();
const { user } = this.$store.state;
this.agencyId = user.agencyId;
//
this.loadUnit();
this.loadGrid();
//
this.loadTable();
},
methods: {
handleSearch() {
this.loadTable();
},
async loadGrid() {
const url = "/gov/org/customergrid/gridoption";
let params = {
agencyId: this.agencyId,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.gridList = data;
} else {
this.$message.error(msg);
}
},
async loadUnit() {
const url = "/heart/icpartyunit/option";
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/option"
let params = {
agencyId: this.agencyId,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.unitList = data;
} else {
this.$message.error(msg);
}
},
//
async loadService() {
const url = "/heart/serviceitem/dict-list";
let params = {
// parentCategoryCode: '1010'
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.serviceList = data;
} else {
this.$message.error(msg);
}
},
async loadTable() {
this.tableLoading = true;
const url = "/heart/icpartyactivity/search";
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/list"
let params = {
agencyId: this.agencyId,
pageSize: this.pageSize,
pageNo: this.pageNo,
...this.formData,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.total = data.total;
this.tableData = data.list;
} else {
this.$message.error(msg);
}
this.tableLoading = false;
},
diaClose() {
this.$refs.ref_form.resetData();
this.formShow = false;
},
detailClosed() {
console.log(this.$refs.ref_detail);
this.$refs.ref_detail.diaDestroy();
this.detailShow = false;
},
handleDetail(row) {
this.detailShow = true;
this.formTitle = "详情";
this.$nextTick(() => {
this.$refs.ref_detail.initForm(row);
// this.$refs.ref_form.initForm('detail', row.id)
});
},
handleAdd() {
this.formTitle = "新增";
this.formShow = true;
this.$nextTick(() => {
this.$refs.ref_form.initForm("add", null);
});
},
handleEdit(row) {
this.formTitle = "修改";
this.formShow = true;
this.$nextTick(() => {
this.$refs.ref_form.initForm("edit", row.id);
});
},
addFormCancle() {
this.formShow = false;
},
addFormOk() {
this.formShow = false;
this.loadTable();
},
async handleDelete(row) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.deleteActivity(row);
})
.catch((err) => {
if (err == "cancel") {
}
});
},
async handleExportModule() {
let url = "/heart/icpartyactivity/import-template-download";
let params = {};
await this.$http({
method: "POST",
url,
responseType: "blob",
data: params,
})
.then((res) => {
console.log("res-------dd", res);
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(
res.headers["content-disposition"]
.split(";")[1]
.split("=")[1]
);
this.download(res.data, fileName);
} else this.$message.error("下载失败");
})
.catch((err) => {
console.log("err", err);
return this.$message.error("网络错误");
});
},
async deleteActivity(row) {
const url = "/heart/icpartyactivity/delete";
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/delete"
let params = {
id: row.id,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message({
type: "success",
message: "删除成功",
});
this.loadTable();
} else {
this.$message.error(msg);
}
},
//
resetSearch() {
this.timeRange = [];
this.formData = {
gridId: "",
unitName: "",
serviceMatter: "",
type: "",
contact: "",
contactMobile: "",
};
this.pageSize = 10;
this.pageNo = 0;
this.loadTable();
},
//
async handleExport() {
let title = "联建活动列表";
const url = "/heart/icpartyactivity/export";
let params = {
agencyId: this.agencyId,
...this.formData,
};
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + ".xls");
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
download(data, fileName) {
if (!data) {
return;
}
var csvData = new Blob([data]);
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(csvData, fileName);
}
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = fileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
},
//
beforeUpload(file) {
this.files = file;
const isText = file.type === "application/vnd.ms-excel";
const isTextComputer =
file.type ===
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
if (!isText && !isTextComputer) {
this.$message.error("请选择正确格式的文件");
return false;
} else {
this.fileName = file.name;
return true;
}
},
//
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`);
},
async uploadFile() {
this.loading = true;
if (this.fileName == "") {
this.$message.warning("请选择要上传的文件!");
return false;
}
//
this.$refs["upload"].clearFiles();
var url = "/heart/icpartyactivity/import";
let fileFormData = new FormData();
fileFormData.append("file", this.files); //filenamefiletest.zip
const { data, code, msg } = await requestPost(url, fileFormData);
if (code === 0) {
this.$message({
type: "success",
message: "导入成功",
});
this.loadTable();
} else {
this.$message.error(msg);
}
},
handleTimeChange(time) {
if (time) {
const startTimeArray = util
.dateFormatter(time[0], "date")
.split("-");
const endTimeArray = util
.dateFormatter(time[1], "date")
.split("-");
this.formData.startTime =
startTimeArray[0] +
"-" +
startTimeArray[1] +
"-" +
startTimeArray[2] +
" 00:00:00";
this.formData.endTime =
endTimeArray[0] +
"-" +
endTimeArray[1] +
"-" +
endTimeArray[2] +
" 23:59:59";
// this.startTimeShow = startTimeArray[0] + '' + startTimeArray[1] + '' + startTimeArray[2] + ''
// this.endTimeShow = endTimeArray[0] + '' + endTimeArray[1] + '' + endTimeArray[2] + ''
} else {
this.formData.startTime = "";
this.formData.endTime = "";
// this.startTimeShow = ''
// this.endTimeShow = ''
}
},
handleSizeChange(val) {
this.pageSize = val;
this.pageNo = 1;
this.loadTable();
},
handleCurrentChange(val) {
this.pageNo = val;
this.loadTable();
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
},
computed: {
tableHeight() {
return this.$store.state.inIframe
? this.clientHeight - 430 + this.iframeHeight
: this.clientHeight - 430;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},
watch: {},
props: {},
};
</script>
<style lang="scss" scoped>
.div_main {
width: 100%;
}
.div_search {
background: #ffffff;
border-radius: 4px;
padding: 30px 20px 5px;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
}
.item_width_1 {
width: 260px;
}
.item_width_2 {
width: 495px;
}
.div_table {
background: #ffffff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: 15px;
padding: 23px 30px 10px;
.table {
margin-top: 20px;
}
}
.div_btn {
}
.el-row {
/* margin-bottom: 20px; */
display: flex;
flex-wrap: wrap;
margin-top: 10px;
margin-right: 50px;
}
.resi-row-btn {
display: flex;
margin-bottom: 13px;
::v-deep .el-button {
// margin-left: 10px;
border: 0;
}
::v-deep .el-select {
margin-right: 10px;
}
.el-button--success {
background: rgba(34, 193, 195, 1);
}
.el-button {
margin-left: 10px;
border: 0;
}
.el-button--success {
background: rgba(34, 193, 195, 1);
}
.el-button--warning {
background: rgba(254, 179, 73, 1);
}
.el-button--danger {
background: rgba(254, 98, 82, 1);
}
}
</style>

86
src/views/modules/communityParty/regionalParty/activitys.vue

@ -105,10 +105,7 @@
</div>
<div class="div_table">
<div class="resi-row-btn">
<el-button
class="diy-button--add"
size="small"
@click="handleAdd"
<el-button class="diy-button--add" size="small" @click="handleAdd"
>新增</el-button
>
@ -140,10 +137,7 @@
>
</el-upload>
<el-button
class="diy-button--reset"
size="small"
@click="handleExport"
<el-button class="diy-button--reset" size="small" @click="handleExport"
>导出</el-button
>
</div>
@ -205,13 +199,19 @@
width="100"
>
</el-table-column>
<el-table-column
prop="activityTime"
header-align="center"
align="center"
label="活动时间"
width="230"
width="251"
>
<template slot-scope="scope">
{{
scope.row.activityTime + " ~ " + scope.row.activityEndTime || "--"
}}
</template>
</el-table-column>
<el-table-column
prop="activityTime"
@ -229,7 +229,7 @@
<el-table-column
label="操作"
fixed="right"
width="140"
width="200"
header-align="center"
align="center"
class="operate"
@ -243,17 +243,20 @@
>查看</el-button
>
<el-button
v-if="
agencyId === scope.row.agencyId &&
!scope.row.actId
"
v-if="agencyId === scope.row.agencyId && !scope.row.actId"
type="text"
style="color: #00a7a9; text-decoration: underline"
size="small"
@click="handleEdit(scope.row)"
>修改</el-button
>
<el-button
type="text"
style="color: #1c6afd; text-decoration: underline"
size="small"
@click="handleResiList(scope.row)"
>人员名单</el-button
>
<el-button
v-if="agencyId === scope.row.agencyId"
type="text"
@ -282,6 +285,7 @@
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
v-if="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
@ -316,6 +320,23 @@
@diaDetailClose="detailClosed"
></activitys-detail>
</el-dialog>
<el-dialog
:visible.sync="resiListShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:title="'人员名单'"
width="950px"
top="5vh"
class="dialog-h"
@closed="resiListCancle"
>
<activitys-resi-list-table
ref="ref_resi_list_table"
:activitysId="activitysId"
@resiListCancle="resiListCancle"
></activitys-resi-list-table>
</el-dialog>
</div>
</template>
@ -326,7 +347,7 @@ import util from "@js/util.js";
import { requestPost } from "@/js/dai/request";
import { mapGetters } from "vuex";
import { Loading } from "element-ui"; // Loading
import activitysResiListTable from "./activitysResiListTable.vue";
let loading; //
export default {
data() {
@ -381,16 +402,17 @@ export default {
formShow: false,
formTitle: "新增活动",
detailShow: false,
resiListShow: false,
activitysId: "",
files: "",
fileName: "",
uploadUlr:
window.SITE_CONFIG["apiURL"] + "/gov/org/neighborhood/import",
uploadUlr: window.SITE_CONFIG["apiURL"] + "/gov/org/neighborhood/import",
};
},
components: {
activitysForm,
activitysDetail,
activitysResiListTable,
},
async created() {},
async mounted() {
@ -443,7 +465,16 @@ export default {
this.$message.error(msg);
}
},
handleResiList(row) {
this.resiListShow = true;
this.activitysId = row.id;
this.$nextTick(() => {
this.$refs.ref_resi_list_table.getTable();
});
},
resiListCancle() {
this.resiListShow = false;
},
//
async loadService() {
const url = "/heart/serviceitem/dict-list";
@ -559,9 +590,7 @@ export default {
console.log("res-------dd", res);
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(
res.headers["content-disposition"]
.split(";")[1]
.split("=")[1]
res.headers["content-disposition"].split(";")[1].split("=")[1]
);
this.download(res.data, fileName);
} else this.$message.error("下载失败");
@ -710,12 +739,8 @@ export default {
handleTimeChange(time) {
if (time) {
const startTimeArray = util
.dateFormatter(time[0], "date")
.split("-");
const endTimeArray = util
.dateFormatter(time[1], "date")
.split("-");
const startTimeArray = util.dateFormatter(time[0], "date").split("-");
const endTimeArray = util.dateFormatter(time[1], "date").split("-");
this.formData.startTime =
startTimeArray[0] +
@ -850,4 +875,7 @@ export default {
background: rgba(254, 98, 82, 1);
}
}
::v-deep .el-dialog {
padding: 10px;
}
</style>

7
src/views/modules/communityParty/regionalParty/activitysDetail.vue

@ -3,6 +3,11 @@
<div class="dialog-h-content scroll-h">
<div v-if="initLoading" class="m-row">
<div class="m-info">
<div class="info-prop">
<span class="info-title-2">封面</span>
<img v-if="formData.coverUrl" :src="formData.coverUrl" alt="" width="146px">
<span v-else></span>
</div>
<div class="info-prop">
<span class="info-title-2">所属网格</span>
<span>{{ formData.gridName }}</span>
@ -29,7 +34,7 @@
</div>
<div class="info-prop">
<span class="info-title-2">活动时间</span>
<span>{{ formData.activityTime }}</span>
<span>{{ formData.activityTime + " ~ " + formData.activityEndTime || "--"}}</span>
</div>
<div class="info-prop">
<span class="info-title-2">活动地址</span>

623
src/views/modules/communityParty/regionalParty/activitysForm copy.vue

@ -0,0 +1,623 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
:inline="true"
:model="formData"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="所属网格"
label-width="150px"
prop="gridId">
<el-select class="item_width_1"
v-model="formData.gridId"
placeholder="请选择"
clearable>
<el-option v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="服务事项"
label-width="150px"
prop="serviceMatterList">
<el-checkbox-group class="item_width_1"
style="display:flex;flex-wrap:wrap"
v-model="formData.serviceMatterList">
<el-checkbox v-for="item in serviceList"
:key="item.value"
:label="item.value">{{item.label}}</el-checkbox>
</el-checkbox-group>
<!-- <el-select class="item_width_1"
v-model="formData.serviceMatter"
placeholder="请选择"
clearable>
<el-option v-for="item in serviceList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> -->
</el-form-item>
<el-form-item label="单位名称"
prop="unitIdList"
label-width="150px"
style="display: block">
<el-checkbox-group class="item_width_1"
style="display:flex;flex-wrap:wrap"
v-model="formData.unitIdList">
<el-checkbox v-for="item in unitList"
:key="item.value"
:label="item.value">{{item.label}}</el-checkbox>
</el-checkbox-group>
<!-- <el-select class="item_width_1"
v-model="formData.unitId"
placeholder="请选择"
clearable>
<el-option v-for="item in unitList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> -->
</el-form-item>
<el-form-item label="活动标题"
prop="title"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入活动标题"
v-model="formData.title">
</el-input>
</el-form-item>
<el-form-item label="活动目标"
prop="target"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="100"
show-word-limit
:rows="3"
placeholder="请输入活动目标,不超过100字"
v-model="formData.target"></el-input>
</el-form-item>
<el-form-item label="活动内容"
prop="target"
label-width="150px"
style="display: block">
<div class="item_width_1">
<Tinymce class="tinymce_view "
v-if="formType!='detail'"
v-model="formData.content"
:height="250"
placeholder="在这里输入文字" />
<p v-else
class="text_p"
v-html="formData.content"></p>
</div>
</el-form-item>
<el-form-item label="服务人数"
style="display: block"
prop="peopleCount"
label-width="150px">
<el-input-number class="item_width_4"
v-model="formData.peopleCount"
:min="0"
:max="9999"
label="服务人数"></el-input-number>
</el-form-item>
<el-form-item label="活动时间"
style="display: block"
prop="activityTime"
label-width="150px">
<el-date-picker v-model="formData.activityTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择时间">
</el-date-picker>
</el-form-item>
<el-form-item label="地图位置"
prop="longitude"
label-width="150px"
style="display: block">
<div style="width: 500px">
<el-select v-model="searchValue"
filterable
style="width: 500px"
remote
:reserve-keyword="true"
placeholder="请输入关键词"
:remote-method="remoteMethod"
:loading="loading">
<el-option v-for="(item,index) in searchOptions"
@click.native="handleClickKey(index)"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div id="app_activity"
class="div_map"></div>
</div>
</el-form-item>
<el-form-item label="详细地址"
prop="address"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
v-model="formData.address">
</el-input>
</el-form-item>
<el-form-item label="活动成果"
prop="result"
label-width="150px"
style="display: block">
<div class="item_width_1">
<Tinymce class="tinymce_view "
v-if="formType!='detail'"
v-model="formData.result"
:height="250"
placeholder="在这里输入文字" />
<p v-else
class="text_p"
v-html="formData.result"></p>
</div>
</el-form-item>
</el-form>
</div>
<div class="div_btn">
<el-button size="small"
@click="handleCancle"> </el-button>
<el-button size="small"
v-if="formType != 'detail'"
type="primary"
:disabled="btnDisable"
@click="handleComfirm"> </el-button>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
import { requestPost } from '@/js/dai/request'
import Tinymce from '@c/tinymce2/index.vue'
import daiMap from "@/utils/dai-map";
var map
var search
var markers
var infoWindowList
var geocoder //
let loading //
export default {
data () {
let initFormData = () => {
let _form = {
gridId: '',
serviceMatter: '',//
serviceMatterList: [],
unitId: '',//ID
unitIdList: [],
title: '',//
target: '',//
content: '',//
activityTime: '',//
peopleCount: 0,//
result: '', //
address: '', //
longitude: this.$store.state.user.longitude, //
latitude: this.$store.state.user.latitude//
}
return _form
}
return {
formType: 'add', // addeditdetail
searchOptions: [],
searchValue: '',
resultList: [],
loading: false,
btnDisable: false,
keyWords: '',
activityId: '',
formData: initFormData(),
serviceList: [],
// gridList: [],
agencyId: ''
}
},
components: { Tinymce },
mounted () {
// this.initMap()
},
methods: {
async initForm (type, activityId) {
this.startLoading()
this.$refs.ref_form.resetFields();
//
await this.loadService()
let { latitude, longitude } = this.$store.state.user;
this.formType = type
if (activityId) {
this.activityId = activityId
this.formData.id = activityId
await this.loadFormData()
} else {
this.formData.latitude = latitude
this.formData.longitude = longitude
}
this.$nextTick(() => {
if (!map) {
this.initMap(this.formData.latitude, this.formData.longitude);
} else {
map.setCenter(this.formData.latitude, this.formData.longitude);
map.setMarker(this.formData.latitude, this.formData.longitude);
}
})
this.endLoading()
},
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
let params = {
agencyId: this.agencyId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.gridList = data
} else {
this.$message.error(msg)
}
},
//
async loadService () {
const url = "/heart/serviceitem/dict-list"
let params = {
type: 'usable'
// parentCategoryCode: '1010'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.serviceList = data
} else {
this.$message.error(msg)
}
},
//
async loadFormData () {
const url = '/heart/icpartyactivity/detail'
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/detail'
let params = {
id: this.activityId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.formData = data
console.log(this.formData.content)
let style_img = "style='width:50px;height:40px;' "
if (this.formData.content) {
// this.formData.content = this.formData.content.replace(/<img/g, "<img style='width:200px;height:120px;'")
// let array=this.formData.content.split('<img')
}
console.log(this.formData.content)
} else {
this.$message.error(msg)
}
},
async handleComfirm () {
this.btnDisable = true
setTimeout(() => {
this.btnDisable = false
}, 10000)
this.$refs['ref_form'].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
this.btnDisable = false
} else {
this.addActivity()
}
})
},
async addActivity () {
let url = '/heart/icpartyactivity/save'
// let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/save"
const { data, code, msg } = await requestPost(url, this.formData)
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
this.resetData()
this.$emit('dialogOk')
this.btnDisable = false
} else {
this.btnDisable = false
this.$message.error(msg)
}
},
handleCancle () {
this.resetData()
this.$emit('dialogCancle')
},
// init
initMap (latitude, longitude) {
map = new daiMap(
document.getElementById("app_activity"),
{ latitude, longitude },
{
zoom: 16.2, //
pitch: 43.5, //
rotation: 45, //
}
);
//
map.on("dragend", (e) => {
this.handleMoveCenter(e);
});
map.setCenter(latitude, longitude);
map.setMarker(latitude, longitude);
},
async handleMoveCenter () {
//
const { lat, lng } = map.getCenter();
this.formData.latitude = lat;
this.formData.longitude = lng;
map.setMarker(lat, lng);
let { msg, data } = await map.getAddress(lat, lng);
if (msg == "success") {
this.formData.address = data.address
this.searchValue = data.address
this.searchOptions = []
}
},
async remoteMethod (query) {
if (query !== '') {
this.loading = true;
const { msg, data } = await map.searchNearby(query);
this.loading = false;
this.resultList = []
if (msg == "success" && data.resultList && data.resultList.length > 0) {
if (data.resultList && data.resultList.length > 0) {
this.resultList = data.resultList
this.searchOptions = this.resultList.map(item => {
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` };
});
}
} else {
this.searchOptions = [
{
value: '0',
label: '未检索到结果'
}
]
}
} else {
this.searchOptions = [];
}
},
handleClickKey (index) {
let selPosition = this.resultList[index]
let lonlat = selPosition.lonlat.split(" ")
map.setCenter(lonlat[1], lonlat[0]);
map.setMarker(lonlat[1], lonlat[0]);
this.formData.latitude = lonlat[1];
this.formData.longitude = lonlat[0];
this.formData.address = selPosition.address + selPosition.name
},
resetData () {
this.searchValue = ''
this.searchOptions = []
this.resultList = []
this.activityId = ''
this.keyWords = ''
this.formData = {
gridId: '',
serviceMatter: '',//
serviceMatterList: [],
unitId: '',//ID
unitIdList: [],
title: '',//
target: '',//
content: '',//
activityTime: '',//
peopleCount: 0,//
result: '', //
address: '', //
longitude: this.$store.state.user.longitude, //
latitude: this.$store.state.user.latitude//
}
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
computed: {
dataRule () {
return {
serviceMatterList: [
{ required: true, message: '服务事项不能为空', trigger: 'blur' }
],
unitIdList: [
{ required: true, message: '单位名称不能为空', trigger: 'blur' },
],
title: [
{ required: true, message: '活动标题不能为空', trigger: 'blur' }
],
target: [
{ required: true, message: '活动目标不能为空', trigger: 'blur' }
],
content: [
{ required: true, message: '活动内容不能为空', trigger: 'blur' }
],
activityTime: [
{ required: true, message: '活动时间不能为空', trigger: 'blur' }
],
result: [
{ required: true, message: '活动结果不能为空', trigger: 'blur' }
],
address: [
{ required: true, message: '详细地址不能为空', trigger: 'blur' }
],
longitude: [
{ required: true, message: '坐标不能为空', trigger: 'blur' }
]
}
},
},
props: {
unitList: {
type: Array,
default: []
},
gridList: {
type: Array,
default: []
},
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManageForm.scss";
</style>
<style lang="scss" scoped>
.item_width_1 {
width: 560px;
/deep/.tox .tox-dialog {
z-index: 20000;
}
}
.tinymce_view {
::v-deep .tox .tox-dialog {
z-index: 2000000000;
}
}
.div_map {
position: relative;
}
.div_searchmap {
z-index: 5000;
position: absolute;
top: 5px;
left: 5px;
}
.tinymce_view {
height: 400px;
overflow: auto;
}
.text_p {
margin: 0;
padding: 0 10px;
border: 1px solid #d9d9d9;
border-radius: 5px;
> p {
margin: 0;
}
}
</style>

622
src/views/modules/communityParty/regionalParty/activitysForm.vue

@ -1,41 +1,69 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
<el-form
ref="ref_form"
:inline="true"
:model="formData"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="所属网格"
class="form"
>
<el-form-item label="封面"
prop="coverUrl"
label-width="150px"
prop="gridId">
<el-select class="item_width_1"
style="display: block">
<el-upload :headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]"
ref="uploadUrl"
:action="uploadUlr"
list-type="picture-card"
:on-exceed="exceedUrl"
:before-upload="beforeAvatarUpload"
:on-change="handleEditChange"
:on-remove="removeUrl"
:file-list="replayImgList"
:on-success="handleSuccess"
:limit="1">
<span class="font-14">选择图片</span>
</el-upload>
</el-form-item>
<el-form-item label="所属网格" label-width="150px" prop="gridId">
<el-select
class="item_width_1"
v-model="formData.gridId"
placeholder="请选择"
clearable>
<el-option v-for="item in gridList"
clearable
>
<el-option
v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="服务事项"
<el-form-item
label="服务事项"
label-width="150px"
prop="serviceMatterList">
<el-checkbox-group class="item_width_1"
style="display:flex;flex-wrap:wrap"
v-model="formData.serviceMatterList">
<el-checkbox v-for="item in serviceList"
prop="serviceMatterList"
>
<el-select
class="item_width_1"
style="display: flex; flex-wrap: wrap"
v-model="formData.serviceMatterList"
multiple
>
<el-option
v-for="item in serviceList"
:key="item.value"
:label="item.value">{{item.label}}</el-checkbox>
</el-checkbox-group>
:label="item.label"
:value="item.value"
>{{ item.label }}</el-option
>
</el-select>
<!-- <el-select class="item_width_1"
v-model="formData.serviceMatter"
@ -47,21 +75,28 @@
:value="item.value">
</el-option>
</el-select> -->
</el-form-item>
<el-form-item label="单位名称"
<el-form-item
label="单位名称"
prop="unitIdList"
label-width="150px"
style="display: block">
<el-checkbox-group class="item_width_1"
style="display:flex;flex-wrap:wrap"
v-model="formData.unitIdList">
<el-checkbox v-for="item in unitList"
style="display: block"
>
<el-select
class="item_width_1"
style="display: flex; flex-wrap: wrap"
v-model="formData.unitIdList"
multiple
>
<el-option
v-for="item in unitList"
:key="item.value"
:label="item.value">{{item.label}}</el-checkbox>
</el-checkbox-group>
:label="item.label"
:value="item.value"
>{{ item.label }}</el-option
>
</el-select>
<!-- <el-select class="item_width_1"
v-model="formData.unitId"
placeholder="请选择"
@ -74,215 +109,255 @@
</el-select> -->
</el-form-item>
<el-form-item label="活动标题"
<el-form-item
label="活动标题"
prop="title"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入活动标题"
v-model="formData.title">
v-model="formData.title"
>
</el-input>
</el-form-item>
<el-form-item label="活动目标"
<el-form-item
label="活动目标"
prop="target"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
type="textarea"
maxlength="100"
show-word-limit
:rows="3"
placeholder="请输入活动目标,不超过100字"
v-model="formData.target"></el-input>
v-model="formData.target"
></el-input>
</el-form-item>
<el-form-item label="活动内容"
<el-form-item
label="活动内容"
prop="target"
label-width="150px"
style="display: block">
style="display: block"
>
<div class="item_width_1">
<Tinymce class="tinymce_view "
v-if="formType!='detail'"
<Tinymce
class="tinymce_view"
v-if="formType != 'detail'"
v-model="formData.content"
:height="250"
placeholder="在这里输入文字" />
placeholder="在这里输入文字"
/>
<p v-else
class="text_p"
v-html="formData.content"></p>
<p v-else class="text_p" v-html="formData.content"></p>
</div>
</el-form-item>
<el-form-item label="服务人数"
<el-form-item
label="服务人数"
style="display: block"
prop="peopleCount"
label-width="150px">
<el-input-number class="item_width_4"
label-width="150px"
>
<el-input-number
class="item_width_4"
v-model="formData.peopleCount"
:min="0"
:max="9999"
label="服务人数"></el-input-number>
label="服务人数"
></el-input-number>
</el-form-item>
<el-form-item label="活动时间"
<el-form-item
label="活动时间"
style="display: block"
prop="activityTime"
label-width="150px">
<el-date-picker v-model="formData.activityTime"
prop="activityEndTime"
label-width="150px"
>
<el-date-picker
v-model="formData.activityTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择时间"
>
</el-date-picker>
<el-date-picker
v-model="formData.activityEndTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择时间">
placeholder="选择时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="地图位置"
<el-form-item
label="地图位置"
prop="longitude"
label-width="150px"
style="display: block">
style="display: block"
>
<div style="width: 500px">
<el-select v-model="searchValue"
<el-select
v-model="searchValue"
filterable
style="width: 500px"
remote
:reserve-keyword="true"
placeholder="请输入关键词"
:remote-method="remoteMethod"
:loading="loading">
<el-option v-for="(item,index) in searchOptions"
:loading="loading"
>
<el-option
v-for="(item, index) in searchOptions"
@click.native="handleClickKey(index)"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
<div id="app_activity"
class="div_map"></div>
<div id="app_activity" class="div_map"></div>
</div>
</el-form-item>
<el-form-item label="详细地址"
<el-form-item
label="详细地址"
prop="address"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
v-model="formData.address">
</el-input>
style="display: block"
>
<el-input class="item_width_1" v-model="formData.address"> </el-input>
</el-form-item>
<el-form-item label="活动成果"
<el-form-item
label="活动成果"
prop="result"
label-width="150px"
style="display: block">
style="display: block"
>
<div class="item_width_1">
<Tinymce class="tinymce_view "
v-if="formType!='detail'"
<Tinymce
class="tinymce_view"
v-if="formType != 'detail'"
v-model="formData.result"
:height="250"
placeholder="在这里输入文字" />
placeholder="在这里输入文字"
/>
<p v-else
class="text_p"
v-html="formData.result"></p>
<p v-else class="text_p" v-html="formData.result"></p>
</div>
</el-form-item>
</el-form>
</div>
<div class="div_btn">
<el-button size="small"
@click="handleCancle"> </el-button>
<el-button size="small"
<el-button size="small" @click="handleCancle"> </el-button>
<el-button
size="small"
v-if="formType != 'detail'"
type="primary"
:disabled="btnDisable"
@click="handleComfirm"> </el-button>
@click="handleComfirm"
> </el-button
>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
import { requestPost } from '@/js/dai/request'
import Tinymce from '@c/tinymce2/index.vue'
import { mapGetters } from "vuex";
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import Tinymce from "@c/tinymce2/index.vue";
import daiMap from "@/utils/dai-map";
var map
var search
var markers
var infoWindowList
var geocoder //
var map;
var search;
var markers;
var infoWindowList;
var geocoder; //
let loading //
let loading; //
export default {
data () {
data() {
let initFormData = () => {
let _form = {
gridId: '',
serviceMatter: '',//
gridId: "",
serviceMatter: "", //
serviceMatterList: [],
unitId: '',//ID
unitId: "", //ID
unitIdList: [],
title: '',//
target: '',//
content: '',//
activityTime: '',//
peopleCount: 0,//
result: '', //
address: '', //
title: "", //
target: "", //
content: "", //
activityTime: "", //
peopleCount: 0, //
result: "", //
address: "", //
activityEndTime :"",//
longitude: this.$store.state.user.longitude, //
latitude: this.$store.state.user.latitude//
}
latitude: this.$store.state.user.latitude, //
coverUrl:""
};
return _form
}
return _form;
};
return {
formType: 'add', // addeditdetail
formType: "add", // addeditdetail
searchOptions: [],
searchValue: '',
searchValue: "",
resultList: [],
loading: false,
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
customerId:'',
btnDisable: false,
keyWords: '',
activityId: '',
keyWords: "",
activityId: "",
formData: initFormData(),
serviceList: [],
// gridList: [],
agencyId: ''
}
agencyId: "",
hideUploadBtn:false,
replayImgList: [
// {
// id: '1',
// url: 'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/20220629/db05fed5cc56417299364ab8362ac9a0.png'
// }
],
};
},
components: { Tinymce },
mounted () {
mounted() {
// this.initMap()
},
created(){
this.customerId = localStorage.getItem('customerId')
},
methods: {
async initForm (type, activityId) {
this.startLoading()
async initForm(type, activityId) {
this.startLoading();
this.$refs.ref_form.resetFields();
//
await this.loadService()
await this.loadService();
let { latitude, longitude } = this.$store.state.user;
this.formType = type
this.formType = type;
if (activityId) {
this.activityId = activityId
this.formData.id = activityId
await this.loadFormData()
this.activityId = activityId;
this.formData.id = activityId;
await this.loadFormData();
} else {
this.formData.latitude = latitude
this.formData.longitude = longitude
this.formData.latitude = latitude;
this.formData.longitude = longitude;
}
this.$nextTick(() => {
if (!map) {
@ -291,123 +366,115 @@ export default {
map.setCenter(this.formData.latitude, this.formData.longitude);
map.setMarker(this.formData.latitude, this.formData.longitude);
}
})
this.endLoading()
});
this.endLoading();
},
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
async loadGrid() {
const url = "/gov/org/customergrid/gridoption";
let params = {
agencyId: this.agencyId
}
agencyId: this.agencyId,
};
const { data, code, msg } = await requestPost(url, params)
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.gridList = data
this.gridList = data;
} else {
this.$message.error(msg)
this.$message.error(msg);
}
},
//
async loadService () {
const url = "/heart/serviceitem/dict-list"
async loadService() {
const url = "/heart/serviceitem/dict-list";
let params = {
type: 'usable'
type: "usable",
// parentCategoryCode: '1010'
}
};
const { data, code, msg } = await requestPost(url, params)
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.serviceList = data
this.serviceList = data;
} else {
this.$message.error(msg)
this.$message.error(msg);
}
},
//
async loadFormData () {
const url = '/heart/icpartyactivity/detail'
async loadFormData() {
const url = "/heart/icpartyactivity/detail";
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/detail'
let params = {
id: this.activityId
}
id: this.activityId,
};
const { data, code, msg } = await requestPost(url, params)
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.formData = data
console.log(this.formData.content)
let style_img = "style='width:50px;height:40px;' "
this.formData = data;
if(data.coverUrl){
this.hideUploadBtn = true
this.replayImgList.push({url:data.coverUrl,id:1})
}else{
this.hideUploadBtn = false
}
let style_img = "style='width:50px;height:40px;' ";
if (this.formData.content) {
// this.formData.content = this.formData.content.replace(/<img/g, "<img style='width:200px;height:120px;'")
// let array=this.formData.content.split('<img')
}
console.log(this.formData.content)
console.log(this.formData.content);
} else {
this.$message.error(msg)
this.$message.error(msg);
}
},
async handleComfirm () {
this.btnDisable = true
async handleComfirm() {
this.btnDisable = true;
setTimeout(() => {
this.btnDisable = false
}, 10000)
this.$refs['ref_form'].validate((valid, messageObj) => {
this.btnDisable = false;
}, 10000);
this.$refs["ref_form"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
this.btnDisable = false
app.util.validateRule(messageObj);
this.btnDisable = false;
} else {
this.addActivity()
this.addActivity();
}
})
});
},
async addActivity () {
let url = '/heart/icpartyactivity/save'
async addActivity() {
let url = "/heart/icpartyactivity/save";
// let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/save"
const { data, code, msg } = await requestPost(url, this.formData)
const { data, code, msg } = await requestPost(url, this.formData);
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
this.resetData()
this.$emit('dialogOk')
this.btnDisable = false
type: "success",
message: "操作成功",
});
this.resetData();
this.$emit("dialogOk");
this.btnDisable = false;
} else {
this.btnDisable = false
this.$message.error(msg)
this.btnDisable = false;
this.$message.error(msg);
}
},
handleCancle () {
this.resetData()
this.$emit('dialogCancle')
handleCancle() {
this.resetData();
this.$emit("dialogCancle");
},
// init
initMap (latitude, longitude) {
initMap(latitude, longitude) {
map = new daiMap(
document.getElementById("app_activity"),
{ latitude, longitude },
@ -425,11 +492,8 @@ export default {
map.setCenter(latitude, longitude);
map.setMarker(latitude, longitude);
},
async handleMoveCenter () {
async handleMoveCenter() {
//
const { lat, lng } = map.getCenter();
this.formData.latitude = lat;
@ -438,143 +502,164 @@ export default {
let { msg, data } = await map.getAddress(lat, lng);
if (msg == "success") {
this.formData.address = data.address
this.searchValue = data.address
this.searchOptions = []
this.formData.address = data.address;
this.searchValue = data.address;
this.searchOptions = [];
}
},
async remoteMethod (query) {
if (query !== '') {
async remoteMethod(query) {
if (query !== "") {
this.loading = true;
const { msg, data } = await map.searchNearby(query);
this.loading = false;
this.resultList = []
this.resultList = [];
if (msg == "success" && data.resultList && data.resultList.length > 0) {
if (data.resultList && data.resultList.length > 0) {
this.resultList = data.resultList
this.searchOptions = this.resultList.map(item => {
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` };
this.resultList = data.resultList;
this.searchOptions = this.resultList.map((item) => {
return {
value: `${item.hotPointID}`,
label: `${item.address + item.name}`,
};
});
}
} else {
this.searchOptions = [
{
value: '0',
label: '未检索到结果'
}
]
value: "0",
label: "未检索到结果",
},
];
}
} else {
this.searchOptions = [];
}
},
exceedUrl () {
this.$message.warning("只能上传1张封面图");
},
beforeAvatarUpload (file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 10;
handleClickKey (index) {
let selPosition = this.resultList[index]
let lonlat = selPosition.lonlat.split(" ")
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 10MB!");
}
return isLt2M;
},
removeUrl (file, fileList) {
this.formData.coverUrl = "";
this.hideUploadBtn = fileList.length >= 1;
},
handleSuccess (response, file, fileList) {
console.log( fileList.length >= 1);
this.hideUploadBtn = fileList.length >= 1
this.formData.coverUrl = response.data.url;
},
handleEditChange (file, fileList) {
this.hideUploadBtn = fileList.length >= 1;
},
handleClickKey(index) {
let selPosition = this.resultList[index];
let lonlat = selPosition.lonlat.split(" ");
map.setCenter(lonlat[1], lonlat[0]);
map.setMarker(lonlat[1], lonlat[0]);
this.formData.latitude = lonlat[1];
this.formData.longitude = lonlat[0];
this.formData.address = selPosition.address + selPosition.name
this.formData.address = selPosition.address + selPosition.name;
},
resetData () {
this.searchValue = ''
this.searchOptions = []
this.resultList = []
this.activityId = ''
this.keyWords = ''
resetData() {
this.searchValue = "";
this.searchOptions = [];
this.resultList = [];
this.activityId = "";
this.keyWords = "";
this.formData = {
gridId: '',
serviceMatter: '',//
coverUrl:"",
gridId: "",
serviceMatter: "", //
serviceMatterList: [],
unitId: '',//ID
unitId: "", //ID
unitIdList: [],
title: '',//
target: '',//
content: '',//
activityTime: '',//
peopleCount: 0,//
result: '', //
address: '', //
title: "", //
target: "", //
content: "", //
activityTime: "", //
peopleCount: 0, //
result: "", //
address: "", //
longitude: this.$store.state.user.longitude, //
latitude: this.$store.state.user.latitude//
}
latitude: this.$store.state.user.latitude, //
};
},
//
startLoading () {
startLoading() {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading () {
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close()
}
loading.close();
}
},
},
computed: {
dataRule () {
dataRule() {
return {
serviceMatterList: [
{ required: true, message: '服务事项不能为空', trigger: 'blur' }
{ required: true, message: "服务事项不能为空", trigger: "blur" },
],
coverUrl: [
{ required: true, message: "封面不能为空", trigger: "blur" },
],
unitIdList: [
{ required: true, message: '单位名称不能为空', trigger: 'blur' },
{ required: true, message: "单位名称不能为空", trigger: "blur" },
],
title: [
{ required: true, message: '活动标题不能为空', trigger: 'blur' }
{ required: true, message: "活动标题不能为空", trigger: "blur" },
],
target: [
{ required: true, message: '活动目标不能为空', trigger: 'blur' }
{ required: true, message: "活动目标不能为空", trigger: "blur" },
],
content: [
{ required: true, message: '活动内容不能为空', trigger: 'blur' }
{ required: true, message: "活动内容不能为空", trigger: "blur" },
],
activityTime: [
{ required: true, message: '活动时间不能为空', trigger: 'blur' }
activityEndTime: [
{ required: true, message: "活动时间不能为空", trigger: "blur" },
],
result: [
{ required: true, message: '活动结果不能为空', trigger: 'blur' }
{ required: true, message: "活动结果不能为空", trigger: "blur" },
],
address: [
{ required: true, message: '详细地址不能为空', trigger: 'blur' }
{ required: true, message: "详细地址不能为空", trigger: "blur" },
],
longitude: [
{ required: true, message: '坐标不能为空', trigger: 'blur' }
]
}
{ required: true, message: "坐标不能为空", trigger: "blur" },
],
};
},
},
props: {
unitList: {
type: Array,
default: []
default: [],
},
gridList: {
type: Array,
default: []
default: [],
},
}
}
},
};
</script>
@ -618,5 +703,10 @@ export default {
margin: 0;
}
}
.hide {
::v-deep .el-upload--picture-card {
display: none !important;
}
}
</style>

123
src/views/modules/communityParty/regionalParty/activitysResiListTable.vue

@ -0,0 +1,123 @@
<template>
<div class="">
<el-card>
<el-table
border
:data="this.tableData"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%"
>
<el-table-column
prop="userName"
align="center"
header-align="center"
label="姓名"
width="180"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"
header-align="center"
label="手机号"
width="180"
>
</el-table-column>
<el-table-column
prop="gridName"
align="center"
header-align="center"
label="报名网格"
>
</el-table-column>
<el-table-column
prop="signUpTime"
align="center"
header-align="center"
label="报名时间"
>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[10, 20, 50]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total"
>
</el-pagination>
</el-card>
<div class="div_btn">
<el-button size="small" @click="handleCancle"> </el-button>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
export default {
data() {
return {
tableData: [],
pageNo: 1,
pageSize: 20,
activityId: "",
total: 0,
};
},
created() {
},
methods: {
async getTable() {
const url = "/heart/icpartyactivity/querySignUpRecord";
let params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
activityId: this.activitysId,
};
const { data, code, msg } = await requestPost(url, params);
if (code == 0) {
console.log(data);
this.tableData = data.list;
this.total = data.total;
} else if (code >= 8000) {
this.$message.error(msg);
}
},
handleSizeChange(val) {
this.pageSize = val;
this.pageNo = 1;
this.getTable();
},
handleCurrentChange(val) {
this.pageNo = val;
this.getTable();
},
handleCancle(){
this.$emit('resiListCancle')
}
},
props: {
activitysId: {
type: String,
default: "",
},
},
components: {},
computed: {},
watch: {},
};
</script>
<style lang="scss">
.div_btn {
margin-top: 16px;
display: flex;
align-items: center;
justify-content: center;
}
</style>
Loading…
Cancel
Save