pull guize

This commit is contained in:
shilixia 2020-07-03 09:31:56 +08:00
parent 58c5aba98e
commit b62e786237
13 changed files with 1067 additions and 154 deletions

View File

@ -110,7 +110,14 @@ export const asyncRoutes = [
name: 'enterprise',
component: () => import('@/views/enterprise/enterprise'),
meta: { title: '组织信息', icon: 'example', perms: ['enterprise_manage'] }
}
},
{
path: 'enterprise/create',
name: 'EnterpriseCreate',
component: () => import('@/views/enterprise/enterprisecreate.vue'),
meta: { title: '新增组织信息', noCache: true, icon: '', perms: ['enterprise_create']},
hidden: true
},
]
},

View File

@ -1,19 +1,9 @@
<template>
<div class="app-container">
<div>
<el-select v-model="listQuery.type"
placeholder="标准状态"
clearable
style="width: 200px"
class="filter-item"
@change="handleFilter">
<el-option v-for="item in statusOptions"
:key="item.key"
:label="item.display_name"
:value="item.key" />
</el-select>
<el-input v-model="listQuery.search"
placeholder="编号/名称"
placeholder="组织名称/工厂编号"
style="width: 300px;"
class="filter-item"
@keyup.enter.native="handleFilter" />
@ -32,7 +22,6 @@
</div>
<el-table v-loading="listLoading"
:data="enterpriseList.results"
style="width: 100%;margin-top:10px;"
@ -40,146 +29,138 @@
fit
stripe
highlight-current-row
max-height="600">
<el-table-column type="index" width="50" />
<el-table-column label="组织查询码">
max-height="800">
<el-table-column fixed="left" type="index" width="50" />
<el-table-column fixed="left" width="150" label="组织查询码">
<template slot-scope="scope">
{{ scope.row.query_code }}
</template>
</el-table-column>
<el-table-column label="工厂编号">
<el-table-column width="150" label="编号">
<template slot-scope="scope">
{{ scope.row.code }}
{{ scope.row.fid }}
</template>
</el-table-column>
<el-table-column label="组织名称">
<el-table-column width="150" label="工厂编号">
<template slot-scope="scope">
{{ scope.row.name }}
{{ scope.row.code }}
</template>
</el-table-column>
<el-table-column label="英文名">
<el-table-column width="150" label="组织名称">
<template slot-scope="scope" >
{{ }}
</template>
</el-table-column>
<el-table-column width="150" label="英文名">
<template slot-scope="scope">
{{ scope.row.ename }}
</template>
</el-table-column>
<el-table-column label="法人">
<el-table-column width="150" label="法人">
<template slot-scope="scope">
{{ scope.row.legal }}
{{ scope.row.legal }}
</template>
</el-table-column>
<el-table-column label="机构类型">
<el-table-column width="150" label="机构类型">
<template slot-scope="scope">
{{ scope.row.type }}
{{ scope.row.type.name }}
</template>
</el-table-column>
<el-table-column label="县/区">
<template slot-scope="scope">
{{ scope.row.region_code }}
</template>
</el-table-column>
<el-table-column label="组织机构代码">
<template slot-scope="scope">
{{ scope.row.credit_code }}
</template>
</el-table-column>
<el-table-column label="注册资本">
<template slot-scope="scope">
{{ scope.row.gassets }}
</template>
</el-table-column>
<el-table-column label="组织员工数">
<el-table-column width="150" label="组织员工数">
<template slot-scope="scope">
{{ scope.row.person_count }}
</template>
</el-table-column>
<el-table-column label="建厂时间">
<el-table-column width="150" label="建厂时间">
<template slot-scope="scope">
{{ scope.row.build_time }}
</template>
</el-table-column>
<el-table-column label="常用联系人">
<el-table-column width="150" label="经济行业">
<template slot-scope="scope">
{{ scope.row.name }}
{{ scope.row.economy_class.name }}
</template>
</el-table-column>
<el-table-column label="常用联系人电话">
<template slot-scope="scope">
{{ scope.row.linkman1_tel }}
</template>
</el-table-column>
<el-table-column label="常用联系人手机">
<template slot-scope="scope">
{{ scope.row.linkman1_mobile }}
</template>
</el-table-column>
<el-table-column label="经济行业">
<template slot-scope="scope">
{{ scope.row.economy_class }}
</template>
</el-table-column>
<el-table-column label="经营范围">
<el-table-column width="150" label="经营范围">
<template slot-scope="scope">
{{ scope.row.business_type }}
</template>
</el-table-column>
<el-table-column label="常用联系人职务">
<el-table-column width="150" label="组织机构代码">
<template slot-scope="scope">
{{ scope.row.linkman1_duty }}
{{ scope.row.credit_code }}
</template>
</el-table-column>
<el-table-column label="操作">
<el-table-column width="150" label="注册资本">
<template slot-scope="scope">
{{ scope.row.gassets }}
</template>
</el-table-column>
<el-table-column width="150" label="县/区">
<template slot-scope="scope">
{{ scope.row.region_code }}
</template>
</el-table-column>
<el-table-column width="150" label="常用联系人">
<template slot-scope="scope">
{{ scope.row.name }}
</template>
</el-table-column>
<el-table-column width="150" label="常用联系人电话">
<template slot-scope="scope">
{{ scope.row.linkman1_tel }}
</template>
</el-table-column>
<el-table-column width="150" label="常用联系人手机">
<template slot-scope="scope">
{{ scope.row.linkman1_mobile }}
</template>
</el-table-column>
<el-table-column width="150" label="常用联系人职务">
<template slot-scope="scope">
{{ scope.row.linkman1_duty }}
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="260px">
<template slot-scope="scope">
<el-button type="primary"
size="small"
icon="el-icon-edit"
:disabled="!checkPermission(['standard_update'])"
@click="handleUpdate(scope)" />
:disabled="!checkPermission(['implementrule_update'])"
@click="handleUpdate(scope)">编辑</el-button>
<el-button type="danger"
size="small"
icon="el-icon-delete"
:disabled="!checkPermission(['standard_delete'])"
@click="handleDelete(scope)" />
:disabled="!checkPermission(['implementrule_delete'])"
@click="handleDelete(scope)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="enterpriseList.count>0"
:total="enterpriseList.count"
:page.sync="listQuery.page"
:limit.sync="listQuery.page_size"
@pagination="getList" />
</div>
</template>
<script>
import { getEnterpriseList, createEnterprise, updateEnterprise, deleteEnterprise } from "@/api/enterprise"
import { upUrl, upHeaders} from "@/api/file"
import { getEnterpriseList } from "@/api/enterprise"
import Pagination from "@/components/Pagination"
import checkPermission from '@/utils/permission'
const defaultEnterprise = {
id:null,
code:null,
name:null,
publish_date:null,
implement_date:null,
status:'现行'
}
export default {
components: { Pagination },
data() {
return {
upHeaders: upHeaders(),
upUrl: upUrl(),
enterpriseList: {count:0},
enterprise:Object.assign({}, defaultEnterprise),
listLoading: true,
listQuery: {
page: 1,
page_size: 20
},
statusOptions: [
{ key: "现行", display_name: "现行" },
{ key: "即将实施", display_name: "即将实施" },
{ key: "作废", display_name: "作废" },
{ key: "废止", display_name: "废止" }
],
fileList:[]
};
},
created() {
@ -193,23 +174,23 @@ export default {
if (response.data) {
this.enterpriseList = response.data
}
this.listLoading = false;
this.listLoading = false
});
},
resetFilter() {
this.listQuery = {
page: 1,
page_size: 20
};
this.getList();
}
this.getList()
},
handleFilter() {
this.listQuery.page = 1;
this.getList();
this.listQuery.page = 1
this.getList()
},
handleCreate() {
this.$router.push({path:"/crm/enterprise/create"})
},
}
};

