zhaodengke 1 rok temu
rodzic
commit
0968fa9c70
5 zmienionych plików z 326 dodań i 295 usunięć
  1. +19
    -0
      src/api/agentcenter/accounting_task.js
  2. +0
    -9
      src/api/agentcenter/task.js
  3. +191
    -0
      src/components/framework/RightYearMonthSelector.vue
  4. +106
    -167
      src/views/processed/processed.vue
  5. +10
    -119
      src/views/taskAllocation/todo.vue

+ 19
- 0
src/api/agentcenter/accounting_task.js Wyświetl plik

@@ -0,0 +1,19 @@
import request from '@/utils/request'

// 待处理任务
export function todoTaskList(params) {
return request({
url: '/accounting/task/todoTaskList',
method: 'get',
params: params,
})
}

// 已处理任务
export function processedTaskList(params) {
return request({
url: '/accounting/task/processedTaskList',
method: 'get',
params: params,
})
}

+ 0
- 9
src/api/agentcenter/task.js Wyświetl plik

@@ -8,12 +8,3 @@ export function taskList(params) {
params: params,
})
}

// 待处理任务
export function todoTaskList(params) {
return request({
url: '/accounting/task/todoTaskList',
method: 'get',
params: params,
})
}

+ 191
- 0
src/components/framework/RightYearMonthSelector.vue Wyświetl plik

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

<div class="right_main">
<div class="title">
<i></i>
<p>{{title || '任务日期'}}</p>
</div>

<div class="time_main">
<span class="sanjiao-top" @click="addDate"></span>
<p @click = "selectionRange">{{iyear}}</p>
<el-date-picker
v-model="iyear"
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" @click="chooseMonth(index + 1)" :class="{'active': isCurrentMonth(index + 1)}">{{index+1}}月<i v-if="isCurrentMonth(index + 1)"></i></p>
</div>

</div>

</template>

<script>
import {date_format} from "@/utils/date";

export default {
name: 'RightYearMonthSelector',
props: {
year: String,
month: String,
title: String,
},
data() {
return {
iyear: this.year || date_format('%Y'),
imonth: this.month || date_format('%m'),
};
},
methods: {
addDate(){
this.iyear = '' + (Number(this.iyear) + 1);
this.imonth = '01';
this.emitUpdate(1 | 2);
},
reduceDate(){
this.iyear = '' + (Number(this.iyear) - 1);
this.imonth = '01';
this.emitUpdate(1 | 2);
},
isCurrentMonth(m) {
return parseInt(this.imonth) === m;
},
selectionRange(){
this.$refs.datePicker.focus();
},
emitUpdate(w) {
if(w & 1)
this.$emit('update:year', this.iyear);
if(w & 2)
this.$emit('update:month', this.imonth);
this.$emit('dateChanged', this.iyear, this.imonth, w);
},
chooseMonth(month) {
this.imonth = month >= 10 ? '' + month : ('0' + month);
this.emitUpdate(2);
},
},
watch: {
year(newVal) {
if(this.iyear != newVal)
{
this.iyear = newVal;
this.emitUpdate(1);
}
},
month(newVal) {
if(this.imonth != newVal)
{
this.imonth = newVal;
this.emitUpdate(2);
}
},
iyear(newVal) {
if(this.year != newVal)
{
this.emitUpdate(1);
}
},
imonth(newVal) {
if(this.month != newVal)
{
this.emitUpdate(2);
}
},
},
}
</script>

<style scoped lang="scss">
.right_main{
margin-top: 15px;
border-radius: 8px;
box-shadow: 4px 0px 10px rgba(0, 0, 0, 0.13);
background: #fff;
padding: 15px 20px;

p{margin: 0;line-height: 1;}
}

.sanjiao-top {
display: inline-block;
border-bottom: 8px solid #414141;
border-bottom-color: initial;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
cursor: pointer;
}

