Browse Source

Merge branch 'feature' of http://120.46.222.128:10021/elink-star/epmet-work-pc into 7.31

# Conflicts:
#	src/views/modules/shequzhili/Delivery/index.vue
7.31
mk 1 year ago
parent
commit
a27805ee32
  1. 4
      src/views/modules/base/classification/index.vue
  2. 41
      src/views/modules/base/community/communityTable.vue
  3. 83
      src/views/modules/base/organization/organization.vue
  4. 3
      src/views/modules/communityParty/activity/index.vue
  5. 94
      src/views/modules/shequzhili/Delivery/index.vue
  6. 3
      src/views/modules/shequzhili/analysis/css/index.scss
  7. 61
      src/views/modules/shequzhili/analysis/index.vue
  8. 2
      src/views/modules/shequzhili/event/cpts/event-info.vue
  9. 15
      src/views/modules/shequzhili/event/cpts/process-form-complete.vue
  10. 32
      src/views/modules/shequzhili/eventHandling/index.vue
  11. 68
      src/views/modules/shequzhili/eventOld/cpts/add.vue
  12. 21
      src/views/modules/shequzhili/eventOld/cpts/event-detail.vue
  13. 14
      src/views/modules/shequzhili/eventOld/cpts/event-info.vue
  14. 11
      src/views/modules/shequzhili/eventOld/cpts/process-form-designate.vue
  15. 104
      src/views/modules/shequzhili/eventOld/eventList.vue
  16. 79
      src/views/modules/shequzhili/timeOut/index.vue
  17. 6
      src/views/modules/workSys/role/role.vue
  18. 31
      src/views/modules/workSys/role/roleForm.vue

4
src/views/modules/base/classification/index.vue

@ -634,7 +634,7 @@
<div class="item_row1" @click="handelClickToResi('GRID_MANAGER_FLAG')">
<div class="row_left">网格员</div>
<div class="row_right">
<div class="text">{{ categoryList.gridManagerFlagCount || 0 }}</div>
<div class="text">{{ categoryList.gridMemberFlagCount || 0 }}</div>
<img src="@/assets/images/category/Enter.png" class="img" />
</div>
@ -642,7 +642,7 @@
<div class="item_row2" @click="handelClickTovirtualResi('GRID_MANAGER_FLAG')">
<div class="row_left">网格员(虚拟网格)</div>
<div class="row_right">
<div class="text">{{ categoryList.gridManagerFlagVirtualCount || 0 }}</div>
<div class="text">{{ categoryList.gridMemberFlagVirtualCount || 0 }}</div>
<img src="@/assets/images/category/Enter.png" class="img" />
</div>
</div>

41
src/views/modules/base/community/communityTable.vue

