소스 검색

待处理/处理中

master
zhaodengke 1 년 전
부모
커밋
9b569f2607
5개의 변경된 파일363개의 추가작업 그리고 134개의 파일을 삭제
  1. +36
    -0
      src/api/agentcenter/task.js
  2. +10
    -0
      src/api/agentcenter/task_user.js
  3. +3
    -3
      src/views/allTasks/allTasks.vue
  4. +166
    -108
      src/views/processing/processing.vue
  5. +148
    -23
      src/views/toBeAllocated/toBeAllocated.vue

+ 36
- 0
src/api/agentcenter/task.js 파일 보기

@@ -26,3 +26,39 @@ export function managerUndistribTaskList(params) {
params: params,
})
}

// 分配任务
export function distribTask(data) {
return request({
url: '/manager/task/distrib',
method: 'post',
data: data,
})
}

// 全部任务
export function managerProcessingTaskList(params) {
return request({
url: '/manager/task/processingTaskList',
method: 'get',
params: params,
})
}

// 区总览(处理中)
export function managerCountyProcessingTaskSummary(params) {
return request({
url: '/manager/task/countyProcessingTaskSummary',
method: 'get',
params: params,
})
}

// 撤销任务
export function revokeTask(data) {
return request({
url: '/manager/task/revoke',
method: 'post',
data: data,
})
}

+ 10
- 0
src/api/agentcenter/task_user.js 파일 보기

@@ -0,0 +1,10 @@
import request from '@/utils/request'

// 任务用户列表
export function taskUserList(params) {
return request({
url: '/task/user/userList',
method: 'get',
params: params,
})
}

+ 3
- 3
src/views/allTasks/allTasks.vue 파일 보기

@@ -70,7 +70,7 @@
</el-col>
<el-col :span="2">记账:{{task.voucherCount}}</el-col>
<el-col :span="2">合同:{{task.contracCount}}</el-col>
<el-col :span="2">其他:{{task.allCount - task.voucherCount - task.contracCount}}</el-col>
<el-col :span="2">其他:{{task.otherCount}}</el-col>
<el-col :span="9" style="text-align: right"><el-button type="primary" size="mini" @click="gotoRemoteSite(task)">进入账套</el-button></el-col>
</el-row>
</div>
@@ -78,7 +78,7 @@
</el-table-column>

<el-table-column prop="orgName" label="村" show-overflow-tooltip />
<el-table-column prop="" label="合作社" show-overflow-tooltip />
<el-table-column prop="num" label="合作社" show-overflow-tooltip />
<el-table-column label="处理进度" show-overflow-tooltip >
<template slot-scope="scope">
{{scope.row.numProcessFinish}}/{{scope.row.num}}
@@ -98,7 +98,7 @@
<el-table-column prop="distriDate" label="下发日期" show-overflow-tooltip />
<el-table-column prop="endAt" label="截止日期" show-overflow-tooltip />
<el-table-column prop="handleDate" label="记账完成日期" show-overflow-tooltip />
<el-table-column prop="value8" label="是否审批完成" show-overflow-tooltip >
<el-table-column label="是否审批完成" show-overflow-tooltip >
<template slot-scope="scope">
<p class="backButton" v-if="!scope.row.approvalFinish">未完成</p>
<p class="backButton2" v-if="scope.row.approvalFinish">已完成</p>


+ 166
- 108
src/views/processing/processing.vue 파일 보기

@@ -6,12 +6,12 @@
<el-dropdown trigger="click" placement="bottom-start">
<div class="select_address el-dropdown-link">
<span class="sanjiao-right"></span>
<p>大足区</p>
<p>{{cityName}}</p>
</div>
<el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;">
<el-dropdown-item v-for="(item,index) in 5">
<div class="selected">
<p>张家镇</p>
<el-dropdown-item v-for="(item,index) in deptOptions" :command="item.orgCode">
<div class="selected" @click="chooseCity(item.orgCode)">
<p>{{item.deptName}}</p>
</div>
</el-dropdown-item>
</el-dropdown-menu>
@@ -20,21 +20,21 @@
<el-dropdown trigger="click" placement="bottom-start">
<div class="select_address el-dropdown-link">
<span class="sanjiao-right"></span>
<p>张家镇</p>
<p>{{townName}}</p>
</div>
<el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;">
<el-dropdown-item v-for="(item,index) in 5">
<div class="selected">
<p>张家镇</p>
<el-dropdown-item v-for="(item,index) in townList" :command="item.orgCode">
<div class="selected" @click="chooseTown(item.orgCode)">
<p>{{item.deptName}}</p>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

