Bladeren bron

审核任务

master
zhaodengke 1 jaar geleden
bovenliggende
commit
2c95f6e1d7
5 gewijzigde bestanden met toevoegingen van 415 en 133 verwijderingen
  1. +36
    -0
      src/api/agentcenter/task.js
  2. +221
    -0
      src/components/framework/TopDeptChooser.vue
  3. +2
    -2
      src/views/allTasks/allTasks.vue
  4. +154
    -129
      src/views/audit/audit.vue
  5. +2
    -2
      src/views/processed/processed.vue

+ 36
- 0
src/api/agentcenter/task.js Bestand weergeven

@@ -62,3 +62,39 @@ export function revokeTask(data) {
data: data,
})
}

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

// 总览(待审核)
export function managerAuditTaskSummary(params) {
return request({
url: '/manager/task/auditTaskSummary',
method: 'get',
params: params,
})
}

// 审核任务
export function auditTask(data) {
return request({
url: '/manager/task/audit',
method: 'post',
data: data,
})
}

// 全部审核任务
export function auditAllTask(data) {
return request({
url: '/manager/task/auditAll',
method: 'post',
data: data,
})
}

+ 221
- 0
src/components/framework/TopDeptChooser.vue Bestand weergeven

@@ -0,0 +1,221 @@
<template>

<div class="top_main">

<el-dropdown trigger="click" placement="bottom-start">
<div class="select_address el-dropdown-link">
<span class="sanjiao-right"></span>
<p>{{cityName}}</p>
</div>
<el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;">
<el-dropdown-item v-for="(item,index) in deptOptions" :command="item.orgCode">
<div class="selected" @click="chooseCity(item.orgCode)">
<p>{{item.deptName}}</p>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

<el-dropdown trigger="click" placement="bottom-start">
<div class="select_address el-dropdown-link">
<span class="sanjiao-right"></span>
<p>{{townName}}</p>
</div>
<el-dropdown-menu slot="dropdown" style="width: 8vw;text-align: center;">
<el-dropdown-item v-for="(item,index) in townList" :command="item.orgCode">
<div class="selected" @click="chooseTown(item.orgCode)">
<p>{{item.deptName}}</p>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

</div>

</template>

<script>
import {cityTree} from "@/api/misc/misc_dept";

export default {
name: 'TopDeptChooser',
props: {
countyCode: String,
townCode: String,
rootId: [String, Number],
},
created() {
this.getDeptTree();
},
data() {
return {
deptOptions: [],
icountyCode: this.countyCode || null,
itownCode: this.townCode || null,
};
},
methods: {
getDeptTree() {
cityTree({rootId: this.rootId}).then((resp) => {
this.deptOptions = resp.data;
if(this.deptOptions.length)
{
this.icountyCode = this.deptOptions[0].orgCode;
this.emitUpdate(1);
}
});
},
chooseCity(cmd) {
this.icountyCode = cmd;
this.itownCode = null;
this.emitUpdate(1 | 2);
},
chooseTown(cmd) {
this.itownCode = cmd;
this.emitUpdate(2);
},
emitUpdate(w) {
if(w & 1)
{
this.$emit('update:countyCode', this.icountyCode);
this.$emit('countyChanged', this.icountyCode, null);
}
if(w & 2)
{
this.$emit('update:townCode', this.itownCode);
this.$emit('townChanged', this.itownCode, this.icountyCode);
}
this.$emit('dataChanged', this.icountyCode, this.itownCode, w);
},
},
watch: {
rootId(newVal) {
this.getDeptTree();
},
countyCode(newVal) {
if(this.icountyCode != newVal)
{
this.icountyCode = newVal;
this.emitUpdate(1);
}
},
townCode(newVal) {
if(this.itownCode != newVal)
{
this.itownCode = newVal;
this.emitUpdate(2);
}
},
icountyCode(newVal) {
if(this.countyCode != newVal)
{
this.emitUpdate(1);
}
},
itownCode(newVal) {
if(this.townCode != newVal)
{
this.emitUpdate(2);
}
},
},
computed: {
cityName() {
if(!this.deptOptions.length)
return '';
let dept = this.deptOptions.find((x) => x.orgCode === this.icountyCode);
return dept ? dept.deptName : '';
},
townList() {
if(!this.deptOptions.length)
return [];
let dept = this.deptOptions.find((x) => x.orgCode === this.icountyCode);
return dept ? dept.children || [] : [];
},
townName() {
if(!this.townList.length)
return '';
let dept = this.townList.find((x) => x.orgCode === this.itownCode);
return dept ? dept.deptName : '';
},
},
}
</script>