.sanjiao-bottom {
display: inline-block;
border-top: 8px solid #414141;
border-top-color: initial;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
cursor: pointer;
}

.time_main{
display: flex;
flex-direction: column;
align-items: center;
background-color: #f5f6f8;
color: #414141;
width: 75%;
margin: 0 auto;
margin-top: 15px;
padding: 15px 0;
border-radius: 8px;
position: relative;
cursor: pointer;
p{
margin: 10px 0;
}
}

.month_main{
display: flex;
flex-direction: column;
align-items: center;
color: #414141;
p{
margin-top: 3vh;
position: relative;
&.active{
color: #3976ff;
}
&:hover{
color: #3976ff;
cursor: pointer;
}
i{
display: block;
width: 5px;
height: 5px;
background-color: #fc5659;
position: absolute;
top: -5px;
right: -5px;
border-radius: 100%;
}
}

}
.pickerTime{
opacity: 0;
position: absolute;
left: 0px;
top: 30px;
width: 5px;
height: 5px;
z-index: -1;
}
</style>

+ 106
- 167
src/views/processed/processed.vue Wyświetl plik

@@ -6,12 +6,12 @@
<el-dropdown trigger="click" placement="bottom-start">
<div class="select_address el-dropdown-link">
<span class="sanjiao-right"></span>
<p>大足区</p>
<p>{{cityName}}</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>
<el-dropdown-item v-for="(item,index) in deptOptions">
<div class="selected" @click="chooseCity(item.orgCode)">
<p>{{item.deptName}}</p>
</div>
</el-dropdown-item>
</el-dropdown-menu>
@@ -20,43 +20,47 @@
<el-dropdown trigger="click" placement="bottom-start">
<div class="select_address el-dropdown-link">
<span class="sanjiao-right"></span>
<p>大足区</p>
<p>{{townName}}</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>
<el-dropdown-item v-for="(item,index) in townList">
<div class="selected" @click="chooseTown(item.orgCode)">
<p>{{item.deptName}}</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_num">已处理村庄:<span>{{total}}</span>个</p>
<p class="todo_num2">超时完成村庄:<span>{{overdue}}</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%;">

<el-table-column type="expand">
<template slot-scope="props">
<div class="openTable">
<el-table :data="tableData" style="width: 100%;background-color: transparent;" :default-sort = "{prop: 'date', order: 'descending'}">
<el-table-column prop="value1" label="组织名称" show-overflow-tooltip />
<el-table-column prop="value2" label="记账笔数" show-overflow-tooltip >
<el-table :data="props.row.taskList" style="width: 100%;background-color: transparent;">
<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="value6" label="状态" show-overflow-tooltip />
<el-table-column prop="value7" label="审核日期" show-overflow-tooltip />
<el-table-column prop="value9" label="操作">
<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>
<template slot-scope="scope">
{{scope.row.isAudit === 'Y' ? '已审核' : '未审核'}}
</template>
</el-table-column>
<el-table-column prop="auditDate" label="审核日期" show-overflow-tooltip />
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini" icon="el-icon-edit"></el-button>
</template>
@@ -66,45 +70,21 @@
</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="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="orgName" label="村" show-overflow-tooltip />
<el-table-column prop="num" label="合作社数量" show-overflow-tooltip />
<el-table-column prop="numApprovalFinish" label="已审核" show-overflow-tooltip />
<el-table-column prop="numNotApproval" label="待审核" show-overflow-tooltip />
<el-table-column prop="distriDate" :formatter="dateFormatter" label="下发日期" show-overflow-tooltip />
<el-table-column prop="endAt" label="截止日期" show-overflow-tooltip />
<el-table-column prop="handleDate" :formatter="dateFormatter" label="完成日期" show-overflow-tooltip sortable />
<el-table-column prop="handleNick" label="审核人" show-overflow-tooltip />

</el-table>


</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="year" :month.sync="month" @dateChanged="chooseMonth"/>

