| @@ -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{ | ||||