<style scoped lang="scss">
.el-dropdown-link {
cursor: pointer;
}
.selected{
display: flex;
height: 4vh;
p{
width: 8vw;
line-height: 4vh;
text-align: center;
}
}
p{margin: 0;line-height: 1;}
.top_main{
display: flex;
align-items: center;
position: relative;
.selected{
width: 16vw;
background-color: #ffffff;
position: absolute;
top: 4vh;
left: 10vw;
z-index: 9;
border-radius: 8px;
box-shadow: 0 10px 10px #dedfe1;
padding: 1vh 0;
div{
display: flex;
height: 4vh;
p{
width: 8vw;
line-height: 4vh;
text-align: center;
}
}
}
.select_address{
display: flex;
align-items: center;
justify-content: center;
margin-right: 2vw;
background-color: #ffffff;
padding: 0px 0px;
border-radius: 8px;
box-shadow: 0 0 10px #dedfe1;
width: 8vw;
height: 4vh;
overflow: hidden;
&:nth-child(2){
margin-right: 0vw;
}
&:nth-child(3){
margin-right: 0vw;
border-top-left-radius: initial;
border-bottom-left-radius: initial;
}
.sanjiao-right {
display: inline-block;
border-left: 8px solid #000;
border-left-color: initial;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
margin-right: 5px;
}
.select_time{
text-align: center;
width: 100%;
height: 4vh;
line-height: 4vh;
background-color: #3976ff;
color: #ffffff;
}
}
}
</style>

+ 2
- 2
src/views/allTasks/allTasks.vue Bestand weergeven

@@ -62,8 +62,8 @@
<el-row v-for="(task,index) in props.row.taskList" :key="index">
<el-col :span="9">
<div class="tab_main">
<span v-if="task.agentStatus === '1'">未处理</span><span v-if="!task.isAudit">未审核</span>
<span v-if="task.agentStatus !== '1'" class="tab_green">已处理</span><span class="tab_green" v-if="task.isAudit">已审核</span>
<span v-if="task.agentStatus === '1'">未处理</span><span v-if="task.agentStatus === '3'">未审核</span>
<span v-if="task.agentStatus !== '1'" class="tab_green">已处理</span><span class="tab_green" v-if="task.agentStatus === '4'">已审核</span>
<span class="tab_red" v-if="task.abnormalCount > 0">异常:{{task.abnormalCount}}</span>
{{task.bookName}}
</div>


+ 154
- 129
src/views/audit/audit.vue Bestand weergeven

@@ -3,79 +3,59 @@

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

<div class="header_btn1">
<TopDeptChooser :county-code.sync="parms.countyCode" :town-code.sync="parms.townCode" :root-id="rootId" @dataChanged="chooseTown"/>

<div class="header_btn1" @click="auditAll">
<p>全部审核</p>
</div>

<div class="header_btn2">
<div class="header_btn2" @click="audit">
<p>确定提交</p>
</div>

<p class="header_tt">
<i class="el-icon-warning"></i>已选中:年村(a合作社,b合作社,c合作社,d合作社)、张村(百事合作社)...
<i class="el-icon-warning"></i>已选中:{{selectedBooks}}
</p>

<p class="todo_num">已处理村庄:<span>19</span>个</p>
<p class="todo_num2">超时完成村庄:<span>1</span>个</p>
<p class="todo_num">待审核村庄:<span>{{summary.numVillage}}</span>个</p>
<p class="todo_num2">待审核合作社:<span>{{summary.numBook}}</span>个</p>

</div>

<div class="main">

<div class="left_main">
<el-table :data="tableData" style="width: 100%;" :default-sort = "{prop: 'date', order: 'descending'}">
<el-table :data="list" style="width: 100%;" v-if="list.length > 0">

<el-table-column type="expand">
<template slot-scope="props">
<div class="openTable">
<div class="openTable_block">
<el-button type="primary" size="mini">审核</el-button>
<el-button type="primary" size="mini" @click="auditVillage(props.row)">审核</el-button>
<p>已选中:百事合作社</p>
</div>
<el-table :data="tableData" style="width: 100%;background-color: transparent;" :default-sort = "{prop: 'date', order: 'descending'}">
<el-table :data="props.row.taskList" style="width: 100%;background-color: transparent;">
<el-table-column prop="value9" label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini">审核</el-button>
<el-button type="primary" size="mini" plain>查看</el-button>
<template v-if="!scope.row.audit">
<el-button type="primary" size="mini" @click="auditBook(scope.row)">审核</el-button>
<el-button type="primary" size="mini" plain>查看</el-button>
</template>
<template v-else>
<img src="../../assets/images/toBeAllocated_icon_delete.png" alt="" @click="cancelAuditBook(scope.row)">
<span class="name">已审核</span>
</template>
</template>
</el-table-column>
<el-table-column prop="value1" label="组织名称" show-overflow-tooltip />
<el-table-column prop="value2" label="记账笔数" show-overflow-tooltip >
<el-table-column prop="bookName" label="组织名称" show-overflow-tooltip />
<el-table-column prop="voucherCount" label="记账笔数" show-overflow-tooltip >
<template slot-scope="scope">
5 <span class="num">7</span>
{{scope.row.voucherCount}} <span class="num">7</span>
</template>
</el-table-column>
<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="contracCount" label="合同数量" show-overflow-tooltip />
<el-table-column prop="otherCount" label="其他" show-overflow-tooltip />
<el-table-column prop="allCount" label="任务总数" show-overflow-tooltip />
</el-table>
</div>
</template>
@@ -83,50 +63,26 @@