<p class="todo_num">剩余镇:<span>19</span>个</p>
<p class="todo_num1">剩余村庄:<span>19</span>个</p>
<p class="todo_num1">剩余合作社:<span>19</span>个</p>
<p class="todo_num2">任务异常数:<span>1</span>个</p>
<p class="todo_num">剩余镇:<span>{{ countySummary.numTown }}</span>个</p>
<p class="todo_num1">剩余村庄:<span>{{ countySummary.numVillage }}</span>个</p>
<p class="todo_num1">剩余合作社:<span>{{ countySummary.numBook }}</span>个</p>
<p class="todo_num2">任务异常数:<span>{{ countySummary.abnormalCount }}</span>个</p>

</div>

@@ -42,44 +42,61 @@

<div class="left_main">
<el-collapse accordion>
<el-collapse-item v-for="(item,index) in 5" :key="index">
<el-collapse-item v-for="(item,index) in list" :key="index">
<template slot="title">
<div class="left_main_tt">
<p>东沙镇</p>
<div class="tt_label">
<p>异常:1</p>
<p>剩余村庄:20</p>
<p>剩余合作社:20</p>
<p>异常:{{item.numExcept}}</p>
<p>剩余村庄:{{item.numVillage}}</p>
<p>剩余合作社:{{item.num}}</p>
</div>
</div>
</template>
<el-table :data="tableData" style="width: 100%;" :default-sort = "{prop: 'date', order: 'descending'}">
<el-table :data="item.villageList" style="width: 100%;">

<el-table-column type="expand">
<template slot-scope="props">
<div class="openTable">
<el-row v-for="(item,index) in 5" :key="index">
<el-col span="9">康师傅合作社</el-col>
<el-col span="2">记账:3</el-col>
<el-col span="2">合同:3</el-col>
<el-col span="2">其他:3</el-col>
<el-col span="9" style="text-align: right"><el-button type="primary" size="mini">进入账套</el-button></el-col>
<el-row v-for="(task,index) in props.row.taskList" :key="index">
<el-col :span="9">
<div class="tab_main">
{{task.bookName}}
<span class="tab_red" v-if="task.abnormalCount > 0">异常:{{task.abnormalCount}}</span>
</div>
</el-col>
<el-col :span="2">记账:{{task.voucherCount}}</el-col>
<el-col :span="2">合同:{{task.contracCount}}</el-col>
<el-col :span="2">其他:{{task.otherCount}}</el-col>
<el-col :span="9" style="text-align: right"><el-button type="primary" size="mini" @click="gotoRemoteSite(task)">进入账套</el-button></el-col>
</el-row>
</div>
</template>
</el-table-column>

<el-table-column prop="value1" label="村" show-overflow-tooltip />
<el-table-column prop="value2" label="合作社" show-overflow-tooltip />
<el-table-column prop="value3" label="处理进度" show-overflow-tooltip />
<el-table-column prop="value4" label="异常任务" show-overflow-tooltip />
<el-table-column prop="value5" label="任务进度" show-overflow-tooltip />
<el-table-column prop="value6" label="会计" show-overflow-tooltip />
<el-table-column prop="value7" label="下发日期" show-overflow-tooltip />
<el-table-column prop="value7" label="截至日期" show-overflow-tooltip />
<el-table-column prop="value8" label="操作" show-overflow-tooltip >
<el-table-column prop="orgName" label="村" show-overflow-tooltip />
<el-table-column prop="num" label="合作社" show-overflow-tooltip />
<el-table-column label="处理进度" show-overflow-tooltip>
<template slot-scope="scope">
<p class="backButton">撤回</p>
{{scope.row.numProcessFinish}}/{{scope.row.num}}
</template>
</el-table-column>
<el-table-column prop="numExcept" label="异常任务" show-overflow-tooltip >
<template slot-scope="scope">
{{scope.row.numExcept || '无'}}
</template>
</el-table-column>
<el-table-column prop="value5" label="任务进度" show-overflow-tooltip >
<template slot-scope="scope">
{{scope.row.finishCount}}/{{scope.row.allCount}}
</template>
</el-table-column>
<el-table-column prop="handleNick" label="会计" show-overflow-tooltip />
<el-table-column prop="distriDate" label="下发日期" show-overflow-tooltip />
<el-table-column prop="endAt" label="截至日期" show-overflow-tooltip />
<el-table-column label="操作" show-overflow-tooltip >
<template slot-scope="scope">
<p class="backButton" @click="revokeVillageTask(scope.row)">撤回</p>
</template>
</el-table-column>

