This commit is contained in:
lcw
2025-09-26 12:59:09 +08:00
14 changed files with 429 additions and 288 deletions

View File

@ -3,25 +3,23 @@
<script setup>
import { ref, onMounted } from "vue";
import { useStore } from "vuex";
import { useRouter,useRoute } from "vue-router";
import {
setItem,
getItem,
removeItem
} from "@/utils/storage";
import { useRouter, useRoute } from "vue-router";
import { setItem, getItem, removeItem } from "@/utils/storage";
const loginDialog = ref(false);
const deptList = ref([]);
const url = ref("/");
const store = useStore();
const router = useRouter();
function redirectAuth() {
// 从路由参数中获取token
const route = useRoute();
let token = route.query.token || null;
url.value = route.query.url || "/";
if (token != null) {
token = token.replace(/\ +/g, "");
setItem("SSOTOKEN", token)
handleLogin({ token: token});
setItem("SSOTOKEN", token);
handleLogin({ token: token });
} else {
window.location.href = `http://155.240.22.188:9020`;
}
@ -29,14 +27,9 @@ function redirectAuth() {
const handleLogin = (e) => {
store.dispatch("user/oatuhLogin", e).then((res) => {
const FounderUrl = getItem("FounderUrl") || '/';
console.log(FounderUrl,"FounderUrl");
// 登录后操作
if (res.deptList.length === 1) {
// window.location.href = FounderUrl
removeItem("FounderUrl");
router.push(FounderUrl);
router.push(url.value);
} else {
deptList.value = [...res.deptList];
loginDialog.value = true;

View File

@ -56,6 +56,12 @@ const rules = {
const open = (row = {}, type = 'updata') => {
visible.value = true
disabled.value = false
const fieldsToSplit = ['kszp'];
fieldsToSplit.forEach(field => {
row[field] = typeof row[field] === 'string' ? row[field].split(',') : [];
});
formData.value = { ...row }
if (type === 'updata') {
title.value = '上传成绩'
@ -71,11 +77,14 @@ const handleClose = () => {
}
const handleSubmit = async () => {
let params = { ...formData.value }
params.kszp = params.kszp ? params.kszp.join(','):''
try {
loading.value = true
await FormRef.value.submit(async () => {
const { pxryid = "" } = formData.value
await qcckPost({ ...formData.value, pxryid }, `mosty/base/baxx/pxry/lrcj`)
const { pxryid = "" } = params
await qcckPost({ ...params, pxryid }, `mosty/base/baxx/pxry/lrcj`)
proxy.$message.success('上传成绩成功')
emits('refresh')
visible.value = false

View File

@ -64,7 +64,7 @@ const searchConfiger = ref([
]);
const pageData = reactive({
tableData: [{}],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,

View File

@ -9,9 +9,9 @@
</div>
<div class="cntinfo">
<FormMessage ref="FormRef" :disabled="disabled" v-model="formData" :rules="rules" :formList="formList" :labelWidth='120'>
<!-- <template #xtCjsj>
<el-input v-model="formData.xtCjsj" placeholder="请输入申请时间" />
</template> -->
<template #sqrq>
<el-date-picker type="datetime" v-model="formData.sqrq" placeholder="请输入申请时间" />
</template>
</FormMessage>
</div>
</div>
@ -60,7 +60,7 @@ const formList = reactive([
],
[
{ label: "居住地址", prop: "jzdz", type: "input" },
{ label: "申请时间", prop: "xtCjsj", type: "date" },
{ label: "申请时间", prop: "sqrq", type: "slot" },
{ label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
],
[
@ -131,6 +131,14 @@ const close = () => {
const open = (row = {}, type = 'add') => {
disabled.value = false
dialogVisible.value = true
const fieldsToSplit = ['ryzpzm', 'ryzpfm', 'tjbg', 'wfzzmjl'];
fieldsToSplit.forEach(field => {
row[field] = typeof row[field] === 'string'
? row[field].split(',')
: row[field];
});
formData.value = { ...row }
if (type === 'add') {
title.value = '新增申请人员'
@ -146,8 +154,17 @@ const open = (row = {}, type = 'add') => {
const save = () => {
FormRef.value.submit(() => {
loading.value = true;
const url = !formData.value?.id ? `/bagl/mosty-base/baxx/basq/add` : `/bagl/mosty-base/baxx/basq/edit`;
qcckPost(formData.value, url).then(() => {
const url = !formData.value?.id ? `/mosty-base/baxx/basq/add` : `/mosty-base/baxx/basq/edit`;
const params = { ...formData.value }
const fieldsToSplit = ['ryzpzm', 'ryzpfm', 'tjbg', 'wfzzmjl'];
fieldsToSplit.forEach(field => {
params[field] = params[field]
? params[field].join(',')
: '';
});
qcckPost(params, url).then(() => {
loading.value = false;
proxy.$message.success("保存成功");
emits("refresh");

View File

@ -0,0 +1,82 @@
<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

@ -81,7 +81,7 @@ const searchConfiger = ref([
]);
const pageData = reactive({
tableData: [{}],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
@ -99,7 +99,7 @@ const pageData = reactive({
{ label: "证件号码", prop: "zjhm" },
{ label: "联系方式", prop: "lxdh" },
{ label: "岗位", prop: "gw", showSolt: true },
{ label: "申请时间", prop: "xtCjsj" },
{ label: "申请时间", prop: "sqrq" },
{ label: "是否上传资料", prop: "pxgs", showSolt: true },
{ label: "是否线上培训", prop: "sfpx", showSolt: true },
]

View File

@ -89,8 +89,14 @@ const close = () => {
const open = (row = {}, type = 'add') => {
dialogVisible.value = true
disabled.value = false
row.tp = row.tp ? row.tp.split(','):[]
row.bazzp = row.bazzp ? row.bazzp.split(','):[]
const fieldsToSplit = ['tp', 'bazzp'];
fieldsToSplit.forEach(field => {
row[field] = typeof row[field] === 'string'
? row[field].split(',')
: row[field];
});
formData.value = { ...row }
if (type === 'add') {
title.value = '新增从业人员'

View File

@ -65,9 +65,8 @@ const searchConfiger = ref([
{
label: "所属保安公司",
prop: "ssbags",
placeholder: "请选择所属保安公司",
showType: "select",
options: D_BAXX_DWLX
placeholder: "请输入所属保安公司",
showType: "input",
},
{
label: "提交日期",
@ -87,7 +86,7 @@ const pageData = reactive({
},
total: 0,
pageConfiger: {
sfcjpx: 1, // 是否参加培训
sfxxpx: '02', // 是否参加培训
pageSize: 20,
pageCurrent: 1
},

View File

@ -99,6 +99,14 @@ const close = () => {
const open = (row = {}, type = 'add') => {
disabled.value = false
dialogVisible.value = true
const fieldsToSplit = ['sfzzm', 'sfzfm', 'tjbg', 'fzjlzm'];
fieldsToSplit.forEach(field => {
row[field] = typeof row[field] === 'string'
? row[field].split(',')
: [];
});
formData.value = { ...row }
if (type === 'add') {
title.value = '新增从业人员'
@ -111,10 +119,18 @@ const open = (row = {}, type = 'add') => {
}
const save = () => {
const params = { ...formData.value }
const fieldsToSplit = ['sfzzm', 'sfzfm', 'tjbg', 'fzjlzm'];
fieldsToSplit.forEach(field => {
params[field] = params[field]
? params[field].join(',')
: '';
});
FormRef.value.submit(() => {
loading.value = true;
const url = !formData.value?.id ? `/bagl/mosty-base/baxx/cyry/add` : `/bagl/mosty-base/baxx/cyry/edit`;
qcckPost(formData.value, url).then(() => {
const url = !formData.value?.id ? `/mosty-base/baxx/cyry/add` : `/mosty-base/baxx/cyry/edit`;
qcckPost(params, url).then(() => {
loading.value = false;
proxy.$message.success("保存成功");
emits("refresh");

View File

@ -73,7 +73,7 @@ const searchConfiger = ref([
]);
const pageData = reactive({
tableData: [{}],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
@ -120,8 +120,8 @@ const getList = async () => {
const res = await qcckPost({
...pageData.pageConfiger,
...queryFrom.value,
sfcjpx: 0
}, `/bagl/mosty-base/baxx/pxry/page`)
sfxxpx: '01'
}, `/mosty-base/baxx/pxry/page`)
if(res) {
pageData.tableData = res.records || [];
@ -139,8 +139,8 @@ const handleSubmitTraining = async (row) => {
try {
await qcckPost({
...row,
sfcjpx: 1
}, "/bagl/mosty-base/baxx/pxry/edit")
sfxxpx: '02'
}, "/mosty-base/baxx/pxry/edit")
proxy.$modal.msgSuccess("提交培训成功");
await getList();
} catch (error) {

View File

@ -73,7 +73,7 @@ const pageData = reactive({
total: 0,
tableHeight: 300,
pageConfiger: {
sfcjpx: 1,
sfxxpx: '02',
pageSize: 10,
pageCurrent: 1
},

View File

@ -114,6 +114,15 @@ const close = () => {
const open = (row = {}, type = 'add') => {
disabled.value = false
dialogVisible.value = true
// 统一处理所有需拆分的字段
const fieldsToSplit = ['cszp', 'frSfzZm', 'frSfzFm', 'fzrSfzZm', 'fzrSfzFm', 'yyzzzp', 'jyxkz'];
fieldsToSplit.forEach(field => {
row[field] = typeof row[field] === 'string'
? row[field].split(',')
: row[field];
});
formData.value = { ...row }
if (type === 'view') {
title.value = '查看详情'

View File

@ -44,7 +44,7 @@ const detailsRef = ref(null);
const D_BZ_BXDLX = ref([]);
const pageData = reactive({
tableData: [{}],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,