@ -75,7 +75,11 @@
</div> -->
<div class="table-more-btn">
<el-button :headers="$getElUploadHeaders()" class="diy-button--other" size="small" type="text"
@click="handleExportIDCard()">下载电子门牌</el-button>
@click="handleExportHouseDoorplate()">下载房屋电子门牌</el-button>
</div>
<div class="table-more-btn">
<el-button :headers="$getElUploadHeaders()" class="diy-button--other" size="small" type="text"
@click="handleExportUnitDoorplate()">下载单元电子门牌</el-button>
</div>
<!-- <div
v-if="
@ -868,9 +872,9 @@ export default {
//
handleExportIDCard() {
handleExportHouseDoorplate() {
let title = this.agencyObj.label;
title = title + "电子门牌信息";
title = title + "房屋电子门牌信息";
let url = "/actual/base/communityHouse/downloadZip";
console.log(this.agencyObj)
this.startLoading('正在生成,需要几分钟时间,请耐心等待...')
@ -912,6 +916,37 @@ export default {
}
);
},
handleExportUnitDoorplate() {
let title = this.agencyObj.label;
title = title + "单元电子门牌信息";
let url = "/actual/base/communityBuildingUnit/downloadUnitDoorplateZip";
this.startLoading('正在生成,需要几分钟时间,请耐心等待...')
let params = {
level:this.agencyObj.level ,
id:this.agencyObj.id,
};
// if (this.agencyObj.level === "grid") {
// params.gridId = this.agencyObj.id;
// params.agencyId = "";
// } else {
// params.gridId = "";
// params.agencyId = this.agencyObj.id;
// }
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
console.log(data)
this.download(data, title + ".zip");
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
handleExportYihuyidang() {
this.yihuyidangDisabled = true;

83
src/views/modules/base/organization/organization.vue

@ -1347,14 +1347,13 @@ export default {
orgOptionProps :{
multiple: true,
emitPath: true,
value: 'id',
label: 'label',
children: 'children',
checkStrictly: true,
lazy: true,
lazyLoad: (node, resolve) => {
this.loadOptions(node, resolve)
},
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
// lazyLoad: (node, resolve) => {
// this.loadOptions(node, resolve)
// },
},
dialogVisiblePeoAgency:false,//
@ -1422,40 +1421,42 @@ export default {
methods: {
getOrgTreeList () {
this.$http
.get('/actual/base/communityBuilding/tree/initTree', {})
.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)
console.log(this.orgOptions,"sdkfhkjdfs");
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
async loadOptions(node, resolve) {
let data1 =node.data;
if (data1.level == 'district') {
resolve(this.orgOptions);
// async loadOptions(node, resolve) {
// let data1 =node.data;
// if (data1.level == 'district') {
// resolve(this.orgOptions);
} else {
if(data1.level !== "building"){
const url = "/actual/base/communityBuilding/tree/nextTreeNode";
let params = {
level:data1.level,
id:data1.id
};
const { data, code, msg } =await requestGet(url, params);
data1.children=data
resolve(data);
}else{
return resolve()
}
// } else {
// if(data1.level !== "building"){
// const url = "/actual/base/communityBuilding/tree/nextTreeNode";
// let params = {
// level:data1.level,
// id:data1.id
// };
// const { data, code, msg } =await requestGet(url, params);
// data1.children=data
// resolve(data);
// }else{
// return resolve()
// }
}
},
// }
// },
// id
handleChangeTransferCascader (e) {
function findItem (valueArr, coll) {
@ -1756,6 +1757,7 @@ export default {
// level agencyId
this.extractLevelAndAgencyId(this.orgOptions[0], targetAgencyIds, result);
// Set
const manageScopeArray = Array.from(result);
const url = "/gov/org/staff/editstaff";
let params = {
@ -1790,14 +1792,12 @@ export default {
// JSON level agencyId
extractLevelAndAgencyId(obj, agencyIds, result) {
if (obj && typeof obj === 'object') {
console.log(obj,"1111");
if (obj.level && obj.id && agencyIds.includes(obj.id)) {
result.add(`${obj.level}:${obj.id}`);
if (obj.level && obj.agencyId && agencyIds.includes(obj.agencyId)) {
result.add(`${obj.level}:${obj.agencyId}`);
}
if (Array.isArray(obj.children)) {
obj.children.forEach(subObj => {
if (Array.isArray(obj.subAgencyList)) {
obj.subAgencyList.forEach(subObj => {
this.extractLevelAndAgencyId(subObj, agencyIds, result);
});
}
@ -2138,11 +2138,10 @@ export default {
//
async xiuPeo (row) {
console.log("修改人员");
console.log(row);
this.modifyPeo = true;
this.peoForm.orgType = "agency";
this.userStaffId = row.staffId;
const url = "/gov/org/staff/editstaffinit";
let params = {
staffId: row.staffId,
@ -2150,12 +2149,14 @@ export default {
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
console.log("修改人员", data);
this.peoForm.name = data.name;
this.peoForm.mobile = data.mobile;
this.peoForm.post = data.workType;
// this.peoForm.gender = data.gender === 1 ? '' : ''
this.peoForm.gender = data.gender;
this.peoForm.idCard = data.idCard;
this.peoForm.agencyName=data.agencyName;
//
let existedRoleArr = [];
data.newRoleList.forEach(function (sysRole) {
@ -2171,15 +2172,14 @@ export default {
}
},
findParentPath(data,agencyIds) {
console.log(data,agencyIds,"dskck");
let paths = [];
function findPathRecursive(agencyId, node, path) {
function findPathRecursive(agencyId, node, path) {;
if (node.agencyId === agencyId) {
path.push(agencyId);
paths.push(path.slice()); // Make a copy of the path array before pushing
return true;
}
if (node.subAgencyList) {
for (let i = 0; i < node.subAgencyList.length; i++) {
if (findPathRecursive(agencyId, node.subAgencyList[i], path.concat(node.agencyId))) {
@ -2190,11 +2190,10 @@ export default {
return false;
}
agencyIds.forEach(agencyId => {
findPathRecursive(agencyId, data, []);
});
console.log(paths,"paths");
return paths;
},
//

3
src/views/modules/communityParty/activity/index.vue

@ -283,7 +283,6 @@
},
async communityActivityList() {
const url = "/actual/base/communityActivity/page";
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
@ -398,7 +397,7 @@
pageSize: 10,
pageNo: 1,
typeName: "",
enabled: 1
enabled: 0
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {

94
src/views/modules/shequzhili/Delivery/index.vue

@ -6,8 +6,8 @@
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div>
<el-form-item label="事件类别" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions" collapse-tags
:show-all-levels="false" :props="{
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions"
collapse-tags :show-all-levels="false" :props="{
multiple: true,
checkStrictly: true,
emitPath: false,
@ -17,8 +17,8 @@
}" clearable class="u-item-width-normal" />
</el-form-item>
<el-form-item label="工单编号" prop="workOrderNum">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small" clearable
placeholder="请输入">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small"
clearable placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="报件人电话" prop="mobile">
@ -27,41 +27,38 @@
</el-input>
</el-form-item>
<el-form-item label="事件描述" prop="eventContent">
<el-input v-model.trim="formData.eventContent" class="u-item-width-normal" size="small" clearable
placeholder="请输入">
<el-input v-model.trim="formData.eventContent" class="u-item-width-normal" size="small"
clearable placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="派件状态" prop="deliveryStatus">
<el-select v-model.trim="formData.deliveryStatus" clearable class="u-item-width-normal">
<el-option v-for="item in ProcessingList" :key="item.value" :label="item.label" :value="item.value">
<el-option v-for="item in ProcessingList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="办理状态" prop="operationType">
<el-select v-model.trim="formData.operationType" clearable class="u-item-width-normal">
<el-option v-for="item in handleList" :key="item.value" :label="item.label" :value="item.value">
<el-option v-for="item in handleList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指派部门" prop="departId">
<el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model.trim="formData.departId"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"
clearable></el-cascader>
<el-cascader class="u-item-width-normal" size="small" ref="myCascader"
v-model.trim="formData.departId" :options="orgOptions" :props="orgOptionProps"
:show-all-levels="false" @change="handleChangeAgency" clearable></el-cascader>
</el-form-item>
<el-form-item label="办结时限" prop="timeLimit">
<el-date-picker v-model.trim="formData.timeLimit" class="u-item-width-daterange" size="small"
type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="开始时间">
<el-form-item label="办结时限" prop="limitEndTime">
<el-date-picker v-model.trim="formData.limitStartTime" class="u-item-width-daterange"
size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd"
placeholder="开始时间">
</el-date-picker>
<span class="u-data-tag"></span>
<el-date-picker v-model.trim="formData.limitEndTime" class="u-item-width-daterange u-data-tag"
size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd"
placeholder="结束时间">
<el-date-picker v-model.trim="formData.limitEndTime"
class="u-item-width-daterange u-data-tag" size="small" type="date"
value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-row>
@ -80,20 +77,30 @@
<div class="div_btn">
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button>
<el-button class="diy-button--white" size="small">
<el-upload :headers="$getElUploadHeaders()" 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-upload>
</el-button>
<el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px"
<!-- <el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px"
@command="(command) => importTypeChange(command)">
导入
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item>
<el-upload :headers="$getElUploadHeaders()" 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-dropdown-menu slot="dropdown"> -->
<!-- <el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item> -->
<!-- <el-upload :headers="$getElUploadHeaders()" 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-dropdown-item command="1">上传导入</el-dropdown-item>
</el-upload>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown-menu> -->
<!-- </el-dropdown> -->
</div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%"
@selection-change="handleSelectionChange" :height="maxTableHeight">
@ -127,14 +134,17 @@
</span>
</template> -->
</el-table-column>
<el-table-column prop="statusName" align="center" width="110" label="指派状态" :show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.deliverystatus === 0">未指派</span>
<span v-else-if="scope.row.deliverystatus ===1">已指派</span>
<span v-else>--</span>
</template> -->
<el-table-column prop="statusName" align="center" width="110" label="指派状态"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.status === 'unassigned'">未指派</span>
<span v-else-if="scope.row.status ==='assigned'">已指派</span>
<span v-else-if="scope.row.status ==='closed_case'">已办结</span>
<span v-else="scope.row.status ==='processing'">处理中</span>
</template>
</el-table-column>
<el-table-column prop="operationTypeName" align="center" width="110" label="办理状态" :show-overflow-tooltip="true">
<el-table-column prop="operationTypeName" align="center" width="110" label="办理状态"
:show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">未联系当事人</span>
<span v-else-if="scope.row.handlestatus ===1">已联系当事人</span>
@ -142,9 +152,11 @@
<span v-else>--</span>
</template> -->
</el-table-column>
<el-table-column prop="deptName" align="center" width="110" label="指定部门" :show-overflow-tooltip="true">
<el-table-column prop="deptName" align="center" width="110" label="指定部门"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="limitTime" align="center" width="110" label="办结时限(部门)" :show-overflow-tooltip="true">
<el-table-column prop="limitTime" align="center" width="110" label="办结时限(部门)"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200px" prop="status">
<template slot-scope="scope">

3
src/views/modules/shequzhili/analysis/css/index.scss

@ -136,6 +136,7 @@ border-left: #777 solid 1px;
color: #333333;
text-align: center;
margin-left: 5px;
white-space: nowrap;
}
.text1{
font-size: 16px;
@ -179,6 +180,7 @@ border-left: #777 solid 1px;
color: #666666;
text-align: center;
margin-left: 5px;
white-space: nowrap;
}
.row_right {
@ -345,6 +347,7 @@ border-left: #777 solid 1px;
color: #333333;
text-align: center;
margin-left: 5px;
white-space: nowrap;
}
.row_right {

61
src/views/modules/shequzhili/analysis/index.vue

@ -104,9 +104,10 @@
<div style="display: flex;justify-content: space-between;flex-direction:row;">
<h1 style="font-size: 24px; font-weight: bold;"> 事件类型统计 </h1>
</div>
<el-table
<!-- <el-table
:data="tableList"
style="width: 100%;"
height="300"
row-key="id"
border
default-expand-all
@ -114,45 +115,63 @@
<el-table-column
prop="level1"
label="一级分类"
sortable
width="150">
>
</el-table-column>
<el-table-column
prop="level2"
label="二级分类"
sortable
width="150">
>
</el-table-column>
<el-table-column
prop="level3"
label="三级分类"
sortable
width="150">
>
</el-table-column>
<el-table-column
prop="level4"
label="四级分类"
sortable
width="150">
>
</el-table-column>
<el-table-column
prop="eventCount"
label="事件数量"
sortable
width="150">
>
</el-table-column>
<el-table-column
prop="proportion"
label="同级占比"
sortable
>
<template slot-scope="scope">
{{ scope.row.proportion }}%
</template>
</el-table-column>
</el-table> -->
<el-table
:data="tableList"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
border
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
prop="categoryName"
label="事件类型">
</el-table-column>
<el-table-column
prop="eventCount"
label="事件数量">
</el-table-column>
<el-table-column
prop="proportion"
label="同级占比"
>
</el-table-column>
</el-table>
<div style="display: flex;justify-content: space-between;flex-direction:row; height:500px">
<div style="display: flex;width: 49%; flex-direction:column;">
<h1 style="font-size: 24px; font-weight: bold; margin: 20px 0;"> 部门科室工单量统计 </h1>
@ -871,7 +890,8 @@ export default {
}
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
this.tableList=this.flattenTree(data);
this.tableList=data
// this.tableList=this.flattenTree(data);
console.log(this.tableList);
console.log(this.tableList,"lksdjfklj s");
} else {
@ -894,15 +914,14 @@ export default {
//
getLastMonthRange() {
const now = new Date();
const firstDayOfCurrentMonth = new Date(now.getFullYear(), now.getMonth(), 1);
const lastDayOfLastMonth = new Date(firstDayOfCurrentMonth - 1);
const firstDayOfLastMonth = new Date(lastDayOfLastMonth.getFullYear(), lastDayOfLastMonth.getMonth(), 1);
const startOfYear = new Date(now.getFullYear(), 0, 1); // 11
const endOfYear = new Date(now.getFullYear(), 11, 31); // 1231
firstDayOfLastMonth.setHours(0, 0, 0, 0);
lastDayOfLastMonth.setHours(23, 59, 59, 999);
startOfYear.setHours(0, 0, 0, 0);
endOfYear.setHours(23, 59, 59, 999);
this.formData.queryDateStart =this.formatDate1(firstDayOfLastMonth),
this.formData.queryDateEnd=this.formatDate1(lastDayOfLastMonth)
this.formData.queryDateStart =this.formatDate1(startOfYear),
this.formData.queryDateEnd=this.formatDate1(endOfYear)
console.log(this.formData.queryDateEnd);
},
//

2
src/views/modules/shequzhili/event/cpts/event-info.vue

@ -24,7 +24,7 @@
<div class="div-btn">
<el-button size="small" @click="handleClose">关闭</el-button>
<el-button style="margin-left: 20px" type="primary" size="small"
@click="handleComfirm">保存</el-button>
@click="handleComfirm">{{this.pageType=="assign"?"确认指派":"保存"}}</el-button>
</div>
</el-card>
</div>

15
src/views/modules/shequzhili/event/cpts/process-form-complete.vue

@ -285,6 +285,20 @@ export default {
contactFailureList: [{ label: '已接通', value: 1 }, { label: '未接通', value: 0 }],
coordinateList: [{ label: '配合', value: 0 }, { label: '未配合', value: 1 }],
examineList: [{ label: '合格', value: 0 }, { label: '不合格', value: 1 }],
satisfactionType : [
{
label: '满意',
value: 'perfect'
},
{
label: '基本满意',
value: 'good'
},
{
label: '不满意',
value: 'bad'
}
],
dataRule: {
content: [
{ required: true, message: "办理情况不能为空", trigger: "blur" },
@ -354,6 +368,7 @@ export default {
console.log(newVal,'bianle');
if(this.pageType === 'check'){
this.formData = newVal;
console.log(this.formData);
if(this.formData.internalFile){
this.imgList = this.formData.internalFile.filter(item=>item.attachmentType==='image')
this.audioList = this.formData.internalFile.filter(item=>item.attachmentType==='voice')

32
src/views/modules/shequzhili/eventHandling/index.vue

@ -69,20 +69,27 @@
<div class="div_btn">
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button>
<el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px"
<el-button class="diy-button--white" size="small">
<el-upload :headers="$getElUploadHeaders()" 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-upload>
</el-button>
<!-- <el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px"
@command="(command) => handleMarkDiffcult(command)">
导入
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item>
<el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" action="uploadUlr"
<el-dropdown-menu slot="dropdown"> -->
<!-- <el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item> -->
<!-- <el-upload :headers="$getElUploadHeaders()" 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-dropdown-item command="1">上传导入</el-dropdown-item>
</el-upload>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown> -->
</div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%"
@ -116,13 +123,14 @@
<el-table-column prop="limitTime" align="center" width="110" label="办结时限(部门)" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="statusName" align="center" width="110" label="办理状态"
<el-table-column prop="status" align="center" width="110" label="办理状态"
:show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.handlestatus ===1">部门办结超期</span>
<span v-else>--</span>
</template> -->
<template slot-scope="scope">
<span v-if="scope.row.status === 'unassigned'">未指派</span>
<span v-else-if="scope.row.status ==='assigned'">已指派</span>
<span v-else-if="scope.row.status ==='closed_case'">已办结</span>
<span v-else="scope.row.status ==='processing'">处理中</span>
</template>
</el-table-column>
<el-table-column prop="limitStatus" align="center" width="110" label="办理超期"
:show-overflow-tooltip="true">

68
src/views/modules/shequzhili/eventOld/cpts/add.vue

@ -13,7 +13,30 @@
@change="handleChangeAgency" clearable></el-cascader>
</el-form-item>
<el-form-item label="上报人" prop="name" label-width="150px" style="display: block">
<el-form-item label="诉求类型" prop="demandType" label-width="150px" style="display: block">
<el-radio-group v-model.trim="formData.demandType" @change="handleDemandTypeChange">
<el-radio label="report">事件上报</el-radio>
<el-radio label="chengguan">城管事件</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="formData.demandType === 'chengguan'" label="有无责任单位" prop="responsibleUnit" label-width="150px" style="display: block">
<el-radio-group v-model.trim="formData.responsibleUnit" @change="cleanDataRule">
<el-radio label="yes"></el-radio>
<el-radio label="no"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="formData.demandType === 'chengguan' && formData.responsibleUnit === 'yes'" label="责任人" prop="responsibleName" label-width="150px" style="display: block">
<el-input class="cell-width-1" maxlength="10" placeholder="请输入责任人姓名" v-model.trim="formData.responsibleName">
</el-input>
</el-form-item>
<el-form-item v-if="formData.demandType === 'chengguan' && formData.responsibleUnit === 'yes'" label="联系电话" prop="responsibleMobile" label-width="150px" style="display: block">
<el-input class="cell-width-1" maxlength="30" placeholder="请输入责任人电话" v-model.trim="formData.responsibleMobile">
</el-input>
</el-form-item>
<el-form-item v-if="formData.demandType === 'report'" label="上报人" prop="name" label-width="150px" style="display: block">
<el-input class="cell-width-1" maxlength="10" placeholder="请输入上报人姓名" v-model.trim="formData.name">
</el-input>
<div>
@ -21,12 +44,12 @@
@click="handleShowPersonList">居民信息中选择</el-button>
</div>
</el-form-item>
<el-form-item label="联系电话" prop="mobile" label-width="150px" style="display: block">
<el-form-item v-if="formData.demandType === 'report'" label="联系电话" prop="mobile" label-width="150px" style="display: block">
<el-input class="cell-width-1" maxlength="30" placeholder="请输入联系电话 " v-model.trim="formData.mobile">
</el-input>
</el-form-item>
<el-form-item label="证件号" prop="idCard" label-width="150px" style="display: block">
<el-form-item v-if="formData.demandType === 'report'" label="证件号" prop="idCard" label-width="150px" style="display: block">
<el-input class="cell-width-1" maxlength="30" placeholder="请输入证件号"
v-model.trim="formData.idCard"></el-input>
</el-form-item>
@ -132,6 +155,7 @@ var geocoder; // 新建一个正逆地址解析类
function iniFmData() {
return {
demandType:"report",//
gridId: "", //
reportUserId: "", // ID
name: "", //
@ -148,6 +172,9 @@ function iniFmData() {
// operationType: '0',//
// content: '',//
// status: '',// processingclosed_case
responsibleUnit:"yes",
responsibleName:"",
responsibleMobile:"",
};
}
@ -233,13 +260,25 @@ export default {
components: {},
computed: {
dataRule() {
const isReport = this.formData.demandType === "report";
const isChengguan = this.formData.responsibleUnit === "yes";
return {
gridId: [
{ required: true, message: "所属网格不能为空", trigger: "blur" },
],
name: [{ required: true, message: "上报人不能为空", trigger: "change" }],
demandType: [
{ required: true, message: "诉求类型不能为空", trigger: "blur" },
],
responsibleUnit: [
{ required: true, message: "有无责任单位不能为空", trigger: "blur" },
],
name: [{ required: isReport, message: "上报人不能为空", trigger: "change" }],
mobile: [
{ required: true, message: "联系电话不能为空", trigger: "blur" },
{ required: isReport, message: "联系电话不能为空", trigger: "blur" },
],
responsibleName: [{ required: isChengguan, message: "责任人不能为空", trigger: "blur" }],
responsibleMobile: [
{ required: isChengguan, message: "联系电话不能为空", trigger: "blur" },
],
// idCard: [
// { required: true, message: "", trigger: "blur" },
@ -311,6 +350,14 @@ export default {
);
this.obj.level = this.sarr[this.sarr.length - 1].level
},
handleDemandTypeChange() {
this.cleanDataRule(); //
this.formData.demandType = this.formData.demandType; //
},
cleanDataRule(){
this.$refs.ref_form1.clearValidate(); //
this.$refs.ref_form2.clearValidate(); //
},
getLastItem(list, vals, key) {
let LIST = list || [];
for (let item of LIST) {
@ -440,13 +487,22 @@ export default {
app.util.validateRule(messageObj);
return false;
} else {
if (!formVltHelper.userOrMobile(this.formData.mobile)) {
if (this.formData.demandType === "report" && !formVltHelper.userOrMobile(this.formData.mobile)) {
this.$message({
type: "error",
message: "联系电话格式有误",
});
return false;
}
if (this.formData.demandType === "chengguan" && this.formData.responsibleUnit === "yes" && !formVltHelper.userOrMobile(this.formData.responsibleMobile)) {
this.$message({
type: "error",
message: "责任人电话格式有误",
});
return false;
}
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X
if (
this.formData.idCard &&

21
src/views/modules/shequzhili/eventOld/cpts/event-detail.vue

@ -81,6 +81,27 @@
<span class="u-info-title-2">联系电话</span>
<span>{{ info.mobile }}</span>
</div>
<div :class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]" v-if="info.demandType==='chengguan'">
<span class="u-info-title-2">有无责任单位</span>
<span>{{ info.responsibleUnit==="yes" ? "有": "无" }}</span>
</div>
<div :class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]" v-if="info.responsibleUnit==='yes' && info.demandType==='chengguan'">
<span class="u-info-title-2">责任人</span>
<span>{{ info.responsibleName }}</span>
</div>
<div :class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]" v-if="info.responsibleUnit==='yes' && info.demandType==='chengguan'">
<span class="u-info-title-2">联系电话</span>
<span>{{ info.responsibleMobile }}</span>
</div>
<div :class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },

14
src/views/modules/shequzhili/eventOld/cpts/event-info.vue

@ -113,34 +113,34 @@
</div>
<template v-if="item.internalFile && item.internalFile.length > 0"
v-for="i in item.internalFile">
<template v-if="i.type === 'image'">
<template v-if="i.attachmentType === 'image'">
<div class="detail">
<div class="detail-field">图片</div>
<div
:class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<img :src="i.url" :key="i.url"
<img :src="i.attachmentUrl" :key="i.attachmentUrl"
style="width: 50px; height: 50px; padding-right: 10px"
@click="watchImg(i.url)" />
@click="watchImg(i.attachmentUrl)" />
</div>
</div>
</template>
<template v-if="i.type === 'voice'">
<template v-if="i.attachmentType === 'voice'">
<div class="detail">
<div class="detail-field">语音</div>
<div
:class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<audio controls>
<source :src="i.url" type="" :key="i.url" />
<source :src="i.attachmentUrl" type="" :key="i.attachmentUrl" />
</audio>
</div>
</div>
</template>
<template v-if="i.type === 'doc'">
<template v-if="i.attachmentType === 'doc'">
<div class="detail">
<div class="detail-field">附件</div>
<div
:class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<a :href="i.url">{{ i.name }}</a>
<a :href="i.attachmentUrl">{{ i.attachmentName }}</a>
</div>
</div>
</template>

11
src/views/modules/shequzhili/eventOld/cpts/process-form-designate.vue

@ -45,6 +45,12 @@
</el-date-picker>
</div>
</el-form-item>
<el-form-item label="" label-width="150px"
:class="{ 'form-item': source === 'visiual' }" style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-checkbox v-model="formData.sendMsg" :true-label="1" :false-label="0">短信通知部门负责人</el-checkbox>
</div>
</el-form-item>
</el-form>
</div>
</template>
@ -64,6 +70,7 @@ export default {
categoryId: "",//
deptId: "", //
deptName: "",
sendMsg:1,
categoryList: [],
files: [] //
},
@ -205,11 +212,11 @@ export default {
handleChangeAgency(val) {
let obj = this.$refs["agencyIdArray"].getCheckedNodes()[0].data
if (obj) {
this.formData.orgType = obj.level === 'grid' ? 'grid' : 'agency'
this.formData.level = obj.level === 'grid' ? 'grid' : 'agency'
this.formData.deptId = obj.agencyId
this.formData.deptName = obj.agencyName
} else {
this.form.orgType = ''
this.form.level = ''
this.form.orgId = ''
}
},

104
src/views/modules/shequzhili/eventOld/eventList.vue

@ -87,6 +87,15 @@
</el-select>
</el-form-item>
<el-form-item label="处理时长" prop="type">
<el-select class="u-item-width-normal" v-model.trim="formData.overPeriod" placeholder="全部" size="small"
clearable>
<el-option v-for="item in overPeriodArray" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-row>
<el-col :span="24" align="right">
<el-button style="margin-left: 30px" size="small" type="primary "
@ -116,10 +125,11 @@
</el-dropdown-menu>
</el-dropdown>
<el-button @click="handleCancalDiffcult" class="diy-button--white" size="small">取消标记</el-button>
<el-button @click="handleSuperviseEvent" class="diy-button--white" size="small">督办催办</el-button>
</div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%"
@selection-change="handleSelectionChange" :height="maxTableHeight">
@selection-change="handleSelectionChange" :height="maxTableHeight" :row-class-name="tableRowClassName">
<el-table-column label="" fixed="left" type="selection" align="center" width="50" />
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
@ -160,6 +170,12 @@
<el-table-column prop="address" align="center" :show-overflow-tooltip="true" label="地址">
</el-table-column>
<el-table-column prop="responsibleName" align="center" width="100" label="责任人" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="responsibleMobile" align="center" width="110" label="责任人电话" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="name" align="center" width="100" label="上报人" :show-overflow-tooltip="true">
</el-table-column>
@ -190,7 +206,7 @@
<el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true"
label="上报时间">
</el-table-column>
<el-table-column prop="userShowName" align="center" width="100" :show-overflow-tooltip="true"
<el-table-column prop="deptName" align="center" width="100" :show-overflow-tooltip="true"
label="当前结点">
</el-table-column>
<el-table-column prop="status" align="center" label="状态" width="80" :show-overflow-tooltip="true">
@ -252,6 +268,19 @@
<el-button size="small" @click="showVoice = false">取消</el-button>
</div>
</el-dialog>
<el-dialog :title="'督办催办'" :visible.sync="showSupervise" width="40%" top="5vh" append-to-body class="dialog-h"
:close-on-click-modal="false">
<el-form :model="superviseFrom" ref="superviseFrom">
<el-form-item label="催办说明" prop="content">
<el-input v-model.trim="superviseFrom.content" class="cell-width-2" type="textarea" maxlength="500" show-word-limit :rows="5" placeholder="请填写催办说明,不超过500字"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="showSupervise = false"> </el-button>
<el-button type="primary" @click="doSuperviseEvent"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -357,6 +386,21 @@ export default {
},
],
overPeriodArray: [
{
value: "0",
label: "2天以下",
},
{
value: "1",
label: "3-4天",
},
{
value: "2",
label: "4天以上",
},
],
qudaoArray: [
{
value: "0",
@ -424,9 +468,14 @@ export default {
eventDetailData: {},
showVoice: false,
showSupervise: false,
selVoiceUrl: "",
multipleSelection: [],
superviseFrom:{
content: "",
},
};
},
computed: {
@ -477,6 +526,19 @@ export default {
});
},
tableRowClassName({ row }) {
switch (row.overPeriod) {
case '0':
return 'row-over-period-0';
case '1':
return 'row-over-period-1';
case '2':
return 'row-over-period-2';
default:
return 'row-default';
}
},
//
handleLook(row) {
let { name,reportUserId } = row
@ -527,6 +589,29 @@ export default {
this.$message.error(msg);
}
},
async handleSuperviseEvent(){
this.showSupervise = true;
},
async doSuperviseEvent() {
const url = "/governance/icEventOld/doSuperviseEvent";
if (this.multipleSelection.length == 0) {
this.$message.warning('请选择督办催办的事件')
return
}
let params = {
icEventIdList: this.multipleSelection,
content: this.superviseFrom.content,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("督办催办成功");
this.getTableData();
} else {
this.$message.error(msg);
}
this.showSupervise = false;
},
handleSearch(val) {
this.pageNo = 1;
@ -893,3 +978,18 @@ export default {
color: #fff;
}
</style>
<style>
.row-over-period-0 {
background-color: #ffffe0 !important; /* 淡黄色 */
}
.row-over-period-1 {
background-color: #ffebcd !important; /* 淡橙色 */
}
.row-over-period-2 {
background-color: #ffc0cb !important; /* 淡红色 */
}
.row-default {
background-color: #e0ffe0 !important; /* 淡绿色 */
}
</style>

79
src/views/modules/shequzhili/timeOut/index.vue

@ -4,20 +4,20 @@
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div>
<el-form-item label="事件类别" prop="categoryAllName">
<el-cascader ref="cascaderEvent" v-model.trim="formData.categoryAllName" :options="cateOptions" collapse-tags
:show-all-levels="false" :props="{
<el-form-item label="事件类别" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions"
collapse-tags :show-all-levels="false" :props="{
multiple: true,
checkStrictly: false,
checkStrictly: true,
emitPath: false,
children: 'children',
label: 'categoryName',
value: 'id',
}" clearable class="u-item-width-normal" @change="handleEventType" />
}" clearable class="u-item-width-normal" />
</el-form-item>
<el-form-item label="工单编号" prop="workOrderNum">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small" clearable
placeholder="请输入">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small"
clearable placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="报件人电话" prop="mobile">
@ -26,28 +26,18 @@
</el-input>
</el-form-item>
<el-form-item label="事件描述" prop="eventContent">
<el-input v-model.trim="formData.eventContent" class="u-item-width-normal" size="small" clearable
placeholder="请输入">
<el-input v-model.trim="formData.eventContent" class="u-item-width-normal" size="small"
clearable placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="指派部门" prop="departId">
<el-cascader ref="cascaderEvent" v-model.trim="formData.departId" :options="cateOptions" collapse-tags
:show-all-levels="false" clearable class="u-item-width-normal" :props="{
multiple: true,
checkStrictly: true,
emitPath: false,
children: 'children',
label: 'categoryName',
value: 'id',
}" />
<el-cascader class="u-item-width-normal" size="small" ref="myCascader"
v-model.trim="formData.departId" :options="orgOptions" :props="orgOptionProps"
:show-all-levels="false" @change="handleChangeAgency" clearable></el-cascader>
</el-form-item>
<el-form-item label="办理状态" prop="operationType">
<el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model.trim="formData.operationType"
:options="ProcessingList"
:show-all-levels="false"
<el-cascader class="u-item-width-normal" size="small" ref="myCascader"
v-model.trim="formData.operationType" :options="ProcessingList" :show-all-levels="false"
clearable></el-cascader>
</el-form-item>
<el-form-item label="超时状态" prop="limitStatus">
@ -59,17 +49,18 @@
:show-all-levels="false"
clearable></el-cascader> -->
<el-select v-model.trim="formData.limitStatus" clearable class="u-item-width-normal">
<el-option v-for="item in timeoutList" :key="item.value" :label="item.label" :value="item.value">
<el-option v-for="item in timeoutList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="办结时限" prop="timeLimit">
<el-date-picker v-model.trim="formData.timeLimit"
class="u-item-width-daterange" size="small" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
<el-date-picker v-model.trim="formData.limitStartTime" class="u-item-width-daterange"
size="small" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
value="yyyy-MM-dd HH:mm:ss" placeholder="开始时间">
</el-date-picker>
<span class="u-data-tag"></span>
<el-date-picker v-model.trim="formData.endTime"
<el-date-picker v-model.trim="formData.limitEndTime"
class="u-item-width-daterange u-data-tag" size="small" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd HH:mm:ss" placeholder="结束时间">
</el-date-picker>
@ -133,16 +124,19 @@
</span>
</template>
</el-table-column> -->
<el-table-column prop="latestOperatedTime" align="center" width="110" label="部门办结时限" :show-overflow-tooltip="true">
<el-table-column prop="latestOperatedTime" align="center" width="110" label="部门办结时限"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="limitStatus" align="center" width="110" label="办理超期" :show-overflow-tooltip="true">
<el-table-column prop="limitStatus" align="center" width="110" label="办理超期"
:show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.deliverystatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.deliverystatus ===1">部门办结超期</span>
<span v-else>--</span>
</template> -->
</el-table-column>
<el-table-column prop="statusName" align="center" width="110" label="办理状态" :show-overflow-tooltip="true">
<el-table-column prop="statusName" align="center" width="110" label="办理状态"
:show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.handlestatus ===1">部门办结超期</span>
@ -153,7 +147,8 @@
<el-table-column fixed="right" label="操作" align="center" width="200px" prop="status">
<template slot-scope="scope">
<el-button @click="handleWatch(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleDispose(scope.row)" type="text" size="small" class="">催办</el-button>
<el-button @click="handleDispose(scope.row)" type="text" size="small"
class="">催办</el-button>
</template>
</el-table-column>
@ -171,10 +166,11 @@
<event-info ref="eleEditForm" :pageType="pageType" :eventId="eventId" :eventDetailData="eventDetailData"
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</div>
<el-dialog title="催办" :visible.sync="dialogVisible" width="650px" top="5vh" class="dialog-h" :before-close="handleClose">
<el-dialog title="催办" :visible.sync="dialogVisible" width="650px" top="5vh" class="dialog-h"
:before-close="handleClose">
<Urging ref="ref_form" v-if="dialogVisible" @dialogCancle="addFormCancle"
@dialogOk="addFormOk" :eventDetailData="eventDetailData"></Urging>
<Urging ref="ref_form" v-if="dialogVisible" @dialogCancle="addFormCancle" @dialogOk="addFormOk"
:eventDetailData="eventDetailData"></Urging>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"> </el-button>
@ -790,7 +786,18 @@ export default {
},
showAwoList(row) {
this.$refs.awoList.open(row)
}
},
handleChangeAgency(val) {
this.sarr = []
const map = new Map();
this.getLastItem(
this.orgOptions,
val,
"agencyId"
);
this.level = this.sarr[this.sarr.length - 1].level
this.formData.departId = this.sarr[this.sarr.length - 1].agencyId
},
},
};
</script>

6
src/views/modules/workSys/role/role.vue

@ -78,6 +78,12 @@
{{ scope.row.defaultRole == '0' ? 'X' : '√' }}
</template>
</el-table-column>
<el-table-column prop="levelName"
header-align="center"
align="center"
label="级别"
in-width="30">
</el-table-column>
<el-table-column prop="remark"
header-align="center"
align="center"

31
src/views/modules/workSys/role/roleForm.vue

@ -22,6 +22,18 @@
</el-form-item>
<el-form-item label="所属组织级别"
prop="level"
label-width="150px"
style="display: block">
<el-select v-model.trim="formData.level" placeholder="请选择" size="small"
class="list_item_width_1">
<el-option v-for="(item, index) in orgLevels" :key="item.code"
:label="item.name" :value="item.code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
@ -107,13 +119,16 @@ export default {
},
defaultRole: '',
orgLevels: []
}
},
components: {},
async mounted () {
mounted () {
this.listOrgLevels4Roles()
},
activated() {
this.listOrgLevels4Roles()
},
methods: {
@ -314,6 +329,14 @@ export default {
if (loading) {
loading.close()
}
},
//
listOrgLevels4Roles() {
requestGet('/gov/access/govrole/orgLevels/list').then(({code, data, msg}) => {
this.orgLevels = data
console.log("行政组织级别:", data)
})
}
},
computed: {
@ -322,8 +345,6 @@ export default {
name: [
{ required: true, message: '角色名称不能为空', trigger: 'change' }
],
}
},

Loading…
Cancel
Save