@@ -26,3 +26,39 @@ export function managerUndistribTaskList(params) { | |||||
params: 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, | |||||
}) | |||||
} |
@@ -0,0 +1,10 @@ | |||||
import request from '@/utils/request' | |||||
// 任务用户列表 | |||||
export function taskUserList(params) { | |||||
return request({ | |||||
url: '/task/user/userList', | |||||
method: 'get', | |||||
params: params, | |||||
}) | |||||
} |
@@ -70,7 +70,7 @@ | |||||
</el-col> | </el-col> | ||||
<el-col :span="2">记账:{{task.voucherCount}}</el-col> | <el-col :span="2">记账:{{task.voucherCount}}</el-col> | ||||
<el-col :span="2">合同:{{task.contracCount}}</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-col :span="9" style="text-align: right"><el-button type="primary" size="mini" @click="gotoRemoteSite(task)">进入账套</el-button></el-col> | ||||
</el-row> | </el-row> | ||||
</div> | </div> | ||||
@@ -78,7 +78,7 @@ | |||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="orgName" label="村" show-overflow-tooltip /> | <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 > | <el-table-column label="处理进度" show-overflow-tooltip > | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
{{scope.row.numProcessFinish}}/{{scope.row.num}} | {{scope.row.numProcessFinish}}/{{scope.row.num}} | ||||
@@ -98,7 +98,7 @@ | |||||
<el-table-column prop="distriDate" 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 prop="endAt" label="截止日期" show-overflow-tooltip /> | ||||
<el-table-column prop="handleDate" 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"> | <template slot-scope="scope"> | ||||
<p class="backButton" v-if="!scope.row.approvalFinish">未完成</p> | <p class="backButton" v-if="!scope.row.approvalFinish">未完成</p> | ||||
<p class="backButton2" v-if="scope.row.approvalFinish">已完成</p> | <p class="backButton2" v-if="scope.row.approvalFinish">已完成</p> | ||||
@@ -6,12 +6,12 @@ | |||||
<el-dropdown trigger="click" placement="bottom-start"> | <el-dropdown trigger="click" placement="bottom-start"> | ||||
<div class="select_address el-dropdown-link"> | <div class="select_address el-dropdown-link"> | ||||
<span class="sanjiao-right"></span> | <span class="sanjiao-right"></span> | ||||
<p>大足区</p> | |||||
<p>{{cityName}}</p> | |||||
</div> | </div> | ||||
<el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;"> | <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> | </div> | ||||
</el-dropdown-item> | </el-dropdown-item> | ||||
</el-dropdown-menu> | </el-dropdown-menu> | ||||
@@ -20,21 +20,21 @@ | |||||
<el-dropdown trigger="click" placement="bottom-start"> | <el-dropdown trigger="click" placement="bottom-start"> | ||||
<div class="select_address el-dropdown-link"> | <div class="select_address el-dropdown-link"> | ||||
<span class="sanjiao-right"></span> | <span class="sanjiao-right"></span> | ||||
<p>张家镇</p> | |||||
<p>{{townName}}</p> | |||||
</div> | </div> | ||||
<el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;"> | <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> | </div> | ||||
</el-dropdown-item> | </el-dropdown-item> | ||||
</el-dropdown-menu> | </el-dropdown-menu> | ||||
</el-dropdown> | </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> | </div> | ||||
@@ -42,44 +42,61 @@ | |||||
<div class="left_main"> | <div class="left_main"> | ||||
<el-collapse accordion> | <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"> | <template slot="title"> | ||||
<div class="left_main_tt"> | <div class="left_main_tt"> | ||||
<p>东沙镇</p> | <p>东沙镇</p> | ||||
<div class="tt_label"> | <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> | ||||
</div> | </div> | ||||
</template> | </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"> | <el-table-column type="expand"> | ||||
<template slot-scope="props"> | <template slot-scope="props"> | ||||
<div class="openTable"> | <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> | </el-row> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
</el-table-column> | </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"> | <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> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
@@ -89,31 +106,7 @@ | |||||
</div> | </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> | </div> | ||||
@@ -122,71 +115,116 @@ | |||||
</template> | </template> | ||||
<script> | <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 { | export default { | ||||
name: "processing", | name: "processing", | ||||
components: {RightYearMonthSelector}, | |||||
data() { | data() { | ||||
return { | 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() { | created() { | ||||
this.getDeptTree(); | |||||
}, | }, | ||||
methods:{ | 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(){ | 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> | </script> | ||||
@@ -291,6 +329,25 @@ export default { | |||||
.el-col{ | .el-col{ | ||||
padding: 10px 0; | 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{ | .header_main{ | ||||
@@ -393,6 +450,7 @@ export default { | |||||
border-bottom: 1px solid #3976ff; | border-bottom: 1px solid #3976ff; | ||||
display: inline-block; | display: inline-block; | ||||
padding-bottom: 5px; | padding-bottom: 5px; | ||||
cursor: pointer; | |||||
} | } | ||||
.left_main_tt{ | .left_main_tt{ | ||||
flex: 1; | flex: 1; | ||||
@@ -40,7 +40,7 @@ | |||||
<div class="main"> | <div class="main"> | ||||
<div class="left_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"> | <el-table-column type="expand"> | ||||
<template slot-scope="props"> | <template slot-scope="props"> | ||||
@@ -59,9 +59,17 @@ | |||||
<el-table-column label="操作"> | <el-table-column label="操作"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
<div class="setting"> | <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> | </div> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
@@ -82,9 +90,19 @@ | |||||
<el-table-column prop="contracCount" label="合同数量" show-overflow-tooltip /> | <el-table-column prop="contracCount" label="合同数量" show-overflow-tooltip /> | ||||
<el-table-column prop="otherCount" 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 prop="allCount" label="任务总数" show-overflow-tooltip /> | ||||
<el-table-column label="操作" show-overflow-tooltip > | |||||
<el-table-column label="操作"> | |||||
<template slot-scope="scope"> | <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> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
@@ -111,15 +129,19 @@ | |||||
<el-col :span="8" align="center">未完成</el-col> | <el-col :span="8" align="center">未完成</el-col> | ||||
<el-col :span="8" align="center">任务期限</el-col> | <el-col :span="8" align="center">任务期限</el-col> | ||||
</el-row> | </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"> | <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> | </div> | ||||
</el-col> | </el-col> | ||||
</el-row> | </el-row> | ||||
@@ -139,10 +161,10 @@ | |||||
import RightYearMonthHorizontalSelector from "@/components/framework/RightYearMonthHorizontalSelector.vue"; | import RightYearMonthHorizontalSelector from "@/components/framework/RightYearMonthHorizontalSelector.vue"; | ||||
import {cityTree} from "@/api/misc/misc_dept"; | import {cityTree} from "@/api/misc/misc_dept"; | ||||
import {ENV} from "@/utils/env"; | import {ENV} from "@/utils/env"; | ||||
import {accountingTodoTaskList} from "@/api/agentcenter/accounting_task"; | |||||
import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue"; | import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue"; | ||||
import {date_format} from "@/utils/date"; | 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 { | export default { | ||||
name: "processed", | name: "processed", | ||||
@@ -161,7 +183,9 @@ | |||||
numBook: 0, | numBook: 0, | ||||
numVillage: 0, | numVillage: 0, | ||||
allCount: 0, | allCount: 0, | ||||
num:0 | |||||
villageTaskUserList: [], | |||||
townTaskUserList: [], | |||||
taskUserList: [], | |||||
} | } | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -172,29 +196,38 @@ | |||||
cityTree({rootId: ENV.UserDeptId()}).then((resp) => { | cityTree({rootId: ENV.UserDeptId()}).then((resp) => { | ||||
this.deptOptions = resp.data; | this.deptOptions = resp.data; | ||||
if(this.deptOptions.length) | if(this.deptOptions.length) | ||||
{ | |||||
this.parms.countyCode = this.deptOptions[0].orgCode; | this.parms.countyCode = this.deptOptions[0].orgCode; | ||||
this.getTaskUserList({orgCode: this.parms.countyCode}); | |||||
this.getTaskList(); | |||||
} | |||||
}); | }); | ||||
}, | }, | ||||
chooseCity(cmd) { | chooseCity(cmd) { | ||||
this.parms.countyCode = cmd; | this.parms.countyCode = cmd; | ||||
this.parms.townCode = null; | this.parms.townCode = null; | ||||
this.getTaskList(); | this.getTaskList(); | ||||
this.getTaskUserList({orgCode: this.parms.countyCode}); | |||||
}, | }, | ||||
chooseTown(cmd) { | chooseTown(cmd) { | ||||
this.parms.townCode = cmd; | this.parms.townCode = cmd; | ||||
this.getTaskList(); | 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() { | getTaskList() { | ||||
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth) | if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth) | ||||
return; | return; | ||||
managerUndistribTaskList(this.parms).then((resp) => { | managerUndistribTaskList(this.parms).then((resp) => { | ||||
resp.rows.forEach((x) => { | |||||
x.expanded = false; | |||||
}) | |||||
this.list = resp.rows; | this.list = resp.rows; | ||||
this.total = resp.total; | this.total = resp.total; | ||||
this.numBook = resp.numBook; | this.numBook = resp.numBook; | ||||
@@ -205,6 +238,99 @@ | |||||
chooseMonth(year, month) { | chooseMonth(year, month) { | ||||
this.getTaskList(); | 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(){ | mounted(){ | ||||
@@ -321,7 +447,6 @@ | |||||
.no_yes{ | .no_yes{ | ||||
color: #9a9a9a; | color: #9a9a9a; | ||||
display: none; | |||||
} | } | ||||
.num_input{ | .num_input{ | ||||