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

@ -3,79 +3,131 @@
<div class="head_box">
<span class="title">保安题库{{ title }}</span>
<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>
</div>
</div>
<div class="cntinfo">
<FormMessage ref="FormRef" v-model="listQuery" :disabled="openType == 'detail'" :rules="rules" :formList="formList">
</FormMessage>
<el-form :model="listQuery" ref="FormRef" label-position="right" :rules="rules" label-width="100">
<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>
</template>
<script setup>
import { qcckPost , qcckGet} from "@/api/qcckApi.js";
import FormMessage from "@/components/aboutTable/FormMessage.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("")
import { ref, reactive,defineEmits,defineProps,getCurrentInstance } from 'vue';
const props = defineProps({
dict: {
dic: {
type: Object,
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({
tm: [{ 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;
openType.value = type;
title.value = type == "add" ? "新增" : "编辑";
listQuery.value = { ...row }
title.value = type == "add" ? "新增" : type == "edit" ? "编辑" : "详情";
if(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 = () => {
FormRef.value.submit(()=>{
FormRef.value.validate((valid)=>{
if (!valid) return;
loading.value = true;
let url = title.value == '新增' ? `/mosty-base/baxx/tkgl/addd` : `/mosty-base/baxx/tkgl/edit`;
qcckPost(listQuery.value, url).then(() => {
let url = title.value == '新增' ? `/mosty-base/baxx/tkgl/add` : `/mosty-base/baxx/tkgl/edit`;
let params = { ...listQuery.value }
params.correctAnswer = Array.isArray(params.correctAnswer) ? params.correctAnswer.join(','):params.correctAnswer;
qcckPost(params, url).then(() => {
loading.value = false;
proxy.$message.success("保存成功");
emit("refresh");
@ -88,6 +140,8 @@ const save = () => {
const close = () => {
dialogForm.value = false;
listQuery.value = { }
multiple.value = false;
FormRef.value.reset()
};;
@ -96,10 +150,8 @@ defineExpose({init})
<style lang="scss" scoped>
@import "@/assets/css/layout.scss";
.mapBox{
width: calc(100% - 24rem);
height:500px;
overflow: hidden;
margin: 0 12rem;
.cntinfo{
padding: 4rem 12rem;
box-sizing: border-box;
}
</style>

View File

@ -2,7 +2,7 @@
<div>
<div class="titleBox">
<PageTitle title="保安题库">
<el-button type="primary" @click="addEdit('add', '')">
<el-button type="primary" @click="addEdit('add', null)">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
@ -22,11 +22,19 @@
<template #type="{ row }">
<DictTag :value="row.type" :tag="false" :options="D_BAXX_KTLX" />
</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 }">
<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="danger" link @click="handleDelete(row.id)">删除</el-link>
<el-link type="danger" link @click="handleDelete([row.id])">删除</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -35,7 +43,7 @@
}"></Pages>
</div>
<!-- 详情 -->
<DetailForm ref="detailDiloag" @refresh="getList" />
<DetailForm ref="detailDiloag" :dic="{D_BAXX_KTLX,D_BA_TKDA,D_BA_TKDA_PDT}" @refresh="getList" />
</div>
</template>
@ -45,13 +53,13 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.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";
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 searchBox = ref(); //搜索框
const baseUrl = 'data:image/jpeg;base64,'
const searchConfiger = ref([
{
label: "题目",
@ -84,7 +92,7 @@ const pageData = reactive({
{ label: "选项C", prop: "optionC" },
{ label: "选项D", prop: "optionD" },
{ label: "选项E", prop: "optionE" },
{ label: "答案", prop: "answer"}
{ label: "答案", prop: "answer", showSolt: true}
]
});
@ -114,7 +122,11 @@ const getList = () => {
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
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.tableConfiger.loading = false;
}).catch(() => {
@ -126,7 +138,7 @@ const getList = () => {
// 删除
const handleDelete = (ids) => {
proxy.$modal.confirm("是否确认删除该题目?").then(() => {
qcckPost({ ids }, "/mosty-base/baxx/tkgl/remove").then(() => {
qcckPost(ids, "/mosty-base/baxx/tkgl/remove").then(() => {
proxy.$modal.msgSuccess("删除成功");
getList();
});

View File

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

View File

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

View File

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

View File

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

View File

@ -23,6 +23,8 @@ import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue'
const { proxy } = getCurrentInstance()
const { D_BAXX_GWLX } = proxy.$dict("D_BAXX_GWLX")
const title = ref('新增培训人员')
const loading = ref(false)
const disabled = ref(false)
@ -59,7 +61,7 @@ const formList = reactive([
[
{ label: "居住地址", prop: "jzdz", type: "input" },
{ 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 },

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

View File

@ -23,7 +23,7 @@ import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue'
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 loading = ref(false)
const disabled = ref(false)
@ -64,7 +64,7 @@ const formList = reactive([
{ label: "资格证类型", prop: "zgzlx", type: "input" },
{ label: "资格证起始日期", prop: "zgzKssj", 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" },

View File

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

View File

@ -12,7 +12,9 @@
<el-descriptions-item label="姓名">{{ formData.xm }}</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.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.tjrq }}</el-descriptions-item>
</el-descriptions>
@ -25,6 +27,8 @@ import { ref, computed, getCurrentInstance } from 'vue'
import { qcckPost } from "@/api/qcckApi.js";
const { proxy } = getCurrentInstance()
const { D_BAXX_DWLX } = proxy.$dict("D_BAXX_DWLX")
const title = ref('保安考试申请')
const loading = ref(false)
const disabled = ref(false)
@ -35,10 +39,6 @@ const props = defineProps({
type: Boolean,
default: false
},
dic: {
type: Object,
default: () => ({})
}
})
const emits = defineEmits(['update:modelValue'])

View File

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

View File

@ -25,6 +25,8 @@ import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue'
const { proxy } = getCurrentInstance()
const { D_BAXX_GWLX, D_BAXX_DWLX } = proxy.$dict("D_BAXX_GWLX", "D_BAXX_DWLX")
const title = ref('新增培训人员')
const loading = ref(false)
const disabled = ref(false)
@ -61,10 +63,10 @@ const formList = reactive([
[
{ label: "居住地址", prop: "jzdz", type: "input" },
{ 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 },

View File

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

View File

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