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. 98
      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. 81
      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="item_row1" @click="handelClickToResi('GRID_MANAGER_FLAG')">
<div class="row_left">网格员</div> <div class="row_left">网格员</div>
<div class="row_right"> <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" /> <img src="@/assets/images/category/Enter.png" class="img" />
</div> </div>
@ -642,7 +642,7 @@
<div class="item_row2" @click="handelClickTovirtualResi('GRID_MANAGER_FLAG')"> <div class="item_row2" @click="handelClickTovirtualResi('GRID_MANAGER_FLAG')">
<div class="row_left">网格员(虚拟网格)</div> <div class="row_left">网格员(虚拟网格)</div>
<div class="row_right"> <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" /> <img src="@/assets/images/category/Enter.png" class="img" />
</div> </div>
</div> </div>

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

@ -75,7 +75,11 @@
</div> --> </div> -->
<div class="table-more-btn"> <div class="table-more-btn">
<el-button :headers="$getElUploadHeaders()" class="diy-button--other" size="small" type="text" <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>
<!-- <div <!-- <div
v-if=" v-if="
@ -868,9 +872,9 @@ export default {
// //
handleExportIDCard() { handleExportHouseDoorplate() {
let title = this.agencyObj.label; let title = this.agencyObj.label;
title = title + "电子门牌信息"; title = title + "房屋电子门牌信息";
let url = "/actual/base/communityHouse/downloadZip"; let url = "/actual/base/communityHouse/downloadZip";
console.log(this.agencyObj) console.log(this.agencyObj)
this.startLoading('正在生成,需要几分钟时间,请耐心等待...') 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() { handleExportYihuyidang() {
this.yihuyidangDisabled = true; this.yihuyidangDisabled = true;

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

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

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

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

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

@ -6,8 +6,8 @@
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'"> <el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div> <div>
<el-form-item label="事件类别" prop="firstIdList"> <el-form-item label="事件类别" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions" collapse-tags <el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions"
:show-all-levels="false" :props="{ collapse-tags :show-all-levels="false" :props="{
multiple: true, multiple: true,
checkStrictly: true, checkStrictly: true,
emitPath: false, emitPath: false,
@ -17,8 +17,8 @@
}" clearable class="u-item-width-normal" /> }" clearable class="u-item-width-normal" />
</el-form-item> </el-form-item>
<el-form-item label="工单编号" prop="workOrderNum"> <el-form-item label="工单编号" prop="workOrderNum">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small" clearable <el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small"
placeholder="请输入"> clearable placeholder="请输入">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="报件人电话" prop="mobile"> <el-form-item label="报件人电话" prop="mobile">
@ -27,41 +27,38 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="事件描述" prop="eventContent"> <el-form-item label="事件描述" prop="eventContent">
<el-input v-model.trim="formData.eventContent" class="u-item-width-normal" size="small" clearable <el-input v-model.trim="formData.eventContent" class="u-item-width-normal" size="small"
placeholder="请输入"> clearable placeholder="请输入">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="派件状态" prop="deliveryStatus"> <el-form-item label="派件状态" prop="deliveryStatus">
<el-select v-model.trim="formData.deliveryStatus" clearable class="u-item-width-normal"> <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-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="办理状态" prop="operationType"> <el-form-item label="办理状态" prop="operationType">
<el-select v-model.trim="formData.operationType" clearable class="u-item-width-normal"> <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-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="指派部门" prop="departId"> <el-form-item label="指派部门" prop="departId">
<el-cascader class="u-item-width-normal" <el-cascader class="u-item-width-normal" size="small" ref="myCascader"
size="small" v-model.trim="formData.departId" :options="orgOptions" :props="orgOptionProps"
ref="myCascader" :show-all-levels="false" @change="handleChangeAgency" clearable></el-cascader>
v-model.trim="formData.departId"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"
clearable></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="办结时限" prop="timeLimit"> <el-form-item label="办结时限" prop="limitEndTime">
<el-date-picker v-model.trim="formData.timeLimit" class="u-item-width-daterange" size="small" <el-date-picker v-model.trim="formData.limitStartTime" class="u-item-width-daterange"
type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="开始时间"> size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd"
placeholder="开始时间">
</el-date-picker> </el-date-picker>
<span class="u-data-tag"></span> <span class="u-data-tag"></span>
<el-date-picker v-model.trim="formData.limitEndTime" class="u-item-width-daterange u-data-tag" <el-date-picker v-model.trim="formData.limitEndTime"
size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" class="u-item-width-daterange u-data-tag" size="small" type="date"
placeholder="结束时间"> value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="结束时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-row> <el-row>
@ -80,20 +77,30 @@
<div class="div_btn"> <div class="div_btn">
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button> <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)"> @command="(command) => importTypeChange(command)">
导入 导入
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown"> -->
<el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item> <!-- <el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item> -->
<el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" action="uploadUlr" <!-- <el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn"
:limit="1" :accept="'.xls,.xlsx'" :with-credentials="true" :show-file-list="false" action="uploadUlr" :limit="1" :accept="'.xls,.xlsx'" :with-credentials="true"
:auto-upload="true" :on-progress="handleProgress" :on-success="handleExcelSuccess" :show-file-list="false" :auto-upload="true" :on-progress="handleProgress"
:before-upload="beforeExcelUpload" :http-request="uploadHttpRequest"> :on-success="handleExcelSuccess" :before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest">
<el-dropdown-item command="1">上传导入</el-dropdown-item> <el-dropdown-item command="1">上传导入</el-dropdown-item>
</el-upload> </el-upload>
</el-dropdown-menu> </el-dropdown-menu> -->
</el-dropdown> <!-- </el-dropdown> -->
</div> </div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%" <el-table :data="tableData" border class="m-table-item" style="width: 100%"
@selection-change="handleSelectionChange" :height="maxTableHeight"> @selection-change="handleSelectionChange" :height="maxTableHeight">
@ -112,7 +119,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="name" label="报件人" align="center" :show-overflow-tooltip="true"> <el-table-column prop="name" label="报件人" align="center" :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
<el-table-column prop="mobile" align="center" width="110" label="联系电话" > <el-table-column prop="mobile" align="center" width="110" label="联系电话">
<!-- <template slot-scope="scope"> <!-- <template slot-scope="scope">
<el-button <el-button
v-if="scope.row.reportUserId !== null && scope.row.reportUserId !== ''" v-if="scope.row.reportUserId !== null && scope.row.reportUserId !== ''"
@ -127,14 +134,17 @@
</span> </span>
</template> --> </template> -->
</el-table-column> </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="指派状态"
<!-- <template slot-scope="scope"> :show-overflow-tooltip="true">
<span v-if="scope.row.deliverystatus === 0">未指派</span> <template slot-scope="scope">
<span v-else-if="scope.row.deliverystatus ===1">已指派</span> <span v-if="scope.row.status === 'unassigned'">未指派</span>
<span v-else>--</span> <span v-else-if="scope.row.status ==='assigned'">已指派</span>
</template> --> <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>
<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"> <!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">未联系当事人</span> <span v-if="scope.row.handlestatus === 0">未联系当事人</span>
<span v-else-if="scope.row.handlestatus ===1">已联系当事人</span> <span v-else-if="scope.row.handlestatus ===1">已联系当事人</span>
@ -142,9 +152,11 @@
<span v-else>--</span> <span v-else>--</span>
</template> --> </template> -->
</el-table-column> </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>
<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>
<el-table-column fixed="right" label="操作" align="center" width="200px" prop="status"> <el-table-column fixed="right" label="操作" align="center" width="200px" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
@ -210,7 +222,7 @@ export default {
sarr: [], sarr: [],
ProcessingList: [ ProcessingList: [
{ {
value: "assigned ", value: "assigned",
label: "已指派", label: "已指派",
}, },
{ {

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

@ -136,6 +136,7 @@ border-left: #777 solid 1px;
color: #333333; color: #333333;
text-align: center; text-align: center;
margin-left: 5px; margin-left: 5px;
white-space: nowrap;
} }
.text1{ .text1{
font-size: 16px; font-size: 16px;
@ -179,6 +180,7 @@ border-left: #777 solid 1px;
color: #666666; color: #666666;
text-align: center; text-align: center;
margin-left: 5px; margin-left: 5px;
white-space: nowrap;
} }
.row_right { .row_right {
@ -345,6 +347,7 @@ border-left: #777 solid 1px;
color: #333333; color: #333333;
text-align: center; text-align: center;
margin-left: 5px; margin-left: 5px;
white-space: nowrap;
} }
.row_right { .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;"> <div style="display: flex;justify-content: space-between;flex-direction:row;">
<h1 style="font-size: 24px; font-weight: bold;"> 事件类型统计 </h1> <h1 style="font-size: 24px; font-weight: bold;"> 事件类型统计 </h1>
</div> </div>
<el-table <!-- <el-table
:data="tableList" :data="tableList"
style="width: 100%;" style="width: 100%;"
height="300"
row-key="id" row-key="id"
border border
default-expand-all default-expand-all
@ -114,45 +115,63 @@
<el-table-column <el-table-column
prop="level1" prop="level1"
label="一级分类" label="一级分类"
sortable
width="150"> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="level2" prop="level2"
label="二级分类" label="二级分类"
sortable
width="150"> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="level3" prop="level3"
label="三级分类" label="三级分类"
sortable
width="150"> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="level4" prop="level4"
label="四级分类" label="四级分类"
sortable
width="150"> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="eventCount" prop="eventCount"
label="事件数量" label="事件数量"
sortable
width="150"> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="proportion" prop="proportion"
label="同级占比" label="同级占比"
sortable
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.proportion }}% {{ scope.row.proportion }}%
</template> </template>
</el-table-column> </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> </el-table>
<div style="display: flex;justify-content: space-between;flex-direction:row; height:500px"> <div style="display: flex;justify-content: space-between;flex-direction:row; height:500px">
<div style="display: flex;width: 49%; flex-direction:column;"> <div style="display: flex;width: 49%; flex-direction:column;">
<h1 style="font-size: 24px; font-weight: bold; margin: 20px 0;"> 部门科室工单量统计 </h1> <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); const { data, code, msg } = await requestPost(url, param);
if (code === 0) { if (code === 0) {
this.tableList=this.flattenTree(data); this.tableList=data
// this.tableList=this.flattenTree(data);
console.log(this.tableList); console.log(this.tableList);
console.log(this.tableList,"lksdjfklj s"); console.log(this.tableList,"lksdjfklj s");
} else { } else {
@ -894,15 +914,14 @@ export default {
// //
getLastMonthRange() { getLastMonthRange() {
const now = new Date(); const now = new Date();
const firstDayOfCurrentMonth = new Date(now.getFullYear(), now.getMonth(), 1); const startOfYear = new Date(now.getFullYear(), 0, 1); // 11
const lastDayOfLastMonth = new Date(firstDayOfCurrentMonth - 1); const endOfYear = new Date(now.getFullYear(), 11, 31); // 1231
const firstDayOfLastMonth = new Date(lastDayOfLastMonth.getFullYear(), lastDayOfLastMonth.getMonth(), 1);
firstDayOfLastMonth.setHours(0, 0, 0, 0); startOfYear.setHours(0, 0, 0, 0);
lastDayOfLastMonth.setHours(23, 59, 59, 999); endOfYear.setHours(23, 59, 59, 999);
this.formData.queryDateStart =this.formatDate1(firstDayOfLastMonth), this.formData.queryDateStart =this.formatDate1(startOfYear),
this.formData.queryDateEnd=this.formatDate1(lastDayOfLastMonth) this.formData.queryDateEnd=this.formatDate1(endOfYear)
console.log(this.formData.queryDateEnd); console.log(this.formData.queryDateEnd);
}, },
// //

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

@ -24,7 +24,7 @@
<div class="div-btn"> <div class="div-btn">
<el-button size="small" @click="handleClose">关闭</el-button> <el-button size="small" @click="handleClose">关闭</el-button>
<el-button style="margin-left: 20px" type="primary" size="small" <el-button style="margin-left: 20px" type="primary" size="small"
@click="handleComfirm">保存</el-button> @click="handleComfirm">{{this.pageType=="assign"?"确认指派":"保存"}}</el-button>
</div> </div>
</el-card> </el-card>
</div> </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 }], contactFailureList: [{ label: '已接通', value: 1 }, { label: '未接通', value: 0 }],
coordinateList: [{ label: '配合', value: 0 }, { label: '未配合', value: 1 }], coordinateList: [{ label: '配合', value: 0 }, { label: '未配合', value: 1 }],
examineList: [{ label: '合格', value: 0 }, { label: '不合格', value: 1 }], examineList: [{ label: '合格', value: 0 }, { label: '不合格', value: 1 }],
satisfactionType : [
{
label: '满意',
value: 'perfect'
},
{
label: '基本满意',
value: 'good'
},
{
label: '不满意',
value: 'bad'
}
],
dataRule: { dataRule: {
content: [ content: [
{ required: true, message: "办理情况不能为空", trigger: "blur" }, { required: true, message: "办理情况不能为空", trigger: "blur" },
@ -354,6 +368,7 @@ export default {
console.log(newVal,'bianle'); console.log(newVal,'bianle');
if(this.pageType === 'check'){ if(this.pageType === 'check'){
this.formData = newVal; this.formData = newVal;
console.log(this.formData);
if(this.formData.internalFile){ if(this.formData.internalFile){
this.imgList = this.formData.internalFile.filter(item=>item.attachmentType==='image') this.imgList = this.formData.internalFile.filter(item=>item.attachmentType==='image')
this.audioList = this.formData.internalFile.filter(item=>item.attachmentType==='voice') 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"> <div class="div_btn">
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button> <el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button>
<el-button class="diy-button--white" size="small">
<el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px" <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)"> @command="(command) => handleMarkDiffcult(command)">
导入 导入
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown"> -->
<el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item> <!-- <el-dropdown-item command="0" @click.native="handleExportModule">下载模板</el-dropdown-item> -->
<el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" action="uploadUlr" <!-- <el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" action="uploadUlr"
:limit="1" :accept="'.xls,.xlsx'" :with-credentials="true" :show-file-list="false" :limit="1" :accept="'.xls,.xlsx'" :with-credentials="true" :show-file-list="false"
:auto-upload="true" :on-progress="handleProgress" :on-success="handleExcelSuccess" :auto-upload="true" :on-progress="handleProgress" :on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload" :http-request="uploadHttpRequest"> :before-upload="beforeExcelUpload" :http-request="uploadHttpRequest">
<el-dropdown-item command="1">上传导入</el-dropdown-item> <el-dropdown-item command="1">上传导入</el-dropdown-item>
</el-upload> </el-upload>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown> -->
</div> </div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%" <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 prop="limitTime" align="center" width="110" label="办结时限(部门)" :show-overflow-tooltip="true">
</el-table-column> </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"> :show-overflow-tooltip="true">
<!-- <template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">联系当事人超期</span> <span v-if="scope.row.status === 'unassigned'">未指派</span>
<span v-else-if="scope.row.handlestatus ===1">部门办结超期</span> <span v-else-if="scope.row.status ==='assigned'">已指派</span>
<span v-else>--</span> <span v-else-if="scope.row.status ==='closed_case'">已办结</span>
</template> --> <span v-else="scope.row.status ==='processing'">处理中</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="limitStatus" align="center" width="110" label="办理超期" <el-table-column prop="limitStatus" align="center" width="110" label="办理超期"
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">

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

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

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

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

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

@ -45,6 +45,12 @@
</el-date-picker> </el-date-picker>
</div> </div>
</el-form-item> </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> </el-form>
</div> </div>
</template> </template>
@ -64,6 +70,7 @@ export default {
categoryId: "",// categoryId: "",//
deptId: "", // deptId: "", //
deptName: "", deptName: "",
sendMsg:1,
categoryList: [], categoryList: [],
files: [] // files: [] //
}, },
@ -205,11 +212,11 @@ export default {
handleChangeAgency(val) { handleChangeAgency(val) {
let obj = this.$refs["agencyIdArray"].getCheckedNodes()[0].data let obj = this.$refs["agencyIdArray"].getCheckedNodes()[0].data
if (obj) { 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.deptId = obj.agencyId
this.formData.deptName = obj.agencyName this.formData.deptName = obj.agencyName
} else { } else {
this.form.orgType = '' this.form.level = ''
this.form.orgId = '' this.form.orgId = ''
} }
}, },

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

@ -87,6 +87,15 @@
</el-select> </el-select>
</el-form-item> </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-row>
<el-col :span="24" align="right"> <el-col :span="24" align="right">
<el-button style="margin-left: 30px" size="small" type="primary " <el-button style="margin-left: 30px" size="small" type="primary "
@ -116,10 +125,11 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button @click="handleCancalDiffcult" class="diy-button--white" size="small">取消标记</el-button> <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> </div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%" <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="selection" align="center" width="50" />
<el-table-column label="序号" fixed="left" type="index" 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 prop="address" align="center" :show-overflow-tooltip="true" label="地址">
</el-table-column> </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 prop="name" align="center" width="100" label="上报人" :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
@ -190,7 +206,7 @@
<el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true" <el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true"
label="上报时间"> label="上报时间">
</el-table-column> </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="当前结点"> label="当前结点">
</el-table-column> </el-table-column>
<el-table-column prop="status" align="center" label="状态" width="80" :show-overflow-tooltip="true"> <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> <el-button size="small" @click="showVoice = false">取消</el-button>
</div> </div>
</el-dialog> </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> </div>
</template> </template>
@ -357,6 +386,21 @@ export default {
}, },
], ],
overPeriodArray: [
{
value: "0",
label: "2天以下",
},
{
value: "1",
label: "3-4天",
},
{
value: "2",
label: "4天以上",
},
],
qudaoArray: [ qudaoArray: [
{ {
value: "0", value: "0",
@ -424,9 +468,14 @@ export default {
eventDetailData: {}, eventDetailData: {},
showVoice: false, showVoice: false,
showSupervise: false,
selVoiceUrl: "", selVoiceUrl: "",
multipleSelection: [], multipleSelection: [],
superviseFrom:{
content: "",
},
}; };
}, },
computed: { 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) { handleLook(row) {
let { name,reportUserId } = row let { name,reportUserId } = row
@ -527,6 +589,29 @@ export default {
this.$message.error(msg); 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) { handleSearch(val) {
this.pageNo = 1; this.pageNo = 1;
@ -893,3 +978,18 @@ export default {
color: #fff; color: #fff;
} }
</style> </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>

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

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

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

@ -78,6 +78,12 @@
{{ scope.row.defaultRole == '0' ? 'X' : '√' }} {{ scope.row.defaultRole == '0' ? 'X' : '√' }}
</template> </template>
</el-table-column> </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" <el-table-column prop="remark"
header-align="center" header-align="center"
align="center" align="center"

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

@ -22,6 +22,18 @@
</el-form-item> </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="备注" <el-form-item label="备注"
prop="remark" prop="remark"
label-width="150px" label-width="150px"
@ -107,13 +119,16 @@ export default {
}, },
defaultRole: '', defaultRole: '',
orgLevels: []
} }
}, },
components: {}, components: {},
async mounted () { mounted () {
this.listOrgLevels4Roles()
},
activated() {
this.listOrgLevels4Roles()
}, },
methods: { methods: {
@ -314,6 +329,14 @@ export default {
if (loading) { if (loading) {
loading.close() loading.close()
} }
},
//
listOrgLevels4Roles() {
requestGet('/gov/access/govrole/orgLevels/list').then(({code, data, msg}) => {
this.orgLevels = data
console.log("行政组织级别:", data)
})
} }
}, },
computed: { computed: {
@ -322,8 +345,6 @@ export default {
name: [ name: [
{ required: true, message: '角色名称不能为空', trigger: 'change' } { required: true, message: '角色名称不能为空', trigger: 'change' }
], ],
} }
}, },

Loading…
Cancel
Save