</div>

@@ -113,71 +93,93 @@
</template>

<script>
import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue";
import {date, date_format} from "@/utils/date";
import {cityTree} from "@/api/misc/misc_dept";
import {ENV} from "@/utils/env";
import {processedTaskList} from "@/api/agentcenter/accounting_task";

export default {
name: "processed",
components: {RightYearMonthSelector},
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',
deptOptions: [],
cityCode: null,
townCode: null,
list: [],
total: 0,
year: date_format('%Y'),
month: date_format('%m'),
overdue: 0,
}
},
created() {
this.getDeptTree();
},
methods:{
addDate(){
this.year = Number(this.year) + 1 ;
getDeptTree() {
cityTree({rootId: ENV.UserDeptId()}).then((resp) => {
this.deptOptions = resp.data;
if(this.deptOptions.length)
this.cityCode = this.deptOptions[0].orgCode;
});
},
reduceDate(){
this.year = Number(this.year) - 1 ;
chooseCity(cmd) {
this.cityCode = cmd;
this.townCode = null;
this.getTaskList();
},
selectionRange(){
this.$refs.datePicker.focus();
chooseTown(cmd) {
this.townCode = cmd;
this.getTaskList();
},
getTaskList() {
if(!this.cityCode || !this.year || !this.month)
return;
processedTaskList({
countyCode: this.cityCode,
townCode: this.townCode,
orderYear: this.year,
orderMonth: this.month,
}).then((resp) => {
this.list = resp.rows;
this.total = resp.total;
this.overdue = resp.overdue;
})
},
chooseMonth(year, month) {
this.getTaskList();
},
dateFormatter(row, column, cellValue, index) {
return cellValue ? date(cellValue, 'yyyy-MM-dd HH:mm:ss', 'yyyy-MM-dd') : '';
},
},
mounted(){

}
},
computed: {
cityName() {
if(!this.deptOptions.length)
return '';
let dept = this.deptOptions.find((x) => x.orgCode === this.cityCode);
return dept ? dept.deptName : '';
},
townList() {
if(!this.deptOptions.length)
return [];
let dept = this.deptOptions.find((x) => x.orgCode === this.cityCode);
return [{orgCode: '', deptName: '全部'}, ...(dept ? dept.children || [] : [])];
},
townName() {
if(!this.townList.length)
return '';
if(!this.townCode)
return '全部';
let dept = this.townList.find((x) => x.orgCode === this.townCode);
return dept ? dept.deptName : '';
},
},
}
</script>

@@ -344,67 +346,4 @@ export default {

}

.sanjiao-top {
display: inline-block;
border-bottom: 8px solid #414141;
border-bottom-color: initial;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}

.sanjiao-bottom {
display: inline-block;
border-top: 8px solid #414141;
border-top-color: initial;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}

.time_main{
display: flex;
flex-direction: column;
align-items: center;
background-color: #f5f6f8;
color: #414141;
width: 75%;
margin: 0 auto;
margin-top: 15px;
padding: 15px 0;
border-radius: 8px;
position: relative;
cursor: pointer;
p{
margin: 10px 0;
}
}

.month_main{
display: flex;
flex-direction: column;
align-items: center;
color: #414141;
p{
margin-top: 3vh;
position: relative;
&.active{
color: #3976ff;
}
&:hover{
color: #3976ff;
cursor: pointer;
}
i{
display: block;
width: 5px;
height: 5px;
background-color: #fc5659;
position: absolute;
top: -5px;
right: -5px;
border-radius: 100%;
}
}

}

</style>

+ 10
- 119
src/views/taskAllocation/todo.vue Wyświetl plik

@@ -55,7 +55,7 @@
<el-table-column prop="contracCount" label="合同数量" />
<el-table-column prop="otherCount" label="其他" />
<el-table-column prop="allCount" label="任务总数" />
<el-table-column prop="distriDate" label="下发日期" sortable />
<el-table-column prop="distriDate" :formatter="dateFormatter" label="下发日期" sortable />
<el-table-column prop="endAt" label="截止日期" sortable />
<el-table-column label="操作">
<template slot-scope="scope">
@@ -65,32 +65,7 @@
</el-table>
</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="选择年"
@change="chooseMonth(1)">
</el-date-picker>
<span class="sanjiao-bottom" @click="reduceDate"></span>
</div>

<div class="month_main">
<p v-for="(item,index) in 12" @click="chooseMonth(index + 1)" :class="{'active': isCurrentMonth(index + 1)}">{{index+1}}月<i v-if="isCurrentMonth(index + 1)"></i></p>
</div>

</div>
<RightYearMonthSelector class="right_main" :year.sync="year" :month.sync="month" @dateChanged="chooseMonth"/>

</div>

@@ -101,11 +76,13 @@
<script>
import {cityTree} from "@/api/misc/misc_dept";
import {ENV} from "@/utils/env";
import {taskList, todoTaskList} from "@/api/agentcenter/task";
import {date_format} from "@/utils/date";
import {todoTaskList} from "@/api/agentcenter/accounting_task";
import {date, date_format} from "@/utils/date";
import RightYearMonthSelector from "@/components/framework/RightYearMonthSelector.vue";

export default {
name: "todo",
components: {RightYearMonthSelector},
data() {
return {
deptOptions: [],
@@ -121,17 +98,6 @@ export default {
this.getDeptTree();
},
methods:{
addDate(){
this.year = Number(this.year) + 1 ;
this.chooseMonth(1);
},
reduceDate(){
this.year = Number(this.year) - 1 ;
this.chooseMonth(1);
},
selectionRange(){
this.$refs.datePicker.focus();
},
getDeptTree() {
cityTree({rootId: ENV.UserDeptId()}).then((resp) => {
this.deptOptions = resp.data;
@@ -159,13 +125,12 @@ export default {
this.total = resp.total;
})
},
isCurrentMonth(m) {
return parseInt(this.month) === m;
},
chooseMonth(month) {
this.month = month >= 10 ? '' + month : ('0' + month);
chooseMonth(year, month) {
this.getTaskList();
},
dateFormatter(row, column, cellValue, index) {
return cellValue ? date(cellValue, 'yyyy-MM-dd HH:mm:ss', 'yyyy-MM-dd') : '';
},
},
mounted(){

@@ -200,15 +165,6 @@ export default {
width: 100%;
height: 91vh;
}
.pickerTime{
opacity: 0;
position: absolute;
left: 0px;
top: 30px;
width: 5px;
height: 5px;
z-index: -1;
}
.el-dropdown-link {
cursor: pointer;
}
@@ -342,69 +298,4 @@ export default {

}

.sanjiao-top {
display: inline-block;
border-bottom: 8px solid #414141;
border-bottom-color: initial;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
cursor: pointer;
}

.sanjiao-bottom {
display: inline-block;
border-top: 8px solid #414141;
border-top-color: initial;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
cursor: pointer;
}

.time_main{
display: flex;
flex-direction: column;
align-items: center;
background-color: #f5f6f8;
color: #414141;
width: 75%;
margin: 0 auto;
margin-top: 15px;
padding: 15px 0;
border-radius: 8px;
position: relative;
cursor: pointer;
p{
margin: 10px 0;
}
}

.month_main{
display: flex;
flex-direction: column;
align-items: center;
color: #414141;
p{
margin-top: 3vh;
position: relative;
&.active{
color: #3976ff;
}
&:hover{
color: #3976ff;
cursor: pointer;
}
i{
display: block;
width: 5px;
height: 5px;
background-color: #fc5659;
position: absolute;
top: -5px;
right: -5px;
border-radius: 100%;
}
}

}

</style>

Ładowanie…
Anuluj
Zapisz