@@ -89,31 +106,7 @@

</div>

<div class="right_main">
<div class="title">
<i></i>
<p>任务日期</p>
</div>

<div class="time_main">
<span class="sanjiao-top" @click="addDate"></span>
<p @click = "selectionRange">{{year}}</p>
<el-date-picker
v-model="year"
type="year"
class="pickerTime"
ref = "datePicker"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
<span class="sanjiao-bottom" @click="reduceDate"></span>
</div>

<div class="month_main">
<p v-for="(item,index) in 12" :class="{'active':index==3}">{{index+1}}月<i v-if="index==3"></i></p>
</div>

</div>
<RightYearMonthSelector class="right_main" :year.sync="parms.orderYear" :month.sync="parms.orderMonth" @dateChanged="chooseMonth"/>

</div>

@@ -122,71 +115,116 @@
</template>

<script>
import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue";
import {date_format} from "@/utils/date";
import {cityTree} from "@/api/misc/misc_dept";
import {ENV} from "@/utils/env";
import {managerProcessingTaskList, managerCountyProcessingTaskSummary, revokeTask} from "@/api/agentcenter/task";

export default {
name: "processing",
components: {RightYearMonthSelector},
data() {
return {
tableData: [{
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}, {
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}, {
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}, {
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}],
year:'2023',
deptOptions: [],
list: [],
total: 0,
parms: {
countyCode: null,
townCode: null,
orderYear: date_format('%Y'),
orderMonth: date_format('%m'),
},
countySummary: {
numTown: 0,
numBook: 0,
abnormalCount: 0,
numVillage: 0,
}
}
},
created() {
this.getDeptTree();
},
methods:{
addDate(){
this.year = Number(this.year) + 1 ;
getDeptTree() {
cityTree({rootId: ENV.UserDeptId()}).then((resp) => {
this.deptOptions = resp.data;
if(this.deptOptions.length)
{
this.parms.countyCode = this.deptOptions[0].orgCode;
this.getSummary();
this.getTaskList();
}
});
},
getTaskList() {
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth)
return;
managerProcessingTaskList(this.parms).then((resp) => {
this.list = resp.rows;
this.total = resp.total;
})
},
reduceDate(){
this.year = Number(this.year) - 1 ;
chooseCity(cmd) {
this.parms.countyCode = cmd;
this.parms.townCode = null;
this.getTaskList();
this.getSummary();
},
selectionRange(){
this.$refs.datePicker.focus();
chooseTown(cmd) {
this.parms.townCode = cmd;
this.getTaskList();
},
chooseMonth(year, month) {
this.getSummary();
this.getTaskList();
},
gotoRemoteSite(task) {
window.open(`/api/open/book/${task.orgCode}/${task.bookId}`, '_blank');
},
getSummary() {
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth)
return;
managerCountyProcessingTaskSummary(this.parms).then((resp) => {
this.countySummary = resp.data;
})
},
revokeVillageTask(row) {
revokeTask({
orderYear: row.orderYear,
orderMonth: row.orderMonth,
orgCode: row.orgCode,
}).then((resp) => {
this.$message.success('撤回成功');
this.getSummary();
this.getTaskList();
});
},
},
mounted(){

}
},
computed: {
cityName() {
if(!this.deptOptions.length)
return '';
let dept = this.deptOptions.find((x) => x.orgCode === this.parms.countyCode);
return dept ? dept.deptName : '';
},
townList() {
if(!this.deptOptions.length)
return [];
let dept = this.deptOptions.find((x) => x.orgCode === this.parms.countyCode);
return dept ? dept.children || [] : [];
},
townName() {
if(!this.townList.length)
return '';
let dept = this.townList.find((x) => x.orgCode === this.parms.townCode);
return dept ? dept.deptName : '';
},
},
}
</script>

