Files
dvcp_v2_webapp/project/pingchang/apps/AppNewSociety/components/Add.vue
2022-12-01 09:35:20 +08:00

654 lines
18 KiB
Vue

<template>
<ai-detail>
<!-- 标题 -->
<template slot="title">
<ai-title
title="新增新社会组织"
isShowBottomBorder
isShowBack
@onBackClick="cancel(false)"
/>
</template>
<!-- 内容 -->
<template slot="content">
<el-form
:model="formData"
ref="ruleForm"
:rules="formRules"
label-width="140px"
>
<ai-card title="企业基本信息">
<div class="ai-form" slot="content">
<!-- 社会组织名称 -->
<el-form-item label="社会组织名称" prop="name">
<el-input
v-model="formData.name"
show-word-limit
:maxlength="30"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 社会组织类型 -->
<el-form-item label="社会组织类型" prop="socialType">
<ai-select
v-model="formData.socialType"
placeholder="请选择"
:selectList="$dict.getDict('twoNewOrgSocialType')"
></ai-select>
</el-form-item>
<!-- 统一社会信用代码 -->
<el-form-item label="统一社会信用代码" prop="unifiedCode">
<el-input
v-model="formData.unifiedCode"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 登记证号 -->
<el-form-item label="登记证号" prop="certificateNumber">
<el-input
v-model="formData.certificateNumber"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 负责人姓名 -->
<el-form-item label="负责人姓名" prop="administratorName">
<el-input
v-model="formData.administratorName"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 登记管理机构代码 -->
<el-form-item label="登记管理机构代码" prop="registrationCode">
<el-input
v-model="formData.registrationCode"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 负责人联系方式 -->
<el-form-item label="负责人联系方式" prop="administratorPhone">
<el-input
v-model="formData.administratorPhone"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 批准日期 -->
<el-form-item label="批准日期" prop="approvalDate">
<el-date-picker
value-format="yyyy-MM-dd"
v-model="formData.approvalDate"
type="date"
placeholder="选择日期"
size="small"
>
</el-date-picker>
</el-form-item>
<!-- 负责人身份证号码 -->
<el-form-item label="负责人身份证号码" prop="administratorIdNumber">
<el-input
v-model="formData.administratorIdNumber"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 是否有外资背景isForeign -->
<el-form-item label="是否有外资背景" prop="isForeign">
<el-radio-group v-model="formData.isForeign">
<el-radio
:label="item.label"
v-for="(item, i) in isForeign"
:key="i"
>{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
<!-- 所属区域 -->
<el-form-item label="所属区域" prop="areaId" style="width:100%;">
<ai-area-select
always-show
clearable
:instance="instance"
v-model="formData.areaId"
:areaLevel="5"
></ai-area-select>
<!-- @fullname="v => (formData.areaName = v)" -->
</el-form-item>
<!-- 详细地址 -->
<el-form-item label="详细地址" prop="address" style="width:100%;">
<el-input
v-model="formData.address"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 网格归属 -->
<!-- <el-form-item label="网格归属" prop="girdId" >
<el-cascader
v-model="formData.girdId"
:options="gridTree"
:props="gridTreeOps"
clearable
size="small"
/>
</el-form-item> -->
</div>
</ai-card>
<ai-card title="治保负责人信息">
<div class="ai-form" slot="content">
<!-- 治保负责人姓名 -->
<el-form-item label="治保负责人姓名" prop="securityPersonName">
<el-input
v-model="formData.securityPersonName"
clearable
size="small"
></el-input>
</el-form-item>
<!-- 治保负责人联系方式 -->
<el-form-item label="治保负责人联系方式" prop="securityPersonPhone">
<el-input
v-model.number="formData.securityPersonPhone"
clearable
size="small"
></el-input>
</el-form-item>
</div>
</ai-card>
<ai-card title="组织信息">
<div class="ai-form" slot="content">
<!--是否具备建立中共党组织条件 -->
<el-form-item label="是否具备建立中共党组织条件" prop="isBuildParty">
<el-radio-group v-model="formData.isBuildParty">
<el-radio
:label="item.label"
v-for="(item, i) in isBuildParty"
:key="i"
>{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
<!-- 关注程度 -->
<el-form-item label="关注程度" prop="concernDegree">
<ai-select
v-model="formData.concernDegree"
placeholder="请选择"
:selectList="$dict.getDict('twoNewOrgConcernDegree')"
></ai-select>
</el-form-item>
<!--是否有中共党组织 -->
<el-form-item label="是否有中共党组织" prop="isHaveParty">
<el-radio-group v-model="formData.isHaveParty">
<el-radio
:label="item.label"
v-for="(item, i) in isHaveParty"
:key="i"
>{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
<!-- 中共党员人数 -->
<el-form-item label="中共党员人数" prop="partyNumber">
<el-input
v-model.number="formData.partyNumber"
clearable
size="small"
></el-input>
</el-form-item>
<!--是否有公会 -->
<el-form-item label="是否有公会" prop="isHaveUnion">
<el-radio-group v-model="formData.isHaveUnion">
<el-radio
:label="item.label"
v-for="(item, i) in isHaveUnion"
:key="i"
>{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
<!-- 公会会员人数-->
<el-form-item label="公会会员人数" prop="unionNumber">
<el-input
v-model.number="formData.unionNumber"
clearable
size="small"
></el-input>
</el-form-item>
<!--是否有共青团组织 -->
<el-form-item label="是否有共青团组织" prop="isHaveYoung">
<el-radio-group v-model="formData.isHaveYoung">
<el-radio
:label="item.label"
v-for="(item, i) in isHaveYoung"
:key="i"
>{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
<!--共青团组织人数-->
<el-form-item label="共青团组织人数" prop="youngNumber">
<el-input
v-model.number="formData.youngNumber"
clearable
size="small"
></el-input>
</el-form-item>
<!--是否有妇联组织 -->
<el-form-item label="是否有妇联组织" prop="isHaveWoman">
<el-radio-group v-model="formData.isHaveWoman">
<el-radio
:label="item.label"
v-for="(item, i) in isHaveWoman"
:key="i"
>{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
<!--妇女人数-->
<el-form-item label="妇女人数" prop="womanNumber">
<el-input
v-model.number="formData.womanNumber"
size="small"
clearable
></el-input>
</el-form-item>
</div>
</ai-card>
</el-form>
</template>
<!-- 底部按钮 -->
<template #footer>
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="confirm('ruleForm')">提交</el-button>
</template>
</ai-detail>
</template>
<script>
import {mapState} from "vuex";
export default {
name: "Add",
// 组件
components: {},
props: {instance: Function, dict: Object, params: Object},
data() {
return {
gridTree: [],
id: "",
formData: {
name: "",
socialType: "",
unifiedCode: "",
certificateNumber: "",
administratorName: "",
registrationCode: "",
administratorPhone: "",
approvalDate: "",
administratorIdNumber: "",
isForeign: "",
areaId: "",
address: "",
girdId: "",
securityPersonName: "",
securityPersonPhone: "",
isBuildParty: "",
concernDegree: "",
isHaveParty: "",
partyNumber: "",
isHaveUnion: "",
unionNumber: "",
isHaveYoung: "",
youngNumber: "",
isHaveWoman: "",
womanNumber: "",
bizType: "1"
}
};
},
// 计算
computed: {
...mapState(["user"]),
formRules() {
// 身份证号校验
const IdCard = (rule, value, callback) => {
const reg = /(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|12]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/;
if (!value) {
return callback(new Error("证件号码不能为空"));
} else if (!reg.test(value)) {
return callback(new Error("证件号码格式错误"));
} else {
callback();
}
};
// 统一社会信用代码校验
const unifiedCode = (rule, value, callback) => {
const reg = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/;
if (value && !reg.test(value)) callback("统一社会信用代码格式错误");
else callback();
};
return {
name: [
{required: true, message: "请输入企业名称", trigger: "change"}
],
socialType: [
{required: true, message: "请选择社会组织类型", trigger: "change"}
],
unifiedCode: [
{
required: true,
message: "请输入统一社会信用代码",
trigger: "change"
},
{validator: unifiedCode}
],
administratorName: [
{
required: true,
message: "请输入负责人姓名",
trigger: "change"
}
],
administratorPhone: [
{
required: true,
message: "请输入负责人联系方式",
trigger: "change"
}
// { validator: phonePass }
],
areaId: [
{
required: true,
message: "请选择所属区域",
trigger: "change"
},
{
validator: (r, v, cb) =>
/0{3}$/g.test(v) ? cb("请选择到村") : cb()
}
],
administratorIdNumber: [
{
required: true,
message: "请输入负责人身份证号码",
trigger: "change"
},
{validator: IdCard}
],
isForeign: [
{
required: true,
message: "请选择是否有外资背景",
trigger: "change"
}
],
isBuildParty: [
{
required: true,
message: "请选择是否具备建立中共党组织条件",
trigger: "change"
}
],
girdId: [
{required: true, message: "请选择网格归属", trigger: "change"}
],
// securityPersonPhone: [{ validator: phonePass }],
concernDegree: [
{required: true, message: "请选择关注程度", trigger: "change"}
],
isHaveParty: [
{
required: true,
message: "请选择是否有中共党组织",
trigger: "change"
}
],
partyNumber: [
{required: true, message: "请输入中共党员人数", trigger: "change"},
{
validator: (r, v, cb) =>
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
}
],
isHaveUnion: [
{required: true, message: "请选择是否有公会", trigger: "change"}
],
unionNumber: [
{required: true, message: "请输入公会会员人数", trigger: "change"},
{
validator: (r, v, cb) =>
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
}
],
isHaveYoung: [
{
required: true,
message: "请选择是否有共青团组织",
trigger: "change"
}
],
youngNumber: [
{
required: true,
message: "请输入共青团组织人数",
trigger: "change"
},
{
validator: (r, v, cb) =>
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
}
],
isHaveWoman: [
{required: true, message: "请选择是否有妇联组织", trigger: "change"}
],
womanNumber: [
{required: true, message: "请输入妇女人数", trigger: "change"},
{
validator: (r, v, cb) =>
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
}
]
};
},
isForeign() {
return [
{name: "是", label: "1"},
{name: "否", label: "0"}
];
},
isBuildParty() {
return [
{name: "是", label: "1"},
{name: "否", label: "0"}
];
},
isHaveParty() {
return [
{name: "是", label: "1"},
{name: "否", label: "0"}
];
},
isHaveUnion() {
return [
{name: "是", label: "1"},
{name: "否", label: "0"}
];
},
isHaveYoung() {
return [
{name: "是", label: "1"},
{name: "否", label: "0"}
];
},
isHaveWoman() {
return [
{name: "是", label: "1"},
{name: "否", label: "0"}
];
},
gridTreeOps() {
return {
emitPath: false,
value: "id",
label: "girdName",
children: "girdList"
};
}
},
// 监听
watch: {},
// 实例创建后
created() {
this.dict
.load(
"twoNewOrgCompanyCategory",
"twoNewOrgDangerousType",
"twoNewOrgConcernDegree"
)
.then(() => {
});
this.getGridTree();
this.formData.areaId = this.user.info.areaId;
if (this.params && this.params.id) {
this.id = this.params.id;
this.getInfoList(this.params.id);
}
},
onShow() {
},
// 实例渲染后
mounted() {
},
// 方法
methods: {
getInfoList(id) {
this.instance
.post(`/app/apptwoneworganization/queryDetailById?id=${id}`)
.then(res => {
if (res.code === 0) {
this.formData = res.data;
}
});
},
// 确定新增
confirm() {
this.$refs["ruleForm"].validate(valid => {
if (valid) {
this.instance
.post(`/app/apptwoneworganization/addOrUpdate`, {
...this.formData
})
.then(res => {
if (res.code == 0) {
this.$message.success("提交成功");
this.cancel(true);
}
});
}
});
},
// 返回按钮
cancel(isRefresh) {
this.$emit("change", {
type: "list",
isRefresh: !!isRefresh
});
},
getGridTree() {
this.instance.post("/app/appgirdinfo/listAllByTop").then(res => {
if (res.data) {
this.gridTree = res.data;
}
});
}
}
};
</script>
<style scoped lang="scss">
:deep(.ai-form ){
.ai-card {
.ai-card-body {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.isforeign {
margin-right: 109px;
}
.width {
width: 100%;
}
.girdId {
width: 100%;
.el-form-item__content {
.el-cascader {
width: 100%;
}
}
}
}
}
}
:deep( .ai-form .el-form-item .el-form-item__content ){
margin-left: 164px!important;
}
</style>