parent
41614b5762
commit
089adb43a9
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<div class="form-title">{{ title }}</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: "表单标题",
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.form-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
::v-deep .el-form-item__content {
|
||||
width: 100% !important;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,171 @@
|
||||
import { options } from "runjs";
|
||||
|
||||
const list = [
|
||||
{ key: "nickName", label: "新增单位名称", type: "input", prop: "nickName" },
|
||||
{ key: "dwjc", label: "单位简称", type: "input" },
|
||||
{
|
||||
key: "ssqy",
|
||||
label: "所属区域",
|
||||
type: "cascader",
|
||||
required: true,
|
||||
options: require("@/utils/pca-code.json"),
|
||||
props: {
|
||||
value: "value",
|
||||
label: "value",
|
||||
checkStrictly: true,
|
||||
},
|
||||
},
|
||||
{ key: "dwxxdz", label: "单位详细地址", type: "input", required: true },
|
||||
{ key: "sshy", label: "所属行业", dict: "sshy", required: true },
|
||||
{ key: "dwlx", label: "单位类型", dict: "dwlx", required: true },
|
||||
{ key: "dwbq", label: "单位标签", dict: "zc_xtzyx" },
|
||||
{ key: "ssjgdw", label: "所属监管单位", type: "input" },
|
||||
{ key: "dwjs", label: "单位角色", dict: "dwjs" },
|
||||
{ key: "dwzsxz", label: "单位直属性质", dict: "dwzsxz" },
|
||||
{
|
||||
key: "userName",
|
||||
label: "统一社会信用代码",
|
||||
type: "input",
|
||||
prop: "userName",
|
||||
},
|
||||
{ key: "gjdw", label: "是否关基单位", dict: "is_no" },
|
||||
{ key: "rcyyfzbm", label: "日常运营负责部门", type: "input", required: true },
|
||||
{
|
||||
key: "zzjg",
|
||||
label: "组织架构",
|
||||
type: "cascader",
|
||||
prop: "zzjg",
|
||||
props: {
|
||||
value: "value",
|
||||
label: "label",
|
||||
checkStrictly: true,
|
||||
},
|
||||
options: [
|
||||
{
|
||||
value: "100",
|
||||
label: "政务",
|
||||
children: [
|
||||
{
|
||||
value: "101",
|
||||
label: "党委机关",
|
||||
},
|
||||
{
|
||||
value: "102",
|
||||
label: "政府机关",
|
||||
},
|
||||
{
|
||||
value: "200",
|
||||
label: "事业单位",
|
||||
},
|
||||
{
|
||||
value: "202",
|
||||
label: "大型国企",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "10",
|
||||
label: "民营企业",
|
||||
children: [
|
||||
{
|
||||
value: "203",
|
||||
label: "重点民企",
|
||||
},
|
||||
{
|
||||
value: "204",
|
||||
label: "一般民企",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "20",
|
||||
label: "个人",
|
||||
},
|
||||
{
|
||||
value: "30",
|
||||
label: "社会团体",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
key: "dwfzrxm",
|
||||
key2: "dwfzrlxfs",
|
||||
key3: "dwfzryx",
|
||||
key4: "dwfzrzwzc",
|
||||
label: "单位负责人",
|
||||
type: "input",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
key: "fgfzrxm",
|
||||
key2: "fgfzrlxfs",
|
||||
key3: "fgfzryx",
|
||||
key4: "fgfzrzwzc",
|
||||
label: "分管负责人",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
key: "bmfzrxm",
|
||||
key2: "bmfzrlxfs",
|
||||
key3: "bmfzryx",
|
||||
key4: "bmfzrzwzc",
|
||||
label: "部门负责人",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
key: "dylxrxm",
|
||||
key2: "dylxrlxfs",
|
||||
key3: "dylxryx",
|
||||
key4: "dylxrzwzc",
|
||||
label: "第一联系人",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
key: "sxsjg",
|
||||
key2: "sxsjglxfs",
|
||||
key3: "sxsjgyx",
|
||||
key4: "sxsjgzwzc",
|
||||
label: "首席数据官",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
key: "sjgllr",
|
||||
key2: "sjgllrlxfs",
|
||||
key3: "sjgllryx",
|
||||
key4: "sjgllrzwzc",
|
||||
label: "数据官联络人",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
key: "otherConcat",
|
||||
label: "其他联系人",
|
||||
type: "input",
|
||||
add: true,
|
||||
otherConcat: [
|
||||
{
|
||||
qtlxrxm: "",
|
||||
qtlxrlxfs: "",
|
||||
qtlxryx: "",
|
||||
qtlxrzwzc: "",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: "jcxxList",
|
||||
jcxxList: [
|
||||
{
|
||||
sj: "",
|
||||
xtym: "",
|
||||
xthc: "",
|
||||
dbjb: "",
|
||||
dwmc: "",
|
||||
jcjg: "",
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
console.log(list, "表单");
|
||||
|
||||
export default list;
|
@ -0,0 +1,435 @@
|
||||
<template>
|
||||
<!-- 新增/修改/查看-对话框 -->
|
||||
<el-dialog
|
||||
:title="title"
|
||||
:visible.sync="open"
|
||||
append-to-body
|
||||
fullscreen
|
||||
center
|
||||
>
|
||||
<el-form
|
||||
:model="ruleForm"
|
||||
:rules="rules"
|
||||
ref="ruleForm"
|
||||
label-width="170px"
|
||||
class="demo-ruleForm"
|
||||
label-position="right"
|
||||
:disabled="disabled"
|
||||
>
|
||||
<form-title title="基本信息"></form-title>
|
||||
<div class="grid-container">
|
||||
<el-form-item
|
||||
:label="item.label"
|
||||
class="grid-item"
|
||||
v-for="(item, index) in list.slice(0, 14)"
|
||||
:key="index"
|
||||
:prop="item.prop"
|
||||
:required="item.required"
|
||||
>
|
||||
<!-- 输入框 -->
|
||||
<el-input
|
||||
v-if="item.type == 'input'"
|
||||
v-model="ruleForm[item.key]"
|
||||
:placeholder="'请输入' + item.label"
|
||||
></el-input>
|
||||
<!-- 选择框 -->
|
||||
<el-select
|
||||
v-if="item.dict"
|
||||
v-model="ruleForm[item.key]"
|
||||
:placeholder="'请选择' + item.label"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type[item.dict]"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<!-- 多级选择框 -->
|
||||
<el-cascader
|
||||
v-if="item.type == 'cascader'"
|
||||
size="large"
|
||||
:props="item.props"
|
||||
:options="item.options"
|
||||
v-model="ruleForm[item.key]"
|
||||
:placeholder="'请选择' + item.label"
|
||||
>
|
||||
</el-cascader>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<form-title title="联系人"></form-title>
|
||||
<el-form-item
|
||||
:label="item.label"
|
||||
v-for="(item, index) in list.slice(14, 21)"
|
||||
:key="index"
|
||||
:required="item.required"
|
||||
>
|
||||
<div class="linkBox" v-if="!item.add">
|
||||
<el-input
|
||||
v-model="ruleForm[item.key]"
|
||||
:placeholder="'请输入' + item.label"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="ruleForm[item.key2]"
|
||||
:placeholder="'请输入' + item.label + '方式'"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="ruleForm[item.key3]"
|
||||
:placeholder="'请输入' + item.label + '邮箱'"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="ruleForm[item.key4]"
|
||||
:placeholder="'请输入' + item.label + '职务'"
|
||||
></el-input>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div
|
||||
class="linkBox"
|
||||
v-for="(domain, index2) in item.otherConcat"
|
||||
:key="index2"
|
||||
>
|
||||
<el-input
|
||||
v-model="domain.qtlxrxm"
|
||||
:placeholder="'请输入' + item.label"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="domain.qtlxrlxfs"
|
||||
:placeholder="'请输入' + item.label + '方式'"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="domain.qtlxryx"
|
||||
:placeholder="'请输入' + item.label + '邮箱'"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="domain.qtlxrzwzc"
|
||||
:placeholder="'请输入' + item.label + '职务'"
|
||||
></el-input>
|
||||
<i
|
||||
class="el-icon-remove-outline"
|
||||
@click="delLink(item.key, index2)"
|
||||
></i>
|
||||
</div>
|
||||
<el-button style="margin-top: 10px" @click="handleAddLink(item.key)"
|
||||
>添加联系人</el-button
|
||||
>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<form-title title="检查信息"></form-title>
|
||||
|
||||
<div
|
||||
class="grid-container2"
|
||||
v-for="(check, checkIndex) in list[21].jcxxList"
|
||||
:key="'check' + checkIndex"
|
||||
>
|
||||
<el-form-item label="时间">
|
||||
<el-date-picker
|
||||
v-model="check.sj"
|
||||
type="date"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="系统域名">
|
||||
<el-input
|
||||
v-model="check.xtym"
|
||||
placeholder="请输入系统域名"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="系统名称">
|
||||
<el-input
|
||||
v-model="check.xthc"
|
||||
placeholder="请输入系统名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="等保级别">
|
||||
<el-select v-model="check.dbjb" placeholder="请选择等保级别">
|
||||
<el-option
|
||||
v-for="dict in dict.type.dbxx_dbdj"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称">
|
||||
<el-input
|
||||
v-model="check.dwmc"
|
||||
placeholder="请输入单位名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<i
|
||||
class="el-icon-remove-outline"
|
||||
@click="delLink('jcxxList', checkIndex)"
|
||||
></i>
|
||||
<el-form-item label="检查结果" class="grid-item2">
|
||||
<el-input
|
||||
type="textarea"
|
||||
resize="none"
|
||||
placeholder="请输入检查结果"
|
||||
:rows="5"
|
||||
v-model="check.jcjg"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-button
|
||||
style="margin-top: 10px; margin-left: 170px"
|
||||
@click="handleAddLink('jcxxList')"
|
||||
>添加检查信息</el-button
|
||||
>
|
||||
|
||||
<form-title title="更多信息"> </form-title>
|
||||
<div class="grid-container2">
|
||||
<el-form-item label="官网">
|
||||
<el-input v-model="ruleForm.gw" placeholder="请输入官网"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="地图经度">
|
||||
<el-input
|
||||
v-model="ruleForm.dtjd"
|
||||
placeholder="请输入地图经度"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="地图纬度">
|
||||
<el-input
|
||||
v-model="ruleForm.dtwd"
|
||||
placeholder="请输入地图纬度"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="上级单位" required>
|
||||
<el-input
|
||||
v-model="ruleForm.sjdw"
|
||||
placeholder="请输入上级单位"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注" class="grid-item2">
|
||||
<el-input
|
||||
type="textarea"
|
||||
resize="none"
|
||||
placeholder="请输入备注"
|
||||
:rows="5"
|
||||
v-model="ruleForm.remark"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="open = false" size="medium">取 消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="medium"
|
||||
@click="submit()"
|
||||
v-show="!disabled"
|
||||
>确 定</el-button
|
||||
>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import formTitle from "./formTitle.vue";
|
||||
import formItem from "./unitNewAndEdit.js";
|
||||
import { lookUnit, postUnit } from "@/api/auditPagesApi/index";
|
||||
import { MessageBox } from "element-ui";
|
||||
export default {
|
||||
components: { formTitle },
|
||||
dicts: ["zc_xtzyx", "is_no", "sshy", "dwlx", "dwjs", "dwzsxz", "dbxx_dbdj"],
|
||||
data() {
|
||||
const validateTyshxydm = (rule, value, callback) => {
|
||||
const pattern = /^[a-zA-Z0-9]{18}$/;
|
||||
if (!pattern.test(value)) {
|
||||
callback(new Error("请输入正确格式的18位统一社会信用代码"));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
};
|
||||
return {
|
||||
disabled: false,
|
||||
title: "",
|
||||
open: false,
|
||||
list: formItem,
|
||||
ruleForm: {},
|
||||
rules: {
|
||||
userName: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入统一社会信用代码",
|
||||
trigger: "blur",
|
||||
},
|
||||
{ required: true, trigger: "blur", validator: validateTyshxydm },
|
||||
],
|
||||
nickName: [
|
||||
{ required: true, message: "请输入单位名称", trigger: "blur" },
|
||||
],
|
||||
zzjg: [
|
||||
{ required: true, message: "请选择组织机构", trigger: "change" },
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/** 打开对话框 */
|
||||
openDialog(id, disabled) {
|
||||
if (!id) {
|
||||
this.title = "新增单位";
|
||||
this.open = true;
|
||||
} else {
|
||||
this.getInfo(id);
|
||||
this.disabled = disabled;
|
||||
}
|
||||
},
|
||||
|
||||
/**获取详情 */
|
||||
getInfo(id) {
|
||||
lookUnit(id).then((res) => {
|
||||
this.ruleForm = res.data;
|
||||
if (res.data.ssqyprovince && res.data.ssqycity && res.data.ssqycounty) {
|
||||
this.ruleForm.ssqy = [
|
||||
res.data.ssqyprovince,
|
||||
res.data.ssqycity,
|
||||
res.data.ssqycounty,
|
||||
];
|
||||
} else if (res.data.ssqyprovince && res.data.ssqycity) {
|
||||
this.ruleForm.ssqy = [res.data.ssqyprovince, res.data.ssqycity];
|
||||
} else if (res.data.ssqyprovince) {
|
||||
this.ruleForm.ssqy = [res.data.ssqyprovince];
|
||||
}
|
||||
|
||||
if (this.ruleForm.ancestors) {
|
||||
let deptId = this.ruleForm.ancestors.split(",");
|
||||
this.ruleForm.zzjg = deptId;
|
||||
}
|
||||
this.title = "修改单位";
|
||||
this.open = true;
|
||||
});
|
||||
},
|
||||
handleAddLink(key) {
|
||||
let index = this.list.findIndex((item) => item.key == key);
|
||||
let item = this.list[index];
|
||||
if (key == "otherConcat") {
|
||||
item[key].push({
|
||||
qtlxrxm: "",
|
||||
qtlxrlxfs: "",
|
||||
qtlxryx: "",
|
||||
qtlxrzwzc: "",
|
||||
});
|
||||
} else {
|
||||
item[key].push({
|
||||
sj: "",
|
||||
xtym: "",
|
||||
xthc: "",
|
||||
dbjb: "",
|
||||
dwmc: "",
|
||||
jcjg: "",
|
||||
});
|
||||
}
|
||||
},
|
||||
delLink(key, ind) {
|
||||
let index = this.list.findIndex((item) => item.key == key);
|
||||
let item = this.list[index];
|
||||
item[key].splice(ind, 1);
|
||||
},
|
||||
submit() {
|
||||
this.$refs["ruleForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.ruleForm.otherConcat = this.list.filter(
|
||||
(item) => item.key == "otherConcat"
|
||||
)[0].otherConcat;
|
||||
this.ruleForm.jcxxList = this.list.filter(
|
||||
(item) => item.key == "jcxxList"
|
||||
)[0].jcxxList;
|
||||
if (this.ruleForm.ssqy?.length > 0) {
|
||||
this.ruleForm.ssqyprovince = this.ruleForm.ssqy[0];
|
||||
this.ruleForm.ssqycity = this.ruleForm.ssqy[1];
|
||||
this.ruleForm.ssqycounty = this.ruleForm.ssqy[2];
|
||||
}
|
||||
if (this.ruleForm.zzjg.length == 2) {
|
||||
this.ruleForm.deptId = Number(this.ruleForm.zzjg[1]);
|
||||
} else {
|
||||
this.ruleForm.deptId = Number(this.ruleForm.zzjg[0]);
|
||||
}
|
||||
if (this.ruleForm.id != null) {
|
||||
await postUnit("put", this.ruleForm);
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
} else {
|
||||
let res = await postUnit("post", this.ruleForm);
|
||||
let msg = res.msg;
|
||||
MessageBox.confirm(`${msg}`, "生成密码", {
|
||||
confirmButtonText: "确定",
|
||||
showClose: false,
|
||||
type: "success ",
|
||||
callback: (action) => {
|
||||
if (window.clipboardData) {
|
||||
window.clipboardData.setData("text", msg);
|
||||
} else {
|
||||
(function () {
|
||||
document.oncopy = function (e) {
|
||||
e.clipboardData.setData("text", msg);
|
||||
e.preventDefault();
|
||||
document.oncopy = null;
|
||||
};
|
||||
})(msg);
|
||||
document.execCommand("Copy");
|
||||
}
|
||||
this.$message({
|
||||
type: "success",
|
||||
message: `密码复制成功: ${msg}`,
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
this.open = false;
|
||||
this.$emit("finish");
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-dialog.is-fullscreen {
|
||||
margin-left: 260px;
|
||||
width: calc(100% - 260px) !important;
|
||||
}
|
||||
.grid-container {
|
||||
display: grid;
|
||||
/* 定义两列布局,每列平均分配空间 */
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.grid-item:only-child {
|
||||
/* 从第 1 列线跨越到第 3 列线,占据整行 */
|
||||
grid-column: 1 / 3;
|
||||
}
|
||||
::v-deep .el-select,
|
||||
.el-cascader,
|
||||
.el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
::v-deep .linkBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
.el-input {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.grid-container2 {
|
||||
display: grid;
|
||||
/* 定义两列布局,每列平均分配空间 */
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
/* 单个元素时占满整行 */
|
||||
.grid-item2 {
|
||||
/* 从第 1 列线跨越到第 3 列线,占据整行 */
|
||||
grid-column: 1 / 4;
|
||||
}
|
||||
</style>
|
Loading…
Reference in new issue