View File

@ -0,0 +1,585 @@
<template>
<div class="app-container">
<el-row :gutter="10">
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>组织基本信息</span>
</div>
<el-col :span="8" font="left">
<el-form-item label="组织查询码" prop="query_code">
<el-input v-model="formData.query_code"
placeholder="请输入组织查询码"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<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-col :span="8" font="left">
<el-form-item label="组织名称" prop="ename">
<el-input v-model="formData.ename"
placeholder="请输入组织名称(英文)"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="信用代码" prop="credit_code">
<el-input v-model="formData.credit_code"
placeholder="请输入统一社会信用代码"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="组织法人" prop="legal">
<el-input v-model="formData.legal"
placeholder="请输入组织法人"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="注册资金" prop="gassets">
<el-input v-model="formData.gassets"
placeholder="请输入注册资金(万元)"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="组织员工数" prop="person_count">
<el-input v-model="formData.person_count"
placeholder="请输入组织员工数"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="所属专业" prop="professional">
<el-select v-model="formData.professional"
placeholder="请选择所属专业"
clearable
:style="{width: '100%'}">
<el-option v-for="(item, index) in professional_classOptions"
:key="index"
:label="item.fullname"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="陶瓷年产量" prop="ceramics_output">
<el-input v-model="formData.ceramics_output"
placeholder="请输入陶瓷年产量(万平方米)"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="经济行业" prop="economy_class">
<el-select v-model="formData.economy_class"
placeholder="请选择经济行业"
clearable
:style="{width: '100%'}">
<el-option v-for="(item, index) in economy_classOptions"
:key="index"
:label="item.fullname"
:value="item.value"
:disabled="item.disabled"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="机构类型" prop="type">
<el-select v-model="formData.type"
placeholder="请选择机构类型"
clearable
:style="{width: '100%'}">
<el-option v-for="(item, index) in type_Options"
:key="index"
:label="item.fullname"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="经济类型" prop="type">
<el-select filterable v-model="formData.economy_type"
placeholder="请选择经济类型"
clearable
:style="{width: '100%'}">
<el-option v-for="(item, index) in economy_typeOptions"
:key="index"
:label="item.name"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5" font="right">
<el-form-item label="建厂时间" prop="build_time">
<el-date-picker v-model="formData.build_time"
type="date"
placeholder="选择日期"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5" font="left">
<el-form-item label="工厂编号" prop="code">
<el-input v-model="formData.code"
placeholder="请输入工厂编号"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="经营范围" prop="business_type">
<el-input type="textarea" :rows="2" v-model="formData.business_type"
placeholder="请输入经营范围"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>组织联系人信息</span>
</div>
<el-col :span="8" font="left">
<el-form-item label="常用联系人" prop="linkman1_name">
<el-input v-model="formData.linkman1_name"
placeholder="请输入常用联系人"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="职务" prop="linkman1_duty">
<el-input v-model="formData.linkman1_duty"
placeholder="职务"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="手机" prop="linkman1_mobile">
<el-input v-model="formData.linkman1_mobile"
placeholder="手机"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="联系电话" prop="linkman1_tel">
<el-input v-model="formData.linkman1_tel"
placeholder="联系电话"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="传真" prop="linkman1_fax">
<el-input v-model="formData.linkman1_fax"
placeholder="传真"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="Email" prop="linkman1_email">
<el-input v-model="formData.linkman1_email"
placeholder="Email"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="备用联系人" prop="linkman2_name">
<el-input v-model="formData.linkman2_name"
placeholder="请输入常用联系人"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="职务" prop="linkman2_duty">
<el-input v-model="formData.linkman2_duty"
placeholder="职务"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="手机" prop="linkman2_mobile">
<el-input v-model="formData.linkman2_mobile"
placeholder="手机"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="联系电话" prop="linkman2_tel">
<el-input v-model="formData.linkman2_tel"
placeholder="联系电话"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="传真" prop="linkman2_fax">
<el-input v-model="formData.linkman2_fax"
placeholder="传真"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="Email" prop="linkman2_email">
<el-input v-model="formData.linkman2_email"
placeholder="Email"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="ES联系人" prop="linkman3_name">
<el-input v-model="formData.linkman3_name"
placeholder="请输入常用联系人"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="职务" prop="linkman3_duty">
<el-input v-model="formData.linkman3_duty"
placeholder="职务"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="手机" prop="linkman3_mobile">
<el-input v-model="formData.linkman3_mobile"
placeholder="手机"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="联系电话" prop="linkman3_tel">
<el-input v-model="formData.linkman3_tel"
placeholder="联系电话"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="left">
<el-form-item label="传真" prop="linkman3_fax">
<el-input v-model="formData.linkman3_fax"
placeholder="传真"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-form-item label="Email" prop="linkman3_email">
<el-input v-model="formData.linkman3_email"
placeholder="Email"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remarks">
<el-input type="textarea" :rows="2" v-model="formData.remarks"
placeholder="请输入备注"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>组织地址信息</span>
</div>
<el-col :span="6" font="left">
<el-form-item label="注册地址" prop="registered_address">
<el-input v-model="formData.registered_address"
placeholder="中文地址"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="left">
<el-form-item prop="registered_eaddress">
<el-input v-model="formData.registered_eaddress"
placeholder="英文地址"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="right">
<el-form-item prop="registered_code">
<el-input v-model="formData.registered_code"
placeholder="地址邮编"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="right">
<el-form-item prop="linkman1_mobile">
<el-input v-model="formData.linkman1_mobile"
placeholder="地域代码"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="left">
<el-form-item label="通讯地址" prop="mailing_address">
<el-input v-model="formData.mailing_address"
placeholder="中文地址"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="left">
<el-form-item prop="mailing_eaddress">
<el-input v-model="formData.mailing_eaddress"
placeholder="英文地址"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="4" font="right">
<el-form-item prop="mailing_code">
<el-input v-model="formData.mailing_code"
placeholder="地址邮编"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" font="right">
<el-select filterable v-model="formData.country_type" @change='getValue'
placeholder="请选择国家"
clearable
:style="{width: '35%'}">
<el-option v-for="(item, index) in country_Options"
:key="index"
:label="item.name"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
<el-form-item label="级联选择" prop="field101">
<el-cascader v-model="formData.field101" :options="field101Options" :props="field101Props"
:style="{width: '60%'}" filterable placeholder="请选择地区"></el-cascader>
</el-form-item>
</el-col>
<el-col :span="6" font="left">
<el-form-item label="生产地址" prop="production_address">
<el-input v-model="formData.production_address"
placeholder="中文地址"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="left">
<el-form-item prop="production_eaddress">
<el-input v-model="formData.production_eaddress"
placeholder="英文地址"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="right">
<el-form-item prop="production_postcode">
<el-input v-model="formData.production_postcode"
placeholder="地址邮编"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" font="right">
<el-form-item prop="linkman1_mobile">
<el-input v-model="formData.linkman1_mobile"
placeholder="地域代码"
clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</el-col>
</el-card>
<el-col :span="24">
<el-form-item size="large">
<el-button type="primary" @click="submitForm">创建</el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
</div>
</template>
<style>
.text {
font-size: 14px;
}
.item {
margin-bottom: 18px;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
</style>
<script>
import { getDictList } from "@/api/dict";
import { createEnterprise } from "@/api/enterprise";
import { genTree} from "@/utils";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { upUrl, upHeaders } from "@/api/file";
export default {
components: { Treeselect },
props: [],
data() {
return {
fileList: [],
upHeaders: upHeaders(),
upUrl: upUrl(),
formData: {
},
economy_classOptions: [
],
professional_classOptions: [
],
type_Options: [],
country_typeOptions: [],
field101Options: [],
field101Props: {
"multiple": false,
"label": "name",
"value": "code",
"children": "children"
},
};
},
computed: {},
created() {
this.getEclass(),
this.getPfclass(),
this.getTypeclass(),
this.getcountrytype()
},
mounted() {},
methods: {
handlePreview(file) {
if ("url" in file) {
window.open(file.url);
} else {
window.open(file.response.data.path);
}
},
handleSuccess(response, file, fileList) {
this.formData.path = response.data.path;
},
changeRules() {
},
getEclass() {
getDictList({ type__code: "professional_type" }).then(response => {
this.professional_classOptions = genTree(response.data);
});
},
getPfclass() {
getDictList({ type__code: "economy_class" }).then(response => {
this.economy_classOptions = genTree(response.data);
});
},
getTypeclass() {
getDictList({ type__code: "organication_type" }).then(response => {
this.type_Options = genTree(response.data);
});
},
getcountrytype() {
getDictList({ type__code: "world_regions" }).then(response => {
this.country_Options = genTree(response.data);
});
},
getValue() {
console.log(this.formData.field101);
if (this.formData.country_type == 69) {
getDictList({ type__code: "china_regions" }).then(response => {
this.field101Options = genTree(response.data);
});
}
else
this.field101Options = '';
},
submitForm() {
this.$refs["elForm"].validate(valid => {
if (!valid) return;
// TODO 提交表单
createEnterprise(this.formData).then(response => {
this.$router.go(-1);
});
});
},
}
};
</script>

View File

@ -326,4 +326,4 @@ export default {
}
}
};
</script>
</script>

