pc检查页面优化
This commit is contained in:
parent
c8cd6681f9
commit
5b33dfb76c
|
@ -0,0 +1,30 @@
|
|||
import request from '@/utils/request'
|
||||
//巡查组
|
||||
|
||||
export function getInspectTeamList(query) {
|
||||
return request({
|
||||
url: '/quality/inspectteam/',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function createInspectTeam(data) {
|
||||
return request({
|
||||
url: '/quality/inspectteam/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function deleteInspectTeam(id, data) {
|
||||
return request({
|
||||
url: `/quality/inspectteam/${id}/`,
|
||||
method: 'delete',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
|
@ -2,33 +2,33 @@
|
|||
<div class="app-container">
|
||||
<el-card>
|
||||
<div>
|
||||
<el-input
|
||||
v-model="listQuery.search"
|
||||
placeholder="任务名"
|
||||
style="width: 300px"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="handleFilter"
|
||||
/>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="handleFilter"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="resetFilter"
|
||||
>重置</el-button
|
||||
>
|
||||
</div>
|
||||
<div style="margin-top: 10px">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleCreate"
|
||||
>创建巡查任务</el-button
|
||||
>
|
||||
</div>
|
||||
<el-input
|
||||
v-model="listQuery.search"
|
||||
placeholder="任务名"
|
||||
style="width: 300px"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="handleFilter"
|
||||
/>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="handleFilter"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="resetFilter"
|
||||
>重置</el-button
|
||||
>
|
||||
</div>
|
||||
<div style="margin-top: 10px">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleCreate"
|
||||
>创建巡查任务</el-button
|
||||
>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card style="margin-top: 10px">
|
||||
<el-table
|
||||
|
@ -41,51 +41,49 @@
|
|||
max-height="600"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="检查模板">
|
||||
<template slot-scope="scope">{{ scope.row.template_name }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="任务名">
|
||||
<el-table-column label="任务名">
|
||||
<template slot-scope="scope">{{ scope.row.name }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="执行单位">
|
||||
<template slot-scope="scope">{{ scope.row.dept_count }}</template>
|
||||
<el-table-column label="当前状态">
|
||||
<template slot-scope="scope">{{ scope.row.state }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="子任务数">
|
||||
<el-table-column label="检查模板">
|
||||
<template slot-scope="scope">{{ scope.row.template_name }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="子任务数">
|
||||
<template slot-scope="scope">{{ scope.row.subtask_count }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="涉及单位数">
|
||||
<template slot-scope="scope">{{ scope.row.dept_count }}</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="巡查开始日期">
|
||||
<el-table-column label="巡查开始日期">
|
||||
<template slot-scope="scope">{{ scope.row.start_date }}</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column label="巡查结束日期">
|
||||
<template slot-scope="scope">{{ scope.row.end_date }}</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
align="center"
|
||||
label="操作"
|
||||
width="220px"
|
||||
>
|
||||
|
||||
<el-table-column align="center" label="操作" width="220px">
|
||||
<template slot-scope="scope">
|
||||
<el-link
|
||||
type="primary"
|
||||
v-if="checkPermission(['task_view'])"
|
||||
@click="handleDo(scope)"
|
||||
>执行</el-link>
|
||||
>执行</el-link
|
||||
>
|
||||
<el-link
|
||||
v-if="checkPermission(['task_update'])"
|
||||
@click="handleEdit(scope)"
|
||||
>编辑</el-link>
|
||||
<el-link
|
||||
v-if="checkPermission(['task_close']) && scope.row.state!='已关闭'"
|
||||
@click="handleClose(scope)"
|
||||
>关闭</el-link>
|
||||
>编辑</el-link
|
||||
>
|
||||
<el-link
|
||||
v-if="checkPermission(['task_delete'])"
|
||||
type="danger"
|
||||
@click="handleDelete(scope)"
|
||||
>删除</el-link>
|
||||
>删除</el-link
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -120,13 +118,13 @@
|
|||
<el-form-item label="任务名" prop="name">
|
||||
<el-input v-model="task.name" placeholder="名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开始日期" prop="start_date">
|
||||
<el-form-item label="开始日期" prop="start_date">
|
||||
<el-date-picker
|
||||
v-model="task.start_date"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="width:100%"
|
||||
style="width: 100%"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
@ -136,12 +134,10 @@
|
|||
type="date"
|
||||
placeholder="选择日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="width:100%"
|
||||
style="width: 100%"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
<div style="text-align: right">
|
||||
<el-button type="danger" @click="dialogVisible = false">取消</el-button>
|
||||
|
@ -151,15 +147,21 @@
|
|||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getinspecttasklist, createinspecttask, deleteinspecttask, updateinspecttask, closeinspecttask } from "@/api/inspectTask";
|
||||
import {getInspecttemplateList} from "@/api/qualityinspect";
|
||||
import {
|
||||
getinspecttasklist,
|
||||
createinspecttask,
|
||||
deleteinspecttask,
|
||||
updateinspecttask,
|
||||
closeinspecttask,
|
||||
} from "@/api/inspectTask";
|
||||
import { getInspecttemplateList } from "@/api/qualityinspect";
|
||||
import checkPermission from "@/utils/permission";
|
||||
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
|
||||
|
||||
import { genTree } from "@/utils";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
const defaulttask = {
|
||||
template:null,
|
||||
template: null,
|
||||
name: "",
|
||||
start_date: null,
|
||||
end_date: null,
|
||||
|
@ -172,7 +174,7 @@ export default {
|
|||
taskList: {
|
||||
count: 0,
|
||||
},
|
||||
templateOptions:[],
|
||||
templateOptions: [],
|
||||
listQuery: {
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
|
@ -207,7 +209,7 @@ export default {
|
|||
},
|
||||
//选择模板
|
||||
getTemplate() {
|
||||
getInspecttemplateList({pageoff:true}).then((res) => {
|
||||
getInspecttemplateList({ pageoff: true }).then((res) => {
|
||||
this.templateOptions = genTree(res.data);
|
||||
});
|
||||
},
|
||||
|
@ -219,7 +221,7 @@ export default {
|
|||
this.listQuery = {
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
}
|
||||
};
|
||||
this.getList();
|
||||
},
|
||||
handleCreate() {
|
||||
|
@ -231,7 +233,10 @@ export default {
|
|||
});
|
||||
},
|
||||
handleDo(scope) {
|
||||
this.$router.push({name: "InpectTaskdo", params: { inpecttask: scope.row.id }, })
|
||||
this.$router.push({
|
||||
name: "InpectTaskdo",
|
||||
params: { id: scope.row.id },
|
||||
});
|
||||
},
|
||||
handleEdit(scope) {
|
||||
this.task = Object.assign({}, scope.row); // copy obj
|
||||
|
@ -288,7 +293,7 @@ export default {
|
|||
if (res.code >= 200) {
|
||||
this.getList();
|
||||
this.dialogVisible = false;
|
||||
// this.$router.push({name: "Taskdo", params: { id: res.data.id }, })
|
||||
// this.$router.push({name: "Taskdo", params: { id: res.data.id }, })
|
||||
this.$message.success("成功");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
>
|
||||
|
||||
<el-table
|
||||
style="margin-top:4px"
|
||||
v-loading="listLoading"
|
||||
:data="inspecttemplateList"
|
||||
border
|
||||
|
@ -57,6 +58,7 @@
|
|||
>
|
||||
|
||||
<el-table
|
||||
style="margin-top:4px"
|
||||
v-loading="listLoading"
|
||||
:data="inspectTableList"
|
||||
border
|
||||
|
@ -73,7 +75,7 @@
|
|||
<template slot-scope="scope">{{ scope.row.sortnum }}</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" label="检查要点">
|
||||
<el-table-column align="center" label="检查事项">
|
||||
<template slot-scope="scope">{{ scope.row.name }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="检查类型">
|
||||
|
@ -127,9 +129,9 @@
|
|||
label-position="right"
|
||||
:rules="rule1"
|
||||
>
|
||||
<el-form-item label="检查要求" prop="name">
|
||||
<el-form-item label="检查事项" prop="name">
|
||||
<el-input type="textarea"
|
||||
:rows="4" v-model="inspectTable.name" placeholder="检查要求" />
|
||||
:rows="4" v-model="inspectTable.name" placeholder="检查事项" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-select
|
||||
|
@ -180,7 +182,7 @@
|
|||
</el-dialog>
|
||||
<el-dialog
|
||||
:visible.sync="dialogVisibles"
|
||||
:title="dialogTypes === 'edit' ? '编辑资料' : '新增资料'"
|
||||
:title="dialogTypes === 'edit' ? '编辑' : '新增'"
|
||||
>
|
||||
<el-form
|
||||
ref="Forms"
|
||||
|
@ -189,9 +191,8 @@
|
|||
label-position="right"
|
||||
:rules="rule1"
|
||||
>
|
||||
<el-form-item label="检查模板名称" prop="name">
|
||||
<el-input type="textarea"
|
||||
:rows="4" v-model="inspecttemplate.name" placeholder="检查模板名称" />
|
||||
<el-form-item label="模板名称" prop="name">
|
||||
<el-input v-model="inspecttemplate.name" placeholder="检查模板名称" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
<el-card style="margin-top: 2px">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="createChildtask()"
|
||||
<el-button type="primary" icon="el-icon-plus" @click="createChildtask()" v-if="task.state != '已完成'" size="small"
|
||||
>创建子任务</el-button
|
||||
>
|
||||
</div>
|
||||
|
@ -63,7 +63,6 @@
|
|||
fit
|
||||
stripe
|
||||
highlight-current-row
|
||||
max-height="300"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column align="center" label="子任务">
|
||||
|
@ -71,12 +70,12 @@
|
|||
</el-table-column>
|
||||
<el-table-column align="center" label="巡检人员">
|
||||
<template slot-scope="scope">
|
||||
<span v-for="item in scope.row.members" v-bind:key="item.member">
|
||||
<span v-for="item in scope.row.members" v-bind:key="item.member" style="padding:1px">
|
||||
|
||||
<el-tag v-if="item.type=='组长'" effect="plain">{{
|
||||
<el-tag v-if="item.type=='组长'" effect="plain" type="danger">{{
|
||||
item.member__name
|
||||
}}</el-tag>
|
||||
<el-tag type="danger" effect="plain" v-else>{{
|
||||
<el-tag effect="plain" v-else>{{
|
||||
item.member__name
|
||||
}}</el-tag>
|
||||
</span>
|
||||
|
@ -95,13 +94,7 @@
|
|||
fixed="right"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="handleClick(scope)" type="primary">执行</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
icon="el-icon-edit"
|
||||
@click="handleEdit(scope)"
|
||||
/>
|
||||
<el-button @click="handleClick(scope)" type="primary" size="small">执行</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
|
@ -261,7 +254,7 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
this.task.id = this.$route.params.inpecttask;
|
||||
this.task.id = this.$route.params.id;
|
||||
this.getinspecttask();//主任务信息
|
||||
|
||||
this.getUserList();//组员
|
||||
|
@ -279,7 +272,7 @@ export default {
|
|||
},
|
||||
//子任务信息
|
||||
getsubinspecttasklist(){
|
||||
getsubinspecttasklist({pageoff:true,inspecttask:this.$route.params.inpecttask}).then((res)=>{
|
||||
getsubinspecttasklist({pageoff:true,inspecttask:this.$route.params.id}).then((res)=>{
|
||||
this.subinsecttask=res.data;
|
||||
});
|
||||
},
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -105,7 +105,7 @@
|
|||
"globalStyle": {
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarTitleText": "uView",
|
||||
"navigationBarBackgroundColor": "#2b85e4",
|
||||
"navigationBarBackgroundColor": "#2581e4",
|
||||
"backgroundColor": "#FFFFFF"
|
||||
},
|
||||
"tabBar": {
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
<view>
|
||||
<!-- <view :style="{background: 'url('+imageURL+')'}">
|
||||
</view> -->
|
||||
<view style="background-color: #0074ba;">
|
||||
<view style="background-color: #2581e4;">
|
||||
<u-image :src="imageURL" mode="widthFix"></u-image>
|
||||
<view style="background-color: #2b85e4;font-weight: bold;font-size: 30rpx;color:white;padding-left:8rpx">欢迎您:{{vuex_user.name}}</view>
|
||||
<view style="background-color: #2581e4;font-weight: bold;font-size: 30rpx;color:white;padding-left:8rpx">欢迎您:{{vuex_user.name}}</view>
|
||||
</view>
|
||||
|
||||
<!-- <u-swiper @change="change" :height="250" :list="swiper_list" :title="swtitle" :effect3d="effect3d"
|
||||
|
@ -54,7 +54,7 @@
|
|||
export default {
|
||||
data() {
|
||||
return {
|
||||
imageURL: 'http://testsearch.ctc.ac.cn:8000/media/default/banner3.jpg',
|
||||
imageURL: '/static/banner3.jpg',
|
||||
swiper_list: [{
|
||||
image: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
|
||||
title: '昨夜星辰昨夜风,画楼西畔桂堂东'
|
||||
|
|
|
@ -65,10 +65,11 @@
|
|||
{{item.item_.sortnum}}.{{item.item_.name}}
|
||||
</view>
|
||||
<view class="u-body-item">
|
||||
<span v-if="item.checker_">{{item.checker_.name}}</span>--
|
||||
<span v-if="item.result=='发现'" style="color:red">{{item.result}}</span>
|
||||
<span v-else-if="item.result=='未发现'" style="color:green">{{item.result}}</span>
|
||||
<span v-else-if="item.result=='不适用'">{{item.result}}</span>
|
||||
<span v-if="item.checker_">{{item.checker_.name}}</span>
|
||||
<span v-if="item.result=='发现'" style="color:red;margin-left:8rpx">{{item.result}}</span>
|
||||
<span v-else-if="item.result=='未发现'" style="color:green;margin-left:8rpx">{{item.result}}</span>
|
||||
<span v-else-if="item.result=='不适用'" style="color:green;margin-left:8rpx">{{item.result}}</span>
|
||||
<span style="margin-left:8rpx" v-if="item.check_time">{{item.check_time.substr(0,16)}}</span>
|
||||
</view>
|
||||
<view style="flex:true;text-align: right;">
|
||||
<u-button type="primary" size="mini" style="margin-left:6rpx" @click="clickRow(item)" v-if="initData.state=='检查中'">检查
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
:errorType="errorType">
|
||||
<u-form-item label="检查事项" v-if="form.item_">
|
||||
<view>
|
||||
<view>类别:<span style="color:darkblue;font-weight: bold;">{{form.item_.type}}</span></view>
|
||||
<view>
|
||||
{{form.item_.cate_name}}
|
||||
</view>
|
||||
<view>{{form.item_.sortnum}}.{{form.item_.name}}</view>
|
||||
</view>
|
||||
</u-form-item>
|
||||
|
|
|
@ -4,8 +4,12 @@
|
|||
:errorType="errorType">
|
||||
<u-form-item label="检查事项" v-if="form.item_">
|
||||
<view>
|
||||
<view>类别:<span style="color:darkblue;font-weight: bold;">{{form.item_.type}}</span></view>
|
||||
<view>{{form.item_.sortnum}}.{{form.item_.name}}</view>
|
||||
<view>
|
||||
{{form.item_.cate_name}}
|
||||
</view>
|
||||
<view>{{form.item_.sortnum}}.{{form.item_.name}}</view>
|
||||
|
||||
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-form-item label="取证要求" v-if="form.item_">
|
||||
|
@ -109,7 +113,7 @@
|
|||
|
||||
}
|
||||
// console.log(sData.imgs)
|
||||
|
||||
|
||||
this.$u.api.checkInspectRecord(sData.id, sData).then(res => {
|
||||
this.$u.toast('提交成功');
|
||||
uni.navigateBack({
|
||||
|
|
|
@ -23,18 +23,22 @@
|
|||
</view>
|
||||
</view>
|
||||
<u-verification-code seconds="30" ref="uCode" @change="codeChange"></u-verification-code>
|
||||
<view class="buttom">
|
||||
<!-- <view class="loginType">
|
||||
<view style="text-align: center;">
|
||||
<view class="icon"><u-icon size="70" name="weixin-fill" color="rgb(83,194,64)" @click="mpLogin"></u-icon></view>
|
||||
微信登录
|
||||
</view>
|
||||
<!-- <view class="buttom">
|
||||
<view class="loginType">
|
||||
<view class="wechat item">
|
||||
<view class="icon"><u-icon size="70" name="weixin-fill" color="rgb(83,194,64)"></u-icon></view>
|
||||
微信
|
||||
微信登录
|
||||
</view>
|
||||
<view class="QQ item">
|
||||
<view class="icon"><u-icon size="70" name="qq-fill" color="rgb(17,183,233)"></u-icon></view>
|
||||
QQ
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
@ -145,6 +149,39 @@ export default {
|
|||
this.$u.toast('倒计时结束后再发送');
|
||||
}
|
||||
},
|
||||
mpLogin(){
|
||||
uni.showLoading({
|
||||
title:'微信登录中...',
|
||||
mask: true
|
||||
})
|
||||
uni.login({
|
||||
provider: 'weixin',
|
||||
success: (loginRes)=>{
|
||||
this.$u.api.wxmplogin({code:loginRes.code}).then(res=>{
|
||||
this.$u.vuex('vuex_token', res.data.access)
|
||||
this.$u.api.getUserInfo().then(res=>{
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title:"登录成功",
|
||||
icon:"none"
|
||||
})
|
||||
uni.reLaunch({
|
||||
url:"/pages/home/home"
|
||||
})
|
||||
this.$u.vuex('vuex_user', res.data)
|
||||
})
|
||||
}).catch(e=>{
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title:"暂未绑定微信!",
|
||||
icon:"none"
|
||||
})
|
||||
uni.reLaunch({
|
||||
url:'/pages/login/login'
|
||||
})})
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
</u-collapse-item>
|
||||
</view>
|
||||
</u-card>
|
||||
<view style="background-color: #ffffff;padding: 8rpx 4rpx 0rpx 4rpx;">
|
||||
<view style="background-color: #ffffff;padding: 8rpx 4rpx 0rpx 4rpx;" >
|
||||
<!-- <u-subsection :list="list" :current="currentIndex" @change="sectionChange"></u-subsection> -->
|
||||
<u-tabs :list="list" :is-scroll="false" :current="currentIndex" @change="sectionChange"></u-tabs>
|
||||
<u-cell-group v-if="nowdepts.length>0">
|
||||
|
@ -104,6 +104,12 @@
|
|||
uni.navigateTo({
|
||||
url:'/pages/inspectrecord/index' + this.$u.queryParams(item)
|
||||
})
|
||||
},
|
||||
touchStart(e){
|
||||
console.log(e)
|
||||
},
|
||||
touchEnd(e){
|
||||
console.log(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ from django.db.models.base import Model
|
|||
from rest_framework import serializers
|
||||
from .models import *
|
||||
from apps.system.serializers import OrganizationSerializer,FileListSerializer,UserSimpleSerializer,OrganizationSimpleSerializer, FileSimpleSerializer
|
||||
from rest_framework.exceptions import ParseError
|
||||
from rest_framework.exceptions import ParseError, APIException
|
||||
class InspectItemSerializer(serializers.ModelSerializer):
|
||||
cate_name = serializers.StringRelatedField(source='cate', read_only=True)
|
||||
class Meta:
|
||||
|
@ -102,7 +102,7 @@ class InspectRecordDetailSerializer(serializers.ModelSerializer):
|
|||
return queryset
|
||||
|
||||
class InspectTeamSerializer(serializers.ModelSerializer):
|
||||
member_ = UserSimpleSerializer(source='member', read_only=True)
|
||||
member__name = serializers.CharField(source='member.name', read_only=True)
|
||||
class Meta:
|
||||
model = InspectTeam
|
||||
fields = '__all__'
|
||||
|
@ -112,6 +112,17 @@ class InspectTeamSerializer(serializers.ModelSerializer):
|
|||
queryset = queryset.select_related('member')
|
||||
return queryset
|
||||
|
||||
def create(self, validated_data):
|
||||
if InspectTeam.objects.filter(subtask=validated_data.get('subtask'),member=validated_data.get('member')).exists():
|
||||
raise ParseError('成员已存在')
|
||||
if validated_data.get('type') == '组长':
|
||||
obj = InspectTeam.objects.get(type='组长', subtask=validated_data.get('subtask'))
|
||||
obj.type='组员'
|
||||
obj.save()
|
||||
return InspectTeam.objects.create(**validated_data)
|
||||
|
||||
|
||||
|
||||
class InspectDeptSerializer(serializers.ModelSerializer):
|
||||
dept__name = serializers.CharField(source='dept.name', read_only=True)
|
||||
leader = serializers.SerializerMethodField()
|
||||
|
|
|
@ -7,7 +7,7 @@ from django.shortcuts import render
|
|||
from django.utils import timezone
|
||||
from rest_framework import status
|
||||
from rest_framework.decorators import action, permission_classes
|
||||
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, RetrieveModelMixin
|
||||
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin
|
||||
from rest_framework.permissions import IsAdminUser
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||
|
@ -166,11 +166,12 @@ class SubtaskViewSet(PageOrNot, CreateUpdateCustomMixin, OptimizationMixin, Mode
|
|||
r['create_by'] = request.user
|
||||
records.append(InspectRecord(**r))
|
||||
for member in request.data['members']:
|
||||
mmember = User.objects.get(pk=member)
|
||||
data = {}
|
||||
data['member'] = mmember
|
||||
data['subtask'] = obj
|
||||
members.append(InspectTeam(**data))
|
||||
if member != request.data['leader']:
|
||||
mmember = User.objects.get(pk=member)
|
||||
data = {}
|
||||
data['member'] = mmember
|
||||
data['subtask'] = obj
|
||||
members.append(InspectTeam(**data))
|
||||
InspectTeam.objects.bulk_create(members)
|
||||
InspectDept.objects.bulk_create(depts)
|
||||
InspectRecord.objects.bulk_create(records)
|
||||
|
@ -245,7 +246,7 @@ class InspectDeptViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin,
|
|||
return Response('检查状态错误', status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class InspectTeamViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
class InspectTeamViewSet(PageOrNot, OptimizationMixin, ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
"""
|
||||
子任务涉及组员表
|
||||
"""
|
||||
|
@ -253,6 +254,13 @@ class InspectTeamViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin,
|
|||
queryset = InspectTeam.objects.all()
|
||||
serializer_class = InspectTeamSerializer
|
||||
filterset_fields = ['subtask']
|
||||
ordering = ['type']
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
if instance.type=='组长':
|
||||
return Response('组长不可删除', status=status.HTTP_400_BAD_REQUEST)
|
||||
instance.delete()
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
class InspectRecordViewSet(OptimizationMixin, PageOrNot, ModelViewSet):
|
||||
perms_map = {'get': '*', 'post': 'inspectrecord_create',
|
||||
|
|
Loading…
Reference in New Issue