@@ -291,6 +329,25 @@ export default {
.el-col{
padding: 10px 0;
}
.tab_main{
display: flex;
span{
color: #ffffff;
background-color: #acabab;
padding: 2px 0px;
width: 4vw;
display: inline-block;
border-radius: 7px;
margin-right: 1vw;
text-align: center;
}
.tab_green{
background-color: #209955;
}
.tab_red{
background-color: #ef0027;
}
}
}

.header_main{
@@ -393,6 +450,7 @@ export default {
border-bottom: 1px solid #3976ff;
display: inline-block;
padding-bottom: 5px;
cursor: pointer;
}
.left_main_tt{
flex: 1;


+ 148
- 23
src/views/toBeAllocated/toBeAllocated.vue 파일 보기

@@ -40,7 +40,7 @@
<div class="main">

<div class="left_main">
<el-table :data="list" style="width: 100%;" v-if="list.length > 0">
<el-table :data="list" style="width: 100%;" v-if="list.length > 0" @expand-change="townExpanded">

<el-table-column type="expand">
<template slot-scope="props">
@@ -59,9 +59,17 @@
<el-table-column label="操作">
<template slot-scope="scope">
<div class="setting">
<el-button type="primary" size="mini" icon="el-icon-edit"></el-button>
<img src="../../assets/images/toBeAllocated_icon_delete.png" alt="">
<span class="name">王五</span>
<el-dropdown trigger="click" v-if="!scope.row.handleUser" @command="(e) => setTaskHandleUser(scope.row, e)">
<el-button type="primary" size="mini" icon="el-icon-edit" @click="getVillageTaskUserList(scope.row)"></el-button>

<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, index) in villageTaskUserList" :key="index" :command="item">{{item.nickName}} - {{item.num}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<template v-else>
<img src="../../assets/images/toBeAllocated_icon_delete.png" alt="" @click="clearTaskHandleUser(scope.row)">
<span class="name">{{scope.row.handleNick}}</span>
</template>
</div>
</template>
</el-table-column>
@@ -82,9 +90,19 @@
<el-table-column prop="contracCount" label="合同数量" show-overflow-tooltip />
<el-table-column prop="otherCount" label="其他" show-overflow-tooltip />
<el-table-column prop="allCount" label="任务总数" show-overflow-tooltip />
<el-table-column label="操作" show-overflow-tooltip >
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini" icon="el-icon-edit"></el-button>
<el-dropdown trigger="click" v-if="!scope.row.expanded">
<el-button type="primary" size="mini" icon="el-icon-edit" @click="getTownTaskUserList(scope.row)"></el-button>

<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, index) in townTaskUserList" :key="index" :command="item">{{item.nickName}} - {{item.num}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<template v-else>
<el-button type="danger" size="mini" icon="el-icon-close" @click="resetTaskUser(scope.row)"></el-button>
<el-button type="success" size="mini" icon="el-icon-upload2" @click="setupTaskUser(scope.row)"></el-button>
</template>
</template>
</el-table-column>

@@ -111,15 +129,19 @@
<el-col :span="8" align="center">未完成</el-col>
<el-col :span="8" align="center">任务期限</el-col>
</el-row>
<el-row v-for="(item,index) in 10">
<el-col :span="8">张三</el-col>
<el-col :span="8">19 <span class="num">1</span><span class="num2">10</span></el-col>
<el-row v-for="(item,index) in taskUserList">
<el-col :span="8">{{item.nickName}}</el-col>
<el-col :span="8">{{item.num}}
<template v-if="item.addNum > 0">
<span class="num">{{item.addNum}}</span><span class="num2">{{item.num + item.addNum}}</span>
</template>
</el-col>
<el-col :span="8" align="center">
<span class="no_yes">未选中</span>
<div class="num_input">
<span @click="reduceNum">-</span>
<p>{{num}}</p>
<span @click="addNum">+</span>
<span class="no_yes" v-if="item.addNum === 0">未选中</span>
<div class="num_input" v-else>
<span @click="reduceNum(item)">-</span>
<p>{{item.days}}</p>
<span @click="addNum(item)">+</span>
</div>
</el-col>
</el-row>
@@ -139,10 +161,10 @@
import RightYearMonthHorizontalSelector from "@/components/framework/RightYearMonthHorizontalSelector.vue";
import {cityTree} from "@/api/misc/misc_dept";
import {ENV} from "@/utils/env";
import {accountingTodoTaskList} from "@/api/agentcenter/accounting_task";
import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue";
import {date_format} from "@/utils/date";
import {managerUndistribTaskList} from "@/api/agentcenter/task";
import {distribTask, managerUndistribTaskList} from "@/api/agentcenter/task";
import {taskUserList} from "@/api/agentcenter/task_user";