<el-table-column prop="value1" label="操作" show-overflow-tooltip >
<template slot-scope="scope">
<el-button type="primary" size="mini">审核</el-button>
<el-button type="primary" size="mini" @click="auditVillage(scope.row)">审核</el-button>
</template>
</el-table-column>
<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="value8" label="截止日期" show-overflow-tooltip />
<el-table-column prop="value8" 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="numBook" label="合作社数量" show-overflow-tooltip />
<el-table-column prop="voucherCount" 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="distriDate" label="下发日期" show-overflow-tooltip />
<el-table-column prop="endAt" label="截止日期" show-overflow-tooltip />
<el-table-column prop="handleDate" label="完成日期" show-overflow-tooltip />
<el-table-column prop="handleNick" label="负责人" show-overflow-tooltip />

</el-table>

<img src="../../assets/images/audit_icon_none.png" alt="" class="table_none">
<img src="../../assets/images/audit_icon_none.png" alt="" class="table_none" 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>

@@ -135,71 +91,138 @@
</template>

<script>
import {date_format} from "@/utils/date";
import TopDeptChooser from "@/components/framework/TopDeptChooser.vue";
import {ENV} from "@/utils/env";
import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue";
import {auditAllTask, auditTask, managerAuditingTaskList, managerAuditTaskSummary} from "@/api/agentcenter/task";

export default {
name: "processed",
components: {RightYearMonthSelector, TopDeptChooser},
data() {
return {
tableData: [{
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}, {
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}, {
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}, {
value1: '当当村',
value2: '玩玩玩玩玩玩玩玩合作社',
value3: '8',
value4: '5',
value5: '5',
value6: '18',
value7: '2023.03.05',
value8: '2023.03.06',
value9: '111'
}],
year:'2023',
list: [],
total: 0,
parms: {
countyCode: null,
townCode: null,
orderYear: date_format('%Y'),
orderMonth: date_format('%m'),
},
rootId: ENV.UserDeptId(),
summary: {
numVillage: 0,
numBook: 0,
},

}
},
created() {

},
methods:{
addDate(){
this.year = Number(this.year) + 1 ;
getTaskList() {
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth)
return;
managerAuditingTaskList(this.parms).then((resp) => {
this.list = resp.rows;
this.total = resp.total;
})
},
getSummary() {
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth)
return;
managerAuditTaskSummary(this.parms).then((resp) => {
this.summary = resp.data;
})
},
chooseTown(cmd) {
this.getTaskList();
this.getSummary();
},
chooseMonth(year, month) {
this.getTaskList();
this.getSummary();
},
auditBook(row) {
this.$set(row, 'audit', true);
},
cancelAuditBook(row) {
this.$set(row, 'audit', false);
},
auditVillage(row) {
for(let sv of row.taskList)
{
this.auditBook(sv);
}
},
reduceDate(){
this.year = Number(this.year) - 1 ;
cancelAuditVillage(row) {
for(let sv of row.taskList)
{
this.cancelAuditBook(sv);
}
},
audit() {
let arr = [];
for(let v of this.list)
{
for(let sv of v.taskList)
{
if(sv.audit)
{
arr.push(sv.id);
}
}
}
if(!arr.length)
{
this.$message.error('请选择任务');
return;
}
let data = {
taskIds: arr,
};
auditTask(data).then((resp) => {
this.$message.success('审核成功');
this.getTaskList();
this.getSummary();
});
},
selectionRange(){
this.$refs.datePicker.focus();
auditAll() {
if(!this.parms.countyCode || !this.parms.orderYear || !this.parms.orderMonth)
return;
auditAllTask(this.parms).then((resp) => {
this.$message.success('全部审核成功');
this.getTaskList();
this.getSummary();
});
},
},
mounted(){

}
},
computed: {
selectedBooks() {
let arr = [];
for(let v of this.list)
{
let books = [];
for(let sv of v.taskList)
{
if(sv.audit)
{
books.push(sv.bookName);
}
}
if(books.length)
{
arr.push(`${v.orgName}(${books.join('、')})`);
}
}
return arr.join('、');
},
},
}
</script>

@@ -341,6 +364,7 @@ export default {
height: 4vh;
overflow: hidden;
color: #ffffff;
cursor: pointer;
}
.header_btn2{
display: flex;
@@ -355,6 +379,7 @@ export default {
height: 4vh;
overflow: hidden;
color: #ffffff;
cursor: pointer;
}
.select_address{
display: flex;


+ 2
- 2
src/views/processed/processed.vue Bestand weergeven

@@ -54,9 +54,9 @@
<el-table-column prop="contracCount" label="合同数量" show-overflow-tooltip />
<el-table-column prop="otherCount" label="其他" show-overflow-tooltip />
<el-table-column prop="allCount" label="任务总数" show-overflow-tooltip />
<el-table-column prop="isAudit" label="状态" show-overflow-tooltip>
<el-table-column prop="agentStatus" label="状态" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.isAudit === 'Y' ? '已审核' : '未审核'}}
{{scope.row.agentStatus === '4' ? '已审核' : '未审核'}}
</template>
</el-table-column>
<el-table-column prop="auditDate" label="审核日期" show-overflow-tooltip />


Laden…
Annuleren
Opslaan