Binary file not shown.

View File

@ -0,0 +1,238 @@
# Generated by Django 3.0.5 on 2020-06-29 02:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('crm', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='enterprise',
name='remarks',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='备注'),
),
migrations.AlterField(
model_name='enterprise',
name='all_person',
field=models.IntegerField(blank=True, null=True, verbose_name='组织员工数'),
),
migrations.AlterField(
model_name='enterprise',
name='build_time',
field=models.DateField(blank=True, null=True, verbose_name='建厂时间'),
),
migrations.AlterField(
model_name='enterprise',
name='business_type',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='经营范围'),
),
migrations.AlterField(
model_name='enterprise',
name='ceramics_output',
field=models.IntegerField(blank=True, null=True, verbose_name='陶瓷年产量'),
),
migrations.AlterField(
model_name='enterprise',
name='credit_code',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='统一社会信用代码'),
),
migrations.AlterField(
model_name='enterprise',
name='credit_rate',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='企业信誉级别'),
),
migrations.AlterField(
model_name='enterprise',
name='credit_remark',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='企业信誉级别备注'),
),
migrations.AlterField(
model_name='enterprise',
name='ems_person',
field=models.IntegerField(blank=True, null=True, verbose_name='EMS人数'),
),
migrations.AlterField(
model_name='enterprise',
name='ename',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='工厂英文名称'),
),
migrations.AlterField(
model_name='enterprise',
name='gassets',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='固定资产'),
),
migrations.AlterField(
model_name='enterprise',
name='legal',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='申请单位法人代表'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman1_duty',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='第1联系人职务'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman1_email',
field=models.EmailField(blank=True, max_length=300, null=True, verbose_name='第1联系人邮箱'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman1_fax',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='第1联系人传真'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman1_mobile',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='第1联系人手机'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman1_name',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='第1联系人'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman1_tel',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='第1联系人电话'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman2_duty',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='备用联系人职务'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman2_email',
field=models.EmailField(blank=True, max_length=300, null=True, verbose_name='备用联系人邮箱'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman2_fax',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='备用联系人传真'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman2_mobile',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='备用联系人手机'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman2_name',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='备用联系人'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman2_tel',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='备用联系人电话'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman3_duty',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='ES联系人职务'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman3_email',
field=models.EmailField(blank=True, max_length=300, null=True, verbose_name='ES联系人邮箱'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman3_fax',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='ES联系人传真'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman3_mobile',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='ES联系人手机'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman3_name',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='ES联系人'),
),
migrations.AlterField(
model_name='enterprise',
name='linkman3_tel',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='ES联系人电话'),
),
migrations.AlterField(
model_name='enterprise',
name='mailing_address',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='通信地址'),
),
migrations.AlterField(
model_name='enterprise',
name='mailing_code',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='地址邮编'),
),
migrations.AlterField(
model_name='enterprise',
name='mailing_eaddress',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='通信英文地址'),
),
migrations.AlterField(
model_name='enterprise',
name='name',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='工厂名称'),
),
migrations.AlterField(
model_name='enterprise',
name='ohs_person',
field=models.IntegerField(blank=True, null=True, verbose_name='OHS人数'),
),
migrations.AlterField(
model_name='enterprise',
name='pcv_person',
field=models.IntegerField(blank=True, null=True, verbose_name='PCV人数'),
),
migrations.AlterField(
model_name='enterprise',
name='person_count',
field=models.IntegerField(blank=True, null=True, verbose_name='工厂人数'),
),
migrations.AlterField(
model_name='enterprise',
name='production_address',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='生产地址'),
),
migrations.AlterField(
model_name='enterprise',
name='production_eaddress',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='生产英文地址'),
),
migrations.AlterField(
model_name='enterprise',
name='production_postcode',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='生产地址邮编'),
),
migrations.AlterField(
model_name='enterprise',
name='qms_person',
field=models.IntegerField(blank=True, null=True, verbose_name='QMS人数'),
),
migrations.AlterField(
model_name='enterprise',
name='query_code',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='组织查询码'),
),
migrations.AlterField(
model_name='enterprise',
name='registered_address',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='注册地址'),
),
migrations.AlterField(
model_name='enterprise',
name='registered_code',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='注册地址邮编'),
),
migrations.AlterField(
model_name='enterprise',
name='registered_eaddress',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='注册地址英文'),
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 3.0.5 on 2020-06-29 09:07
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
('crm', '0002_auto_20200629_1012'),
]
operations = [
migrations.AddField(
model_name='enterprise',
name='fid',
field=models.UUIDField(default=uuid.uuid4, verbose_name='fid'),
),
]

