Browse Source

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

# Conflicts:
#	src/views/modules/shequzhili/xiangmu/cpts/project-info.vue
V1.0
dai 3 years ago
parent
commit
53f4917d05
  1. 9
      src/views/modules/base/diyInfo.vue
  2. 6
      src/views/modules/plugins/change/resideath.vue
  3. 4
      src/views/modules/plugins/visit/visitvisitor.vue
  4. 100
      src/views/modules/shequzhili/event/eventList.vue
  5. 466
      src/views/modules/shequzhili/statics/index.vue
  6. 462
      src/views/modules/shequzhili/xiangmu/xiangmu-ling.vue
  7. 8
      src/views/modules/visual/communityGovern/shijianchuli/event-info.vue
  8. 389
      src/views/modules/worklog/icworklog-add-or-update.vue
  9. 354
      src/views/modules/worklog/icworklog.vue

9
src/views/modules/base/diyInfo.vue

@ -6,7 +6,7 @@
<div class="left">
<el-tabs v-model="leftActive" tab-position="left" class="left-h" @tab-click="handleTabsClick">
<el-tab-pane v-for="item in leftList" :key="item.id" :label="item.label" :name="item.id">
<div class="pd10 dialog-h-content scroll-h">
<div class="pd10 check-boxwr scroll-h">
<checkBox v-if="item.queryItemList.length > 0" :ref="'checkbox' + item.id"
:list="item.queryItemList" @change="handleChangeBox" />
</div>
@ -466,6 +466,11 @@ export default {
height: calc(80vh - 120px);
.left {
width: 49%;
height: 100%;
.check-boxwr {
height: calc(80vh - 120px);
overflow: auto;
}
}
.right {
flex-shrink: 0;
@ -498,7 +503,7 @@ export default {
margin-top: 10px;
}
.left-h {
height: 100%;
::v-deep .el-tabs__header.is-left,
::v-deep .el-tabs__nav-wrap.is-left::after {
height: calc(80vh - 120px);

6
src/views/modules/plugins/change/resideath.vue

@ -86,7 +86,7 @@
<el-button @click="joinBlacklist(scope.row)"
type="text"
size="small"
class="div-table-button--detail">迁入死亡人口</el-button>
class="div-table-button--detail">新增死亡人口</el-button>
<!-- <el-button @click="handleLook(scope.row)"
type="text"
size="small"
@ -261,8 +261,8 @@
:userId="lookInfo.userId"
:gridName="lookInfo.gridName"
@close="handleCancleLook" />
<el-dialog title="迁入死亡人口的原因" :visible.sync="blacklistVisible" width="40%">
<textarea v-model="blacklistReason" placeholder="请输入迁入死亡人口的原因" class="blacklist-reason"></textarea>
<el-dialog title="新增死亡人口的原因" :visible.sync="blacklistVisible" width="40%">
<textarea v-model="blacklistReason" placeholder="请输入新增死亡人口的原因" class="blacklist-reason"></textarea>
<div>
<br/>
</div>

4
src/views/modules/plugins/visit/visitvisitor.vue

@ -106,12 +106,12 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{ $t('query') }}</el-button>
<el-button type="primary" size="small" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="resi-card-table">
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="name" label="姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="idCard" label="身份证" header-align="center" align="center"></el-table-column>

100
src/views/modules/shequzhili/event/eventList.vue

@ -46,7 +46,26 @@
placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="事件类型"
prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model="eventTypeCheck" :options="cateOptions"
collapse-tags
:show-all-levels="false"
:props="{
multiple: true,
checkStrictly: false,
emitPath: false,
children:'subCategory',
label:'name',
value:'id'
}" clearable class="item_width_2" @change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
<div @click="cascaderClick(node, data)">
<span>{{ data.name }}</span>
</div>
</template>
</el-cascader> -->
</el-form-item>
<el-form-item label="报事人"
prop="name">
<el-input v-model="formData.name"
@ -158,7 +177,17 @@
label="所属网格"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="categoryName"
label="事件类型"
min-width="140"
align="center"
:show-overflow-tooltip="true"
/>
<!-- <template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
</template>
</el-table-column> -->
<el-table-column prop="eventContent"
label="事件内容"
align="center"
@ -419,8 +448,12 @@ export default {
startTime: '',
endTime: '',
status: '',
firstIdList: [],
secondIdList: [],
},
cateOptions: [],
eventTypeCheck: [],
pageNo: 1,
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
@ -465,8 +498,29 @@ export default {
this.agencyId = this.user.agencyId
this.loadGrid();
this.getTableData();
this.getCateOptions()
},
methods: {
handleEventType(val) {
// console.log('val-----eee', val)
console.log('nodes---', this.$refs.cascaderEvent.getCheckedNodes())
const nodes = this.$refs.cascaderEvent.getCheckedNodes()
this.formData.firstIdList = []
this.formData.secondIdList = []
let level1 = nodes.filter(item => item.level === 1)
let level2 = nodes.filter(item => item.level === 2)
console.log('level2----1', level2)
level1.forEach(item => {
console.log('level2----2', level2)
if (item.hasChildren) {
for (let i = level2.length - 1; i >= 0; i--) {
if (level2[i].parent.value === item.value) level2.splice(i, 1)
}
}
})
this.formData.firstIdList = level1.map(item => item.value)
this.formData.secondIdList = level2.map(item => item.value)
},
handleSelectionChange (val) {
this.multipleSelection = [];
val.forEach(element => {
@ -692,6 +746,23 @@ export default {
this.$message.error(msg);
}
},
async getCateOptions() {
const url = "/gov/issue/issueprojectcategorydict/list";
const { data, code, msg } = await requestPost(url, {});
if (code === 0) {
// this.cateOptions = data.map((item) => {
// item.subCategory.forEach((subitem) => {
// delete subitem.subCategory;
// });
// return item;
// });
this.cateOptions = this.deepTree(data, 'subCategory')
} else {
this.$message.error(msg);
}
},
handleSizeChange (val) {
@ -715,12 +786,27 @@ export default {
startTime: '',
endTime: '',
status: '',
firstIdList: [],
secondIdList: [],
}
this.eventTypeCheck = []
// this.pageNo = 1
this.pageNo = 1
this.getTableData();
// this.loadTable()
},
deepTree(arr, child) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map(item => {
// if (child === 'subAgencyList') item.value = item.orgType + '-' + item.orgId
return {
...item,
[child]: item[child] && item[child].length > 0 && this.deepTree(item[child], child) || null
}
})
}
}
},
};
</script>
@ -729,4 +815,10 @@ export default {
@import "@/assets/scss/buttonstyle.scss";
@import "@/assets/scss/modules/management/list-main.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.div_search {
.item_width_2 {
width: 200px;
}
}
</style>

466
src/views/modules/shequzhili/statics/index.vue

@ -0,0 +1,466 @@
<template>
<div class="mode-block resi-container">
<el-card ref="searchCard" class="search-card">
<el-form ref="searchForm" :inline="true" :model="dataForm" size="small">
<el-form-item label="所属组织" label-width="100px"
prop="agencyId">
<el-cascader ref="cascaderUnit" v-model="dataForm.agencyId" :options="optionsA" :props="{ checkStrictly: true, emitPath: false,children:'subAgencyList',label:'agencyName',value:'agencyId'}" clearable />
<!-- <template slot-scope="{ node, data }">
<div @click="cascaderClick(data)">
<span>{{ data.objectName }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
</div>
</template> -->
</el-form-item>
<el-form-item label="统计类型"
prop="endTime" label-width="100px">
<el-radio v-model="dataForm.type" label="end" @change="handleRadioCHange">截止累计值</el-radio>
<el-radio v-model="dataForm.type" label="Interval" @change="handleRadioCHange">区间新增值</el-radio>
<el-date-picker v-show="dataForm.type == 'end'"
v-model="dataForm.endTime"
type="datetime"
:clearable="false"
size="small"
:picker-options="pickerOptions"
value-format="yyyy-MM-dd HH:mm:ss"
/>
<el-date-picker v-show="dataForm.type == 'Interval'" v-model="timeRange"
type="datetimerange"
clearable
size="small"
:picker-options="pickerOptions"
range-separator="至"
start-placeholder="选择日期"
end-placeholder="选择日期"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" class="diy-button--search" @click="handleSearch">查询</el-button>
<el-button
class="diy-button--reset"
size="small"
@click="resetForm('searchForm')"
>重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button @click="totalHandle"
class="diy-button--add"
size="small">总计</el-button>
<el-button @click="exportHandle"
class="diy-button--reset"
size="small" :loading="exportLoading">导出</el-button>
</div>
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border style="width: 100%"
:height="tableHeight">
<!-- <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> -->
<el-table-column type="index" label="序号" header-align="center" align="center" width="50"></el-table-column>
<el-table-column min-width="100" prop="orgName" label="所属组织" header-align="center" align="center" >
<template slot-scope="scope">
<a class="name-a" style="color: #2195fe;" @click="handleClick(scope.row)">{{scope.row.orgName}}</a>
</template>
</el-table-column>
<el-table-column min-width="100" prop="resiUserCount" label="注册居民数" header-align="center" align="center" >
<!-- <template slot-scope="scope">
<span v-if="scope.row.orgType==='agency'"><a class="name-a" style="color: #2195fe;" @click="handleClick(scope.row)">{{scope.row.orgName}}</a></span>
<span v-else>{{scope.row.orgName}}</span>
</template> -->
</el-table-column>
<el-table-column min-width="100" prop="partyMemberCount" label="注册党员数" header-align="center" align="center" />
<el-table-column min-width="100" prop="icEventCount" label="事件总数" header-align="center" align="center" />
<el-table-column min-width="110" prop="resiEventCount" label="居民上报事件数" header-align="center" align="center" />
<el-table-column min-width="110" prop="pcEventCount" label="平台录入事件数" header-align="center" align="center" />
<el-table-column min-width="110" prop="projectCount" label="项目总数" header-align="center" align="center" />
<el-table-column min-width="110" prop="issueProjectCount" label="议题转项目数" header-align="center" align="center" />
<el-table-column min-width="110" prop="icEventProjectCount" label="事件立项数" header-align="center" align="center" />
<el-table-column min-width="110" prop="agencyProjectCount" label="立项数" header-align="center" align="center" />
</el-table>
<!-- <div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total"
>
</el-pagination>
</div> -->
</el-card>
<el-dialog
title="总计"
:visible.sync="totalVisible"
width="60%">
<template>
<el-table
:data="tableData"
style="width: 100%"
height="200">
<!-- <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> -->
<el-table-column min-width="100" prop="orgName" label="组织名称" header-align="center" align="center" />
<el-table-column min-width="100" prop="resiUserCount" label="注册居民数" header-align="center" align="center" />
<el-table-column min-width="100" prop="partyMemberCount" label="注册党员数" header-align="center" align="center" />
<el-table-column min-width="100" prop="icEventCount" label="事件总数" header-align="center" align="center" />
<el-table-column min-width="110" prop="resiEventCount" label="居民上报事件数" header-align="center" align="center" />
<el-table-column min-width="110" prop="pcEventCount" label="平台录入事件数" header-align="center" align="center" />
<el-table-column min-width="110" prop="projectCount" label="项目总数" header-align="center" align="center" />
<el-table-column min-width="110" prop="issueProjectCount" label="议题转项目数" header-align="center" align="center" />
<el-table-column min-width="110" prop="icEventProjectCount" label="事件立项数" header-align="center" align="center" />
<el-table-column min-width="110" prop="agencyProjectCount" label="立项数" header-align="center" align="center" />
</el-table>
</template>
</el-dialog>
</div>
</template>
<script>
import { mapGetters } from "vuex";
// import AddOrUpdate from './factagencyuserhousedaily-add-or-update'
import { dateFormats } from '@/utils/index'
export default {
data () {
return {
exportLoading: false,
dataListLoading: false,
optionsA: [],
totalVisible: false,
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
dataList: [],
timeRange: '',
dataForm: {
customerId: this.$store.state.user.customerId,
agencyId: this.$store.state.user.agencyId,
startTime: '',
endTime: dateFormats('YYYY-mm-dd HH:MM:SS', new Date()),
type: 'end'
},
total: 0,
tableData: [],
pageNo: 1,
pageSize: 20
}
},
components: {
// AddOrUpdate
},
created () {
this.getGridList()
this.getTableList()
// this.getValiheList()
},
watch: {
timeRange (val) {
if (Array.isArray(val) && val.length == 2) {
this.dataForm.startTime = val[0];
this.dataForm.endTime = val[1];
} else {
this.dataForm.startTime = "";
this.dataForm.endTime = "";
}
console.log('startTime----w', this.dataForm.startTime)
}
},
computed: {
...mapGetters(["clientHeight", "iframeHeight"]),
tableHeight() {
const h = this.clientHeight - 330 + this.iframeHeigh;
const _h = this.clientHeight - 330;
return this.$store.state.inIframe ? h : _h;
},
},
methods: {
handleClick(row) {
this.dataForm.agencyId = row.orgId
this.handleSearch()
},
resetForm(formName) {
this.$refs[formName].resetFields();
this.timeRange = "";
this.dataForm.startTime = "";
this.dataForm.endTime = dateFormats('YYYY-mm-dd HH:MM:SS', new Date())
this.dataForm.type = 'end';
this.pageNo = 1
this.getTableList()
},
handleSearch() {
// this.dataForm.type = 1
this.pageNo = 1
this.getTableList()
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.pageSize = val;
this.getTableList();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.pageNo = val;
this.getTableList();
},
handleRadioCHange(val) {
console.log('val----', val)
this.timeRange = ''
this.dataForm.startTime = ''
this.dataForm.endTime = ''
if (val == 'end') {
this.$nextTick(() => {
this.dataForm.endTime = dateFormats('YYYY-mm-dd HH:MM:SS', new Date())
})
console.log('endTime----', this.dataForm.endTime)
}
},
exportHandle () {
const url = '/data/aggregator/datastats/nowstatsdataexport'
// this.dataForm.type = 1
this.exportLoading = true
this.$http({
method: 'Post',
url,
responseType: 'blob',
data: this.dataForm
}).then(res => {
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
var url = window.URL.createObjectURL(blob)
var aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', fileName)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink) //
window.URL.revokeObjectURL(url) //blob
// this.exportLoading = false
} else this.$message.error('下载失败')
this.exportLoading = false
}).catch(err => {
console.log('err', err)
this.exportLoading = false
return this.$message.error('网络错误')
})
},
cascaderClick (nodeData) {
this.dataForm.agencyId = nodeData.objectId;
this.dataForm.level = nodeData.objectType
this.$refs.cascaderUnit.checkedValue = nodeData.objectId;
this.$refs.cascaderUnit.computePresentText();
this.$refs.cascaderUnit.toggleDropDownVisible(false);
},
totalHandle () {
this.tableData = []
let resiUserCount = 0,
partyMemberCount = 0,
icEventCount = 0,
resiEventCount = 0,
pcEventCount = 0,
projectCount = 0,
issueProjectCount = 0,
icEventProjectCount = 0,
agencyProjectCount = 0
if (this.dataList.length > 0) {
this.dataList.forEach(item => {
resiUserCount += item.resiUserCount
partyMemberCount += item.partyMemberCount
icEventCount += item.icEventCount
resiEventCount += item.resiEventCount
pcEventCount += item.pcEventCount
projectCount += item.projectCount
issueProjectCount += item.issueProjectCount
icEventProjectCount += item.icEventProjectCount
agencyProjectCount += item.agencyProjectCount
})
}
this.tableData.push({
orgName: this.$store.state.user.agencyName,
resiUserCount,
partyMemberCount,
icEventCount,
resiEventCount,
pcEventCount,
projectCount,
issueProjectCount,
icEventProjectCount,
agencyProjectCount
})
// this.$http
// .post('/data/aggregator/org/orgProjectDetailList', this.dataForm)
// .then(({ data: res }) => {
// if (res.code !== 0) {
// return this.$message.error(res.msg)
// } else {
// console.log('', res.data.list)
// this.tableData = res.data.list
// }
// })
// .catch(() => {
// return this.$message.error('')
// })
this.totalVisible = true
},
getTableList() {
const { user } = this.$store.state
const _data = {
...this.dataForm,
// pageNo: this.pageNo,
// pageSize: this.pageSize
}
this.$http
.post('/data/aggregator/datastats/nowstatsdata', _data)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.dataList = res.data
// this.total = res.data.total
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getGridList() {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
let { agencyList, subAgencyList } = res.data
// this.optionsA = res.data
// console.log(this.optionsA);
// this.dataForm.agencyId = agencyList.agencyId
const _arr = [{...agencyList, subAgencyList: [...subAgencyList] }]
this.optionsA = this.deepTree(_arr)
console.log('optionsA----', this.optionsA)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree(arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
}
}
}
</script>
<style>
.block{
position: absolute;
left: 0px;
display: inline-block;
width: 35px;
height: 50px;
background: #fff;
}
.cascader-block .el-cascader-node>.el-radio{
display: none;
}
</style>
<style lang="scss" scoped>
.blacklist-reason {
width: 100%;
height: 80px;
border: 1px solid #e4e4e4;
border-radius: 4px;
resize: none;
padding: 8px;
box-sizing: border-box;
}
</style>
<style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss";
.resi-container .resi-card-table {
::v-deep .el-table th {
color: #fff;
background-color: rgba(33, 149, 254, 1);
// border-right: 1px solid rgba(33, 149, 254, 1);
}
}
.resi-table {
::v-deep .el-button--text {
text-decoration: underline;
}
::v-deep .btn-color-del {
margin-left: 10px;
color: rgba(213, 16, 16, 1);
}
::v-deep .btn-color-edit {
color: rgba(0, 167, 169, 1);
}
}
.form-wr {
.input-width {
width: 260px;
}
.input-width-textarea {
width: 500px;
}
.imsg-list {
display: flex;
align-items: center;
.imgs-item {
position: relative;
margin-right: 10px;
.el-icon-delete {
position: absolute;
top: 0;
right: 0;
font-size: 18px;
color: red;
z-index: 3;
cursor: pointer;
}
}
}
}
.div-content {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.resi-row-btn {
margin-bottom: 13px;
.upload-btn {
display: inline-block;
margin: 0 10px;
}
}
</style>

462
src/views/modules/shequzhili/xiangmu/xiangmu-ling.vue

@ -1,24 +1,26 @@
<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="所属组织" label-width="100px"
prop="orgId">
<el-cascader ref="cascaderUnit" v-model="orgId"
:options="optionsA"
:props="{ checkStrictly: true,
emitPath: false,children:'subAgencyList',label:'agencyName', value: 'orgLevel'}"
clearable
@change="handleCalscChange"/>
<el-form-item label="所属组织"
label-width="100px"
prop="orgId">
<el-cascader ref="cascaderUnit"
v-model="orgId"
:options="optionsA"
:props="{ checkStrictly: true,
emitPath: false,children:'subAgencyList',label:'agencyName', value: 'orgLevel'}"
clearable
@change="handleCalscChange" />
</el-form-item>
<el-form-item label="上报渠道"
prop="origin">
@ -63,24 +65,30 @@
</el-form-item>
<el-form-item label="事件类型"
prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model="eventTypeCheck" :options="cateOptions"
collapse-tags
:show-all-levels="false"
:props="{
<el-cascader ref="cascaderEvent"
v-model="eventTypeCheck"
:options="cateOptions"
collapse-tags
:show-all-levels="false"
:props="{
multiple: true,
checkStrictly: false,
emitPath: false,
children:'subCategory',
label:'name',
value:'id'
}" clearable class="item_width_2" @change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
}"
clearable
class="item_width_2"
@change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
<div @click="cascaderClick(node, data)">
<span>{{ data.name }}</span>
</div>
</template>
</el-cascader> -->
</el-form-item>
<el-form-item label="事件状态"
prop="status">
<el-select class="item_width_2"
@ -96,7 +104,21 @@
</el-select>
</el-form-item>
<el-form-item label="解决状态"
prop="status">
<el-select class="item_width_2"
v-model="fmData.closedStatus"
placeholder="全部"
size="small"
clearable>
<el-option v-for="item in resolvedStatus"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="上报时间"
prop="startTime">
<el-date-picker v-model="fmData.startTime"
@ -120,7 +142,8 @@
<el-form-item label="处置选项"
prop="staffId">
<el-checkbox v-model="checkStaffId" @change="handleCheckbox"></el-checkbox>
<el-checkbox v-model="checkStaffId"
@change="handleCheckbox"></el-checkbox>
</el-form-item>
<el-button style="margin-left:30px"
@ -137,135 +160,105 @@
<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
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 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"
:loading="exportLoading">导出</el-button
>
<el-button @click="handleChu"
class="diy-button--reset"
size="small"
:loading="exportLoading">导出</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="所属组织/网格"
min-width="140"
: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="所属组织/网格"
min-width="140"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="firstName"
label="事件类型"
min-width="140"
align="center"
:show-overflow-tooltip="true"
>
<el-table-column prop="firstName"
label="事件类型"
min-width="140"
align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
</template>
</el-table-column>
<el-table-column
prop="staffName"
width="100"
align="center"
label="报事人"
:show-overflow-tooltip="true"
>
<el-table-column prop="staffName"
width="100"
align="center"
label="报事人"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="mobile"
align="center"
label="手机号"
width="140"
:show-overflow-tooltip="true"
>
<el-table-column prop="mobile"
align="center"
label="手机号"
width="140"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="createdTime"
align="center"
label="上报时间"
width="160"
:show-overflow-tooltip="true"
>
<el-table-column prop="createdTime"
align="center"
label="上报时间"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="backGround"
align="center"
label="事件内容"
min-width="160"
:show-overflow-tooltip="true"
>
<el-table-column prop="backGround"
align="center"
label="事件内容"
min-width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="publicReply"
align="center"
min-width="160"
label="办理结果(结案说明)"
:show-overflow-tooltip="true"
>
<el-table-column prop="publicReply"
align="center"
min-width="160"
label="办理结果(结案说明)"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.publicReply }}
</template>
</el-table-column>
<el-table-column
prop="urlList"
align="center"
label="图片 "
>
<el-table-column prop="urlList"
align="center"
label="图片 ">
<template slot-scope="scope">
<el-image v-if="scope.row.urlList&&scope.row.urlList.length>0"
style="width: 40px; height: 40px"
@ -275,13 +268,11 @@
<span v-else></span>
</template>
</el-table-column>
<el-table-column
prop="origin"
align="center"
label="上报渠道"
width="120"
/>
<!-- <template slot-scope="scope">
<el-table-column prop="origin"
align="center"
label="上报渠道"
width="120" />
<!-- <template slot-scope="scope">
<span v-if="scope.row.origin == 'agency'">网格上报</span>
<span v-else-if="scope.row.origin == 'ic_event'">居民上报</span>
<span v-else-if="scope.row.origin == 'work_event'">巡查上报</span>
@ -289,89 +280,73 @@
</template>
</el-table-column> -->
<el-table-column
prop="address"
align="center"
label="地址 "
:show-overflow-tooltip="true"
/>
<el-table-column
prop="status"
align="center"
label="状态 "
width="70"
/>
<!-- <template slot-scope="scope">
<el-table-column prop="address"
align="center"
label="地址"
:show-overflow-tooltip="true" />
<el-table-column prop="status"
align="center"
label="状态 "
width="70" />
<el-table-column prop="closedStatus"
align="center"
label="解决状态"
width="90" />
<!-- <template slot-scope="scope">
{{ scope.row.status == 'pending' ? '处理中' : '已结案' }}
</template>
</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.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.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>
@ -394,12 +369,13 @@ const _form = {
status: '',
firstIdList: [],
secondIdList: [],
staffId: ''
staffId: '',
closedStatus: ''
}
export default {
components: { projectInfo },
data() {
data () {
let endDisabledDate = (time) => {//datareturn
let nowData = Date.now()
if (this.fmData.startTime) {
@ -423,6 +399,16 @@ export default {
tableData: [],
resolvedStatus: [
{
value: "resolved",
label: "已解决",
},
{
value: "unresolved",
label: "无需解决",
},
],
optionsStatus: [
{
value: "pending",
@ -474,7 +460,7 @@ export default {
};
},
computed: {
maxTableHeight() {
maxTableHeight () {
return this.$store.state.inIframe
? this.clientHeight - 410 + this.iframeHeigh
: this.clientHeight - 410;
@ -492,13 +478,13 @@ export default {
}
},
},
mounted() {
mounted () {
this.getTableData();
this.getGridList()
this.getCateOptions()
},
methods: {
async handleExportModule() {
async handleExportModule () {
let url = "/heart/iccommunityselforganization/import-template-download";
let params = {};
@ -535,18 +521,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 =
@ -563,7 +549,7 @@ export default {
}
return fileType && isLt1M;
},
async uploadHttpRequest(file) {
async uploadHttpRequest (file) {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
this.$message({
@ -617,19 +603,19 @@ export default {
this.importBtnTitle = "导入";
this.$refs.upload.clearFiles();
},
handleCalscChange(val) {
handleCalscChange (val) {
console.log('val-----', val)
const arr = val.split('-')
this.fmData.orgId = arr[0]
this.fmData.orgType = arr[1] === 'grid' ? 'grid' : 'agency'
},
handleCheckbox(val) {
handleCheckbox (val) {
const { user } = this.$store.state
console.log('val---', val)
if (val) this.fmData.staffId = user.id
else this.fmData.staffId = ''
},
handleEventType(val) {
handleEventType (val) {
// console.log('val-----eee', val)
console.log('nodes---', this.$refs.cascaderEvent.getCheckedNodes())
const nodes = this.$refs.cascaderEvent.getCheckedNodes()
@ -659,24 +645,24 @@ export default {
// this.$refs.cascaderUnit.toggleDropDownVisible(false);
},
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(JSON.stringify(this.fmData));
this.pageNo = 1;
this.getTableData();
},
resetForm(formName) {
resetForm (formName) {
this.$refs[formName].resetFields();
this.fmData = {
..._form
@ -687,7 +673,7 @@ export default {
this.handleSearch();
},
async handleChu() {
async handleChu () {
// const url = "/gov/project/project/project-list-export";
const url = '/gov/project/project/orgprojectexport'
const { pageSize, pageNo, fmData } = this;
@ -726,8 +712,8 @@ export default {
});
},
async handleAdd() {},
async handleWatch(rowIndex) {
async handleAdd () { },
async handleWatch (rowIndex) {
let item = this.tableData[rowIndex];
this.currentProject = {
projectId: item.projectId,
@ -735,7 +721,7 @@ export default {
this.pageType = "info";
},
async handleEdit(rowIndex) {
async handleEdit (rowIndex) {
let item = this.tableData[rowIndex];
this.currentProject = {
projectId: item.projectId,
@ -743,19 +729,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";
@ -773,10 +759,10 @@ 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 url ='/gov/project/project/orgprojectlist'
const url = '/gov/project/project/orgprojectlist'
const { pageSize, pageNo, fmData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,
@ -788,16 +774,16 @@ export default {
this.total = data.total || 0;
this.tableData = data.list
? data.list.map((item) => {
return {
...item,
urlList: item.urlList && item.urlList.map(n => n.url)
};
})
return {
...item,
urlList: item.urlList && item.urlList.map(n => n.url)
};
})
: [];
} else {
}
},
async getCateOptions() {
async getCateOptions () {
const url = "/gov/issue/issueprojectcategorydict/list";
const { data, code, msg } = await requestPost(url, {});
@ -814,7 +800,7 @@ export default {
this.$message.error(msg);
}
},
getGridList() {
getGridList () {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
@ -842,7 +828,7 @@ export default {
return this.$message.error('网络错误')
})
},
deepTree(arr, child) {
deepTree (arr, child) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map(item => {
// if (child === 'subAgencyList') item.value = item.orgType + '-' + item.orgId

8
src/views/modules/visual/communityGovern/shijianchuli/event-info.vue

@ -97,13 +97,13 @@
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<!-- <div class="detail"
v-if="item.processName != '转项目' && item.wantServiceTime">
<div class="detail"
v-if="item.processName != '转项目' && item.publicReply">
<div class="detail-field"> </div>
<div class="detail-value">
<fold-text :row="3">{{ item.wantServiceTime }}</fold-text>
<fold-text :row="3">{{ item.publicReply }}</fold-text>
</div>
</div> -->
</div>
<div class="detail"
v-if="item.processName != '转项目' && item.internalRemark">

389
src/views/modules/worklog/icworklog-add-or-update.vue

@ -0,0 +1,389 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="所属网格"
prop="gridId">
<el-select
v-model.trim="dataForm.gridId"
placeholder="请选择"
clearable
>
<el-option
v-for="item in optionsG"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input v-model="dataForm.title" placeholder="标题"></el-input>
</el-form-item>
<el-form-item label="日志类型" prop="logType">
<el-select v-model="dataForm.logType"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in logTypeArr"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="日志时间" prop="logDate">
<el-date-picker
v-model="dataForm.logDate"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input type="textarea" :autosize="{ minRows: 3, maxRows: 5 }" v-model="dataForm.content" placeholder="内容"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="dataForm.remark" placeholder="备注"></el-input>
</el-form-item>
<!-- <el-form-item class="block"
label="照片"
label-width="150px"
prop="attach">
<el-upload class="upload-demo"
:action="uploadUlr"
accept=".jpg,.png,.jpeg,.bmp"
:on-success="handleFileSuccess"
:on-remov·e="handleFileRemove"
:on-preview="handleFileDownload"
:limit="3"
:before-upload="beforeUpload"
:file-list="dataForm.fileList">
<el-button size="small"
:disabled="dataForm.fileList.length===3"
type="primary">点击上传</el-button>
<div slot="tip"
class="el-upload__tip">支持jpgpngbmp</div>
</el-upload>
</el-form-item> -->
<el-form-item label="照片"
label-width="150px"
style="display:block">
<el-upload :class="['avatar-uploader', {'hide': hideUploadBtn}] "
ref="uploadPic"
:action="uploadUlr"
list-type="picture-card"
:on-exceed="exceedPic"
:on-remove="removePic"
:file-list="dataForm.fileList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="3">
<span class="font-14">选择图片</span>
<div slot="tip"
class="upload_tip">最多上传3张图片图片支持jpgjpegbmpgit或png格式</div>
</el-upload>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
import { requestPost } from "@/js/dai/request"
export default {
data () {
return {
visible: false,
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile',
logTypeArr: [],
optionsG: [],
dataForm: {
id: '',
agencyId: '',
pids: '',
gridId: '',
title: '',
logType: '',
logDate: '',
content: '',
remark: '',
mobile: '',
fileList: [],
// imageList: [],//
},
hideUploadBtn: false
}
},
created () {
this.getGridList()
this.getCategrayList()
},
computed: {
dataRule () {
return {
agencyId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
gridId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
title: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
logType: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
logDate: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
content: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.dataForm.fileList = []
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/gov/org/icWorkLog/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
async getCategrayList () {
console.log(localStorage.getItem('token'))
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'log_type'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.logTypeArr = data
} else {
this.$message.error(msg)
}
},
getGridList() {
const { user } = this.$store.state
this.$http
.post('/gov/org/customergrid/gridoption', { agencyId: user.agencyId, purpose: 'query' })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsG = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
// beforeUpload (file) {
// const array = file.name.split('.')
// const extension = array[array.length - 1]
// const formatarray = ['jpg', 'png', 'jpeg', 'bmp']
// if (formatarray.indexOf(extension) === -1) {
// this.$message.error('wordpdf')
// return false
// }
// },
// handleFileRemove (file) {
// if (file && file.status === "success") {
// this.dataForm.fileList.splice(this.dataForm.fileList.findIndex(item => item.uid === file.uid), 1)
// }
// },
// handleFileSuccess (res, file) {
// if (res.code === 0 && res.msg === 'success') {
// const array = file.name.split('.')
// const fileType = array[array.length - 1]
// const picArray = ['jpg', 'png', 'jpeg', 'bmp']
// const videoarray = ['mp4', 'wma', 'm4a']
// const docArray = ['doc', 'docx', 'xls', 'xlsx', 'pdf']
// const mp3Array = ['mp3']
// if (picArray.indexOf(fileType) > -1) {
// file.attachmentFormat = 'image'
// } else if (videoarray.indexOf(fileType) > -1) {
// file.attachmentFormat = 'video'
// } else if (docArray.indexOf(fileType) > -1) {
// file.attachmentFormat = 'doc'
// } else if (mp3Array.indexOf(fileType) > -1) {
// file.attachmentFormat = 'voice'
// }
// file.url = res.data.url
// file.type = fileType
// file.fileName = file.name
// file.fileType = file.type
// this.dataForm.fileList.push(file)
// console.log(this.dataForm.fileList)
// } else this.$message.error(res.msg)
// },
//
// handleFileDownload (file) {
// var a = document.createElement('a');
// var event = new MouseEvent('click');
// a.download = file.name;
// console.log(a)
// a.href = file.url;
// a.dispatchEvent(event);
// },
exceedPic () {
this.$message.warning("最多上传3张预览图片")
},
removePic (file, fileList) {
// this.formData.imageList.splice(this.formData.imageList.findIndex(item => item === file.url), 1)
if (file && file.status === "success") {
this.dataForm.fileList.splice(this.dataForm.fileList.findIndex(item => item.uid === file.uid), 1)
}
this.hideUploadBtn = fileList.length >= 3;
},
handleSuccess (res, file) {
if (res.code === 0 && res.msg === 'success') {
const array = file.name.split('.')
const fileType = array[array.length - 1]
const picArray = ['jpg', 'png', 'jpeg', 'bmp']
const videoarray = ['mp4', 'wma', 'm4a']
const docArray = ['doc', 'docx', 'xls', 'xlsx', 'pdf']
const mp3Array = ['mp3']
if (picArray.indexOf(fileType) > -1) {
file.attachmentFormat = 'image'
} else if (videoarray.indexOf(fileType) > -1) {
file.attachmentFormat = 'video'
} else if (docArray.indexOf(fileType) > -1) {
file.attachmentFormat = 'doc'
} else if (mp3Array.indexOf(fileType) > -1) {
file.attachmentFormat = 'voice'
}
file.url = res.data.url
file.type = fileType
file.fileName = file.name
file.fileType = file.type
this.dataForm.fileList.push(file)
console.log(this.dataForm.fileList)
} else this.$message.error(res.msg)
},
// 3
handleEditChange (file, fileList) {
this.hideUploadBtn = fileList.length >= 3;
},
//
dataFormSubmitHandle: debounce(function () {
if (this.dataForm.content.length < 70) {
return this.$message.error("内容不能少于70字")
}
if (this.dataForm.fileList.length < 1) {
return this.$message.error("照片不能为空")
}
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/gov/org/icWorkLog/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>
<style lang="scss" scoped>
.item_width_1 {
width: 500px;
}
.item_width_2 {
width: 400px;
}
.item_width_3 {
margin-left: 10px;
width: 200px;
}
.item_width_4 {
width: 200px;
}
.div_map {
margin-top: 10px;
}
.div_btn {
// display: flex;
// justify-content: flex-end;
}
.el-tabs {
margin: 0 20px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
margin: 0;
}
.form {
margin-top: 30px;
}
.attachement-list {
}
</style>

354
src/views/modules/worklog/icworklog.vue

@ -0,0 +1,354 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-__icWorkLog} resi-container">
<el-card ref="searchCard" class="search-card">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item prop="gridId" label="所属组织">
<div class="resi-cell-value">
<el-cascader class="customer_cascader"
ref="myCascader"
clearable
v-model="agencyIdArray"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"></el-cascader>
</div>
</el-form-item>
<el-form-item label="日志类型"
prop="logType">
<el-select v-model="dataForm.logType"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in logTypeArr"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="网格员"
prop="createdUser">
<el-input v-model="dataForm.createdUser"
size="small"
clearable
placeholder="请输入网格员姓名">
</el-input>
</el-form-item>
<br/>
<el-form-item label="联系电话"
prop="createdUser">
<el-input v-model="dataForm.mobile"
size="small"
clearable
placeholder="请输入联系电话">
</el-input>
</el-form-item>
<el-form-item label="日志时间" prop="startTime" label-width="100px">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期"
style="width:200px">
</el-date-picker>
</el-form-item>
<el-form-item label="至" prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期"
style="width:200px">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-button style="margin-left:10px"
size="small"
class="diy-button--reset"
@click="resetSearch">重置</el-button>
<!-- <el-form-item>-->
<!-- <el-button type="primary" size="small" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>-->
<!-- </el-form-item>-->
</el-form>
</el-card>
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button
class="diy-button--add"
size="small"
@click="addOrUpdateHandle()"
>{{ $t('add') }}</el-button
>
<el-button @click="exportHandle()" class="diy-button--reset" size="small"
>导出</el-button
>
</div>
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="title" label="标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="logType" label="日志类型" :formatter="categoryCodeFormatter" header-align="center" align="center"></el-table-column>
<el-table-column prop="logDate" label="日志时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdUser" label="网格员" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" label="联系电话" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</el-card>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './icworklog-add-or-update'
import { requestPost } from "@/js/dai/request";
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/gov/org/icWorkLog/page',
getDataListIsPage: true,
deleteURL: '/gov/org/icWorkLog/delete',
deleteIsBatch: true,
exportURL: '/gov/org/icWorkLog/export'
},
agencyIdArray:[],
orgOptions: [],
logTypeArr: [],
orgOptionProps:{
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
},
dataForm: {
id: ''
}
}
},
components: {
AddOrUpdate
},
created () {
this.getGridList()
this.getCategrayList()
},
methods: {
getGridList() {
const { user } = this.$store.state
this.$http
.post('/gov/org/customeragency/agencygridtree', {})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取组织树成功', res.data)
this.orgOptions=[]
this.orgOptions .push( res.data)
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
exportHandle () {
const url = this.mixinViewModuleOptions.exportURL
this.$http({
method: 'GET',
url,
responseType: 'blob',
params: this.dataForm
}).then(res => {
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
var url = window.URL.createObjectURL(blob)
var aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', fileName)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink) //
window.URL.revokeObjectURL(url) //blob
} else this.$message.error('下载失败')
}).catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
//
resetSearch () {
this.agencyIdArray = []
this.dataForm = {
agencyId: '',
gridId: '',
logType: '',
createdUser: '',
startTime: '',
endTime: '',
mobile: ''
}
this.getDataList()
},
//
async getCategrayList () {
console.log(localStorage.getItem('token'))
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'log_type'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.logTypeArr = data
} else {
this.$message.error(msg)
}
},
categoryCodeFormatter (row) {
let ca = ''
this.logTypeArr.forEach((tagCategory) => {
if (tagCategory.value === row.logType) {
ca = tagCategory.label
}
})
return ca
},
handleChangeAgency(val) {
let obj = this.$refs["myCascader"].getCheckedNodes()[0].data
if (obj) {
if(obj.level === 'grid'){
this.dataForm.gridId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '';
this.dataForm.agencyId=''
}else{
this.dataForm.agencyId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '';
this.dataForm.gridId = ''
}
}else{
this.dataForm.agencyId=''
this.dataForm.gridId = ''
}
},
pickerBeginDateBefore: {
disabledDate: (time) => {
let beginDateVal = this.dataForm.endTime
if (beginDateVal) {
return time.getTime() > new Date(beginDateVal + ' 00:00:00').getTime()
}
}
},
pickerBeginDateAfter: {
disabledDate: (time) => {
let EndDateVal = this.dataForm.startTime
if (EndDateVal) {
return time.getTime() < new Date(EndDateVal + ' 00:00:00').getTime()
}
}
}
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss";
.resi-container .resi-card-table {
::v-deep .el-table th {
color: #fff;
background-color: rgba(33, 149, 254, 1);
// border-right: 1px solid rgba(33, 149, 254, 1);
}
}
.resi-table {
::v-deep .el-button--text {
text-decoration: underline;
}
::v-deep .btn-color-del {
margin-left: 10px;
color: rgba(213, 16, 16, 1);
}
::v-deep .btn-color-edit {
color: rgba(0, 167, 169, 1);
}
}
.resi-row-btn {
margin-bottom: 13px;
.upload-btn {
display: inline-block;
margin: 0 10px;
}
}
.form-wr {
.input-width {
width: 260px;
}
.input-width-textarea {
width: 500px;
}
.imsg-list {
display: flex;
align-items: center;
.imgs-item {
position: relative;
margin-right: 10px;
.el-icon-delete {
position: absolute;
top: 0;
right: 0;
font-size: 18px;
color: red;
z-index: 3;
cursor: pointer;
}
}
}
}
.div-content {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
<style>
.el-table .warning-row {
background: #ffe168;
}
</style>
Loading…
Cancel
Save