You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

310 lines
13 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<!-- <el-form-item label="主键标识" prop="outsourcingId">
<el-input v-model="queryParams.outsourcingId" placeholder="请输入主键标识" clearable @keyup.enter="handleQuery" />
</el-form-item>-->
<el-form-item label="外协编号" prop="outsourcingCode">
<el-input v-model="queryParams.outsourcingCode" placeholder="请输入外协编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="单位名称" prop="outsourcingName">
<el-input v-model="queryParams.outsourcingName" placeholder="请输入单位名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="外协联系人" prop="outsourcingPerson">
<el-input v-model="queryParams.outsourcingPerson" placeholder="请输入外协联系人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="外协电话" prop="outsourcingTel">
<el-input v-model="queryParams.outsourcingTel" placeholder="请输入外协电话" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="外协地址" prop="outsourcingAddress">
<el-input v-model="queryParams.outsourcingAddress" placeholder="请输入外协地址" clearable @keyup.enter="handleQuery" />
</el-form-item>-->
<el-form-item label="激活标识" prop="activeFlag">
<el-select v-model="queryParams.activeFlag" placeholder="请选择激活标识" clearable >
<el-option v-for="dict in active_flag" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['dms:dmsBaseOutsourcingInfo:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['dms:dmsBaseOutsourcingInfo:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['dms:dmsBaseOutsourcingInfo:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['dms:dmsBaseOutsourcingInfo:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="dmsBaseOutsourcingInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键标识" align="center" prop="outsourcingId" v-if="columns[0].visible"/>
<el-table-column label="外协编号" align="center" prop="outsourcingCode" v-if="columns[2].visible"/>
<el-table-column label="单位名称" align="center" prop="outsourcingName" v-if="columns[3].visible"/>
<el-table-column label="外协联系人" align="center" prop="outsourcingPerson" v-if="columns[4].visible"/>
<el-table-column label="外协电话" align="center" prop="outsourcingTel" v-if="columns[5].visible"/>
<el-table-column label="外协地址" align="center" prop="outsourcingAddress" v-if="columns[6].visible"/>
<el-table-column label="激活标识" align="center" prop="activeFlag" v-if="columns[7].visible">
<template #default="scope">
<dict-tag :options="active_flag" :value="scope.row.activeFlag"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[8].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['dms:dmsBaseOutsourcingInfo:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['dms:dmsBaseOutsourcingInfo:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改外协信息对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="dmsBaseOutsourcingInfoFormRef" :model="form" :rules="rules" label-width="120px">
<!-- <el-form-item label="主键标识" prop="outsourcingId">
<el-input v-model="form.outsourcingId" placeholder="请输入主键标识" />
</el-form-item>-->
<el-form-item label="外协编号" prop="outsourcingCode">
<el-input v-model="form.outsourcingCode" placeholder="请输入外协编号" />
</el-form-item>
<el-form-item label="单位名称" prop="outsourcingName">
<el-input v-model="form.outsourcingName" placeholder="请输入单位名称" />
</el-form-item>
<el-form-item label="外协联系人" prop="outsourcingPerson">
<el-input v-model="form.outsourcingPerson" placeholder="请输入外协联系人" />
</el-form-item>
<el-form-item label="外协电话" prop="outsourcingTel">
<el-input v-model="form.outsourcingTel" placeholder="请输入外协电话" />
</el-form-item>
<el-form-item label="外协地址" prop="outsourcingAddress">
<el-input v-model="form.outsourcingAddress" placeholder="请输入外协地址" />
</el-form-item>
<el-form-item label="激活标识" prop="activeFlag">
<el-radio-group v-model="form.activeFlag">
<el-radio
v-for="dict in active_flag"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="DmsBaseOutsourcingInfo" lang="ts">
import { listDmsBaseOutsourcingInfo, getDmsBaseOutsourcingInfo, delDmsBaseOutsourcingInfo, addDmsBaseOutsourcingInfo, updateDmsBaseOutsourcingInfo } from '@/api/dms/dmsBaseOutsourcingInfo';
import { DmsBaseOutsourcingInfoVO, DmsBaseOutsourcingInfoQuery, DmsBaseOutsourcingInfoForm } from '@/api/dms/dmsBaseOutsourcingInfo/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { active_flag } = toRefs<any>(proxy?.useDict('active_flag'));
const dmsBaseOutsourcingInfoList = ref<DmsBaseOutsourcingInfoVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const dmsBaseOutsourcingInfoFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
// 列显隐信息
const columns = ref<FieldOption[]>([
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `租户编号`, visible: false },
{ key: 2, label: `外协编号`, visible: true },
{ key: 3, label: `单位名称`, visible: true },
{ key: 4, label: `外协联系人`, visible: true },
{ key: 5, label: `外协电话`, visible: true },
{ key: 6, label: `外协地址`, visible: true },
{ key: 7, label: `激活标识`, visible: true },
{ key: 8, label: `备注`, visible: true },
{ key: 9, label: `创建部门`, visible: false },
{ key: 10, label: `创建人`, visible: false },
{ key: 11, label: `创建时间`, visible: false },
{ key: 12, label: `更新人`, visible: false },
{ key: 13, label: `更新时间`, visible: false },
]);
const initFormData: DmsBaseOutsourcingInfoForm = {
outsourcingId: undefined,
outsourcingCode: undefined,
outsourcingName: undefined,
outsourcingPerson: undefined,
outsourcingTel: undefined,
outsourcingAddress: undefined,
activeFlag: "1",
remark: undefined,
}
const data = reactive<PageData<DmsBaseOutsourcingInfoForm, DmsBaseOutsourcingInfoQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
outsourcingId: undefined,
outsourcingCode: undefined,
outsourcingName: undefined,
outsourcingPerson: undefined,
outsourcingTel: undefined,
outsourcingAddress: undefined,
activeFlag: undefined,
params: {
}
},
rules: {
outsourcingCode: [
{ required: true, message: "外协编号不能为空", trigger: "blur" }
],
outsourcingName: [
{ required: true, message: "单位名称不能为空", trigger: "blur" }
],
activeFlag: [
{ required: true, message: "激活标识不能为空", trigger: "change" }
],
/* outsourcingTel: [
//手机号匹配以1开头第二位为3至9之间的数字后续跟9位数字的字符串触发校验的事件为失去焦点时。
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur'}
]*/
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询外协信息列表 */
const getList = async () => {
loading.value = true;
const res = await listDmsBaseOutsourcingInfo(queryParams.value);
dmsBaseOutsourcingInfoList.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
dmsBaseOutsourcingInfoFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: DmsBaseOutsourcingInfoVO[]) => {
ids.value = selection.map(item => item.outsourcingId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加外协信息";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: DmsBaseOutsourcingInfoVO) => {
reset();
const _outsourcingId = row?.outsourcingId || ids.value[0]
const res = await getDmsBaseOutsourcingInfo(_outsourcingId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改外协信息";
}
/** 提交按钮 */
const submitForm = () => {
dmsBaseOutsourcingInfoFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.outsourcingId) {
await updateDmsBaseOutsourcingInfo(form.value).finally(() => buttonLoading.value = false);
} else {
await addDmsBaseOutsourcingInfo(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: DmsBaseOutsourcingInfoVO) => {
const _outsourcingIds = row?.outsourcingId || ids.value;
await proxy?.$modal.confirm('是否确认删除外协信息编号为"' + _outsourcingIds + '"的数据项?').finally(() => loading.value = false);
await delDmsBaseOutsourcingInfo(_outsourcingIds);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('dms/dmsBaseOutsourcingInfo/export', {
...queryParams.value
}, `dmsBaseOutsourcingInfo_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
getList();
});
</script>