View File

@ -0,0 +1,32 @@
# Generated by Django 3.0.5 on 2020-07-01 06:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('crm', '0003_enterprise_fid'),
]
operations = [
migrations.RemoveField(
model_name='enterprise',
name='fid',
),
migrations.AddField(
model_name='enterprise',
name='production_code',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='生产地址邮编'),
),
migrations.AlterField(
model_name='enterprise',
name='code',
field=models.CharField(max_length=300, unique=True, verbose_name='工厂编号'),
),
migrations.AlterField(
model_name='enterprise',
name='production_eaddress',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='生产地址英文'),
),
]

View File

@ -0,0 +1,22 @@
# Generated by Django 3.0.5 on 2020-07-01 07:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('crm', '0004_auto_20200701_1457'),
]
operations = [
migrations.RemoveField(
model_name='enterprise',
name='production_code',
),
migrations.AlterField(
model_name='enterprise',
name='production_eaddress',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='生产英文地址'),
),
]

View File

@ -1,68 +1,67 @@
from django.db import models
from apps.system.models import CommonBModel, Dict
from simple_history.models import HistoricalRecords
import uuid
# Create your models here.
class Enterprise(CommonBModel):
code = models.CharField('工厂编号', max_length=300)
name = models.CharField('工厂名称',max_length=1000)
ename = models.CharField('工厂英文名称',max_length=1000)
code = models.CharField('工厂编号',unique=True, max_length=300)
name = models.CharField('工厂名称',null=True, blank=True,max_length=1000)
ename = models.CharField('工厂英文名称',null=True, blank=True,max_length=1000)
type = models.ForeignKey(Dict, on_delete=models.SET_NULL,null=True, blank=True,verbose_name='机构类型', related_name= 'enterprise_type')
legal = models.CharField('申请单位法人代表',max_length=300)
production_address = models.CharField('生产地址',max_length=1000)
production_eaddress = models.CharField('生产英文地址',max_length=1000)
production_postcode = models.CharField('生产地址邮编',max_length=100)
build_time = models.DateField('建厂时间',max_length=200)
person_count = models.IntegerField('工厂人数')
ceramics_output = models.IntegerField('陶瓷年产量')
gassets = models.CharField('固定资产',max_length=100)
linkman1_name = models.CharField('第1联系人',max_length=300)
linkman1_duty = models.CharField('第1联系人职务',max_length=300)
linkman1_email = models.EmailField('第1联系人邮箱',max_length=300)
linkman1_tel = models.CharField('第1联系人电话',max_length=300)
linkman1_mobile = models.CharField('第1联系人手机',max_length=300)
linkman1_fax = models.CharField('第1联系人传真',max_length=300)
linkman2_name = models.CharField('备用联系人',max_length=300)
linkman2_email = models.EmailField('备用联系人邮箱',max_length=300)
linkman2_tel = models.CharField('备用联系人电话',max_length=300)
linkman2_duty = models.CharField('备用联系人职务',max_length=300)
linkman2_mobile = models.CharField('备用联系人手机',max_length=300)
linkman2_fax = models.CharField('备用联系人传真',max_length=300)
legal = models.CharField('申请单位法人代表',null=True, blank=True,max_length=300)
build_time = models.DateField('建厂时间',null=True, blank=True)
person_count = models.IntegerField('工厂人数',null=True, blank=True)
ceramics_output = models.IntegerField('陶瓷年产量',null=True, blank=True)
gassets = models.CharField('固定资产',max_length=100,null=True, blank=True)
linkman1_name = models.CharField('第1联系人',max_length=300,null=True, blank=True)
linkman1_duty = models.CharField('第1联系人职务',max_length=300,null=True, blank=True)
linkman1_email = models.EmailField('第1联系人邮箱',max_length=300,null=True, blank=True)
linkman1_tel = models.CharField('第1联系人电话',max_length=300,null=True, blank=True)
linkman1_mobile = models.CharField('第1联系人手机',max_length=300,null=True, blank=True)
linkman1_fax = models.CharField('第1联系人传真',max_length=300,null=True, blank=True)
linkman2_name = models.CharField('备用联系人',max_length=300,null=True, blank=True)
linkman2_email = models.EmailField('备用联系人邮箱',max_length=300,null=True, blank=True)
linkman2_tel = models.CharField('备用联系人电话',max_length=300,null=True, blank=True)
linkman2_duty = models.CharField('备用联系人职务',max_length=300,null=True, blank=True)
linkman2_mobile = models.CharField('备用联系人手机',max_length=300,null=True, blank=True)
linkman2_fax = models.CharField('备用联系人传真',max_length=300,null=True, blank=True)
country_code = models.ForeignKey(Dict, on_delete=models.SET_NULL,null=True, blank=True,verbose_name='生产企业所在国家地区代码', related_name= 'enterprise_country_code')
credit_code = models.CharField('统一社会信用代码',max_length=300)
# post_name = models.CharField('通信公司',null=True, blank=True, max_length=1000)
# post_ename = models.CharField('通信公司(英)',null=True, blank=True, max_length=1000)
registered_address = models.CharField('注册地址',max_length=1000)
registered_eaddress = models.CharField('注册地址英文',max_length=1000)
registered_code = models.CharField('注册地址邮编',max_length=1000)
mailing_address = models.CharField('通信地址',max_length=1000)
mailing_eaddress = models.CharField('通信英文地址',max_length=1000)
mailing_code = models.CharField('地址邮编',max_length=300)
credit_code = models.CharField('统一社会信用代码',max_length=300,null=True, blank=True)
registered_address = models.CharField('注册地址',max_length=1000,null=True, blank=True)
registered_eaddress = models.CharField('注册地址英文',max_length=1000,null=True, blank=True)
registered_code = models.CharField('注册地址邮编',max_length=1000,null=True, blank=True)
production_address = models.CharField('生产地址',null=True, blank=True,max_length=1000)
production_eaddress = models.CharField('生产英文地址',null=True, blank=True,max_length=1000)
production_postcode = models.CharField('生产地址邮编',null=True, blank=True,max_length=100)
mailing_address = models.CharField('通信地址',max_length=1000,null=True, blank=True)
mailing_eaddress = models.CharField('通信英文地址',max_length=1000,null=True, blank=True)
mailing_code = models.CharField('地址邮编',max_length=300,null=True, blank=True)
region_code = models.ForeignKey(Dict, on_delete=models.SET_NULL,verbose_name='县/区',null=True, blank=True, related_name= 'enterprise_region_code1')
# status = models.CharField('是否受理',null=True, blank=True, max_length=1000)
# bak1 = models.CharField('',null=True, blank=True, max_length=1000)
# bak2 = models.CharField('',null=True, blank=True, max_length=1000)
# bak3 = models.CharField('',null=True, blank=True, max_length=1000)
professional = models.ForeignKey(Dict, on_delete=models.SET_NULL,verbose_name='所属专业',null=True, blank=True, related_name= 'enterprise_professional')
qms_person = models.IntegerField('QMS人数')
ems_person = models.IntegerField('EMS人数')
pcv_person = models.IntegerField('PCV人数')
ohs_person = models.IntegerField('OHS人数')
all_person = models.IntegerField('组织员工数')
qms_person = models.IntegerField('QMS人数',null=True, blank=True)
ems_person = models.IntegerField('EMS人数',null=True, blank=True)
pcv_person = models.IntegerField('PCV人数',null=True, blank=True)
ohs_person = models.IntegerField('OHS人数',null=True, blank=True)
all_person = models.IntegerField('组织员工数',null=True, blank=True)
economy_class = models.ForeignKey(Dict, on_delete=models.SET_NULL,verbose_name='经济行业',null=True, blank=True, related_name= 'enterprise_economy_class')
economy_type = models.ForeignKey(Dict, on_delete=models.SET_NULL,verbose_name='经济类型',null=True, blank=True, related_name= 'enterprise_economy_type')
business_type = models.CharField('经营范围',max_length=1000)
credit_rate = models.CharField('企业信誉级别',max_length=300)
credit_remark = models.CharField('企业信誉级别备注',max_length=1000)
business_type = models.CharField('经营范围',max_length=1000,null=True, blank=True)
credit_rate = models.CharField('企业信誉级别',max_length=300,null=True, blank=True)
credit_remark = models.CharField('企业信誉级别备注',max_length=1000,null=True, blank=True)
# xinyu_oper = models.CharField('信誉法人',null=True, blank=True, max_length=1000)
# xinyu_date = models.CharField('信誉时间',null=True, blank=True, max_length=1000)
query_code = models.CharField('组织查询码',max_length=1000)
linkman3_name = models.CharField('ES联系人',max_length=300)
linkman3_duty = models.CharField('ES联系人职务',max_length=300)
linkman3_email = models.EmailField('ES联系人邮箱',max_length=300)
linkman3_tel = models.CharField('ES联系人电话',max_length=300)
linkman3_mobile = models.CharField('ES联系人手机',max_length=300)
linkman3_fax = models.CharField('ES联系人传真',max_length=300)
query_code = models.CharField('组织查询码',max_length=1000,null=True, blank=True)
linkman3_name = models.CharField('ES联系人',max_length=300,null=True, blank=True)
linkman3_duty = models.CharField('ES联系人职务',max_length=300,null=True, blank=True)
linkman3_email = models.EmailField('ES联系人邮箱',max_length=300,null=True, blank=True)
linkman3_tel = models.CharField('ES联系人电话',max_length=300,null=True, blank=True)
linkman3_mobile = models.CharField('ES联系人手机',max_length=300,null=True, blank=True)
linkman3_fax = models.CharField('ES联系人传真',max_length=300,null=True, blank=True)
remarks = models.CharField('备注',max_length=1000,null=True, blank=True)
class Meta:
verbose_name = '组织信息'
verbose_name_plural = verbose_name

