Browse Source

自组织

feature
tianqian 3 years ago
parent
commit
8b9d8ede2a
  1. 105
      src/views/modules/shequzhili/tuceng/yingji/zizuzhi/addForm.vue
  2. 55
      src/views/modules/shequzhili/tuceng/yingji/zizuzhi/index.vue
  3. 602
      src/views/modules/shequzhili/tuceng/yingji/zizuzhi/scoreRecord.vue

105
src/views/modules/shequzhili/tuceng/yingji/zizuzhi/addForm.vue

@ -29,6 +29,7 @@
class="u-item-width-normal"
size="small"
clearable
type="number"
placeholder="请输入"
></el-input>
</el-form-item>
@ -36,31 +37,34 @@
<el-col :span="24">
<el-form-item label="组织成员" prop="organizationPersonnel">
<div class="m-staffs">
<div class="item" :key="'staff' + index" v-for="(item, index) in formData.organizationPersonnel">
<el-autocomplete
class="item_width_1"
v-model="item.personName"
:fetch-suggestions="querySearchVolunteer"
placeholder="成员姓名"
:maxlength="50"
show-word-limit
@select="vItem => handleSelectVolunteer(index, vItem)"
:disabled="item.icResiUserId != ''"
></el-autocomplete>
<el-input
style="margin-left: 10px"
class="item_width_1"
show-word-limit
placeholder="联系电话"
:disabled="item.icResiUserId != ''"
v-model="item.personPhone"
/>
<el-button style="margin-left: 10px" size="small" @click="handleDelStaff(index)">删除</el-button>
<div style="width:500px;" :key="'staff' + index" v-for="(item, index) in formData.organizationPersonnel">
<el-row :gutter="10" style="margin-bottom: 10px;">
<el-col :span="8">
<el-autocomplete
class="item_width_1"
v-model="item.personName"
:fetch-suggestions="querySearchVolunteer"
placeholder="成员姓名"
:maxlength="50"
show-word-limit
@select="vItem => handleSelectVolunteer(index, vItem)"
:disabled="item.icResiUserId != ''"
></el-autocomplete>
</el-col>
<el-col :span="8">
<el-input
class="item_width_1"
show-word-limit
placeholder="联系电话"
:disabled="item.icResiUserId != ''"
v-model="item.personPhone"
/>
</el-col>
<el-col :span="8"><el-button type="danger" size="small" @click="handleDelStaff(index)">删除</el-button></el-col>
</el-row>
</div>
<div class="item-add"><el-button size="small" @click="handleAddStaff">添加</el-button></div>
<el-button size="small" @click="handleAddStaff" type="primary" >添加</el-button>
</div>
</el-form-item>
</el-col>
@ -81,19 +85,11 @@
</el-col>
<el-col :span="6">
<el-form-item label="创建时间" prop="organizationCreatedTime">
<el-date-picker
v-model="formData.organizationCreatedTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
></el-date-picker>
<el-date-picker v-model="formData.organizationCreatedTime" type="date" style="width: 150px;" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="场所地址" prop="address" style="display: block">
<el-col :span="24">
<el-form-item label="详细地址" prop="address">
<el-select
v-model="formData.address"
filterable
@ -122,7 +118,7 @@
show-word-limit
:rows="3"
v-model="formData.remark"
class="u-item-width-normal"
class="textarea"
size="small"
clearable
placeholder="请输入"
@ -289,24 +285,24 @@ export default {
},
methods: {
querySearchVolunteer (queryString, cb) {
const { volunteerList } = this;
var results = queryString
? volunteerList.filter((item) => {
return item.value.indexOf(queryString) !== -1;
})
: volunteerList;
// callback
cb(results);
querySearchVolunteer(queryString, cb) {
const { volunteerList } = this;
var results = queryString
? volunteerList.filter(item => {
return item.value.indexOf(queryString) !== -1;
})
: volunteerList;
// callback
cb(results);
},
handleSelectVolunteer (index, vItem) {
this.formData.organizationPersonnel[index] = {
personName: vItem.name,
personPhone: vItem.mobile,
icResiUserId: vItem.icResiUserId,
};
handleSelectVolunteer(index, vItem) {
this.formData.organizationPersonnel[index] = {
personName: vItem.name,
personPhone: vItem.mobile,
icResiUserId: vItem.icResiUserId
};
},
async getVolunteerList() {
const url = '/epmetuser/icresiuser/volunteer-list';
const params = {};
@ -426,8 +422,8 @@ export default {
url = '/actual/base/iccommunityselforganization/editcommunityselforganization';
// this.dataForm.orgId = this.orgId;
}
params = { ...this.formData };
console.log("this.",this.formData)
let params = { ...this.formData };
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success('添加成功');
@ -549,4 +545,5 @@ export default {
@import '@/assets/scss/modules/management/form-main.scss';
@import '@/assets/scss/modules/management/form.scss';
@import '@/assets/scss/modules/visual/a_customize.scss';
.textarea{width: 500px;}
</style>

55
src/views/modules/shequzhili/tuceng/yingji/zizuzhi/index.vue

@ -68,26 +68,20 @@
<el-table-column prop="address" align="center" :show-overflow-tooltip="true" label="地址"></el-table-column>
<el-table-column prop="remark" align="center" :show-overflow-tooltip="true" label="备注"></el-table-column>
<el-table-column prop="organizationCreatedTime" align="center" :show-overflow-tooltip="true" label="创建时间"></el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200">
<el-table-column fixed="right" label="操作" align="center" width="300">
<template slot-scope="scope">
<el-button @click="handleAdd(scope.row, 'view')" type="text" size="small">查看</el-button>
<el-button type="text" class="div-table-button--detail" size="small" @click="handleScore(scope.row)">积分记录</el-button>
<el-button @click="handleSync(scope.row)" v-if="scope.row.syncType === 'not_sync'" type="text" size="small" class="div-table-button--edit">
同步
</el-button>
<el-button @click="handleNoSync(scope.row)" v-if="scope.row.syncType === 'sync'" type="text" size="small" class="div-table-button--edit">
取消同步
</el-button>
<el-button @click="handleAdd(scope.row, 'view')" size="small" type="text">查看</el-button>
<el-button size="small" @click="handleScore(scope.row)" type="text">积分记录</el-button>
<el-button @click="handleSync(scope.row)" v-if="scope.row.syncType === 'not_sync'" size="small" type="text">同步</el-button>
<el-button @click="handleNoSync(scope.row)" v-if="scope.row.syncType === 'sync'" size="small" type="text">取消同步</el-button>
<el-button
v-if="scope.row.latitude && agencyId == scope.row.agencyId"
style="margin-right: 10px"
@click="handleAdd(scope.row, 'edit')"
size="small"
type="text"
v-if="scope.row.latitude && agencyId == scope.row.agencyId"
>
编辑
修改
</el-button>
<el-button
v-if="!scope.row.latitude && agencyId == scope.row.agencyId"
@ -130,16 +124,8 @@
/>
</div>
<!-- 积分记录 -->
<el-dialog :visible.sync="scoreDiaShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="scoreDiaTitle"
width="70%"
top="5vh"
@closed="diaClose">
<score-record ref="ref_score"
:serviceType="'community_org'"></score-record>
</el-dialog>
<score-record :detailId="orgId" v-if="scoreDiaShow" @diaClose="diaClose" :scoreDiaShow="scoreDiaShow" :serviceType="'community_org'"></score-record>
</div>
</template>
@ -149,11 +135,11 @@ import nextTick from 'dai-js/tools/nextTick';
import { mapGetters } from 'vuex';
import addForm from './addForm.vue';
import axios from 'axios';
import scoreRecord from "./scoreRecord.vue";
import scoreRecord from './scoreRecord.vue';
export default {
data() {
return {
scoreDiaShow:false,
scoreDiaShow: false,
dialogVisible: false,
importLoading: false,
disabled: false,
@ -176,10 +162,11 @@ export default {
detailId: '',
detailData: {},
multipleSelection: [],
rowObj: {}
rowObj: {},
orgId: ''
};
},
components: { addForm,scoreRecord },
components: { addForm, scoreRecord },
created() {},
computed: {
maxTableHeight() {
@ -197,15 +184,13 @@ export default {
},
methods: {
//
handleScore (row) {
this.scoreDiaShow = true;
this.$nextTick(() => {
this.$refs.ref_score.initForm(row.orgId);
});
handleScore(row) {
this.orgId = row.orgId;
this.scoreDiaShow = true;
},
diaClose () {
this.scoreDiaShow = false;
diaClose() {
this.scoreDiaShow = false;
},
handleSelectionChange(val) {
this.multipleSelection = [];

602
src/views/modules/shequzhili/tuceng/yingji/zizuzhi/scoreRecord.vue

@ -1,351 +1,303 @@
<template>
<div class="g-main">
<el-form :inline="true"
:model="formData"
ref="ref_searchform"
:label-width="'100px'">
<el-form-item label="查询时间"
prop="startTime">
<el-date-picker v-model="timeRange"
type="daterange"
:clearable="false"
:picker-options="pickerOptions"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd"
@change="handleTimeChange">
</el-date-picker>
</el-form-item>
<div>
<el-form-item label="总计:"
prop="startTime">
<span>{{totalPoint}}</span>
</el-form-item>
</div>
</el-form>
<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="categoryName"
header-align="center"
align="center"
label="需求类型"
width="180">
</el-table-column>
<el-table-column prop="demandUserName"
header-align="center"
align="center"
label="需求人"
width="120">
</el-table-column>
<el-table-column prop="content"
header-align="center"
align="center"
label="需求内容"
:show-overflow-tooltip="true"
min-width="230">
</el-table-column>
<el-table-column prop="pointTime"
header-align="center"
align="center"
label="时间"
width="150">
</el-table-column>
<el-table-column prop="score"
header-align="center"
align="center"
label="评价"
width="120">
</el-table-column>
<el-table-column prop="point"
header-align="center"
align="center"
label="积分"
width="100">
</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 title="积分记录" :visible.sync="scoreDiaShow" width="1370px" :before-close="handleCancle">
<div>
<div class="dialog-h-content scroll-h">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<el-form-item label="查询时间" prop="startTime">
<el-date-picker
v-model="timeRange"
type="daterange"
:clearable="false"
:picker-options="pickerOptions"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd"
@change="handleTimeChange"
></el-date-picker>
</el-form-item>
<div>
<el-form-item label="总计:" prop="startTime">
<span>{{ totalPoint }}</span>
</el-form-item>
</div>
</el-form>
<el-table class="m-table-item" :data="tableData" v-loading="tableLoading" style="width: 100%">
<el-table-column label="序号" header-align="center" align="center" type="index" width="50"></el-table-column>
<el-table-column prop="categoryName" header-align="center" align="center" label="需求类型" width="180"></el-table-column>
<el-table-column prop="demandUserName" header-align="center" align="center" label="需求人" width="120"></el-table-column>
<el-table-column prop="content" header-align="center" align="center" label="需求内容" :show-overflow-tooltip="true" min-width="230"></el-table-column>
<el-table-column prop="pointTime" header-align="center" align="center" label="时间" width="150"></el-table-column>
<el-table-column prop="score" header-align="center" align="center" label="评价" width="120"></el-table-column>
<el-table-column prop="point" header-align="center" align="center" label="积分" width="100"></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>
<!-- <div class="div_btn" v-if="pageType != 'view'">
<el-button size="small" @click="handleCancle"> </el-button>
<el-button size="small" @click="resetData" v-if="pageType != 'view'">重置</el-button>
<el-button size="small" type="primary" :disabled="btnDisable" @click="handleComfirm"> </el-button>
</div> -->
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancle"> </el-button>
<!-- <el-button type="primary" @click="handleComfirm"> </el-button> -->
</span>
</el-dialog>
</template>
<script>
import util from '@js/util.js';
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
import { requestPost } from '@/js/dai/request';
import { mapGetters } from 'vuex';
import { Loading } from 'element-ui'; // Loading
let loading //
let loading; //
export default {
data () {
return {
loading: false,
totalPoint: 100,
total: 0,
pageSize: 10,
pageNo: 0,
tableLoading: false,
serviceId: '',
pickerOptions: { //
disabledDate (time) {
return time.getTime() > (Date.now())
}
},
timeRange: [],
unitId: '',
formData: {
startTime: '',
endTime: ''
},
tableData: [],
}
},
components: {
},
async created () {
},
async mounted () {
},
methods: {
async initForm (serviceId) {
this.initDate()
this.serviceId = serviceId
//
await this.loadTable()
},
handleSearch () {
this.loadTable()
},
async loadTable () {
this.tableLoading = true
const url = "/governance/userdemand/recordList"
// const url = "http://yapi.elinkservice.cn/mock/245/governance/userdemand/recordList"
let params = {
serviceType: this.serviceType,
serviceId: this.serviceId,
pageSize: this.pageSize,
pageNo: this.pageNo,
...this.formData
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.totalPoint = data.totalPoint
this.total = data.page.total
this.tableData = data.page.list
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
//
initDate () {
let today = new Date((new Date).getTime())
let year = today.getFullYear()
let month = today.getMonth() + 1 //
let day = today.getDate() //
let days = new Date(year, month, 0);
days = days.getDate(); //
let year2 = year;
let month2 = parseInt(month) - 1;
if (month2 == 0) {
year2 = parseInt(year2) - 1;
month2 = 12;
}
let day2 = day;
let days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
if (month < 10) {
month = '0' + month;
}
if (day < 10) {
day = '0' + day;
}
if (day2 < 10) {
day2 = '0' + day2;
}
let t2 = year2 + '-' + month2 + '-' + day2;
let t1 = year + '-' + month + '-' + day;
// let t3 = formate(t2, style);
this.formData.startTime = t2 + ' 00:00:00'
this.formData.endTime = t1 + ' 23:59:59'
this.timeRange = [t2, t1]
},
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 = ''
}
this.loadTable()
},
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.clientHeight - 460)
},
rowHeight () {
return (this.clientHeight - 200) + 'px'
},
...mapGetters(['clientHeight'])
},
watch: {
},
props: {
serviceType: {
type: String,
default: ''
}
}
}
data() {
return {
loading: false,
totalPoint: 100,
total: 0,
pageSize: 10,
pageNo: 0,
tableLoading: false,
serviceId: '',
pickerOptions: {
//
disabledDate(time) {
return time.getTime() > Date.now();
}
},
timeRange: [],
unitId: '',
formData: {
startTime: '',
endTime: ''
},
btnDisable: false,
tableData: []
};
},
components: {},
props: {
scoreDiaShow: {
type: Boolean,
default: ''
},
detailId: {
type: String,
default: ''
},
serviceType: {
type: String,
default: ''
}
},
async created() {},
async mounted() {
this.initForm();
},
methods: {
handleCancle() {
this.$emit('diaClose');
},
async initForm() {
this.initDate();
//
await this.loadTable();
},
handleSearch() {
this.loadTable();
},
async loadTable() {
this.tableLoading = true;
const url = '/governance/userdemand/recordList';
// const url = "http://yapi.elinkservice.cn/mock/245/governance/userdemand/recordList"
let params = {
serviceType: this.serviceType,
serviceId: this.detailId,
pageSize: this.pageSize,
pageNo: this.pageNo,
...this.formData
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.totalPoint = data.totalPoint;
this.total = data.page.total;
this.tableData = data.page.list;
} else {
this.$message.error(msg);
}
this.tableLoading = false;
},
//
initDate() {
let today = new Date(new Date().getTime());
let year = today.getFullYear();
let month = today.getMonth() + 1; //
let day = today.getDate(); //
let days = new Date(year, month, 0);
days = days.getDate(); //
let year2 = year;
let month2 = parseInt(month) - 1;
if (month2 == 0) {
year2 = parseInt(year2) - 1;
month2 = 12;
}
let day2 = day;
let days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
if (month < 10) {
month = '0' + month;
}
if (day < 10) {
day = '0' + day;
}
if (day2 < 10) {
day2 = '0' + day2;
}
let t2 = year2 + '-' + month2 + '-' + day2;
let t1 = year + '-' + month + '-' + day;
// let t3 = formate(t2, style);
this.formData.startTime = t2 + ' 00:00:00';
this.formData.endTime = t1 + ' 23:59:59';
this.timeRange = [t2, t1];
},
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 = ''
}
this.loadTable();
},
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.clientHeight - 460;
},
rowHeight() {
return this.clientHeight - 200 + 'px';
},
...mapGetters(['clientHeight'])
},
watch: {}
};
</script>
<style lang="scss" scoped >
@import "@/assets/scss/buttonstyle.scss";
<style lang="scss" scoped>
@import '@/assets/scss/buttonstyle.scss';
.g-main {
background: #ffffff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: 15px;
padding: 23px 30px 10px;
background: #ffffff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: 15px;
padding: 23px 30px 10px;
}
.m-search {
background: #ffffff;
border-radius: 4px;
padding: 30px 20px 5px;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
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;
width: 260px;
}
.item_width_2 {
width: 495px;
width: 495px;
}
.m-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;
}
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;
}
}
.el-row {
/* margin-bottom: 20px; */
display: flex;
flex-wrap: wrap;
margin-top: 10px;
margin-right: 50px;
/* margin-bottom: 20px; */
display: flex;
flex-wrap: wrap;
margin-top: 10px;
margin-right: 50px;
}
</style>

Loading…
Cancel
Save