@@ -26,3 +26,21 @@ export function finishTask(data) { | |||||
data: 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, | 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-menu> | ||||
</el-dropdown> | </el-dropdown> | ||||
<slot></slot> | |||||
</div> | </div> | ||||
</template> | </template> | ||||
@@ -100,7 +101,9 @@ export default { | |||||
this.$emit('townChanged', this.itownCode, this.icountyCode); | this.$emit('townChanged', this.itownCode, this.icountyCode); | ||||
} | } | ||||
if((w & 1) || ((w & 2) && !this.hideTown)) | if((w & 1) || ((w & 2) && !this.hideTown)) | ||||
{ | |||||
this.$emit('dataChanged', this.icountyCode, this.itownCode, w); | this.$emit('dataChanged', this.icountyCode, this.itownCode, w); | ||||
} | |||||
}, | }, | ||||
}, | }, | ||||
watch: { | watch: { | ||||
@@ -3,51 +3,27 @@ | |||||
<div class="header_main"> | <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> | </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> | </div> | ||||
@@ -55,21 +31,21 @@ | |||||
<div class="left_main"> | <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-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-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> | </el-row> | ||||
@@ -77,31 +53,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> | ||||
@@ -110,29 +62,80 @@ | |||||
</template> | </template> | ||||
<script> | <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 { | export default { | ||||
name: "todo", | name: "todo", | ||||
components: {RightYearMonthSelector, TopDeptChooser}, | |||||
data() { | data() { | ||||
return { | 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() { | created() { | ||||
}, | }, | ||||
methods:{ | 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(){ | mounted(){ | ||||
}, | |||||
computed: { | |||||
typeName() { | |||||
let val = this.typeOptions.find((x) => x.dictValue === this.parms.type); | |||||
return val ? val.dictLabel : ''; | |||||
} | |||||
} | } | ||||
} | } | ||||
</script> | </script> | ||||
@@ -3,51 +3,25 @@ | |||||
<div class="header_main"> | <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> | </div> | ||||
@@ -55,54 +29,30 @@ | |||||
<div class="left_main"> | <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-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-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> | </el-row> | ||||
</div> | </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> | ||||
<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> | ||||
@@ -111,29 +61,87 @@ | |||||
</template> | </template> | ||||
<script> | <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 { | export default { | ||||
name: "todo", | name: "todo", | ||||
components: {RightYearMonthSelector, TopDeptChooser}, | |||||
data() { | data() { | ||||
return { | 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() { | created() { | ||||
}, | }, | ||||
methods:{ | 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(){ | mounted(){ | ||||
}, | |||||
computed: { | |||||
typeName() { | |||||
let val = this.typeOptions.find((x) => x.dictValue === this.parms.type); | |||||
return val ? val.dictLabel : ''; | |||||
} | |||||
} | } | ||||
} | } | ||||
</script> | </script> | ||||