View File

@ -1,9 +1,24 @@
from rest_framework import serializers
from .models import Enterprise
from apps.system.serializers import DictSerializer
class EnterpriseSerializer(serializers.ModelSerializer):
class Meta:
model = Enterprise
fields = '__all__'
fields = '__all__'
class EnterpriseListSerializer(serializers.ModelSerializer):
type = DictSerializer()
economy_class = DictSerializer()
class Meta:
model = Enterprise
fields = ['id','query_code', 'code','fid', 'name','ename','type','legal','production_address','production_eaddress','production_postcode','build_time','person_count','ceramics_output','gassets','linkman1_name','linkman1_tel','linkman1_mobile','country_code','credit_code','professional','all_person','economy_class','economy_type','linkman1_duty','business_type']
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('type','economy_class')
return queryset
def get_cert_type(self, obj):
return obj.get_cert_type_display()

View File

@ -2,12 +2,25 @@ from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from .models import Enterprise
from .serializers import EnterpriseSerializer
from utils.queryset import get_child_queryset2
from .serializers import EnterpriseSerializer,EnterpriseListSerializer
from apps.system.permission_data import RbacFilterSet
# Create your views here.
class EnterpriseViewSet(ModelViewSet):
class EnterpriseViewSet(RbacFilterSet, ModelViewSet):
perms_map = {'get': '*', 'post': 'Enterprise_create',
'put': 'Enterprise_update', 'delete': 'Enterprise_delete'}
queryset = Enterprise.objects
serializer_class = EnterpriseSerializer
search_fields = ['name', 'query_code']
search_fields = ['name','query_code', 'code']
ordering = ['-create_time']
def get_serializer_class(self):
# 根据请求类型动态变更serializer
if self.action == 'list':
return EnterpriseListSerializer
return EnterpriseSerializer
def get_queryset(self):
queryset = self.queryset
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
queryset = self.get_serializer_class().setup_eager_loading(queryset) # 性能优化
return queryset

View File

@ -19,6 +19,8 @@ class RbacFilterSet(GenericAPIView):
)
queryset = self.queryset
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
queryset = self.get_serializer_class().setup_eager_loading(queryset) # 性能优化
if isinstance(queryset, QuerySet):
# Ensure queryset is re-evaluated on each request.
queryset = queryset.all()