import { ref } from "vue" import { validateBlank, validateWindowFileNameInput } from "@/utils/extensions/arcoValidator" import textInfo from "@/config/textInfo" import projectApi from "@/api/testmanage/project" const useCrudInit = function () { const crudRef = ref() const crudOptions = ref({ rowSelection: { showCheckedAll: true }, api: projectApi.getPageList, add: { show: true, api: projectApi.save, text: "新增项目" }, edit: { show: true, api: projectApi.update, text: "编辑项目" }, delete: { show: true, api: projectApi.delete }, searchColNumber: 3, tablePagination: false, operationColumn: true, operationWidth: 500, showIndex: false, showTools: false, operationColumnWidth: 280, // 操作列宽度 operationColumnAlign: "center", // 操作列对齐方式 afterDelete(response: any) { crudRef.value.tableRef.selectAll(false) }, // 处理弹窗的title beforeOpenAdd: function () { crudRef.value.crudFormRef.actionTitle = "项目" return true }, beforeOpenEdit: function (record: any) { crudRef.value.crudFormRef.actionTitle = record.ident + ":" + record.name return true }, formOption: { isFull: true, layout: [ { formType: "grid", cols: [ { span: 8, formList: [{ dataIndex: "ident" }] }, { span: 8, formList: [{ dataIndex: "name" }] }, { span: 8, formList: [{ dataIndex: "engin_model" }] } ] }, { formType: "grid", cols: [ { span: 8, formList: [{ dataIndex: "section_system" }] }, { span: 8, formList: [{ dataIndex: "sub_system" }] }, { span: 8, formList: [{ dataIndex: "device" }] } ] }, { formType: "divider" }, { formType: "grid", cols: [ { span: 6, formList: [{ dataIndex: "beginTime" }] }, { span: 6, formList: [{ dataIndex: "endTime" }] }, { span: 6, formList: [{ dataIndex: "duty_person" }] }, { span: 6, formList: [{ dataIndex: "runtime" }] }, { span: 12, formList: [{ dataIndex: "member" }] }, { span: 6, formList: [{ dataIndex: "soft_type" }] }, { span: 6, formList: [{ dataIndex: "devplant" }] }, { span: 6, formList: [{ dataIndex: "abbreviation" }] }, { span: 6, formList: [{ dataIndex: "quality_person" }] }, { span: 6, formList: [{ dataIndex: "vise_person" }] }, { span: 6, formList: [{ dataIndex: "config_person" }] } ] }, { formType: "grid", cols: [ { span: 6, formList: [{ dataIndex: "security_level" }] }, { span: 6, formList: [{ dataIndex: "language" }] }, { span: 12, formList: [{ dataIndex: "plant_type" }] } ] }, { formType: "grid", cols: [{ span: 24, formList: [{ dataIndex: "test_level" }] }] }, { formType: "grid", cols: [{ span: 24, formList: [{ dataIndex: "report_type" }] }] }, { formType: "grid", cols: [{ span: 24, formList: [{ dataIndex: "standard" }] }] }, { formType: "grid-tailwind", customClass: ["mt-0"], colNumber: 3, cols: [ { formList: [ { formType: "card", title: "委托方信息", customClass: ["mt-3", "mb-5", "mx-1"], formList: [ { dataIndex: "entrust_unit" }, { dataIndex: "entrust_contact" }, { dataIndex: "entrust_contact_phone" }, { dataIndex: "entrust_email" } ] } ] }, { formList: [ { formType: "card", title: "研制方信息", customClass: ["mt-3", "mb-5", "mx-1"], formList: [ { dataIndex: "dev_unit" }, { dataIndex: "dev_contact" }, { dataIndex: "dev_contact_phone" }, { dataIndex: "dev_email" } ] } ] }, { formList: [ { formType: "card", title: "测评中心信息", customClass: ["mt-3", "mb-5", "mx-1"], formList: [ { dataIndex: "test_unit" }, { dataIndex: "test_contact" }, { dataIndex: "test_contact_phone" }, { dataIndex: "test_email" } ] } ] } ] } ] } }) // CRUD-CLOMNS const crudColumns = ref([ { title: "项目标识", align: "center", width: 90, sortable: { sortDirections: ["ascend"] }, dataIndex: "ident", search: true, commonRules: [ { required: true, message: "标识是必填" }, { validator: validateBlank, message: "标识格式不正确" }, { validator: validateWindowFileNameInput } ], validateTrigger: "blur" }, { title: "项目名称", width: 110, align: "center", dataIndex: "name", search: true, commonRules: [{ required: true, message: "名称是必填" }] }, { title: "工程型号", dataIndex: "engin_model", hide: true }, { title: "分系统", dataIndex: "section_system", hide: true }, { title: "子系统", dataIndex: "sub_system", hide: true }, { title: "设备名称", dataIndex: "device", hide: true }, { title: "开始日期", dataIndex: "beginTime", align: "center", commonRules: [{ required: true, message: "开始时间必填" }], formType: "date" }, { title: "结束时间", align: "center", dataIndex: "endTime", formType: "date", extra: "注意:结束时间需要晚于最后一轮结束时间", commonRules: [ { required: true, message: "结束时间必填" }, { validator: (value: any, validationCallbackFunction: any) => { let beginTime = crudRef.value.getFormData().beginTime value < beginTime ? validationCallbackFunction("开始时间必须小于等于结束时间") : null } } ] }, // 这是只为了搜索的字段 { title: "时间范围", hide: true, dataIndex: "searchOnlyTimeRange", search: true, addDisplay: false, editDisplay: false, infoShow: false, formType: "range" }, { title: "责任人", align: "center", width: 70, dataIndex: "duty_person", search: true, commonRules: [{ required: true, message: "责任人必选" }], formType: "select", dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true } }, { title: "运行环境", dataIndex: "runtime", hide: true, search: false, formType: "select", dict: { name: "runtime", props: { label: "title", value: "key" } } }, { title: "成员", dataIndex: "member", hide: true, search: true, formType: "select", multiple: true, dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true }, commonRules: [{ required: true, message: "成员至少选择一个" }] }, { // 后台默认值1,可不填 title: "软件类型", dataIndex: "soft_type", hide: true, search: false, formType: "select", dict: { data: [ { label: "新研", value: 1 }, { label: "改造", value: 2 }, { label: "沿用", value: 3 } ], translation: true }, commonRules: [{ required: true, message: "软件类型必填" }] }, { title: "开发环境", dataIndex: "devplant", hide: true, search: false, formType: "select", dict: { name: "devplant", props: { label: "title", value: "key" } } }, { title: "缩略语", dataIndex: "abbreviation", hide: true, search: false, formType: "select", multiple: true, dict: { url: "system/abbreviation/index", props: { label: "title", value: "title" }, translation: true } }, { title: "质量保证", dataIndex: "quality_person", hide: true, formType: "select", dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true }, commonRules: [{ required: true, message: "至少选择一个质量保证员" }] }, { title: "质量监督", dataIndex: "vise_person", hide: true, formType: "select", dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true }, commonRules: [{ required: true, message: "至少选择一个质量监督员" }] }, { title: "配置管理", dataIndex: "config_person", hide: true, formType: "select", dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true }, commonRules: [{ required: true, message: "至少选择一个配置管理员" }] }, { title: "关键等级", dataIndex: "security_level", addDefaultValue: "3", hide: true, commonRules: [{ required: true, message: "关键等级必填" }], search: true, formType: "radio", dict: { name: "security_level", props: { label: "title", value: "key" } } }, { title: "测试级别", dataIndex: "test_level", commonRules: [{ required: true, message: "请至少选择一个测试级别" }], addDefaultValue: ["4"], hide: true, formType: "checkbox", dict: { name: "test_level", props: { label: "title", value: "key" } } }, { title: "平台类型", dataIndex: "plant_type", commonRules: [{ required: true, message: "请至少选择一个平台类型" }], addDefaultValue: ["3"], hide: true, formType: "checkbox", dict: { name: "plant_type", props: { label: "title", value: "key" } } }, { title: "报告类型", dataIndex: "report_type", align: "center", addDefaultValue: "9", search: true, commonRules: [{ required: true, message: "报告类型必填" }], // 字典-report_type formType: "radio", dict: { name: "report_type", translation: true, props: { label: "title", value: "key" } } }, { title: "编程语言", dataIndex: "language", addDefaultValue: ["1"], commonRules: [{ required: true, message: "请至少选择一个" }], hide: true, formType: "select", multiple: true, dict: { name: "language", props: { label: "title", value: "key" } } }, { title: "依据标准", dataIndex: "standard", addDefaultValue: ["1", "2", "3", "4", "9"], commonRules: [{ required: true, message: "请至少选择一个" }], hide: true, multiple: true, formType: "select", dict: { name: "standard", props: { label: "title", value: "key" } } }, { title: "单位", dataIndex: "entrust_unit", hide: true, commonRules: [{ required: true, message: "单位必选" }], formType: "select", dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true } }, { formType: "input", title: "联系人", dataIndex: "entrust_contact", hide: true, commonRules: [{ required: true, message: "联系人必填" }] }, { formType: "input", title: "联系电话", maxLength: 11, dataIndex: "entrust_contact_phone", hide: true, commonRules: [ { required: true, message: "联系电话必填" }, { match: /^1[3456789]\d{9}$/, message: "电话号码格式错误" } ] }, { formType: "input", title: "电子邮箱", dataIndex: "entrust_email", hide: true }, { title: "单位", dataIndex: "dev_unit", hide: true, commonRules: [{ required: true, message: "单位必选" }], formType: "select", dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true } }, { formType: "input", title: "联系人", dataIndex: "dev_contact", hide: true, commonRules: [{ required: true, message: "联系人必填" }] }, { formType: "input", title: "联系电话", maxLength: 11, dataIndex: "dev_contact_phone", hide: true, commonRules: [ { required: true, message: "联系电话必填" }, { match: /^1[3456789]\d{9}$/, message: "电话号码格式错误" } ] }, { formType: "input", title: "电子邮箱", dataIndex: "dev_email", hide: true }, { title: "单位", dataIndex: "test_unit", hide: true, addDefaultValue: textInfo.testUnitAddDefaultText, commonRules: [{ required: true, message: "单位必选" }], formType: "select", dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true } }, { formType: "input", title: "联系人", dataIndex: "test_contact", addDefaultValue: textInfo.testUnitContactPersonName, hide: true, commonRules: [{ required: true, message: "联系人必填" }] }, { formType: "input", title: "联系电话", dataIndex: "test_contact_phone", addDefaultValue: textInfo.testUnintContactPhoneNumber, hide: true, maxLength: 11, commonRules: [ { required: true, message: "联系电话必填" }, { match: /^1[3456789]\d{9}$/, message: "电话号码格式错误" } ] }, { formType: "input", title: "电子邮箱", dataIndex: "test_email", hide: true }, { title: "状态", align: "center", dataIndex: "step", search: true, formType: "radio", addDefaultValue: "1", addDisabled: true, dict: { name: "step", translation: true, props: { label: "title", value: "key" }, tagColors: { 1: "green", 2: "blue", 3: "red", 4: "yellow" } } }, { title: "密级", align: "center", dataIndex: "secret", search: true, hide: true, formType: "radio", addDefaultValue: "1", addDisabled: true, dict: { name: "secret", translation: true, props: { label: "title", value: "key" } } } ]) return { crudRef, crudOptions, crudColumns } } export default useCrudInit