| @@ -26,3 +26,21 @@ export function finishTask(data) { | |||
| data: data, | |||
| }) | |||
| } | |||
| // 异常任务 | |||
| export function accountingAbnormalTaskList(params) { | |||
| return request({ | |||
| url: '/accounting/task/abnormalTaskList', | |||
| method: 'get', | |||
| params: params, | |||
| }) | |||
| } | |||
| // 异常任务统计 | |||
| export function accountingAbnormalTaskSummary(params) { | |||
| return request({ | |||
| url: '/accounting/task/abnormalTaskSummary', | |||
| method: 'get', | |||
| params: params, | |||
| }) | |||
| } | |||
| @@ -98,3 +98,30 @@ export function auditAllTask(data) { | |||
| data: data, | |||
| }) | |||
| } | |||
| // 异常任务 | |||
| export function managerAbnormalTaskList(params) { | |||
| return request({ | |||
| url: '/manager/task/abnormalTaskList', | |||
| method: 'get', | |||
| params: params, | |||
| }) | |||
| } | |||
| // 异常任务统计 | |||
| export function managerAbnormalTaskSummary(params) { | |||
| return request({ | |||
| url: '/manager/task/abnormalTaskSummary', | |||
| method: 'get', | |||
| params: params, | |||
| }) | |||
| } | |||
| // 异常任务统计 | |||
| export function removeAbnormalTask(type, id, params) { | |||
| return request({ | |||
| url: `/manager/task/removeAbnormalTask/${type}/${id}`, | |||
| method: 'post', | |||
| data: params, | |||
| }) | |||
| } | |||
| @@ -30,6 +30,7 @@ | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <slot></slot> | |||
| </div> | |||
| </template> | |||
| @@ -100,7 +101,9 @@ export default { | |||
| this.$emit('townChanged', this.itownCode, this.icountyCode); | |||
| } | |||
| if((w & 1) || ((w & 2) && !this.hideTown)) | |||
| { | |||
| this.$emit('dataChanged', this.icountyCode, this.itownCode, w); | |||
| } | |||
| }, | |||
| }, | |||
| watch: { | |||
| @@ -3,51 +3,27 @@ | |||
| <div class="header_main"> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>大足区</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> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>张家镇</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> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>记账</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> | |||
| <TopDeptChooser :county-code.sync="parms.countyCode" :town-code.sync="parms.townCode" :root-id="rootId" @dataChanged="chooseDept"> | |||
| <template> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>{{typeName}}</p> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <p class="todo_num">合同异常:<span>19</span>个</p> | |||
| <p class="todo_num2">记录异常:<span>1</span>个</p> | |||
| <p class="todo_num3">其他异常:<span>1</span>个</p> | |||
| <el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;"> | |||
| <el-dropdown-item v-for="(item,index) in typeOptions"> | |||
| <div class="selected" @click="chooseType(item.dictValue)"> | |||
| <p>{{item.dictLabel}}</p> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| </template> | |||
| </TopDeptChooser> | |||
| <p class="todo_num">记账异常:<span>{{abnormalSummary.numAbnormalVoucher}}</span>个</p> | |||
| <p class="todo_num2">合同异常:<span>{{abnormalSummary.numAbnormalContraction}}</span>个</p> | |||
| <p class="todo_num3">其他异常:<span>{{abnormalSummary.numAbnormalOther}}</span>个</p> | |||
| </div> | |||
| @@ -55,21 +31,21 @@ | |||
| <div class="left_main"> | |||
| <div class="left_main_block" v-for="(item,index) in 5" :key="index"> | |||
| <div class="left_main_block" v-for="(item,index) in list" :key="index"> | |||
| <p class="left_tt">{{index+1}}.购入芒果52公斤<el-button type="primary" size="mini" icon="el-icon-edit"></el-button></p> | |||
| <p class="left_tt">{{index+1}}.{{item.name}}<el-button type="primary" size="mini" icon="el-icon-edit"></el-button></p> | |||
| <el-row> | |||
| <el-col span="4"><span>经济组织:</span>田娜合作社</el-col> | |||
| <el-col span="6"><span>所属地:</span>山东省/威海市/环翠区/羊头镇/张家村</el-col> | |||
| <el-col span="6"><span>详细地址:</span>万江路阿巴阿巴阿巴104号楼</el-col> | |||
| <el-col span="4"><span>申请人:</span>林萧天</el-col> | |||
| <el-col span="4"><span>联系电话:</span>158 0366 7149</el-col> | |||
| <el-col :span="4"><span>经济组织:</span>{{item.bookName}}</el-col> | |||
| <el-col :span="6"><span>所属地:</span>{{item.region}}</el-col> | |||
| <el-col :span="6"><span>详细地址:</span>{{item.address}}</el-col> | |||
| <el-col :span="4"><span>申请人:</span>{{item.applyUser}}</el-col> | |||
| <el-col :span="4"><span>联系电话:</span>{{item.tel}}</el-col> | |||
| </el-row> | |||
| <el-row> | |||
| <el-col span="4" style="color: #ef0027;"><span>挂起时间:</span>2023.3.10</el-col> | |||
| <el-col span="6" style="color: #ef0027;"><span>异常原因:</span>缺少收据</el-col> | |||
| <el-col :span="4" style="color: #ef0027;"><span>挂起时间:</span>{{item.orderAt}}</el-col> | |||
| <el-col :span="6" style="color: #ef0027;"><span>异常原因:</span>{{item.remark}}</el-col> | |||
| </el-row> | |||
| @@ -77,31 +53,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> | |||
| @@ -110,29 +62,80 @@ | |||
| </template> | |||
| <script> | |||
| import TopDeptChooser from "@/components/framework/TopDeptChooser.vue"; | |||
| import {date_format} from "@/utils/date"; | |||
| import {ENV} from "@/utils/env"; | |||
| import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue"; | |||
| import {accountingAbnormalTaskList, accountingAbnormalTaskSummary} from "@/api/agentcenter/accounting_task"; | |||
| export default { | |||
| name: "todo", | |||
| components: {RightYearMonthSelector, TopDeptChooser}, | |||
| data() { | |||
| return { | |||
| year:'2023', | |||
| list: [], | |||
| total: 0, | |||
| parms: { | |||
| countyCode: null, | |||
| townCode: null, | |||
| type: 'contraction', | |||
| orderYear: date_format('%Y'), | |||
| orderMonth: date_format('%m'), | |||
| }, | |||
| abnormalSummary: { | |||
| num: 0, | |||
| numAbnormalContraction: 0, | |||
| numAbnormalVoucher: 0, | |||
| numAbnormalOther: 0, | |||
| }, | |||
| rootId: ENV.UserDeptId(), | |||
| typeOptions: [ | |||
| {dictLabel: '合同', dictValue: 'contraction',}, | |||
| {dictLabel: '记账', dictValue: 'voucher',}, | |||
| {dictLabel: '其他', dictValue: 'other',}, | |||
| ], | |||
| } | |||
| }, | |||
| created() { | |||
| }, | |||
| methods:{ | |||
| addDate(){ | |||
| this.year = Number(this.year) + 1 ; | |||
| getTaskList() { | |||
| if(!this.parms.townCode || !this.parms.orderYear || !this.parms.orderMonth || !this.parms.type) | |||
| return; | |||
| accountingAbnormalTaskList(this.parms).then((resp) => { | |||
| this.list = resp.rows; | |||
| this.total = resp.total; | |||
| }) | |||
| }, | |||
| reduceDate(){ | |||
| this.year = Number(this.year) - 1 ; | |||
| getSummary() { | |||
| if(!this.parms.townCode || !this.parms.orderYear || !this.parms.orderMonth) | |||
| return; | |||
| accountingAbnormalTaskSummary(this.parms).then((resp) => { | |||
| this.abnormalSummary = resp.data; | |||
| }) | |||
| }, | |||
| selectionRange(){ | |||
| this.$refs.datePicker.focus(); | |||
| chooseDept(townCode, countyCode) { | |||
| this.getTaskList(); | |||
| this.getSummary(); | |||
| }, | |||
| chooseMonth(year, month) { | |||
| this.getSummary(); | |||
| this.getTaskList(); | |||
| }, | |||
| chooseType(type) { | |||
| this.parms.type = type; | |||
| this.getTaskList(); | |||
| }, | |||
| }, | |||
| mounted(){ | |||
| }, | |||
| computed: { | |||
| typeName() { | |||
| let val = this.typeOptions.find((x) => x.dictValue === this.parms.type); | |||
| return val ? val.dictLabel : ''; | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| @@ -3,51 +3,25 @@ | |||
| <div class="header_main"> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>大足区</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> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>张家镇</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> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>记账</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> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| <p class="todo_num">合同异常:<span>19</span>个</p> | |||
| <p class="todo_num2">记录异常:<span>1</span>个</p> | |||
| <p class="todo_num3">其他异常:<span>1</span>个</p> | |||
| <TopDeptChooser :county-code.sync="parms.countyCode" :town-code.sync="parms.townCode" :root-id="rootId" @dataChanged="chooseDept"> | |||
| <el-dropdown trigger="click" placement="bottom-start"> | |||
| <div class="select_address el-dropdown-link"> | |||
| <span class="sanjiao-right"></span> | |||
| <p>{{typeName}}</p> | |||
| </div> | |||
| <el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;"> | |||
| <el-dropdown-item v-for="(item,index) in typeOptions"> | |||
| <div class="selected" @click="chooseType(item.dictValue)"> | |||
| <p>{{item.dictLabel}}</p> | |||
| </div> | |||
| </el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| </TopDeptChooser> | |||
| <p class="todo_num">记账异常:<span>{{abnormalSummary.numAbnormalVoucher}}</span>个</p> | |||
| <p class="todo_num2">合同异常:<span>{{abnormalSummary.numAbnormalContraction}}</span>个</p> | |||
| <p class="todo_num3">其他异常:<span>{{abnormalSummary.numAbnormalOther}}</span>个</p> | |||
| </div> | |||
| @@ -55,54 +29,30 @@ | |||
| <div class="left_main"> | |||
| <div class="left_main_block" v-for="(item,index) in 1" :key="index"> | |||
| <div class="left_main_block" v-for="(item,index) in list" :key="index" v-if="list.length > 0"> | |||
| <p class="left_tt">{{index+1}}.购入芒果52公斤 <span>负责人:张三</span><el-button type="danger" size="mini" icon="el-icon-edit"></el-button></p> | |||
| <p class="left_tt">{{index+1}}.{{item.name}} <span>负责人:{{item.handleUser}}</span><el-button type="danger" size="mini" icon="el-icon-edit" @click="remove(item)"></el-button></p> | |||
| <el-row> | |||
| <el-col span="4"><span>经济组织:</span>田娜合作社</el-col> | |||
| <el-col span="6"><span>所属地:</span>山东省/威海市/环翠区/羊头镇/张家村</el-col> | |||
| <el-col span="6"><span>详细地址:</span>万江路阿巴阿巴阿巴104号楼</el-col> | |||
| <el-col span="4"><span>申请人:</span>林萧天</el-col> | |||
| <el-col span="4"><span>联系电话:</span>158 0366 7149</el-col> | |||
| <el-col :span="4"><span>经济组织:</span>{{item.bookName}}</el-col> | |||
| <el-col :span="6"><span>所属地:</span>{{item.region}}</el-col> | |||
| <el-col :span="6"><span>详细地址:</span>{{item.address}}</el-col> | |||
| <el-col :span="4"><span>申请人:</span>{{item.applyUser}}</el-col> | |||
| <el-col :span="4"><span>联系电话:</span>{{item.tel}}</el-col> | |||
| </el-row> | |||
| <el-row> | |||
| <el-col span="4" style="color: #ef0027;"><span>挂起时间:</span>2023.3.10</el-col> | |||
| <el-col span="6" style="color: #ef0027;"><span>异常原因:</span>缺少收据</el-col> | |||
| <el-col :span="4" style="color: #ef0027;"><span>挂起时间:</span>{{item.orderAt}}</el-col> | |||
| <el-col :span="6" style="color: #ef0027;"><span>异常原因:</span>{{item.remark}}</el-col> | |||
| </el-row> | |||
| </div> | |||
| <img src="../../assets/images/managerAbnormal_icon_none.png" class="table_none" alt=""> | |||
| <img src="../../assets/images/managerAbnormal_icon_none.png" class="table_none" alt="" v-else> | |||
| </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> | |||
| @@ -111,29 +61,87 @@ | |||
| </template> | |||
| <script> | |||
| import TopDeptChooser from "@/components/framework/TopDeptChooser.vue"; | |||
| import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue"; | |||
| import {date_format} from "@/utils/date"; | |||
| import {ENV} from "@/utils/env"; | |||
| import {managerAbnormalTaskList, managerAbnormalTaskSummary, removeAbnormalTask} from "@/api/agentcenter/task"; | |||
| export default { | |||
| name: "todo", | |||
| components: {RightYearMonthSelector, TopDeptChooser}, | |||
| data() { | |||
| return { | |||
| year:'2023', | |||
| list: [], | |||
| total: 0, | |||
| parms: { | |||
| countyCode: null, | |||
| townCode: null, | |||
| type: 'contraction', | |||
| orderYear: date_format('%Y'), | |||
| orderMonth: date_format('%m'), | |||
| }, | |||
| abnormalSummary: { | |||
| num: 0, | |||
| numAbnormalContraction: 0, | |||
| numAbnormalVoucher: 0, | |||
| numAbnormalOther: 0, | |||
| }, | |||
| rootId: ENV.UserDeptId(), | |||
| typeOptions: [ | |||
| {dictLabel: '合同', dictValue: 'contraction',}, | |||
| {dictLabel: '记账', dictValue: 'voucher',}, | |||
| {dictLabel: '其他', dictValue: 'other',}, | |||
| ], | |||
| } | |||
| }, | |||
| created() { | |||
| }, | |||
| methods:{ | |||
| addDate(){ | |||
| this.year = Number(this.year) + 1 ; | |||
| getTaskList() { | |||
| if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth || !this.parms.type) | |||
| return; | |||
| managerAbnormalTaskList(this.parms).then((resp) => { | |||
| this.list = resp.rows; | |||
| this.total = resp.total; | |||
| }) | |||
| }, | |||
| getSummary() { | |||
| if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth) | |||
| return; | |||
| managerAbnormalTaskSummary(this.parms).then((resp) => { | |||
| this.abnormalSummary = resp.data; | |||
| }) | |||
| }, | |||
| reduceDate(){ | |||
| this.year = Number(this.year) - 1 ; | |||
| remove(row) { | |||
| removeAbnormalTask(row.type, row.id).then((resp) => { | |||
| this.$message.success('删除成功'); | |||
| this.getSummary(); | |||
| this.getTaskList(); | |||
| }) | |||
| }, | |||
| selectionRange(){ | |||
| this.$refs.datePicker.focus(); | |||
| chooseDept(countyCode, townCode) { | |||
| this.getTaskList(); | |||
| this.getSummary(); | |||
| }, | |||
| chooseMonth(year, month) { | |||
| this.getSummary(); | |||
| this.getTaskList(); | |||
| }, | |||
| chooseType(type) { | |||
| this.parms.type = type; | |||
| this.getTaskList(); | |||
| }, | |||
| }, | |||
| mounted(){ | |||
| }, | |||
| computed: { | |||
| typeName() { | |||
| let val = this.typeOptions.find((x) => x.dictValue === this.parms.type); | |||
| return val ? val.dictLabel : ''; | |||
| } | |||
| } | |||
| } | |||
| </script> | |||