export default {
name: "processed",
@@ -161,7 +183,9 @@
numBook: 0,
numVillage: 0,
allCount: 0,
num:0
villageTaskUserList: [],
townTaskUserList: [],
taskUserList: [],
}
},
created() {
@@ -172,29 +196,38 @@
cityTree({rootId: ENV.UserDeptId()}).then((resp) => {
this.deptOptions = resp.data;
if(this.deptOptions.length)
{
this.parms.countyCode = this.deptOptions[0].orgCode;
this.getTaskUserList({orgCode: this.parms.countyCode});
this.getTaskList();
}
});
},
chooseCity(cmd) {
this.parms.countyCode = cmd;
this.parms.townCode = null;
this.getTaskList();
this.getTaskUserList({orgCode: this.parms.countyCode});
},
chooseTown(cmd) {
this.parms.townCode = cmd;
this.getTaskList();
this.getVillageTaskUserList({orgCode: this.parms.townCode});
},
addNum(){
this.num = Number(this.num) + 1 ;
addNum(item){
item.days++;
},
reduceNum(){
if(this.num==0){return;}
this.num = Number(this.num) - 1 ;
reduceNum(item){
if(item.days <= 0){return;}
item.days--;
},
getTaskList() {
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth)
return;
managerUndistribTaskList(this.parms).then((resp) => {
resp.rows.forEach((x) => {
x.expanded = false;
})
this.list = resp.rows;
this.total = resp.total;
this.numBook = resp.numBook;
@@ -205,6 +238,99 @@
chooseMonth(year, month) {
this.getTaskList();
},
getVillageTaskUserList(row) {
this.villageTaskUserList = [];
taskUserList({
orgCode: row.orgCode,
}).then((resp) => {
this.villageTaskUserList = resp.rows;
})
},
getTownTaskUserList(row) {
this.villageTaskUserList = [];
taskUserList({
orgCode: row.townCode,
}).then((resp) => {
this.townTaskUserList = resp.rows;
})
},
getTaskUserList() {
if(!this.parms.countyCode)
return;
this.taskUserList = [];
taskUserList({
orgCode: this.parms.countyCode,
}).then((resp) => {
resp.rows.forEach((x) => {
x.days = 0;
x.addNum = 0;
});
this.taskUserList = resp.rows;
})
},
setTaskHandleUser(row, user) {
this.$set(row, 'handleUser', user.userName);
this.$set(row, 'handleNick', user.nickName);
let globalUser = this.taskUserList.find((x) => x.userName === user.userName);
globalUser.addNum++;
},
clearTaskHandleUser(row) {
let globalUser = this.taskUserList.find((x) => x.userName === row.handleUser);
globalUser.addNum--;
this.$set(row, 'handleUser', '');
this.$set(row, 'handleNick', '');
if(!globalUser.addNum)
globalUser.days = 0;
},
townExpanded(row, expandedRows) {
let expand = expandedRows.includes(row);
this.$set(row, 'expanded', expand);
},
resetTaskUser(row) {
row.villageList.forEach((x) => {
this.$set(x, 'handleUser', '');
this.$set(x, 'handleNick', '');
});
this.taskUserList.forEach((x) => {
x.addNum = 0;
x.days = 0;
})
},
setupTaskUser(row) {
let arr = [];
for(let v of row.villageList)
{
if(!v.handleUser)
continue;
let globalUser = this.taskUserList.find((x) => x.userName === v.handleUser);
if(!globalUser.days)
{
this.$message.error('请设置任务期限');
return;
}
let item = {
handleUser: v.handleUser,
orgCode: v.orgCode,
days: globalUser.days,
};
arr.push(item);
}
if(!arr.length)
{
this.$message.error('请设置记账人');
return;
}
let data = {
orderYear: this.parms.orderYear,
orderMonth: this.parms.orderMonth,
items: arr,
};
distribTask(data).then((resp) => {
this.$message.success('分配成功');
this.getTaskUserList({orgCode: this.parms.countyCode});
this.getTaskList();
});
},
},
mounted(){

@@ -321,7 +447,6 @@

.no_yes{
color: #9a9a9a;
display: none;
}

.num_input{


불러오는 중...
취소
저장