This commit is contained in:
lcw
2025-09-25 12:42:38 +08:00
18 changed files with 352 additions and 375 deletions

View File

@ -1,6 +1,6 @@
<template> <template>
<header class="headerWrapper"> <header class="headerWrapper">
<div class="logo flex align-center" @click="goToHome"><img width="45" class="mr10" src="@/assets/images/jinghui.png" alt="">保安管理</div> <div class="logo flex align-center"><img width="45" class="mr10" src="@/assets/images/jinghui.png" alt="">保安管理</div>
<div class="right"> <div class="right">
<div><img src="@/assets/images/peo.png" /></div> <div><img src="@/assets/images/peo.png" /></div>
<div class="detail"> <div class="detail">
@ -19,9 +19,6 @@
</template> </template>
</el-dropdown> </el-dropdown>
</div> </div>
<!-- <div @click="goToHome">
<img src="@/assets/images/meun.png" />
</div> -->
</div> </div>
</header> </header>
</template> </template>
@ -41,12 +38,6 @@ onMounted(() => {
deptName.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptName : '' deptName.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptName : ''
}) })
// 路由跳转
function goToHome() {
router.push(`/unitInformation`);
// window.location.href = "/";
}
const active = ref(""); const active = ref("");
onMounted(() => { onMounted(() => {
//登陆用户信息 //登陆用户信息

View File

@ -42,7 +42,7 @@ export const publicRoutes = [
component: () => import("@/views/login/index") component: () => import("@/views/login/index")
}, },
{ {
path: "/", path: "/homeMy",
name: "homeMy", name: "homeMy",
component: () => import("@/views/homeMy/index") //街面巡防 component: () => import("@/views/homeMy/index") //街面巡防
}, },
@ -56,6 +56,161 @@ export const publicRoutes = [
component: layout, component: layout,
redirect: "/user/department-ist", redirect: "/user/department-ist",
children: [ children: [
{
path: "/",
name: "unitInformation",
component: () =>
import("@/views/securityManagement/unitInformation/index"),
meta: {
title: "单位信息",
icon: "personnel"
},
},
{
path: "/personnelManagement",
name: "personnelManagement",
meta: {
title: "人员管理",
icon: "personnel"
},
children: [
{
path: "/personnelManagement/practitioner",
name: "practitioner",
component: () =>
import("@/views/securityManagement/personnelManagement/practitioner/index"),
meta: {
title: "从业人员管理",
icon: "personnel"
},
},
{
path: "/personnelManagement/applicantPersonnel",
name: "applicantPersonnel",
component: () =>
import("@/views/securityManagement/personnelManagement/applicantPersonnel/index"),
meta: {
title: "申请人员",
icon: "personnel"
}
},
]
},
{
path: "/trainingManagement",
name: "/trainingManagement",
meta: {
title: "培训管理",
icon: "personnel"
},
children: [
{
path: "/trainingManagement/trainer",
name: "trainer",
component: () =>
import("@/views/securityManagement/trainingManagement/trainer/index"),
meta: {
title: "培训人员",
icon: "personnel"
},
},
{
path: "/trainingManagement/personnelTraining",
name: "personnelTraining",
component: () =>
import("@/views/securityManagement/trainingManagement/personnelTraining/index"),
meta: {
title: "保安待培训人员管理",
icon: "personnel"
},
},
{
path: "/trainingManagement/trainingProject",
name: "trainingProject",
component: () =>
import("@/views/securityManagement/trainingManagement/trainingProject/index"),
meta: {
title: "保安培训项目管理",
icon: "personnel"
}
},
]
},
{
path: "/examManagement",
name: "examManagement",
component: () =>
import("@/views/securityManagement/examManagement/index"),
meta: {
title: "保安考试管理",
icon: "personnel"
},
},
{
path: "/training",
name: "training",
meta: {
title: "培训中心",
icon: "personnel"
},
children: [
{
path: "/training/securityTrainingVideo",
name: "securityTrainingVideo",
component: () => import("@/views/Training/SecurityTrainingVideo/index"),
meta: {
title: "保安培训视频",
icon: "personnel"
}
},
{
path: "/training/securityQuestionBank",
name: "securityQuestionBank",
component: () => import("@/views/Training/SecurityQuestionBank/index"),
meta: {
title: "保安题库",
icon: "personnel"
}
},
{
path: "/training/securityTrainingSyllabus",
name: "securityTrainingSyllabus",
component: () => import("@/views/Training/SecurityTrainingSyllabus/index"),
meta: {
title: "保安培训教学大纲",
icon: "personnel"
}
},
{
path: "/training/annualInspectionTraining",
name: "annualInspectionTraining",
component: () => import("@/views/Training/AnnualInspectionTraining/index"),
meta: {
title: "年检培训",
icon: "personnel"
}
},
{
path: "/training/annualInspectionApplicants",
name: "annualInspectionApplicants",
component: () => import("@/views/Training/AnnualInspectionApplicants/index"),
meta: {
title: "年检申请人员",
icon: "personnel"
}
},
{
path: "/training/annualInspection",
name: "annualInspection",
component: () => import("@/views/Training/AnnualInspection/index"),
meta: {
title: "年检",
icon: "personnel"
}
},
]
},
{ {
path: "/systemConfig", path: "/systemConfig",
name: "systemConfigModel", name: "systemConfigModel",
@ -305,160 +460,6 @@ export const publicRoutes = [
} }
] ]
}, },
{
path: "/unitInformation",
name: "unitInformation",
component: () =>
import("@/views/securityManagement/unitInformation/index"),
meta: {
title: "单位信息",
icon: "personnel"
},
},
{
path: "/personnelManagement",
name: "personnelManagement",
meta: {
title: "人员管理",
icon: "personnel"
},
children: [
{
path: "/personnelManagement/practitioner",
name: "practitioner",
component: () =>
import("@/views/securityManagement/personnelManagement/practitioner/index"),
meta: {
title: "从业人员管理",
icon: "personnel"
},
},
{
path: "/personnelManagement/applicantPersonnel",
name: "applicantPersonnel",
component: () =>
import("@/views/securityManagement/personnelManagement/applicantPersonnel/index"),
meta: {
title: "申请人员",
icon: "personnel"
}
},
]
},
{
path: "/trainingManagement",
name: "/trainingManagement",
meta: {
title: "培训管理",
icon: "personnel"
},
children: [
{
path: "/trainingManagement/trainer",
name: "trainer",
component: () =>
import("@/views/securityManagement/trainingManagement/trainer/index"),
meta: {
title: "培训人员",
icon: "personnel"
},
},
{
path: "/trainingManagement/personnelTraining",
name: "personnelTraining",
component: () =>
import("@/views/securityManagement/trainingManagement/personnelTraining/index"),
meta: {
title: "保安待培训人员管理",
icon: "personnel"
},
},
{
path: "/trainingManagement/trainingProject",
name: "trainingProject",
component: () =>
import("@/views/securityManagement/trainingManagement/trainingProject/index"),
meta: {
title: "保安培训项目管理",
icon: "personnel"
}
},
]
},
{
path: "/examManagement",
name: "examManagement",
component: () =>
import("@/views/securityManagement/examManagement/index"),
meta: {
title: "保安考试管理",
icon: "personnel"
},
},
{
path: "/training",
name: "training",
meta: {
title: "培训中心",
icon: "personnel"
},
children: [
{
path: "/training/securityTrainingVideo",
name: "securityTrainingVideo",
component: () => import("@/views/Training/SecurityTrainingVideo/index"),
meta: {
title: "保安培训视频",
icon: "personnel"
}
},
{
path: "/training/securityQuestionBank",
name: "securityQuestionBank",
component: () => import("@/views/Training/SecurityQuestionBank/index"),
meta: {
title: "保安题库",
icon: "personnel"
}
},
{
path: "/training/securityTrainingSyllabus",
name: "securityTrainingSyllabus",
component: () => import("@/views/Training/SecurityTrainingSyllabus/index"),
meta: {
title: "保安培训教学大纲",
icon: "personnel"
}
},
{
path: "/training/annualInspectionTraining",
name: "annualInspectionTraining",
component: () => import("@/views/Training/AnnualInspectionTraining/index"),
meta: {
title: "年检培训",
icon: "personnel"
}
},
{
path: "/training/annualInspectionApplicants",
name: "annualInspectionApplicants",
component: () => import("@/views/Training/AnnualInspectionApplicants/index"),
meta: {
title: "年检申请人员",
icon: "personnel"
}
},
{
path: "/training/annualInspection",
name: "annualInspection",
component: () => import("@/views/Training/AnnualInspection/index"),
meta: {
title: "年检",
icon: "personnel"
}
},
]
}
// { // {
// path: "/basicsmanage", // path: "/basicsmanage",
// name: "/basicsmanage", // name: "/basicsmanage",

View File

@ -3,79 +3,131 @@
<div class="head_box"> <div class="head_box">
<span class="title">保安题库{{ title }}</span> <span class="title">保安题库{{ title }}</span>
<div> <div>
<el-button size="small" v-if="openType != 'detail'" @click="save" type="primary" :loading="loading">保存</el-button> <el-button size="small" v-if="title != '详情'" @click="save" type="primary" :loading="loading">保存</el-button>
<el-button size="small" @click="close">关闭</el-button> <el-button size="small" @click="close">关闭</el-button>
</div> </div>
</div> </div>
<div class="cntinfo"> <div class="cntinfo">
<FormMessage ref="FormRef" v-model="listQuery" :disabled="openType == 'detail'" :rules="rules" :formList="formList"> <el-form :model="listQuery" ref="FormRef" label-position="right" :rules="rules" label-width="100">
</FormMessage> <el-row>
<el-col :span="8" >
<el-form-item label="题型" prop="type" >
<el-select v-model="listQuery.type" placeholder="请选择题型" style="width:100%" @change="changeType">
<el-option v-for="item in props.dic.D_BAXX_KTLX" :key="item" :label="item.zdmc" :value="item.dm"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="题目" style="width:100%" prop="tm">
<el-input v-model="listQuery.tm" placeholder="请输入题目" />
</el-form-item>
</el-col>
</el-row>
<!-- 单选 和多选 和判断 -->
<el-row>
<el-col :span="8">
<el-form-item label="选项A">
<el-input v-model="listQuery.optionA" placeholder="请输入选项A" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="选项B">
<el-input v-model="listQuery.optionB" placeholder="请输入选项B" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="选项C">
<el-input v-model="listQuery.optionC" placeholder="请输入选项C" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="选项D">
<el-input v-model="listQuery.optionD" placeholder="请输入选项D" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="选项E">
<el-input v-model="listQuery.optionE" placeholder="请输入选项E" />
</el-form-item>
</el-col>
</el-row>
<!-- 答案 -->
<el-row>
<el-col :span="8">
<el-form-item label="答案" style="width:100%" v-if="listQuery.type == '01' || listQuery.type == '02'">
<el-select v-model="listQuery.correctAnswer" placeholder="请选择答案" :multiple="multiple" style="width:100%">
<el-option v-for="item in props.dic.D_BA_TKDA" :key="item" :label="item.zdmc" :value="item.dm"></el-option>
</el-select>
</el-form-item>
<el-form-item label="答案" style="width:100%" prop="isTrue" v-else>
<el-input v-model="listQuery.isTrue" placeholder="请输入答案" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { qcckPost , qcckGet} from "@/api/qcckApi.js"; import { qcckPost , qcckGet} from "@/api/qcckApi.js";
import FormMessage from "@/components/aboutTable/FormMessage.vue"; import { ref, reactive,defineEmits,defineProps,getCurrentInstance } from 'vue';
import { ref, reactive,defineEmits,getCurrentInstance } from 'vue';
const emit = defineEmits(["refresh"]);
const { proxy } = getCurrentInstance();
const { D_BAXX_KTLX } = proxy.$dict("D_BAXX_KTLX");
const dialogForm = ref(false);
const title = ref('');
const FormRef = ref();
const loading = ref(false);
const listQuery = ref({});
const openType = ref("")
const props = defineProps({ const props = defineProps({
dict: { dic: {
type: Object, type: Object,
default: () => {} default: () => {}
}, },
}) })
const emit = defineEmits(["refresh"]);
const { proxy } = getCurrentInstance();
const dialogForm = ref(false);
const title = ref('');
const listQuery = ref({})
const FormRef = ref();
const loading = ref(false);
const multiple = ref(false)
const rules = reactive({ const rules = reactive({
tm: [{ required: true, message: "请输入题目", trigger: "blur" }], tm: [{ required: true, message: "请输入题目", trigger: "blur" }],
type: [{ required: true, message: "请选择题型", trigger: "blur" }], type: [{ required: true, message: "请选择题型", trigger: "blur" }],
}); });
const formList = reactive([
[
{ label: "题型", prop: "type", type: "select", options: D_BAXX_KTLX, },
{ label: "题目", prop: "tm", type: "input" },
],
[
{ label: "选项A", prop: "optionA", type: "input" },
{ label: "选项B", prop: "optionB", type: "input" },
],
[
{ label: "选项C", prop: "optionC", type: "input" },
{ label: "选项D", prop: "optionD", type: "input" },
],
[
{ label: "选项E", prop: "optionE", type: "input" },
{ label: "答案", prop: "dw", type: "input" }
],
])
// 初始化数据 // 初始化数据
const init = (type, row = {}) => { const init = (type, row) => {
dialogForm.value = true; dialogForm.value = true;
openType.value = type; title.value = type == "add" ? "新增" : type == "edit" ? "编辑" : "详情";
title.value = type == "add" ? "新增" : "编辑"; if(row){
listQuery.value = { ...row } qcckPost({},`/mosty-base/baxx/tkgl/getInfo/${row.id}`).then(res=>{
res.correctAnswer = res.type == '02'? res.correctAnswer.split(','):res.correctAnswer;
multiple.value = res.type == '02' ? true:false;
listQuery.value = res
})
}
}; };
const changeType = (val) => {
multiple.value = val == '02' ? true : false;
switch (val) {
case '01':
case '02':
listQuery.value.isTrue = ''
break;
case '03':
listQuery.value.correctAnswer = []
break;
}
}
const save = () => { const save = () => {
FormRef.value.submit(()=>{ FormRef.value.validate((valid)=>{
if (!valid) return;
loading.value = true; loading.value = true;
let url = title.value == '新增' ? `/mosty-base/baxx/tkgl/addd` : `/mosty-base/baxx/tkgl/edit`; let url = title.value == '新增' ? `/mosty-base/baxx/tkgl/add` : `/mosty-base/baxx/tkgl/edit`;
qcckPost(listQuery.value, url).then(() => { let params = { ...listQuery.value }
params.correctAnswer = Array.isArray(params.correctAnswer) ? params.correctAnswer.join(','):params.correctAnswer;
qcckPost(params, url).then(() => {
loading.value = false; loading.value = false;
proxy.$message.success("保存成功"); proxy.$message.success("保存成功");
emit("refresh"); emit("refresh");
@ -88,6 +140,8 @@ const save = () => {
const close = () => { const close = () => {
dialogForm.value = false; dialogForm.value = false;
listQuery.value = { }
multiple.value = false;
FormRef.value.reset() FormRef.value.reset()
};; };;
@ -96,10 +150,8 @@ defineExpose({init})
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/assets/css/layout.scss"; @import "@/assets/css/layout.scss";
.mapBox{ .cntinfo{
width: calc(100% - 24rem); padding: 4rem 12rem;
height:500px; box-sizing: border-box;
overflow: hidden;
margin: 0 12rem;
} }
</style> </style>

View File

@ -2,7 +2,7 @@
<div> <div>
<div class="titleBox"> <div class="titleBox">
<PageTitle title="保安题库"> <PageTitle title="保安题库">
<el-button type="primary" @click="addEdit('add', '')"> <el-button type="primary" @click="addEdit('add', null)">
<el-icon style="vertical-align: middle"> <el-icon style="vertical-align: middle">
<CirclePlus /> <CirclePlus />
</el-icon> </el-icon>
@ -22,11 +22,19 @@
<template #type="{ row }"> <template #type="{ row }">
<DictTag :value="row.type" :tag="false" :options="D_BAXX_KTLX" /> <DictTag :value="row.type" :tag="false" :options="D_BAXX_KTLX" />
</template> </template>
<template #answer="{ row }">
<span v-if="row.type == '01' || row.type == '02'">
<span v-for="val in row.correctAnswer" class="flex items-center just-center">
<DictTag :value="val" :tag="false" :options="D_BA_TKDA" />
</span>
</span>
<span v-else>{{ row.isTrue }}</span>
</template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="primary" link @click="addEdit('edit', row)">编辑</el-link> <el-link type="primary" link @click="addEdit('edit', row)">编辑</el-link>
<el-link type="primary" link @click="addEdit('detail', row)">详情</el-link> <el-link type="primary" link @click="addEdit('detail', row)">详情</el-link>
<el-link type="danger" link @click="handleDelete(row.id)">删除</el-link> <el-link type="danger" link @click="handleDelete([row.id])">删除</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{ <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -35,7 +43,7 @@
}"></Pages> }"></Pages>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<DetailForm ref="detailDiloag" @refresh="getList" /> <DetailForm ref="detailDiloag" :dic="{D_BAXX_KTLX,D_BA_TKDA,D_BA_TKDA_PDT}" @refresh="getList" />
</div> </div>
</template> </template>
@ -45,13 +53,13 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue"; import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import DetailForm from "./components/detailForm.vue"; import DetailForm from "./components/detailForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_BAXX_KTLX,D_BA_TKDA,D_BA_TKDA_PDT } = proxy.$dict("D_BAXX_KTLX",'D_BA_TKDA','D_BA_TKDA_PDT');
const detailDiloag = ref(); const detailDiloag = ref();
const searchBox = ref(); //搜索框 const searchBox = ref(); //搜索框
const baseUrl = 'data:image/jpeg;base64,'
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "题目", label: "题目",
@ -84,7 +92,7 @@ const pageData = reactive({
{ label: "选项C", prop: "optionC" }, { label: "选项C", prop: "optionC" },
{ label: "选项D", prop: "optionD" }, { label: "选项D", prop: "optionD" },
{ label: "选项E", prop: "optionE" }, { label: "选项E", prop: "optionE" },
{ label: "答案", prop: "answer"} { label: "答案", prop: "answer", showSolt: true}
] ]
}); });
@ -114,7 +122,11 @@ const getList = () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value }; let data = { ...pageData.pageConfiger, ...queryFrom.value };
qcckPost(data, "/mosty-base/baxx/tkgl/page").then((res) => { qcckPost(data, "/mosty-base/baxx/tkgl/page").then((res) => {
pageData.tableData = res.records || []; let arr = res.records || []
arr.forEach(item => {
item.correctAnswer = item.correctAnswer.split(',')
});
pageData.tableData = arr;
pageData.total = res.total; pageData.total = res.total;
pageData.tableConfiger.loading = false; pageData.tableConfiger.loading = false;
}).catch(() => { }).catch(() => {
@ -126,7 +138,7 @@ const getList = () => {
// 删除 // 删除
const handleDelete = (ids) => { const handleDelete = (ids) => {
proxy.$modal.confirm("是否确认删除该题目?").then(() => { proxy.$modal.confirm("是否确认删除该题目?").then(() => {
qcckPost({ ids }, "/mosty-base/baxx/tkgl/remove").then(() => { qcckPost(ids, "/mosty-base/baxx/tkgl/remove").then(() => {
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
getList(); getList();
}); });

View File

@ -40,7 +40,6 @@ const formList = reactive([
], ],
]) ])
// 初始化数据 // 初始化数据
const init = (type, row = {}) => { const init = (type, row = {}) => {
dialogForm.value = true; dialogForm.value = true;

View File

@ -141,8 +141,7 @@ const handleLogin = () => {
loading.value = false; loading.value = false;
// 登录后操作; // 登录后操作;
if (res.deptList.length === 1) { if (res.deptList.length === 1) {
router.push("/user/department-ist"); window.location.href = "/";
// window.location.href = "/";
} else { } else {
deptList.value = [...res.deptList]; deptList.value = [...res.deptList];
loginDialog.value = true; loginDialog.value = true;

View File

@ -3,7 +3,7 @@
<div class="head_box"> <div class="head_box">
<span class="title">{{ title }}</span> <span class="title">{{ title }}</span>
<div> <div>
<el-button size="small" @click="save" type="primary" :loading="loading">保存</el-button> <!-- <el-button size="small" @click="save" type="primary" :loading="loading">保存</el-button> -->
<el-button size="small" @click="close">关闭</el-button> <el-button size="small" @click="close">关闭</el-button>
</div> </div>
</div> </div>
@ -25,10 +25,13 @@
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
> >
<template #xxpxsc="{ row }">
<span>{{ row.xxpxsc }}h</span>
</template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link v-if="!visible && row?.ksfs >= 60" @click="handleCertificate(row)">申请证件</el-link> <el-link v-if="!visible && row?.ksfs >= 60" @click="handleCertificate(row)">申请证件</el-link>
<template v-if="visible"> <template v-if="visible && row?.ksfs ==='01'">
<el-link v-if="!row?.ksfs" type="primary" @click="addEdit('updata', row)">上传成绩</el-link> <el-link v-if="!row?.ksfs" type="primary" @click="addEdit('updata', row)">上传成绩</el-link>
<el-link v-else type="primary" @click="addEdit('view', row)">查看成绩</el-link> <el-link v-else type="primary" @click="addEdit('view', row)">查看成绩</el-link>
</template> </template>
@ -49,9 +52,7 @@ import viewAndUploadDialog from './viewAndUploadDialog.vue';
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { D_BAXX_KSFS } = proxy.$dict("D_BAXX_KSFS") const { D_BAXX_KSFS } = proxy.$dict("D_BAXX_KSFS")
const title = ref('保安线下考试详情') const title = ref('保安线下考试详情')
const loading = ref(false)
const disabled = ref(false) const disabled = ref(false)
const FormRef = ref(null)
const visible = ref(true) const visible = ref(true)
const viewAndUploadRef = ref(null) const viewAndUploadRef = ref(null)
const viewAndUploadVisible = ref(false) const viewAndUploadVisible = ref(false)
@ -96,8 +97,8 @@ const pageData = reactive({
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "证件号码", prop: "sfzh" }, { label: "证件号码", prop: "sfzh" },
{ label: "联系方式", prop: "lxdh" }, { label: "联系方式", prop: "lxdh" },
{ label: "线上培训时间", prop: "xspxsc" }, { label: "线上培训时间", prop: "xxpxsc", showSolt: true },
{ label: "线下培训课程", prop: "xxpxsc" }, { label: "线下培训课程", prop: "xxpxkc" },
{ label: "考试成绩", prop: "ksfs" }, { label: "考试成绩", prop: "ksfs" },
] ]
}); });
@ -113,7 +114,7 @@ const getList = async ({ id = "" }, type = '') => {
const res = await qcckPost({ const res = await qcckPost({
...pageData.pageConfiger, ...pageData.pageConfiger,
// sfcjpx: 1, // sfcjpx: 1,
ksglid: id // ksglid: id
}, `/mosty-base/baxx/ksry/list`) }, `/mosty-base/baxx/ksry/list`)
if (res) { if (res) {
pageData.tableData = res.records || []; pageData.tableData = res.records || [];
@ -128,7 +129,7 @@ const open = (row = {}, type = 'add') => {
dialogVisible.value = true dialogVisible.value = true
formData.value = { ...row } formData.value = { ...row }
if (type === 'view') { if (type === 'view') {
title.value = '保安线下考试详情' title.value = `保安线${formData.value?.ksfs ==='01' ? '下' : '上'}考试详情`
visible.value = true visible.value = true
} else if (type === 'edit') { } else if (type === 'edit') {
title.value = '保安证申请' title.value = '保安证申请'
@ -136,21 +137,6 @@ const open = (row = {}, type = 'add') => {
} }
} }
const save = () => {
FormRef.value.submit(() => {
loading.value = true;
const url = !formData.value?.id ? `/mosty-base/baxx/cyry/add` : `/mosty-base/baxx/cyry/edit`;
qcckPost(formData.value, url).then(() => {
loading.value = false;
proxy.$message.success("保存成功");
emits("refresh");
close();
}).catch(() => {
loading.value = false;
})
});
}
const addEdit = (type, row) => { const addEdit = (type, row) => {
viewAndUploadRef.value?.open(row, type) viewAndUploadRef.value?.open(row, type)
} }
@ -174,8 +160,13 @@ defineExpose({ open })
@import "@/assets/css/layout.scss"; @import "@/assets/css/layout.scss";
.label { .label {
height: 40px;
line-height: 40px;
text-align: center;
margin-top: 20px; margin-top: 20px;
color: #000; color: #000;
font-weight: bold;
background: var(--el-fill-color-light);
} }
.cntinfo { .cntinfo {

View File

@ -14,6 +14,9 @@
<template #bxxLx="{ row }"> <template #bxxLx="{ row }">
<DictTag :value="row.bxxLx" :tag="false" :options="D_BZ_BXDLX" /> <DictTag :value="row.bxxLx" :tag="false" :options="D_BZ_BXDLX" />
</template> </template>
<template #ksfs="{ row }">
<DictTag :value="row.ksfs" :options="D_BAXX_KSFS" />
</template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="primary" @click="addEdit('view', row)">详情</el-link> <el-link type="primary" @click="addEdit('view', row)">详情</el-link>
@ -79,7 +82,7 @@ const pageData = reactive({
{ label: "考试时间", prop: "kssj" }, { label: "考试时间", prop: "kssj" },
{ label: "监考民警", prop: "jkmj" }, { label: "监考民警", prop: "jkmj" },
{ label: "考试地址", prop: "ksdz" }, { label: "考试地址", prop: "ksdz" },
{ label: "考试方式", prop: "ksfs" }, { label: "考试方式", prop: "ksfs", showSolt: true },
] ]
}); });
@ -111,7 +114,7 @@ const getList = async () => {
}, `/mosty-base/baxx/ksgl/page`) }, `/mosty-base/baxx/ksgl/page`)
if(res) { if(res) {
pageData.tableData = [{}]; pageData.tableData = res.records || [];
pageData.total = res.total; pageData.total = res.total;
} }
} finally { } finally {

View File

@ -23,6 +23,8 @@ import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue' import FormMessage from '@/components/aboutTable/FormMessage.vue'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { D_BAXX_GWLX } = proxy.$dict("D_BAXX_GWLX")
const title = ref('新增培训人员') const title = ref('新增培训人员')
const loading = ref(false) const loading = ref(false)
const disabled = ref(false) const disabled = ref(false)
@ -59,7 +61,7 @@ const formList = reactive([
[ [
{ label: "居住地址", prop: "jzdz", type: "input" }, { label: "居住地址", prop: "jzdz", type: "input" },
{ label: "申请时间", prop: "xtCjsj", type: "date" }, { label: "申请时间", prop: "xtCjsj", type: "date" },
{ label: "岗位", prop: "gw", type: "input" }, { label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
], ],
[ [
{ label: "身份证正面", prop: "ryzpzm", type: "upload", limit: 1 }, { label: "身份证正面", prop: "ryzpzm", type: "upload", limit: 1 },

View File

@ -1,82 +0,0 @@
<template>
<el-dialog class="dialogWerapper" width="30%" v-model="modelValue" :title="title" @close="handleClose">
<form-message ref="FormRef" :disabled="disabled" v-model="formData" :rules="rules" :formList="formList" />
<template #footer>
<el-button type="primary" v-if="!disabled" :loading="loading" @click="handleSubmit">确定</el-button>
<el-button @click="handleClose">取消</el-button>
</template>
</el-dialog>
</template>
<script setup>
import { computed, ref, reactive, getCurrentInstance } from 'vue';
import FormMessage from '@/components/aboutTable/FormMessage.vue'
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
const { proxy } = getCurrentInstance();
const { D_BAXX_DWLX } = proxy.$dict("D_BAXX_DWLX")
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
})
const emits = defineEmits(['update:modelValue', 'refresh'])
const visible = computed({
get() {
return props.modelValue
},
set(val) {
emits('update:modelValue', val)
}
})
const title = ref('上传资料')
const loading = ref(false)
const disabled = ref(false)
const FormRef = ref(null)
const formData = ref({})
const formList = reactive([
[
{ label: "上传资料", prop: "zl", type: "upload", limit: 3 },
],
])
const rules = {
zl: [{ required: true, message: "请上传资料", trigger: "change" }],
}
const open = (row = {}, type = 'updata') => {
visible.value = true
disabled.value = false
formData.value = { ...row }
}
const handleClose = () => {
FormRef.value?.reset()
visible.value = false
}
const handleSubmit = async () => {
try {
loading.value = true
await FormRef.value.submit(async () => {
await qcckPost({ ...formData.value }, `/mosty-base/baxx/basq/edit`)
proxy.$message.success('上传资料成功')
emits('refresh')
visible.value = false
})
} catch (error) {
console.log(error)
proxy.$message.error('上传资料失败')
} finally {
loading.value = false
}
}
defineExpose({ open })
</script>

View File

@ -13,14 +13,17 @@
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #pxgs="{ row }"> <template #pxgs="{ row }">
{{ row?.pxgs === '01' ? `` : `` }} {{ row?.ryzpzm && row?.ryzpfm && row?.tjbg && row?.wfzzmjl ? `` : `` }}
</template> </template>
<template #sfpx="{ row }"> <template #sfpx="{ row }">
{{ row?.sfpx === '01' ? `` : `` }} {{ row?.sfpx === '01' ? `` : `` }}
</template> </template>
<template #gw="{ row }">
<DictTag :value="row.gw" :options="D_BAXX_GWLX" />
</template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="success" v-if="row?.pxgs !== '01'" @click="addEdit('upload', row)">上传资料</el-link> <el-link type="success" @click="addEdit('upload', row)">上传资料</el-link>
<el-link type="danger" @click="handleDelete([row.id])">删除</el-link> <el-link type="danger" @click="handleDelete([row.id])">删除</el-link>
<el-link type="warning" @click="addEdit('view', row)">详情</el-link> <el-link type="warning" @click="addEdit('view', row)">详情</el-link>
<el-link type="primary" @click="addEdit('select', row)">提交培训公司</el-link> <el-link type="primary" @click="addEdit('select', row)">提交培训公司</el-link>
@ -35,7 +38,6 @@
<add-trainer-dialog v-model="isVisible" ref="trainerRef" @refresh="getList" /> <add-trainer-dialog v-model="isVisible" ref="trainerRef" @refresh="getList" />
<select-ttaning-dialog ref="selectTtaningRef" v-model="dialogVisible" @refresh="getList" /> <select-ttaning-dialog ref="selectTtaningRef" v-model="dialogVisible" @refresh="getList" />
<upload-data-dialog ref="uploadDataRef" v-model="uploadVisible" @refresh="getList" />
</div> </div>
</template> </template>
@ -47,16 +49,14 @@ import Search from '@/components/aboutTable/Search.vue';
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import PageTitle from "@/components/aboutTable/PageTitle.vue"; import PageTitle from "@/components/aboutTable/PageTitle.vue";
import AddTrainerDialog from "./components/addTrainerDialog.vue"; import AddTrainerDialog from "./components/addTrainerDialog.vue";
import UploadDataDialog from "./components/uploadDataDialog.vue";
import selectTtaningDialog from "./components/selectTtaningDialog.vue"; import selectTtaningDialog from "./components/selectTtaningDialog.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_BAXX_GWLX } = proxy.$dict("D_BAXX_GWLX")
const trainerRef = ref(null); const trainerRef = ref(null);
const selectTtaningRef = ref(null); const selectTtaningRef = ref(null);
const uploadDataRef = ref(null);
const queryFrom = ref({}); const queryFrom = ref({});
const isVisible = ref(false); const isVisible = ref(false);
const uploadVisible = ref(false);
const dialogVisible = ref(false); const dialogVisible = ref(false);
const searchBox = ref(null); const searchBox = ref(null);
const searchConfiger = ref([ const searchConfiger = ref([
@ -98,7 +98,7 @@ const pageData = reactive({
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "证件号码", prop: "zjhm" }, { label: "证件号码", prop: "zjhm" },
{ label: "联系方式", prop: "lxdh" }, { label: "联系方式", prop: "lxdh" },
{ label: "岗位", prop: "gw" }, { label: "岗位", prop: "gw", showSolt: true },
{ label: "申请时间", prop: "xtCjsj" }, { label: "申请时间", prop: "xtCjsj" },
{ label: "是否上传资料", prop: "pxgs", showSolt: true }, { label: "是否上传资料", prop: "pxgs", showSolt: true },
{ label: "是否线上培训", prop: "sfpx", showSolt: true }, { label: "是否线上培训", prop: "sfpx", showSolt: true },
@ -117,8 +117,6 @@ const tabHeightFn = () => {
const addEdit = (type, row) => { const addEdit = (type, row) => {
if (type === 'select') { if (type === 'select') {
selectTtaningRef.value.open(row, type); selectTtaningRef.value.open(row, type);
} else if (type === 'upload') {
uploadDataRef.value.open(row, type);
} else { } else {
trainerRef.value.open(row, type); trainerRef.value.open(row, type);
} }
@ -151,7 +149,7 @@ const handleDelete = async (ids) => {
await proxy.$modal.confirm("是否确认删除该培训人员?") await proxy.$modal.confirm("是否确认删除该培训人员?")
try { try {
await qcckPost({ ids }, `/mosty-base/baxx/basq/remove`) await qcckPost({ idList: ids }, `/mosty-base/baxx/basq/remove`)
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
await getList(); await getList();
} catch (error) { } catch (error) {

View File

@ -23,7 +23,7 @@ import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue' import FormMessage from '@/components/aboutTable/FormMessage.vue'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { D_BZ_WHCD } = proxy.$dict("D_BZ_WHCD"); const { D_BZ_WHCD, D_BAXX_GWLX } = proxy.$dict("D_BZ_WHCD", "D_BAXX_GWLX");
const title = ref('新增从业人员') const title = ref('新增从业人员')
const loading = ref(false) const loading = ref(false)
const disabled = ref(false) const disabled = ref(false)
@ -64,7 +64,7 @@ const formList = reactive([
{ label: "资格证类型", prop: "zgzlx", type: "input" }, { label: "资格证类型", prop: "zgzlx", type: "input" },
{ label: "资格证起始日期", prop: "zgzKssj", type: "date" }, { label: "资格证起始日期", prop: "zgzKssj", type: "date" },
{ label: "资格证截至日期", prop: "zgzJssj", type: "date" }, { label: "资格证截至日期", prop: "zgzJssj", type: "date" },
{ label: "岗位", prop: "gw", type: "input" }, { label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
], ],
[ [
{ label: "外派单位", prop: "wpdw", type: "input" }, { label: "外派单位", prop: "wpdw", type: "input" },

View File

@ -13,7 +13,10 @@
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #sflz="{ row }"> <template #sflz="{ row }">
<DictTag :value="row.sflz" :tag="false" :options="D_BZ_SF" /> <DictTag :value="row.newSflz" :options="D_BZ_SF" />
</template>
<template #gw="{ row }">
<DictTag :value="row.gw" :options="D_BAXX_GWLX" />
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
@ -43,7 +46,7 @@ import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import AddPractitionerDialog from "./components/addPractitionerDialog.vue"; import AddPractitionerDialog from "./components/addPractitionerDialog.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_BZ_SF } = proxy.$dict("D_BZ_SF"); const { D_BZ_SF, D_BAXX_GWLX } = proxy.$dict("D_BZ_SF", "D_BAXX_GWLX");
const addPractitionerRef = ref(null); const addPractitionerRef = ref(null);
const queryFrom = ref({}); const queryFrom = ref({});
const isVisible = ref(false); const isVisible = ref(false);
@ -94,7 +97,7 @@ const pageData = reactive({
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "证件号码", prop: "sfzh" }, { label: "证件号码", prop: "sfzh" },
{ label: "联系方式", prop: "lxdh" }, { label: "联系方式", prop: "lxdh" },
{ label: "岗位", prop: "gw" }, { label: "岗位", prop: "gw", showSolt: true },
{ label: "入职时间", prop: "rzsj" }, { label: "入职时间", prop: "rzsj" },
{ label: "外派单位", prop: "wpdw", }, { label: "外派单位", prop: "wpdw", },
{ label: "是否在职", prop: "sflz", showSolt: true }, { label: "是否在职", prop: "sflz", showSolt: true },
@ -138,7 +141,7 @@ const handleDelete = async (ids) => {
await proxy.$modal.confirm("是否确认删除该从业人员?") await proxy.$modal.confirm("是否确认删除该从业人员?")
try { try {
await qcckPost({ ids }, "/mosty-base/baxx/cyry/remove") await qcckPost({ idList: ids }, "/mosty-base/baxx/cyry/remove")
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
getList(); getList();
} catch (error) { } catch (error) {
@ -155,7 +158,8 @@ const getList = async () => {
}, `/mosty-base/baxx/cyry/page`) }, `/mosty-base/baxx/cyry/page`)
if(res) { if(res) {
pageData.tableData = res.records || []; // 处理sflz为null默认为0
pageData.tableData = res.records?.map(i => ({ ...i, newSflz: i?.sflz === null ? 0 : i.sflz })) || [];
pageData.total = res.total; pageData.total = res.total;
} }
} finally { } finally {

View File

@ -12,7 +12,9 @@
<el-descriptions-item label="姓名">{{ formData.xm }}</el-descriptions-item> <el-descriptions-item label="姓名">{{ formData.xm }}</el-descriptions-item>
<el-descriptions-item label="身份证号">{{ formData.sfzh }}</el-descriptions-item> <el-descriptions-item label="身份证号">{{ formData.sfzh }}</el-descriptions-item>
<el-descriptions-item label="联系电话">{{ formData.lxdh }}</el-descriptions-item> <el-descriptions-item label="联系电话">{{ formData.lxdh }}</el-descriptions-item>
<el-descriptions-item label="所属保安公司">{{ formData.ssbags }}</el-descriptions-item> <el-descriptions-item label="所属保安公司">
<DictTag :value="formData.ssbags" :options="D_BAXX_DWLX" />
</el-descriptions-item>
<el-descriptions-item label="线上培训时长">{{ formData.pxsc }}</el-descriptions-item> <el-descriptions-item label="线上培训时长">{{ formData.pxsc }}</el-descriptions-item>
<el-descriptions-item label="提交日期">{{ formData.tjrq }}</el-descriptions-item> <el-descriptions-item label="提交日期">{{ formData.tjrq }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
@ -25,6 +27,8 @@ import { ref, computed, getCurrentInstance } from 'vue'
import { qcckPost } from "@/api/qcckApi.js"; import { qcckPost } from "@/api/qcckApi.js";
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { D_BAXX_DWLX } = proxy.$dict("D_BAXX_DWLX")
const title = ref('保安考试申请') const title = ref('保安考试申请')
const loading = ref(false) const loading = ref(false)
const disabled = ref(false) const disabled = ref(false)
@ -35,10 +39,6 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: false default: false
}, },
dic: {
type: Object,
default: () => ({})
}
}) })
const emits = defineEmits(['update:modelValue']) const emits = defineEmits(['update:modelValue'])

View File

@ -11,8 +11,8 @@
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #bxxLx="{ row }"> <template #ssbags="{ row }">
<DictTag :value="row.bxxLx" :tag="false" :options="D_BZ_BXDLX" /> <DictTag :value="row.ssbags" :options="D_BAXX_DWLX" />
</template> </template>
<template #pxsc="{ row }"> <template #pxsc="{ row }">
@ -49,7 +49,6 @@ const trainerRef = ref(null);
const queryFrom = ref({}); const queryFrom = ref({});
const isVisible = ref(false); const isVisible = ref(false);
const searchBox = ref(null); const searchBox = ref(null);
const D_BZ_BXDLX = ref([]);
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "姓名", label: "姓名",
@ -127,7 +126,7 @@ const handleDelete = async (ids) => {
await proxy.$modal.confirm("是否确认删除该培训人员?") await proxy.$modal.confirm("是否确认删除该培训人员?")
try { try {
await qcckPost({ ids }, "/mosty-base/baxx/pxry/remove") await qcckPost({ idList: ids }, "/mosty-base/baxx/pxry/remove")
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
await getList(); await getList();
} catch (error) { } catch (error) {

View File

@ -25,6 +25,8 @@ import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue' import FormMessage from '@/components/aboutTable/FormMessage.vue'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { D_BAXX_GWLX, D_BAXX_DWLX } = proxy.$dict("D_BAXX_GWLX", "D_BAXX_DWLX")
const title = ref('新增培训人员') const title = ref('新增培训人员')
const loading = ref(false) const loading = ref(false)
const disabled = ref(false) const disabled = ref(false)
@ -61,10 +63,10 @@ const formList = reactive([
[ [
{ label: "居住地址", prop: "jzdz", type: "input" }, { label: "居住地址", prop: "jzdz", type: "input" },
{ label: "申请时间", prop: "sqsj", type: "date" }, { label: "申请时间", prop: "sqsj", type: "date" },
{ label: "岗位", prop: "gw", type: "select" }, { label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
], ],
[ [
{ label: "所属保安公司", prop: "ssbags", type: "select" }, { label: "所属保安公司", prop: "ssbags", type: "select", options: D_BAXX_DWLX },
], ],
[ [
{ label: "身份证正面", prop: "ryzpzm", type: "upload", limit: 1 }, { label: "身份证正面", prop: "ryzpzm", type: "upload", limit: 1 },

View File

@ -12,8 +12,11 @@
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #bxxLx="{ row }"> <template #gw="{ row }">
<DictTag :value="row.bxxLx" :tag="false" :options="D_BZ_BXDLX" /> <DictTag :value="row.gw" :options="D_BAXX_GWLX" />
</template>
<template #ssbags="{ row }">
<DictTag :value="row.ssbags" :options="D_BAXX_DWLX" />
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
@ -42,11 +45,12 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
import AddTrainerDialog from "./components/addTrainerDialog.vue"; import AddTrainerDialog from "./components/addTrainerDialog.vue";
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { D_BAXX_GWLX, D_BAXX_DWLX } = proxy.$dict("D_BAXX_GWLX", "D_BAXX_DWLX")
const trainerRef = ref(null); const trainerRef = ref(null);
const queryFrom = ref({}); const queryFrom = ref({});
const isVisible = ref(false); const isVisible = ref(false);
const searchBox = ref(null); const searchBox = ref(null);
const D_BZ_BXDLX = ref([]);
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "人员姓名", label: "人员姓名",
@ -86,8 +90,8 @@ const pageData = reactive({
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "证件号码", prop: "sfzh" }, { label: "证件号码", prop: "sfzh" },
{ label: "联系方式", prop: "lxdh" }, { label: "联系方式", prop: "lxdh" },
{ label: "岗位", prop: "gw" }, { label: "岗位", prop: "gw", showSolt: true },
{ label: "所属保安公司", prop: "ssbags" }, { label: "所属保安公司", prop: "ssbags", showSolt: true },
] ]
}); });
@ -132,7 +136,7 @@ const handleDelete = async (ids) => {
await proxy.$modal.confirm("是否确认删除该培训人员?") await proxy.$modal.confirm("是否确认删除该培训人员?")
try { try {
await qcckPost({ ids }, "/mosty-base/baxx/pxry/remove") await qcckPost({ idList: ids }, "/mosty-base/baxx/pxry/remove")
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
await getList(); await getList();
} catch (error) { } catch (error) {

View File

@ -12,8 +12,8 @@
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #bxxLx="{ row }"> <template #pxgs="{ row }">
<DictTag :value="row.bxxLx" :tag="false" :options="D_BZ_BXDLX" /> <DictTag :value="row.pxgs" :options="D_BAXX_DWLX" />
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
@ -35,7 +35,7 @@
</template> </template>
<script setup> <script setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref, getCurrentInstance } from "vue";
import MyTable from '@/components/aboutTable/MyTable.vue'; import MyTable from '@/components/aboutTable/MyTable.vue';
import Pages from '@/components/aboutTable/Pages.vue'; import Pages from '@/components/aboutTable/Pages.vue';
import Search from '@/components/aboutTable/Search.vue'; import Search from '@/components/aboutTable/Search.vue';
@ -44,7 +44,10 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
import ViewProjectDetailsDialog from "./components/viewProjectDetailsDialog.vue"; import ViewProjectDetailsDialog from "./components/viewProjectDetailsDialog.vue";
import AddPxxm from './components/addPxxm.vue' import AddPxxm from './components/addPxxm.vue'
import PrejectDetailsDialog from "./components/prejectDetailsDialog.vue"; import PrejectDetailsDialog from "./components/prejectDetailsDialog.vue";
import { get } from "lodash";
const { proxy } = getCurrentInstance()
const { D_BAXX_DWLX } = proxy.$dict("D_BAXX_DWLX");
const addPxxmRef = ref() const addPxxmRef = ref()
const prejectDetailsRef = ref(null); const prejectDetailsRef = ref(null);
const viewProjectDetailsRef = ref(null) const viewProjectDetailsRef = ref(null)
@ -52,7 +55,6 @@ const queryFrom = ref({});
const isVisible = ref(false); const isVisible = ref(false);
const dialogVisible = ref(false) const dialogVisible = ref(false)
const searchBox = ref(null); const searchBox = ref(null);
const D_BZ_BXDLX = ref([]);
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "培训项目名称", label: "培训项目名称",
@ -86,7 +88,7 @@ const pageData = reactive({
{ label: "培训项目名称", prop: "xmmc" }, { label: "培训项目名称", prop: "xmmc" },
{ label: "培训开始时间", prop: "kssj" }, { label: "培训开始时间", prop: "kssj" },
{ label: "培训结束时间", prop: "jssj" }, { label: "培训结束时间", prop: "jssj" },
{ label: "培训公司", prop: "pxgs" }, { label: "培训公司", prop: "pxgs", showSolt: true },
{ label: "培训地址", prop: "pxdz" }, { label: "培训地址", prop: "pxdz" },
] ]
}); });