xialaneirong
This commit is contained in:
parent
858049d38e
commit
e288171467
|
@ -0,0 +1,69 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
|
||||
export function getEvaluationItemList(query) {
|
||||
return request({
|
||||
url: '/certset/evaluationitem/',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
export function getEvaluationItem(id) {
|
||||
return request({
|
||||
url: `/certset/evaluationitem/${id}/`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function createEvaluationItem(data) {
|
||||
return request({
|
||||
url: '/certset/evaluationitem/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function updateEvaluationItem(id, data) {
|
||||
return request({
|
||||
url: `/certset/evaluationitem/${id}/`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function deleteEvaluationItem(id) {
|
||||
return request({
|
||||
url: `/certset/evaluationitem/${id}/`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
export function getEvaluationsList(query) {
|
||||
return request({
|
||||
url: '/certset/evaluations/',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
export function createEvaluations(data) {
|
||||
return request({
|
||||
url: '/certset/evaluations/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function updateEvaluations(id, data) {
|
||||
return request({
|
||||
url: `/certset/evaluations/${id}/`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function deleteEvaluations(id) {
|
||||
return request({
|
||||
url: `/certset/evaluations/${id}/`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
|
@ -169,8 +169,27 @@ export const asyncRoutes = [
|
|||
component: () => import('@/views/implementrule/implementruleupdate.vue'),
|
||||
meta: { title: '编辑规则', noCache: true, icon: '', perms: ['implementrule_update']},
|
||||
hidden: true
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
path: 'evaluationitem',
|
||||
name: 'evaluationitem',
|
||||
component: () => import('@/views/evaluation/evaluationitem'),
|
||||
meta: { title: '评审信息', icon: 'example', perms: ['evaluation_manage'] }
|
||||
},
|
||||
{
|
||||
path: 'evaluationitem/create',
|
||||
name: 'evaluationitemcreate',
|
||||
component: () => import('@/views/evaluation/evaluationitemcreate.vue'),
|
||||
meta: { title: '新增规则', noCache: true, icon: '', perms: ['evaluationitem_create'] },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'evaluationitem/update',
|
||||
name: 'evaluationitemupdate',
|
||||
component: () => import('@/views/evaluation/evaluationitemupdate.vue'),
|
||||
meta: { title: '新增规则', noCache: true, icon: '', perms: ['evaluationitem_update'] },
|
||||
hidden: true
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -464,20 +464,13 @@
|
|||
this.listLoading = true
|
||||
getEnterpriseList().then(response => {
|
||||
this.tableData = genTree(response.data.results)
|
||||
console.log(this.tableData)
|
||||
|
||||
|
||||
})
|
||||
this.listLoading = false
|
||||
},
|
||||
|
||||
handlePreview(file) {
|
||||
if ("url" in file) {
|
||||
window.open(file.url);
|
||||
} else {
|
||||
window.open(file.response.data.path);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
getPfclass() {
|
||||
|
|
|
@ -344,7 +344,7 @@
|
|||
</el-col>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="组织地址信息" >
|
||||
<el-tab-pane label="组织地址信息">
|
||||
<Addresstype :enterprise="formData.id"></Addresstype>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
@ -420,7 +420,7 @@
|
|||
linkman3_mobile: undefined,
|
||||
linkman3_tel: undefined,
|
||||
linkman3_fax: undefined,
|
||||
linkman3_email: undefined,
|
||||
linkman3_email: undefined,
|
||||
parent:undefined
|
||||
},
|
||||
tableData:[],
|
||||
|
@ -467,18 +467,12 @@
|
|||
this.listLoading = true
|
||||
getEnterpriseList().then(response => {
|
||||
this.tableData = genTree(response.data.results)
|
||||
console.log(this.tableData)
|
||||
|
||||
|
||||
})
|
||||
this.listLoading = false
|
||||
},
|
||||
handlePreview(file) {
|
||||
if ("url" in file) {
|
||||
window.open(file.url);
|
||||
} else {
|
||||
window.open(file.response.data.path);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
getData() {
|
||||
getEnterprise(this.formData.id).then(response => {
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<div style="margin-top:6px">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleCreate">新增</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="evaluationitem.results"
|
||||
style="width: 100%;margin-top:10px;"
|
||||
border
|
||||
fit
|
||||
stripe
|
||||
highlight-current-row
|
||||
max-height="600"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="编号">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.cert_field }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="名称">
|
||||
<template slot-scope="scope">{{ scope.row.name }}</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="上传日期">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.create_time }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" >
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
:disabled="!checkPermission(['evaluationitem_update'])"
|
||||
@click="handleUpdate(scope)"
|
||||
>编辑</el-button>
|
||||
<!-- <el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
:disabled="!checkPermission(['implementrule_update'])"
|
||||
@click="handleUpate(scope)"
|
||||
>单元划分</el-button> -->
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
:disabled="!checkPermission(['evaluationitem_delete'])"
|
||||
@click="handleDelete(scope)"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="evaluationitem.count>0"
|
||||
:total="evaluationitem.count"
|
||||
:page.sync="listQuery.page"
|
||||
:limit.sync="listQuery.page_size"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getEvaluationItemList, deleteEvaluationItem } from "@/api/evaluationitem";
|
||||
|
||||
import Pagination from "@/components/Pagination"
|
||||
import checkPermission from '@/utils/permission'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import { genTree } from '../../utils'
|
||||
export default {
|
||||
components: { Pagination, Treeselect },
|
||||
data() {
|
||||
return {
|
||||
evaluationitem: {count:0},
|
||||
listLoading: true,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
page_size: 20
|
||||
},
|
||||
typeOptions: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
checkPermission,
|
||||
getList() {
|
||||
this.listLoading = true;
|
||||
getEvaluationItemList(this.listQuery).then(response => {
|
||||
if (response.data) {
|
||||
this.evaluationitem = response.data
|
||||
}
|
||||
this.listLoading = false
|
||||
});
|
||||
},
|
||||
|
||||
resetFilter() {
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
page_size: 20
|
||||
}
|
||||
this.getList()
|
||||
},
|
||||
handleFilter() {
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
},
|
||||
handleCreate() {
|
||||
this.$router.push({path:"/certset/evaluationitem/create"})
|
||||
},
|
||||
handleUpdate(scope) {
|
||||
this.$router.push({path:"/certset/evaluationitem/update",query:{id:scope.row.id}})
|
||||
},
|
||||
handleDelete(scope) {
|
||||
this.$confirm('确定删除本条数据吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteEvaluationItem(scope.row.id).then(res=>{
|
||||
this.$message.success('删除成功')
|
||||
this.getList()
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
});
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
</script>
|
|
@ -0,0 +1,89 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane label="评审信息">
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="评审标题" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入评审标题" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="评审代号" prop="cert_field">
|
||||
<el-input v-model="formData.cert_field" placeholder="请输入评审代号" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24" style="margin-top:4px">
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">保存</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="评审项信息" v-if="formData.id">
|
||||
<Evaluations :evItem="formData.id"></Evaluations>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { createEvaluationItem} from "@/api/evaluationitem";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
|
||||
import Evaluations from "@/views/evaluation/evaluations";
|
||||
export default {
|
||||
components: { Treeselect,Evaluations},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
|
||||
formData: {
|
||||
id: null,
|
||||
name:undefined,
|
||||
cert_field: undefined,
|
||||
|
||||
},
|
||||
rules: {
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
|
||||
created() {
|
||||
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
|
||||
submitForm() {
|
||||
this.$refs["elForm"].validate(valid => {
|
||||
if (!valid) return;
|
||||
// TODO 提交表单
|
||||
createEvaluationItem(this.formData).then(response => {
|
||||
this.$message.success('成功')
|
||||
this.formData.id = response.data.id
|
||||
});
|
||||
});
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs["elForm"].resetFields();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
|
@ -0,0 +1,94 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane label="评审信息">
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="评审标题" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入评审标题" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="评审代号" prop="cert_field">
|
||||
<el-input v-model="formData.cert_field" placeholder="请输入评审代号" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24" style="margin-top:4px">
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">保存</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="评审项信息" v-if="formData.id">
|
||||
<Evaluations :evItem="formData.id"></Evaluations>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { updateEvaluationItem,getEvaluationItem} from "@/api/evaluationitem";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
|
||||
import Evaluations from "@/views/evaluation/evaluations";
|
||||
export default {
|
||||
components: { Treeselect,Evaluations},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
|
||||
formData: {
|
||||
id: null,
|
||||
name:undefined,
|
||||
cert_field: undefined,
|
||||
|
||||
},
|
||||
rules: {
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
|
||||
created() {
|
||||
this.formData.id = this.$route.query.id;//接收参数
|
||||
this.getData();
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
getData() {
|
||||
getEvaluationItem(this.formData.id).then(response => {
|
||||
this.formData = response.data;
|
||||
})
|
||||
},
|
||||
submitForm() {
|
||||
this.$refs["elForm"].validate(valid => {
|
||||
if (!valid) return;
|
||||
// TODO 提交表单
|
||||
updateEvaluationItem(this.formData.id,this.formData).then(response => {
|
||||
this.$router.go(-1);
|
||||
});
|
||||
|
||||
});
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs["elForm"].resetFields();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
|
@ -0,0 +1,193 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<div>
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleCreate">新增</el-button>
|
||||
</div>
|
||||
<el-table v-loading="listLoading"
|
||||
:data="eltList"
|
||||
style="width: 100%;margin-top:10px;"
|
||||
border
|
||||
fit
|
||||
stripe="true"
|
||||
highlight-current-row
|
||||
max-height="600">
|
||||
<el-table-column type="index" width="50" />
|
||||
|
||||
|
||||
<el-table-column align="center" label="评审内容">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.content }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="260px">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="primary"
|
||||
size="small"
|
||||
@click="handleUpdate(scope)">编辑</el-button>
|
||||
|
||||
<el-button type="danger"
|
||||
size="small"
|
||||
@click="handleDelete(scope)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-dialog :visible.sync="dialogVisible" :title="dialogType==='update'?'编辑':'新增'">
|
||||
<el-form ref="Form"
|
||||
:model="evalutionsData"
|
||||
label-width="80px"
|
||||
label-position="right"
|
||||
:rules="rule1">
|
||||
|
||||
<el-form-item label="评审项:" prop="content">
|
||||
<el-input type="textarea" :rows="2" v-model="evalutionsData.content"
|
||||
placeholder="请输入评审项"
|
||||
clearable
|
||||
:style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
<div style="text-align:right;">
|
||||
<el-button type="danger" @click="dialogVisible=false">取消</el-button>
|
||||
<el-button type="primary" @click="confirms('Form')">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getEvaluationsList, createEvaluations, updateEvaluations, deleteEvaluations} from "@/api/evaluationitem"
|
||||
import Pagination from "@/components/Pagination"
|
||||
import checkPermission from '@/utils/permission'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
export default {
|
||||
name:'evalutionsData',
|
||||
components: {Treeselect, Pagination},
|
||||
props:['evItem'],
|
||||
data() {
|
||||
return {
|
||||
evalutionsData: {
|
||||
id: null,
|
||||
content: null,
|
||||
evItem: this.evItem,
|
||||
},
|
||||
eltList: [],
|
||||
listLoading: true,
|
||||
dialogVisible:false,
|
||||
dialogType:'create',
|
||||
rule1: {
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
},
|
||||
|
||||
created() {
|
||||
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
checkPermission,
|
||||
getList() {
|
||||
|
||||
this.listLoading = true;
|
||||
getEvaluationsList({ evItem:this.evItem }).then(response => {
|
||||
if (response.data) {
|
||||
this.eltList = response.data.results;
|
||||
console.log(this.eltList)
|
||||
|
||||
}
|
||||
this.listLoading = false
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
handleCreate() {
|
||||
this.evalutionsData= {
|
||||
id: null,
|
||||
content: null,
|
||||
evItem: this.evItem,
|
||||
|
||||
|
||||
},
|
||||
this.dialogType = 'create'
|
||||
this.dialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['Form'].clearValidate()
|
||||
})
|
||||
},
|
||||
handleUpdate(scope) {
|
||||
this.evalutionsData = Object.assign({}, scope.row) // copy obj
|
||||
this.dialogType = 'update'
|
||||
this.dialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['Form'].clearValidate()
|
||||
})
|
||||
},
|
||||
handleDelete(scope){
|
||||
|
||||
this.$confirm('确定删除本条数据吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
|
||||
|
||||
deleteEvaluations(scope.row.id).then(res=>{
|
||||
this.$notify({
|
||||
title: '删除成功',
|
||||
type: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
this.getList()
|
||||
})
|
||||
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
});
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
async confirms(form) {
|
||||
this.$refs[form].validate(valid => {
|
||||
if (valid) {
|
||||
const isEdit = this.dialogType === 'update'
|
||||
if (isEdit) {
|
||||
|
||||
updateEvaluations(this.evalutionsData.id, this.evalutionsData).then(() => {
|
||||
this.getList()
|
||||
this.dialogVisible = false
|
||||
this.$notify({
|
||||
title: '成功',
|
||||
type: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
})
|
||||
} else {
|
||||
|
||||
|
||||
|
||||
createEvaluations(this.evalutionsData).then(res => {
|
||||
this.getList()
|
||||
this.dialogVisible = false
|
||||
this.$notify({
|
||||
title: '成功',
|
||||
type: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 3.0.5 on 2020-08-05 01:16
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('certset', '0014_auto_20200804_1558'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='evaluationitem',
|
||||
name='ccc_list',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='evaluations',
|
||||
name='evItem',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='Evaluations_evItem', to='certset.EvaluationItem', verbose_name='评审标准'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 3.0.5 on 2020-08-05 06:35
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('certset', '0015_auto_20200805_0916'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='evaluationitem',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='评审表名称'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='evaluationitem',
|
||||
name='cert_field',
|
||||
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='所属认证领域分类'),
|
||||
),
|
||||
]
|
|
@ -61,8 +61,8 @@ class UnitType(CommonAModel):
|
|||
return self.name
|
||||
|
||||
class EvaluationItem(CommonAModel):
|
||||
cert_field = models.CharField('所属认证领域分类',max_length=1000,blank=True)
|
||||
ccc_list = models.ManyToManyField(Dict,blank=True, verbose_name='CCC产品认证分类', related_name= 'EvaluationItem_ccc_list')
|
||||
name = models.CharField('评审表名称',null=True, blank=True, max_length=1000)
|
||||
cert_field = models.CharField('所属认证领域分类',max_length=1000,null=True, blank=True,)
|
||||
class Meta:
|
||||
verbose_name = '评审表项目'
|
||||
verbose_name_plural = verbose_name
|
||||
|
@ -71,6 +71,7 @@ class EvaluationItem(CommonAModel):
|
|||
return self.cert_field
|
||||
class Evaluations(CommonAModel):
|
||||
content = models.TextField('内容', blank=True)
|
||||
evItem = models.ForeignKey(EvaluationItem, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='评审标准', related_name='Evaluations_evItem')
|
||||
class Meta:
|
||||
verbose_name = '评审列'
|
||||
verbose_name_plural = verbose_name
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from .models import Standard, UnitType, ImplementRule
|
||||
from .models import Standard, UnitType, ImplementRule,EvaluationItem,Evaluations
|
||||
|
||||
from apps.system.serializers import DictSerializer
|
||||
|
||||
|
@ -44,4 +44,12 @@ class UnitTypeSerializer(serializers.ModelSerializer):
|
|||
def setup_eager_loading(queryset):
|
||||
""" Perform necessary eager loading of data. """
|
||||
queryset = queryset.select_related('standard','implementrule')
|
||||
return queryset
|
||||
return queryset
|
||||
class EvaluationItemSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = EvaluationItem
|
||||
fields = '__all__'
|
||||
class EvaluationsSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Evaluations
|
||||
fields = '__all__'
|
|
@ -1,11 +1,13 @@
|
|||
from django.urls import path, include
|
||||
from .views import StandardViewSet, UnitTypedViewSet, ImplementRuleViewSet
|
||||
from .views import StandardViewSet, UnitTypedViewSet, ImplementRuleViewSet,EvaluationItemViewSet,EvaluationsViewSet
|
||||
from rest_framework import routers
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register('standard', StandardViewSet, basename="standard")
|
||||
router.register('unittype', UnitTypedViewSet, basename="unittype")
|
||||
router.register('implementrule', ImplementRuleViewSet, basename="implementrule")
|
||||
router.register('evaluationitem', EvaluationItemViewSet, basename="evaluationitem")
|
||||
router.register('evaluations', EvaluationsViewSet, basename="evaluations")
|
||||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
from .models import Standard, UnitType, ImplementRule
|
||||
from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer, ImplementRuleListSerializer
|
||||
from .models import Standard, UnitType, ImplementRule,EvaluationItem,Evaluations
|
||||
from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer, ImplementRuleListSerializer,EvaluationItemSerializer,EvaluationsSerializer
|
||||
from apps.system.permission_data import RbacFilterSet
|
||||
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
|
||||
# Create your views here.
|
||||
|
@ -45,4 +45,21 @@ class UnitTypedViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet)
|
|||
"""
|
||||
if ((not self.request.query_params.get('page', None)) and (self.request.query_params.get('implementrule', None))) or (self.paginator is None):
|
||||
return None
|
||||
return self.paginator.paginate_queryset(queryset, self.request, view=self)
|
||||
return self.paginator.paginate_queryset(queryset, self.request, view=self)
|
||||
class EvaluationItemViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||
perms_map = {'get': '*', 'post': 'evaluationitem_create',
|
||||
'put': 'evaluationitem_update', 'delete': 'evaluationitem_delete'}
|
||||
queryset = EvaluationItem.objects.all()
|
||||
serializer_class = EvaluationItemSerializer
|
||||
search_fields = ['cert_field']
|
||||
ordering = ['-create_time']
|
||||
class EvaluationsViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||
"""
|
||||
培训记录-增删改查
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': 'evaluations_create',
|
||||
'put': 'evaluations_update', 'delete': 'evaluations_delete'}
|
||||
queryset = Evaluations.objects.all()
|
||||
serializer_class = EvaluationsSerializer
|
||||
search_fields = ['content']
|
||||
ordering = ['-create_time']
|
|
@ -0,0 +1,2 @@
|
|||
from django.contrib import admin
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class LaboratoryConfig(AppConfig):
|
||||
name = 'laboratory'
|
||||
verbose_name = '实验室管理'
|
|
@ -0,0 +1,25 @@
|
|||
from django.db import models
|
||||
from apps.system.models import CommonBModel,CommonAModel,Dict
|
||||
from simple_history.models import HistoricalRecords
|
||||
from django.contrib.postgres.fields import ArrayField
|
||||
import uuid
|
||||
# Create your models here.
|
||||
class DetectOrg(CommonBModel):
|
||||
|
||||
code = models.CharField('实验室编号',unique=True, max_length=100)
|
||||
name = models.CharField('实验室名称',null=True,unique=True, blank=True,max_length=200)
|
||||
address = models.CharField('通讯地址',null=True, blank=True,max_length=500)
|
||||
contactman = models.CharField('联系人',null=True, blank=True,max_length=50)
|
||||
contactmanmoblie = models.CharField('联系人手机',null=True, blank=True,max_length=50)
|
||||
ontactManTel = models.CharField('联系人电话',null=True, blank=True,max_length=50)
|
||||
loginname = models.CharField('登录名',null=True, blank=True,max_length=50)
|
||||
password = models.CharField('登录密码',null=True, blank=True,max_length=50)
|
||||
note = models.CharField('备注',null=True, blank=True,max_length=200)
|
||||
iszy = models.BooleanField('是否自有', default=True)
|
||||
class Meta:
|
||||
verbose_name = '实验室信息'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from .models import DetectOrg
|
||||
from apps.system.serializers import DictSerializer
|
||||
|
||||
|
||||
class DetectOrgSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = DetectOrg
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -0,0 +1,10 @@
|
|||
from django.urls import path, include
|
||||
from .views import DetectOrgViewSet
|
||||
from rest_framework import routers
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register('detectorg', DetectOrgViewSet, basename="enterprise")
|
||||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls))
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
from .models import DetectOrg
|
||||
from utils.queryset import get_child_queryset2
|
||||
from .serializers import DetectOrgSerializer
|
||||
from apps.system.permission_data import RbacFilterSet
|
||||
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
|
||||
# Create your views here.
|
||||
|
||||
class DetectOrgViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet):
|
||||
perms_map = {'get': '*', 'post': 'DetectOrg_create',
|
||||
'put': 'DetectOrg_update', 'delete': 'DetectOrg_delete'}
|
||||
queryset = DetectOrg.objects
|
||||
serializer_class = DetectOrgSerializer
|
||||
search_fields = ['name','query_code', 'code']
|
||||
ordering = ['-create_time']
|
||||
|
Loading…
Reference in New Issue