yxk-20260527-巡视整改提升台账,代码生成

This commit is contained in:
ye1023
2026-05-27 15:49:39 +08:00
parent 81a0675d17
commit ba6925aab5
5 changed files with 935 additions and 0 deletions
@@ -0,0 +1,93 @@
import { defHttp } from "/@/utils/http/axios";
import { useMessage } from "/@/hooks/web/useMessage";
const { createConfirm } = useMessage();
enum Api {
list = '/dqinspectproblem/dqInspectProblem/rootList',
save='/dqinspectproblem/dqInspectProblem/add',
edit='/dqinspectproblem/dqInspectProblem/edit',
deleteDqInspectProblem = '/dqinspectproblem/dqInspectProblem/delete',
importExcel = '/dqinspectproblem/dqInspectProblem/importExcel',
exportXls = '/dqinspectproblem/dqInspectProblem/exportXls',
loadTreeData = '/dqinspectproblem/dqInspectProblem/loadTreeRoot',
getChildList = '/dqinspectproblem/dqInspectProblem/childList',
getChildListBatch = '/dqinspectproblem/dqInspectProblem/getChildListBatch',
}
/**
* 导出api
* @param params
*/
export const getExportUrl = Api.exportXls;
/**
* 导入api
* @param params
*/
export const getImportUrl = Api.importExcel;
/**
* 列表接口
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
/**
* 删除
* @param params
* @param handleSuccess
*/
export const deleteDqInspectProblem = (params,handleSuccess) => {
return defHttp.delete({ url: Api.deleteDqInspectProblem, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
}
/**
* 批量删除
* @param params
* @param handleSuccess
*/
export const batchDeleteDqInspectProblem = (params, handleSuccess) => {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: Api.deleteDqInspectProblem, data: params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
}
});
}
/**
* 保存或者更新
* @param params
* @param isUpdate
*/
export const saveOrUpdateDict = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({ url: url, params },{ isTransformResponse:false });
}
/**
* 查询全部树形节点数据
* @param params
*/
export const loadTreeData = (params) => defHttp.get({ url: Api.loadTreeData,params });
/**
* 查询子节点数据
* @param params
*/
export const getChildList = (params) => defHttp.get({ url: Api.getChildList, params });
/**
* 批量查询子节点数据
* @param params
*/
export const getChildListBatch = (params) => defHttp.get({ url: Api.getChildListBatch, params },{ isTransformResponse:false });
@@ -0,0 +1,78 @@
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '密级',
align: 'center',
dataIndex: 'secretLevel_dictText'
},
{
title: '年份',
align: 'center',
dataIndex: 'year_dictText'
},
{
title: '父节点ID',
align: 'center',
dataIndex: 'pid'
},
{
title: '是否有子节点',
align: 'center',
dataIndex: 'hasChild'
},
{
title: '节点类型:category/surface/specific',
align: 'center',
dataIndex: 'nodeType'
},
{
title: '问题名称',
align: 'left',
dataIndex: 'problemName'
},
{
title: '问题编码/分类字典值',
align: 'center',
dataIndex: 'problemCode'
},
{
title: '排序',
align: 'center',
dataIndex: 'sortNo'
},
{
title: '巡视建议',
align: 'center',
dataIndex: 'inspectAdvice'
},
{
title: '问题责任领导',
align: 'center',
dataIndex: 'questionResLeader_dictText'
},
{
title: '问题责任部门',
align: 'center',
dataIndex: 'questionResDept_dictText'
},
];
// 高级查询数据
export const superQuerySchema = {
secretLevel: {title: '密级',order: 0,view: 'list', type: 'string',dictCode: 'secret_level',},
year: {title: '年份',order: 1,view: 'list', type: 'string',dictCode: 'super_year',},
pid: {title: '父节点ID',order: 2,view: 'text', type: 'string',},
hasChild: {title: '是否有子节点',order: 3,view: 'text', type: 'string',},
nodeType: {title: '节点类型:category/surface/specific',order: 4,view: 'text', type: 'string',},
problemName: {title: '问题名称',order: 5,view: 'text', type: 'string',},
problemCode: {title: '问题编码/分类字典值',order: 6,view: 'text', type: 'string',},
sortNo: {title: '排序',order: 7,view: 'number', type: 'number',},
inspectAdvice: {title: '巡视建议',order: 8,view: 'text', type: 'string',},
questionResLeader: {title: '问题责任领导',order: 9,view: 'sel_depart', type: 'string',},
questionResDept: {title: '问题责任部门',order: 10,view: 'sel_user', type: 'string',},
};
@@ -0,0 +1,415 @@
<template>
<div class="p-2">
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6">
<a-form-item name="problemName">
<template #label><span title="问题名称">问题名称</span></template>
<JInput v-model:value="queryParam.problemName"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset" style="margin-left: 8px">重置</a-button>
<a @click="toggleSearchStatus = !toggleSearchStatus" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<Icon :icon="toggleSearchStatus ? 'ant-design:up-outlined' : 'ant-design:down-outlined'" />
</a>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection" :expandedRowKeys="expandedRowKeys" @expand="handleExpand" @fetch-success="onFetchSuccess">
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" v-auth="'dqinspectproblem:dq_inspect_problem:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button v-auth="'dqinspectproblem:dq_inspect_problem:deleteBatch'"
>批量操作
<Icon icon="ant-design:down-outlined"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
<!--字段回显插槽-->
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- 表单区域 -->
<DqInspectProblemModal ref="registerModal" @success="handleSuccess"></DqInspectProblemModal>
</div>
</template>
<script lang="ts" name="dqinspectproblem-dqInspectProblem" setup>
import { ref, reactive, unref } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './DqInspectProblem.data';
import {list, deleteDqInspectProblem, batchDeleteDqInspectProblem, getExportUrl,getImportUrl, getChildList,getChildListBatch} from './DqInspectProblem.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import DqInspectProblemModal from './components/DqInspectProblemModal.vue'
import { useMessage } from '/@/hooks/web/useMessage';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JSelectMultiple from '/@/components/Form/src/jeecg/components/JSelectMultiple.vue';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue';
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
const { createMessage } = useMessage();
const expandedRowKeys = ref([]);
const queryParam = ref<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
//注册table数据
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: 'dq_inspect_problem',
api: list,
columns,
canResize:false,
useSearchForm: false,
isTreeTable: true,
actionColumn: {
width: 120,
fixed: 'right',
},
beforeFetch: async (params) => {
params.hasQuery = "true";
return Object.assign(params, queryParam.value);
},
},
exportConfig: {
name: "dq_inspect_problem",
url: getExportUrl,
},
importConfig: {
url: getImportUrl,
success: success
},
});
const [registerTable, {reload, collapseAll, updateTableDataRecord, findTableDataRecord,getDataSource},{ rowSelection, selectedRowKeys }] = tableContext
const labelCol = reactive({
xs:24,
sm:4,
xl:6,
xxl:4
});
const wrapperCol = reactive({
xs: 24,
sm: 20,
});
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam.value[k] = params[k];
});
reload();
}
/**
* 新增事件
*/
function handleAdd() {
registerModal.value.disableSubmit = false;
registerModal.value.add();
}
/**
* 编辑事件
*/
async function handleEdit(record) {
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
*/
async function handleDetail(record) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteDqInspectProblem({ id: record.id }, success);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
const ids = selectedRowKeys.value.filter((item) => !item.includes('loadChild'));
await batchDeleteDqInspectProblem({ id: ids }, success);
}
/**
* 成功回调刷新页面
*/
function success() {
(selectedRowKeys.value = []) && reload();
}
/**
* 添加下级
*/
function handleAddSub(record) {
registerModal.value.disableSubmit = false;
registerModal.value.add(record);
}
/**
* 成功回调
*/
async function handleSuccess({ isUpdate, values, expandedArr, changeParent }) {
if (isUpdate) {
if (changeParent) {
reload();
} else {
let data = await list({ id: values.id, pageSize: 1, pageNo: 1, pid: values['pid'] });
if (data && data.records && data.records.length > 0) {
// 编辑回调
updateTableDataRecord(values.id, data.records[0]);
}else{
updateTableDataRecord(values.id, values);
}
}
} else {
if (!values['id'] || !values['pid']) {
//新增根节点
reload();
} else {
//新增子集
expandedRowKeys.value = [];
for (let key of unref(expandedArr)) {
await expandTreeNode(key);
}
}
}
}
/**
* 接口请求成功后回调
*/
function onFetchSuccess(result) {
getDataByResult(result.items) && loadDataByExpandedRows();
}
/**
* 根据已展开的行查询数据(用于保存后刷新时异步加载子级的数据)
*/
async function loadDataByExpandedRows() {
if (unref(expandedRowKeys).length > 0) {
const res = await getChildListBatch({ parentIds: unref(expandedRowKeys).join(',') });
if (res.success && res.result.records.length > 0) {
//已展开的数据批量子节点
let records = res.result.records;
const listMap = new Map();
for (let item of records) {
let pid = item['pid'];
if (unref(expandedRowKeys).includes(pid)) {
let mapList = listMap.get(pid);
if (mapList == null) {
mapList = [];
}
mapList.push(item);
listMap.set(pid, mapList);
}
}
let childrenMap = listMap;
let fn = (list) => {
if (list) {
list.forEach((data) => {
if (unref(expandedRowKeys).includes(data.id)) {
data.children = getDataByResult(childrenMap.get(data.id));
fn(data.children);
}
});
}
};
fn(getDataSource());
}
}
}
/**
* 处理数据集
*/
function getDataByResult(result) {
if (result && result.length > 0) {
return result.map((item) => {
//判断是否标记了带有子节点
if (item['hasChild'] == '1') {
let loadChild = { id: item.id + '_loadChild', name: 'loading...', isLoading: true };
item.children = [loadChild];
}
return item;
});
}
}
/**
*树节点展开合并
*/
async function handleExpand(expanded, record) {
// 判断是否是展开状态,展开状态(expanded)并且存在子集(children)并且未加载过(isLoading)的就去查询子节点数据
if (expanded) {
expandedRowKeys.value.push(record.id);
if (record.children.length > 0 && !!record.children[0].isLoading) {
let result = await getChildList({ pid: record.id});
result = result.records ? result.records : result;
if (result && result.length > 0) {
record.children = getDataByResult(result);
} else {
record.children = null;
record.hasChild = '0';
}
}
} else {
let keyIndex = expandedRowKeys.value.indexOf(record.id);
if (keyIndex >= 0) {
expandedRowKeys.value.splice(keyIndex, 1);
}
}
}
/**
* 操作表格后处理树节点展开合并
*/
async function expandTreeNode(key) {
let record = findTableDataRecord(key);
expandedRowKeys.value.push(key);
let result = await getChildList({ pid: key });
if (result && result.length > 0) {
record.children = getDataByResult(result);
} else {
record.children = null;
record.hasChild = '0';
}
updateTableDataRecord(key, record);
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
auth: 'dqinspectproblem:dq_inspect_problem:edit'
}
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record){
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
{
label: '添加下级',
onClick: handleAddSub.bind(null, { pid: record.id }),
},
{
label: '删除',
popConfirm: {
title: '确定删除吗?',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
auth: 'dqinspectproblem:dq_inspect_problem:delete'
}
];
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
queryParam.value = {};
selectedRowKeys.value = [];
//刷新数据
reload();
}
/**
* form点击事件(以逗号分割)
* @param key
* @param value
*/
function handleFormJoinChange(key, value) {
if (typeof value != 'string') {
queryParam.value[key] = value.join(',');
}
}
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust{
min-width: 100px !important;
}
.query-group-split-cust{
width: 30px;
display: inline-block;
text-align: center
}
.ant-form-item:not(.ant-form-item-with-help){
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),:deep(.ant-input-number){
width: 100%;
}
}
</style>
@@ -0,0 +1,260 @@
<template>
<a-spin :spinning="confirmLoading">
<JFormContainer :disabled="disabled">
<template #detail>
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol" name="DqInspectProblemForm">
<a-row>
<a-col :span="24">
<a-form-item label="密级" v-bind="validateInfos.secretLevel" id="DqInspectProblemForm-secretLevel" name="secretLevel">
<j-dict-select-tag v-model:value="formData.secretLevel" dictCode="secret_level" placeholder="请选择密级" allow-clear />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="年份" v-bind="validateInfos.year" id="DqInspectProblemForm-year" name="year">
<j-dict-select-tag v-model:value="formData.year" dictCode="super_year" placeholder="请选择年份" allow-clear />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="父级节点" v-bind="validateInfos.pid">
<j-tree-select
placeholder="请选择父节点ID"
v-model:value="formData.pid"
dict="dq_inspect_problem,problem_name,id"
pidField="pid"
pidValue="0"
hasChildField="has_child"
:disabled="disabled">
</j-tree-select>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="是否有子节点" v-bind="validateInfos.hasChild" id="DqInspectProblemForm-hasChild" name="hasChild">
<a-input v-model:value="formData.hasChild" placeholder="请输入是否有子节点" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="节点类型:category/surface/specific" v-bind="validateInfos.nodeType" id="DqInspectProblemForm-nodeType" name="nodeType">
<a-input v-model:value="formData.nodeType" placeholder="请输入节点类型:category/surface/specific" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="问题名称" v-bind="validateInfos.problemName" id="DqInspectProblemForm-problemName" name="problemName">
<a-input v-model:value="formData.problemName" placeholder="请输入问题名称" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="问题编码/分类字典值" v-bind="validateInfos.problemCode" id="DqInspectProblemForm-problemCode" name="problemCode">
<a-input v-model:value="formData.problemCode" placeholder="请输入问题编码/分类字典值" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="排序" v-bind="validateInfos.sortNo" id="DqInspectProblemForm-sortNo" name="sortNo">
<a-input-number v-model:value="formData.sortNo" placeholder="请输入排序" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="巡视建议" v-bind="validateInfos.inspectAdvice" id="DqInspectProblemForm-inspectAdvice" name="inspectAdvice">
<a-input v-model:value="formData.inspectAdvice" placeholder="请输入巡视建议" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="问题责任领导" v-bind="validateInfos.questionResLeader" id="DqInspectProblemForm-questionResLeader" name="questionResLeader">
<j-select-dept v-model:value="formData.questionResLeader" :multiple="true" checkStrictly allow-clear />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="问题责任部门" v-bind="validateInfos.questionResDept" id="DqInspectProblemForm-questionResDept" name="questionResDept">
<j-select-user v-model:value="formData.questionResDept" allow-clear />
</a-form-item>
</a-col>
</a-row>
</a-form>
</template>
</JFormContainer>
</a-spin>
</template>
<script lang="ts" setup>
import { ref, reactive, defineExpose, nextTick, unref, defineProps, computed, onMounted } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue';
import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue';
import { getValueType } from '/@/utils';
import {loadTreeData, saveOrUpdateDict} from '../DqInspectProblem.api';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
const useForm = Form.useForm;
const formRef = ref();
const isUpdate = ref(true);
const expandedRowKeys = ref([]);
const treeData = ref([]);
const pidField = ref<string>('pid');
const emit = defineEmits(['register', 'ok']);
let model: Nullable<Recordable> = null;
const formData = reactive<Record<string, any>>({
id: '',
secretLevel: '',
year: '',
pid: '',
hasChild: '',
nodeType: '',
problemName: '',
problemCode: '',
sortNo: undefined,
inspectAdvice: '',
questionResLeader: '',
questionResDept: '',
});
const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
const confirmLoading = ref<boolean>(false);
//表单验证
const validatorRules = reactive({
secretLevel: [{ required: true, message: '请输入密级!'},],
});
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
const props = defineProps({
formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => ({}) },
formBpm: { type: Boolean, default: true }
});
// 表单禁用
const disabled = computed(()=>{
if(props.formBpm === true){
if(props.formData.disabled === false){
return false;
}else{
return true;
}
}
return props.formDisabled;
});
/**
* 新增
*/
function add(obj = {}) {
edit(obj);
}
/**
* 编辑
*/
function edit(record) {
nextTick(async () => {
resetFields();
expandedRowKeys.value = [];
treeData.value = await loadTreeData({ async: false, pcode: '' });
const tmpData = {};
Object.keys(formData).forEach((key) => {
if(record.hasOwnProperty(key)){
tmpData[key] = record[key]
}
})
//赋值
Object.assign(formData,tmpData);
model = tmpData
});
}
/**
* 根据pid获取展开的节点
* @param pid
* @param arr
*/
function getExpandKeysByPid(pid, arr) {
if (pid && arr && arr.length > 0) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].key == pid && unref(expandedRowKeys).indexOf(pid) < 0) {
expandedRowKeys.value.push(arr[i].key);
getExpandKeysByPid(arr[i]['parentId'], unref(treeData));
} else {
getExpandKeysByPid(pid, arr[i].children);
}
}
}
}
/**
* 提交数据
*/
async function submitForm() {
try {
// 触发表单验证
await validate();
} catch ({ errorFields }) {
if (errorFields) {
const firstField = errorFields[0];
if (firstField) {
formRef.value.scrollToField(firstField.name, { behavior: 'smooth', block: 'center' });
}
}
return Promise.reject(errorFields);
}
confirmLoading.value = true;
const isUpdate = ref<boolean>(false);
//时间格式化
if (formData.id) {
isUpdate.value = true;
}
//循环数据
for (let data in formData) {
//如果该数据是数组并且是字符串类型
if (formData[data] instanceof Array) {
let valueType = getValueType(formRef.value.getProps, data);
//如果是字符串类型的需要变成以逗号分割的字符串
if (valueType === 'string') {
formData[data] = formData[data].join(',');
}
}
}
await saveOrUpdateDict(formData, isUpdate.value)
.then(async (res) => {
if (res.success) {
await getExpandKeysByPid(formData['pid'], unref(treeData));
delete formData['children'];
emit('ok', {
isUpdate: unref(isUpdate),
values: { ...formData },
expandedArr: unref(expandedRowKeys).reverse(),
// 是否更改了父级节点
changeParent: model != null && model['pid'] != formData['pid'],
});
createMessage.success(res.message);
} else {
createMessage.warning(res.message);
}
})
.finally(() => {
confirmLoading.value = false;
});
}
/**
* 值改变事件触发
* @param key
* @param value
*/
function handleFormChange(key, value) {
formData[key] = value;
}
defineExpose({
add,
edit,
submitForm,
});
</script>
<style lang="less" scoped>
.antd-modal-form {
padding: 14px;
}
</style>
@@ -0,0 +1,89 @@
<template>
<j-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<DqInspectProblemForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></DqInspectProblemForm>
<template #footer>
<a-button @click="handleCancel">取消</a-button>
<a-button :class="{ 'jee-hidden': disableSubmit }" type="primary" @click="handleOk">确认</a-button>
</template>
</j-modal>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineExpose } from 'vue';
import DqInspectProblemForm from './DqInspectProblemForm.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
import { useMessage } from '/@/hooks/web/useMessage';
const { createMessage } = useMessage();
const title = ref<string>('');
const width = ref<number>(800);
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();
const emit = defineEmits(['register', 'success']);
/**
* 新增
*/
function add(obj={}) {
title.value = '新增';
visible.value = true;
nextTick(() => {
registerForm.value.add(obj);
});
}
/**
* 编辑
* @param record
*/
function edit(record) {
title.value = disableSubmit.value ? '详情' : '编辑';
visible.value = true;
nextTick(() => {
registerForm.value.edit(record);
});
}
/**
* 确定按钮点击事件
*/
function handleOk() {
registerForm.value.submitForm();
}
/**
* form保存回调事件
*/
function submitCallback({ isUpdate, values, expandedArr, changeParent }) {
handleCancel();
emit('success', {
isUpdate: isUpdate,
values: values,
expandedArr: expandedArr,
// 是否更改了父级节点
changeParent: changeParent,
});
}
/**
* 取消按钮回调事件
*/
function handleCancel() {
visible.value = false;
}
defineExpose({
add,
edit,
disableSubmit,
});
</script>
<style lang="less">
/**隐藏样式-modal确定按钮 */
.jee-hidden {
display: none !important;
}
</style>
<style lang="less" scoped></style>