This commit is contained in:
lcw
2025-09-26 17:12:13 +08:00
98 changed files with 660 additions and 400 deletions

View File

@ -1,4 +1,114 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" name="viewport"><link rel="icon" href="favicon.ico"><title>公安</title><script src="./pgis/eliMapboxgl.min.js"></script><script src="./static/js/huaweiSDK/ICPSDK_ALL.js" id="icpsdk-script"></script><script src="./static/js/huaweiSDK/yuv-player.js"></script><script src="./static/js/huaweiSDK/UMP_JS_SDK.js"></script><script src="./static/js/huaweiSDK/jquery.min.js"></script><script src="./static/js/huaweiSDK/sha256.min.js"></script><script src="./static/js/huaweiSDK/rh.js"></script><link rel="stylesheet" href="./static/js/huaweiSDK/UMP_JS_SDK.css"><link href="static/css/chunk-0ecec341.b8ae026e.css" rel="prefetch"><link href="static/css/chunk-1143165c.e71014f7.css" rel="prefetch"><link href="static/css/chunk-170bf3d6.51ab40e2.css" rel="prefetch"><link href="static/css/chunk-1bc9d765.97aa19d6.css" rel="prefetch"><link href="static/css/chunk-1cd8f6ee.0c8acc72.css" rel="prefetch"><link href="static/css/chunk-1f677e9b.6728e3f2.css" rel="prefetch"><link href="static/css/chunk-2a803a5c.a9ac2046.css" rel="prefetch"><link href="static/css/chunk-3afaafac.949bbeba.css" rel="prefetch"><link href="static/css/chunk-3c0299fb.7e0ee8e9.css" rel="prefetch"><link href="static/css/chunk-3d4f7746.e43806d8.css" rel="prefetch"><link href="static/css/chunk-4383e485.f0e82f8f.css" rel="prefetch"><link href="static/css/chunk-46b16446.b86cbf54.css" rel="prefetch"><link href="static/css/chunk-48ee0a14.38bceb5f.css" rel="prefetch"><link href="static/css/chunk-4dd10e5d.eb2f88f7.css" rel="prefetch"><link href="static/css/chunk-62fd4e5a.ae27d296.css" rel="prefetch"><link href="static/css/chunk-728fde9c.ad9c5372.css" rel="prefetch"><link href="static/css/chunk-8ced575a.609db79b.css" rel="prefetch"><link href="static/css/chunk-b05625e6.af2171dc.css" rel="prefetch"><link href="static/css/chunk-e0dbb6ee.6564ee0c.css" rel="prefetch"><link href="static/css/chunk-fb6ca218.d1759f63.css" rel="prefetch"><link href="static/js/chunk-0ecec341.39ac8749.js" rel="prefetch"><link href="static/js/chunk-1143165c.0aa04a19.js" rel="prefetch"><link href="static/js/chunk-170bf3d6.f6bfac60.js" rel="prefetch"><link href="static/js/chunk-1bc9d765.ff44b1a1.js" rel="prefetch"><link href="static/js/chunk-1cd8f6ee.b91c2408.js" rel="prefetch"><link href="static/js/chunk-1f677e9b.0aad2cbf.js" rel="prefetch"><link href="static/js/chunk-2a803a5c.bfecab09.js" rel="prefetch"><link href="static/js/chunk-2d22bd3e.546119e4.js" rel="prefetch"><link href="static/js/chunk-3afaafac.ab47f5e1.js" rel="prefetch"><link href="static/js/chunk-3c0299fb.e4496ee1.js" rel="prefetch"><link href="static/js/chunk-3d4f7746.3aaf42f6.js" rel="prefetch"><link href="static/js/chunk-4383e485.7a72bb71.js" rel="prefetch"><link href="static/js/chunk-46b16446.fed701ae.js" rel="prefetch"><link href="static/js/chunk-48ee0a14.95469500.js" rel="prefetch"><link href="static/js/chunk-4dd10e5d.befab8bb.js" rel="prefetch"><link href="static/js/chunk-62fd4e5a.1dd65e67.js" rel="prefetch"><link href="static/js/chunk-728fde9c.9acaebd5.js" rel="prefetch"><link href="static/js/chunk-74a8285d.5f715b5d.js" rel="prefetch"><link href="static/js/chunk-8ced575a.c122b485.js" rel="prefetch"><link href="static/js/chunk-b05625e6.cc1ad608.js" rel="prefetch"><link href="static/js/chunk-e0dbb6ee.0c62410a.js" rel="prefetch"><link href="static/js/chunk-fb6ca218.188fd597.js" rel="prefetch"><link href="static/css/app.fc581dae.css" rel="preload" as="style"><link href="static/css/chunk-vendors.b02a6070.css" rel="preload" as="style"><link href="static/js/app.3061d28b.js" rel="preload" as="script"><link href="static/js/chunk-vendors.39c8cdc5.js" rel="preload" as="script"><link href="static/css/chunk-vendors.b02a6070.css" rel="stylesheet"><link href="static/css/app.fc581dae.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 公安 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script>document.documentElement.addEventListener(
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" name="viewport">
<link rel="icon" href="favicon.ico">
<title>公安</title>
<script src="./pgis/eliMapboxgl.min.js"></script>
<script src="./static/js/huaweiSDK/ICPSDK_ALL.js" id="icpsdk-script"></script>
<script src="./static/js/huaweiSDK/yuv-player.js"></script>
<script src="./static/js/huaweiSDK/UMP_JS_SDK.js"></script>
<script src="./static/js/huaweiSDK/jquery.min.js"></script>
<script src="./static/js/huaweiSDK/sha256.min.js"></script>
<script src="./static/js/huaweiSDK/rh.js"></script>
<link rel="stylesheet" href="./static/js/huaweiSDK/UMP_JS_SDK.css">
<link href="static/css/chunk-02ea15eb.5d1ba452.css" rel="prefetch">
<link href="static/css/chunk-0f17ea4c.dbdf7f70.css" rel="prefetch">
<link href="static/css/chunk-10e8c77b.dab97cde.css" rel="prefetch">
<link href="static/css/chunk-10ed8ea9.c2ecca74.css" rel="prefetch">
<link href="static/css/chunk-15d0e086.3385f8b0.css" rel="prefetch">
<link href="static/css/chunk-21841a4c.6eedf75b.css" rel="prefetch">
<link href="static/css/chunk-241e82d7.11096406.css" rel="prefetch">
<link href="static/css/chunk-2779e5eb.db818b95.css" rel="prefetch">
<link href="static/css/chunk-28bd6e9c.ec6f1955.css" rel="prefetch">
<link href="static/css/chunk-372656a2.7ea38cd5.css" rel="prefetch">
<link href="static/css/chunk-39279eb6.47081a90.css" rel="prefetch">
<link href="static/css/chunk-4774d9b1.73bbab57.css" rel="prefetch">
<link href="static/css/chunk-48f37632.e15ef6a9.css" rel="prefetch">
<link href="static/css/chunk-4c926d2e.1e67e869.css" rel="prefetch">
<link href="static/css/chunk-4f09d58d.4f2a4e43.css" rel="prefetch">
<link href="static/css/chunk-54786492.26254a10.css" rel="prefetch">
<link href="static/css/chunk-558ea50e.acd6d3dc.css" rel="prefetch">
<link href="static/css/chunk-57f05a75.0e9fcd50.css" rel="prefetch">
<link href="static/css/chunk-592f86a8.7639f8b4.css" rel="prefetch">
<link href="static/css/chunk-5c230de9.d70eece9.css" rel="prefetch">
<link href="static/css/chunk-61c2abd0.7cab76a0.css" rel="prefetch">
<link href="static/css/chunk-64071f66.7664b082.css" rel="prefetch">
<link href="static/css/chunk-672bf274.c108c937.css" rel="prefetch">
<link href="static/css/chunk-67f4379d.f6e72cab.css" rel="prefetch">
<link href="static/css/chunk-6800f11d.2b4cf43e.css" rel="prefetch">
<link href="static/css/chunk-6e522fb9.6cfce2cb.css" rel="prefetch">
<link href="static/css/chunk-7520a17b.73e7e2a4.css" rel="prefetch">
<link href="static/css/chunk-75f40ec2.2b41afa6.css" rel="prefetch">
<link href="static/css/chunk-90c83dd2.8e9f89e9.css" rel="prefetch">
<link href="static/css/chunk-93fe6126.8d6c2235.css" rel="prefetch">
<link href="static/css/chunk-a070c67c.f8ac0fdc.css" rel="prefetch">
<link href="static/css/chunk-a27ffb7a.dd217f70.css" rel="prefetch">
<link href="static/css/chunk-a37f0b78.12c4a7fe.css" rel="prefetch">
<link href="static/css/chunk-a3e767b2.860cd9bd.css" rel="prefetch">
<link href="static/css/chunk-ba27d1c8.6564ee0c.css" rel="prefetch">
<link href="static/css/chunk-c7fd54ae.c9072fa4.css" rel="prefetch">
<link href="static/css/chunk-d1e3636c.0d485642.css" rel="prefetch">
<link href="static/css/chunk-f32658c8.ce509732.css" rel="prefetch">
<link href="static/css/chunk-f49f1524.81c36cdb.css" rel="prefetch">
<link href="static/js/chunk-02ea15eb.c87f99b8.js" rel="prefetch">
<link href="static/js/chunk-0f17ea4c.3c6d2b4d.js" rel="prefetch">
<link href="static/js/chunk-10e8c77b.8d8eb13c.js" rel="prefetch">
<link href="static/js/chunk-10ed8ea9.d37c1017.js" rel="prefetch">
<link href="static/js/chunk-15d0e086.7868e37c.js" rel="prefetch">
<link href="static/js/chunk-21841a4c.0d58fd95.js" rel="prefetch">
<link href="static/js/chunk-241e82d7.0c8f1468.js" rel="prefetch">
<link href="static/js/chunk-2779e5eb.c4f9ca8f.js" rel="prefetch">
<link href="static/js/chunk-28bd6e9c.999dd919.js" rel="prefetch">
<link href="static/js/chunk-2d0daeb7.dead7cf1.js" rel="prefetch">
<link href="static/js/chunk-2d22bd3e.15e249c6.js" rel="prefetch">
<link href="static/js/chunk-2d22c2b1.81990dbe.js" rel="prefetch">
<link href="static/js/chunk-372656a2.a8d6170e.js" rel="prefetch">
<link href="static/js/chunk-39279eb6.b059ed1d.js" rel="prefetch">
<link href="static/js/chunk-4774d9b1.19933216.js" rel="prefetch">
<link href="static/js/chunk-48f37632.306868d1.js" rel="prefetch">
<link href="static/js/chunk-4c926d2e.1522bc9f.js" rel="prefetch">
<link href="static/js/chunk-4f09d58d.13d30215.js" rel="prefetch">
<link href="static/js/chunk-54786492.36c69fcb.js" rel="prefetch">
<link href="static/js/chunk-558ea50e.459f315e.js" rel="prefetch">
<link href="static/js/chunk-57f05a75.c26dfd59.js" rel="prefetch">
<link href="static/js/chunk-592f86a8.22e71f2b.js" rel="prefetch">
<link href="static/js/chunk-5c230de9.d8feeead.js" rel="prefetch">
<link href="static/js/chunk-61c2abd0.7ef3717c.js" rel="prefetch">
<link href="static/js/chunk-64071f66.a37f5070.js" rel="prefetch">
<link href="static/js/chunk-672bf274.d76e96df.js" rel="prefetch">
<link href="static/js/chunk-67f4379d.efe6607f.js" rel="prefetch">
<link href="static/js/chunk-6800f11d.ec866097.js" rel="prefetch">
<link href="static/js/chunk-6e522fb9.21e168bc.js" rel="prefetch">
<link href="static/js/chunk-7520a17b.8f921447.js" rel="prefetch">
<link href="static/js/chunk-75f40ec2.e207f3d9.js" rel="prefetch">
<link href="static/js/chunk-90c83dd2.960474a3.js" rel="prefetch">
<link href="static/js/chunk-93fe6126.d4e473f2.js" rel="prefetch">
<link href="static/js/chunk-a070c67c.82f2b932.js" rel="prefetch">
<link href="static/js/chunk-a27ffb7a.cee589f3.js" rel="prefetch">
<link href="static/js/chunk-a37f0b78.eb20ec3c.js" rel="prefetch">
<link href="static/js/chunk-a3e767b2.38a6f18f.js" rel="prefetch">
<link href="static/js/chunk-ba27d1c8.599705f5.js" rel="prefetch">
<link href="static/js/chunk-c7fd54ae.c476a3e8.js" rel="prefetch">
<link href="static/js/chunk-d1e3636c.f5b996fc.js" rel="prefetch">
<link href="static/js/chunk-f32658c8.c11aa1aa.js" rel="prefetch">
<link href="static/js/chunk-f49f1524.19a34f0a.js" rel="prefetch">
<link href="static/css/app.fc581dae.css" rel="preload" as="style">
<link href="static/css/chunk-vendors.b02a6070.css" rel="preload" as="style">
<link href="static/js/app.38b42200.js" rel="preload" as="script">
<link href="static/js/chunk-vendors.3e89d9d5.js" rel="preload" as="script">
<link href="static/css/chunk-vendors.b02a6070.css" rel="stylesheet">
<link href="static/css/app.fc581dae.css" rel="stylesheet">
</head>
<body><noscript><strong>We're sorry but 公安 doesn't work properly without JavaScript enabled. Please enable it to
continue.</strong></noscript>
<div id="app"></div>
<script>document.documentElement.addEventListener(
"touchmove",
function (event) {
if (event.touches.length > 1) {
@ -6,4 +116,9 @@
}
},
false
);</script><script src="static/js/chunk-vendors.39c8cdc5.js"></script><script src="static/js/app.3061d28b.js"></script></body></html>
);</script>
<script src="static/js/chunk-vendors.3e89d9d5.js"></script>
<script src="static/js/app.38b42200.js"></script>
</body>
</html>

View File

@ -0,0 +1 @@
.sso-redirect-container[data-v-2742f068]{display:flex;justify-content:center;align-items:center;height:100vh;background-color:#f5f5f5}.loading-wrapper[data-v-2742f068]{text-align:center}.loading-text[data-v-2742f068]{font-size:16px;color:#666;margin-top:20px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-02ea15eb"],{"0918":function(e,t,c){"use strict";c.r(t);var o=c("7a23"),n=c("6605"),s=c("5d2d");const a=e=>(Object(o["pushScopeId"])("data-v-2742f068"),e=e(),Object(o["popScopeId"])(),e),d={class:"sso-redirect-container"},r=a(()=>Object(o["createElementVNode"])("div",{class:"loading-wrapper"},[Object(o["createElementVNode"])("div",{class:"loading-text"},"正在跳转...")],-1)),i=[r];var p={__name:"sso_redirect",setup(e){const t=Object(n["c"])(),c=Object(n["d"])(),a=()=>t.query.url||"",r=()=>{const e=a(),t=Object(s["a"])("SSOTOKEN")||Object(s["a"])("token");t?e?c.push(e):c.push("/"):(Object(s["d"])("FounderUrl",e),window.location.href="http://localhost:8006/mosty-base/fzSsoLogin")};return Object(o["onMounted"])(()=>{r()}),(e,t)=>(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",d,i))}},b=(c("28ac"),c("6b0d")),u=c.n(b);const l=u()(p,[["__scopeId","data-v-2742f068"]]);t["default"]=l},"28ac":function(e,t,c){"use strict";c("8e7d")},"8e7d":function(e,t,c){}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0daeb7"],{"6e3e":function(e,c,t){"use strict";t.r(c);var n=t("7a23"),o=t("6605"),u=t("5502"),b=(t("c5cb"),{__name:"publicPage",setup(e){const c=Object(u["b"])(),t=Object(o["c"])(),b=Object(o["d"])();Object(n["onMounted"])(()=>{let e=t.query.clientKey;e&&s(e)});const s=e=>{c.dispatch("user/Fzlogin",e).then(e=>{b.push(t.query.url)})};return(e,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div"))}});const s=b;c["default"]=s}}]);

View File

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d22bd3e"],{f141:function(e,t,n){"use strict";n.r(t);var o=n("7a23"),c=n("5502"),u=n("6605"),l=n("5d2d"),r={__name:"oatuh_login",setup(e){const t=Object(o["ref"])(!1),n=Object(o["ref"])([]),r=Object(c["b"])(),a=Object(u["d"])();function d(){const e=Object(u["c"])();let t=e.query.token||null;null!=t?(t=t.replace(/\ +/g,""),Object(l["d"])("SSOTOKEN",t),s({token:t})):window.location.href="http://155.240.22.188:9020"}const s=e=>{r.dispatch("user/oatuhLogin",e).then(e=>{const o=Object(l["a"])("FounderUrl")||"/";console.log(o,"FounderUrl"),1===e.deptList.length?(Object(l["c"])("FounderUrl"),a.push(o)):(n.value=[...e.deptList],t.value=!0,authorization.value=e.jwtToken)})};return Object(o["onMounted"])(()=>{d()}),(e,t)=>null}};const a=r;t["default"]=a}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -149,13 +149,10 @@ const handleNum = (val) => {
watch(() => props.modelValue, (newVal) => {
listQuery.value = newVal; //赋值
console.log(newVal,'===newVal');
}, { immediate: true, deep: true });
watch(() => listQuery.value, (newVal) => {
emits('update:modelValue', newVal)
console.log(newVal,'===newVal111');
}, { immediate: true, deep: true });
defineExpose({ submit, reset });

View File

@ -1,17 +1,24 @@
<template>
<div style="width: 100%">
<div style="width: 100%" :class="getConfiger.showSelectType === 'radio' ? 'tabBoxRadio' : ''">
<!-- hasChildren要在tableData中定义表示当前行有没有下一级 children要在tableData中定义表示下一级的数据-->
<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange"
@current-change="handleCurrentChange" @row-click="singleElection" :row-key="getConfiger.rowKey"
:border="getConfiger.border" :default-expand-all="getConfiger.defaultExpandAll" :stripe="getConfiger.stripe"
:height="tableHeight" v-loading="tableConfiger.loading" :lazy="getConfiger.lazy" :load="load"
:tree-props="treePros" style="width: 100%" :header-cell-class-name="() => 'HeadBgColor'"
<el-table
ref="multipleTableRef"
:data="tableData"
@selection-change="handleSelectionChange"
:row-key="getConfiger.rowKey"
:border="getConfiger.border"
:default-expand-all="getConfiger.defaultExpandAll"
:stripe="getConfiger.stripe"
:height="tableHeight"
v-loading="tableConfiger.loading"
:lazy="getConfiger.lazy"
:load="load"
:tree-props="treePros"
style="width: 100%"
:header-cell-class-name="() => 'HeadBgColor'"
:highlight-current-row="getConfiger.showSelectType === 'radio'"
:row-style="{ height: getConfiger.rowHeight === 'auto' ? getConfiger.rowHeight : getConfiger.rowHeight + 'px' }">
<el-table-column type="selection" width="55" v-if="getConfiger.showSelectType === 'checkBox'" />
<el-table-column width="55" v-else-if="getConfiger.showSelectType === 'radio'" #default="{ row }">
<el-radio class="radio" v-model="getConfiger.radioChoose" :label="row[getConfiger.rowKey]">&nbsp;</el-radio>
</el-table-column>
<el-table-column style="width: 55px" type="selection" width="55" v-if="getConfiger.showSelectType" :class="getConfiger.showSelectType === 'radio' ? 'tabBoxRadio' : ''" />
<el-table-column type="index" label="序号" v-if="getConfiger.showIndex" width="60" :align="getConfiger?.align" />
<el-table-column v-for="(item, index) in tableColumn" :align="getConfiger?.align" :prop="item.prop" :key="index"
:label="item.label" :width="item.width" style="width: 100%; font-size: 14px"
@ -25,11 +32,12 @@
{{ row[item.prop] }}
</template>
</el-table-column>
<!-- 操作 -->
<el-table-column v-if="getConfiger.haveControls" :fixed="fixed" :label="getConfiger.controls"
:width="controlsWidth" :align="getConfiger?.align">
<template #default="scope">
<slot name="controls" v-bind="scope" :index="scope.$index"></slot>
<slot name="controls" v-bind="scope"></slot>
</template>
</el-table-column>
</el-table>
@ -58,7 +66,7 @@ const props = defineProps({
default: 180
},
tableHeight: {
type: Number
type: Number || String
},
treePros: {
type: Object,
@ -95,8 +103,6 @@ let getConfiger = reactive({
});
watchEffect(() => {
getConfiger = { ...getConfiger, ...props.tableConfiger };
console.log(getConfiger,'getConfiger');
setDefaultChoose();
});
onMounted(() => {
@ -104,19 +110,16 @@ onMounted(() => {
});
// 可选的时候选择的数据
const handleSelectionChange = (val) => {
emit("chooseData", val);
};
// 单选的时候选择的数据
const handleCurrentChange = (val) => {
currentRow.value = val;
emit("chooseData", val);
};
const singleElection = (val) => {
if (getConfiger.showSelectType === "radio") {
getConfiger.radioChoose = val[getConfiger.rowKey];
if (getConfiger.showSelectType === 'radio' && val.length > 1) {
let del_row = val.shift();
multipleTableRef.value.toggleRowSelection(del_row, false);
currentRow.value = val;
emit("chooseData", val);
} else {
emit("chooseData", val);
}
};
// 懒加载数据的方法
const load = (date, treeNode, resolve) => {
setTimeout(() => {
@ -140,29 +143,27 @@ const load = (date, treeNode, resolve) => {
function setDefaultChoose() {
nextTick(() => {
// 多选的默认选中
if (
props.tableConfiger.defaultSelectKeys?.length > 0 &&
props.tableConfiger.showSelectType === "checkBox"
) {
if (props.tableConfiger.defaultSelectKeys?.length > 0 && props.tableConfiger.showSelectType === "checkBox") {
props.tableData.forEach((item) => {
if (
props.tableConfiger.defaultSelectKeys.findIndex(
(v) => v === item[props.tableConfiger.rowKey]
) > -1
) {
if (props.tableConfiger.defaultSelectKeys.findIndex((v) => v === item[props.tableConfiger.rowKey]) > -1) {
multipleTableRef.value.toggleRowSelection(item, true);
}
});
// 单选的默认选中
} else if (
props.tableConfiger.defaultSelectKeys &&
props.tableConfiger.defaultSelectKeys?.length > 0 &&
props.tableConfiger.showSelectType === "radio"
) {
} else if (props.tableConfiger.defaultSelectKeys && props.tableConfiger.defaultSelectKeys?.length > 0 && props.tableConfiger.showSelectType === "radio") {
getConfiger.radioChoose = props.tableConfiger.defaultSelectKeys[0];
}
});
}
</script>
<style lang="scss">
<style lang="scss"></style>
<style>
.tabBoxRadio .el-checkbox__inner {
border-radius: 50% !important;
}
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
display: none;
}
</style>

View File

@ -37,7 +37,6 @@ const router = useRouter();
onMounted(() => {
deptName.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptName : ''
})
const active = ref("");
onMounted(() => {
//登陆用户信息

View File

@ -9,12 +9,6 @@ import display from './modules/display';
import getters from './getters';
export default createStore({
// state: {
// },
// mutations: {
// },
// actions: {
// },
getters,
modules: {
user,

View File

@ -1,32 +1,10 @@
import {
login,
getUserInfo,
getKaptcha,
refreshToken,
loginOut,
Fzlogin
} from "@/api/sys";
import {
unifiedLogin
} from "@/api/user-manage";
import {login,getUserInfo,getKaptcha,refreshToken,loginOut,Fzlogin } from "@/api/sys";
import { unifiedLogin } from "@/api/user-manage";
import Base64 from "base-64";
import {
setItem,
getItem,
removeAllItem
} from "@/utils/storage";
import {
TOKEN
} from "@/constant";
import router, {
resetRouter
} from "@/router";
import {
setTimeStamp
} from "@/utils/auth";
import {
TAGS_VIEW
} from "@/constant/index.js";
import { setItem, getItem, removeAllItem } from "@/utils/storage";
import { TOKEN } from "@/constant";
import router, { resetRouter } from "@/router";
import { setTimeStamp } from "@/utils/auth";
export default {
namespaced: true,
state: () => ({
@ -84,18 +62,9 @@ export default {
*登录请求动作
*/
login(ctx, userInfo) {
const {
userName,
password,
kaptcha
} = userInfo;
const { userName, password, kaptcha } = userInfo;
return new Promise((resolve, reject) => {
login({
userName,
password: Base64.encode(password),
kaptcha
})
.then((data) => {
login({ userName, password: Base64.encode(password), kaptcha }).then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
@ -110,10 +79,7 @@ export default {
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: data.menuCodeSet
},
permission: { buttonPermission: ["removeTest", "viewTest"],menus: data.menuCodeSet },
menuList: data.menuList,
deptList: data.deptList
});

View File

@ -15,9 +15,6 @@
</el-form-item>
<el-form-item prop="password1">
<!-- <span class="svg-container">
<svg-icon icon="password" />
</span> -->
<el-input placeholder="请输入密码" name="password" :type="passwordType" v-model="loginForm.password">
<template #prepend>
<span class="svg-container">
@ -48,8 +45,7 @@
<!---登录按钮-->
<el-form-item style="height: 49px" v-if="!loginDialog">
<el-button @click="handleLogin" type="primary" style="width: 520px; height: 49px" :loading="loading"
native-type="submit">登录</el-button>
<el-button @click="handleLogin" type="primary" style="width: 520px; height: 49px" :loading="loading" native-type="submit">登录</el-button>
</el-form-item>
<el-form-item class="choosedept-wrap" v-if="loginDialog">
@ -68,6 +64,7 @@ export default {
};
</script>
<script setup>
import { qcckPost } from "@/api/qcckApi.js";
import { setItem } from "@/utils/storage";
import { ElNotification } from "element-plus";
import * as MOSTY from "@/components/MyComponents/index";
@ -100,19 +97,14 @@ const loginRules = ref({
kaptcha: [{ required: true, trigger: "blur", message: "验证码为必填项" }]
});
const handleClose = () => { };
const refreshToken = (e) => {
store
.dispatch("user/refreshToken", { deptId: e, jwtToken: authorization.value })
.then((res) => {
loading.value = false;
store.commit("user/setDeptId", e);
// window.location.href = '/'// 登录后操作
router.push("/");
})
.catch(() => {
loading.value = false;
});
store.dispatch("user/refreshToken", { deptId: e, jwtToken: authorization.value }).then((res) => {
loading.value = false;
store.commit("user/setDeptId", e);
router.push("/");
}).catch(() => {
loading.value = false;
});
};
// 处理密码框文本显示状态
const passwordType = ref("password");
@ -131,42 +123,39 @@ const router = useRouter();
const handleLogin = () => {
loginFromRef.value.validate((valid) => {
if (!valid) return false;
// setItem("token", "1255555888");
// setItem("isOatuh", 0);
// router.push("/");
loading.value = true;
store
.dispatch("user/login", loginForm.value)
.then((res) => {
loading.value = false;
// 登录后操作;
if (res.deptList.length === 1) {
router.push("/");
// window.location.href = "/";
} else {
deptList.value = [...res.deptList];
loginDialog.value = true;
authorization.value = res.jwtToken;
ElNotification({
title: "提示",
message: "请选择部门",
duration: 3000
});
}
})
.catch(() => {
loading.value = false;
});
store.dispatch("user/login", loginForm.value).then((res) => {
loading.value = false;
if (res.deptList.length === 1) {
getSfzhByGsid(res.idEntityCard)
} else {
deptList.value = [...res.deptList];
loginDialog.value = true;
authorization.value = res.jwtToken;
ElNotification({ title: "提示", message: "请选择部门", duration: 3000});
}
}).catch(() => {
loading.value = false;
});
});
};
const logout = () => {
store.dispatch("user/logout");
};
const getSfzhByGsid = (sfzh) => {
qcckPost({ sfzh }, "/bagl/mosty-base/baxx/cyry/queryBySfzh").then(res=>{
if(!res) {
ElNotification({ title: "提示", message: "无访问权限", duration: 3000});
store.dispatch("user/logout");
}else{
let obj = { sfzh:res.sfzh , xm:res.xm , pxgs:res.pxgs , pxgsid:res.pxgsid }
setItem("userInfo", JSON.stringify(obj));
// window.location.href = "/";
router.push("/");
}
})
}
onMounted(() => { });
const getKaptchaImg = () => {
const res =
`${process.env.VUE_APP_GATEWAY_BASE_URL}/bagl/mosty-base/kaptcha?date=` +
new Date();
const res = `${process.env.VUE_APP_GATEWAY_BASE_URL}/bagl/mosty-base/kaptcha?date=` + new Date();
kaptchaUrl.value = res;
};
</script>

View File

@ -18,40 +18,25 @@
</template>
<script setup>
import { ref, computed, reactive, getCurrentInstance } from 'vue'
import * as rule from "@/utils/rules.js";
import { ref, reactive, getCurrentInstance } from 'vue'
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)
const FormRef = ref(null)
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
dic: {
type: Object,
default: () => ({})
}
})
const emits = defineEmits(['update:modelValue', 'refresh'])
const dialogVisible = computed({
get() {
return props.modelValue
},
set(val) {
emits('update:modelValue', val)
}
})
const formData = ref({})
const dialogVisible = ref(false)
const emits = defineEmits(['refresh'])
const formList = reactive([
[
{ label: "姓名", prop: "xm", type: "input" },
@ -74,80 +59,34 @@ const formList = reactive([
{ label: "无犯罪记录证明", prop: "wfzzmjl", type: "upload", limit: 1 },
]
])
const rules = {
ryzpzm: [{ required: true, message: "请上传身份证正面", trigger: "change" }],
ryzpfm: [{ required: true, message: "请上传身份证反面", trigger: "change" }],
tjbg: [{ required: true, message: "请上传体检报告", trigger: "change" }],
wfzzmjl: [{ required: true, message: "请上传无犯罪记录证明", trigger: "change" }],
xm: [{ required: true, message: "请输入姓名", trigger: "change" }],
zjhm: [
{ required: true, message: "请输入证件号码", trigger: "change" },
{
validator: (rule, value, callback) => {
if (!value) {
callback()
} else {
const reg = /^(\d{15}|\d{17}[\dXx])$/;
if (!reg.test(value)) {
callback(new Error("请输入正确的身份证号码"))
} else {
callback()
}
}
}
}
],
lxdh: [
{ required: true, message: "请输入联系电话", trigger: "change" },
{
validator: (rule, value, callback) => {
if (!value) {
callback()
} else {
const reg = /^1[34578]\d{9}$/
if (!reg.test(value)) {
callback(new Error("请输入正确的手机号"))
} else {
callback()
}
}
}
}
],
...rule.phoneRule({ validator: true,message: "请输入联系电话",require: true }, "lxdh"), // 是否必填 是否进行校验`
...rule.identityCardRule({ validator: true,message: "请输入身份证号" ,require: true}, "zjhm"), // 是否必填 是否进行校验
jzdz: [{ required: true, message: "请输入居住地址", trigger: "change" }],
rzsj: [{ required: true, message: "请选择入职时间", trigger: "change" }],
pxgs: [{ required: true, message: "请选择所属保安公司", trigger: "change" }],
gw: [{ required: true, message: "请输入岗位", trigger: "change" }],
}
const formData = ref({})
const close = () => {
FormRef.value?.reset()
dialogVisible.value = false
dialogVisible.value = false;
}
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];
row[field] = typeof row[field] === 'string' ? row[field].split(',') : row[field];
});
formData.value = { ...row }
if (type === 'add') {
title.value = '新增申请人员'
} else if (type === 'upload') {
title.value = '上传资料'
} else {
disabled.value = true
title.value = '查看详情'
}
title.value = type === 'add' ? '新增申请人员' : (type === 'upload' ? '上传资料' : '查看详情')
disabled.value = title.value === '查看详情' ? true : false;
dialogVisible.value = true;
}
// 新增、编辑
@ -155,15 +94,9 @@ const save = () => {
FormRef.value.submit(() => {
loading.value = true;
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(',')
: '';
});
fieldsToSplit.forEach(field => { params[field] = params[field] ? params[field].join(',') : ''; });
qcckPost(params, url).then(() => {
loading.value = false;
proxy.$message.success("保存成功");

View File

@ -1,82 +1,101 @@
<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" />
<el-dialog class="dialogWerapper" width="80%" v-model="visibleDialog" title="选择公司" @close="handleClose">
<div>
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
</MyTable>
</div>
<template #footer>
<el-button type="primary" v-if="!disabled" :loading="loading" @click="handleSubmit">确定</el-button>
<el-button @click="handleClose">取消</el-button>
<div class="flex just-center">
<el-button type="primary" :loading="loading" @click="handleSubmit">确定</el-button>
<el-button @click="handleClose">取消</el-button>
</div>
</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";
import MyTable from "@/components/aboutTable/MyTable.vue";
import { ref, reactive,getCurrentInstance } from 'vue';
import { qcckPost } from "@/api/qcckApi.js";
const emits = defineEmits(['refresh']);
const { proxy } = getCurrentInstance();
const { D_BAXX_DWLX } = proxy.$dict("D_BAXX_DWLX")
const props = defineProps({
modelValue: {
type: Boolean,
default: false
const visibleDialog = ref(false);
const pageData = reactive({
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "radio",
loading: false,
haveControls:false
},
})
const emits = defineEmits(['update:modelValue', 'refresh'])
const visible = computed({
get() {
return props.modelValue
tableHeight:500,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
set(val) {
emits('update:modelValue', val)
}
})
controlsWidth: 180,
tableColumn: [
{ label: "单位名称", prop: "dwmc" },
{ label: "信用代码", prop: "xydm" },
{ label: "场所名称", prop: "csmc" },
{ label: "场所电话", prop: "csLxdh" }
]
});
const title = ref('选择培训公司')
const loading = ref(false)
const disabled = ref(false)
const FormRef = ref(null)
const formData = ref({})
const formList = reactive([
[
{ label: "培训公司", prop: "pxgs", type: "select", options: D_BAXX_DWLX },
],
])
const rules = {
pxgs: [{ required: true, message: "请选择培训公司", trigger: "change" }],
}
const open = (row = {}, type = 'updata') => {
visible.value = true
disabled.value = false
formData.value = { ...row }
}
const loading = ref(false)
const handleClose = () => {
FormRef.value?.reset()
visible.value = false
formData.value = {};
visibleDialog.value = false;
}
const chooseData = (row) => {
formData.value.pxgsdm = row[0].id;
formData.value.pxgsid = row[0].id;
formData.value.pxgs = row[0].dwmc;
}
const handleSubmit = async () => {
try {
loading.value = true
await FormRef.value.submit(async () => {
await qcckPost({ ...formData.value }, `/bagl/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
}
if(!formData.value.pxgsid) return proxy.$message.error('请选择公司');
loading.value = true;
let data = { ...formData.value }
data.sfzh = data.zjhm;
await qcckPost(data, `/mosty-base/baxx/basq/edit`)
await qcckPost(data, `/mosty-base/baxx/pxry/add`)
loading.value = false
proxy.$message.success('培训公司保存成功')
emits('refresh')
handleClose()
}
defineExpose({ open })
function open(row) {
pageData.keyCount++;
formData.value = row;
visibleDialog.value = true;
getList();
}
function getList () {
pageData.tableConfiger.loading = true;
qcckPost({ keyword : localStorage.getItem('idEntityCard') }, "/mosty-base/baxx/dwgl/list").then((res) => {
let arr = res || []
pageData.tableData = arr.filter(item => item.type == '02')
pageData.tableConfiger.loading = false;
}).catch(() => {
pageData.tableConfiger.loading = false;
});
}
defineExpose({
open
})
</script>

View File

@ -19,14 +19,14 @@
{{ row?.sfpx === '01' ? `` : `` }}
</template>
<template #gw="{ row }">
<DictTag :value="row.gw" :options="D_BAXX_GWLX" />
<DictTag :value="row.gw" :tag="false" :options="D_BAXX_GWLX" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<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>
<el-link type="primary" @click="addEdit('select', row)" v-if="!row.pxgsdm">提交培训公司</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -34,10 +34,8 @@
total: pageData.total
}"></Pages>
</div>
<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" @refresh="getList" />
</div>
</template>
@ -46,18 +44,16 @@ import { getCurrentInstance, onMounted, reactive, ref } from "vue";
import MyTable from '@/components/aboutTable/MyTable.vue';
import Pages from '@/components/aboutTable/Pages.vue';
import Search from '@/components/aboutTable/Search.vue';
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { qcckPost } from "@/api/qcckApi.js";
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import AddTrainerDialog from "./components/addTrainerDialog.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 selectTtaningRef = ref();
const queryFrom = ref({});
const isVisible = ref(false);
const dialogVisible = ref(false);
const searchBox = ref(null);
const searchConfiger = ref([
{
@ -107,8 +103,7 @@ const pageData = reactive({
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight =
window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
@ -116,7 +111,7 @@ const tabHeightFn = () => {
const addEdit = (type, row) => {
if (type === 'select') {
selectTtaningRef.value.open(row, type);
selectTtaningRef.value.open(row);
} else {
trainerRef.value.open(row, type);
}
@ -129,38 +124,26 @@ const onSearch = (value) => {
}
const getList = async () => {
try {
pageData.tableConfiger.loading = true;
const res = await qcckPost({
...pageData.pageConfiger,
...queryFrom.value
}, `/bagl/mosty-base/baxx/basq/page`)
if(res) {
pageData.tableData = res.records || [];
pageData.total = res.total;
}
} finally {
pageData.tableConfiger.loading = false;
}
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value }
const res = await qcckPost(data, `/mosty-base/baxx/basq/page`)
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}
const handleDelete = async (ids) => {
await proxy.$modal.confirm("是否确认删除该培训人员?")
try {
await qcckPost({ idList: ids }, `/bagl/mosty-base/baxx/basq/remove`)
proxy.$modal.msgSuccess("删除成功");
await getList();
} catch (error) {
proxy.$modal.msgError("删除失败");
}
await qcckPost({ idList: ids }, `/mosty-base/baxx/basq/remove`)
proxy.$modal.msgSuccess("删除成功");
await getList();
}
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getList();
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList();

View File

@ -9,15 +9,21 @@
</div>
<div class="cntinfo">
<FormMessage ref="FormRef" :disabled="disabled" v-model="formData" :rules="rules" :formList="formList" :labelWidth='120'>
<template #pxgs>
<el-input v-model="formData.pxgs" @click="selectPxgs" readonly placeholder="请选择培训公司"></el-input>
</template>
<template #lzsj>
<el-input v-model="formData.lzsj" disabled placeholder="请选择离职时间"></el-input>
</template>
</FormMessage>
</div>
<!-- 选择公司 -->
<ChooseCompany ref="RefConmay" @change="changePxgs"></ChooseCompany>
</div>
</template>
<script setup>
import ChooseCompany from './chooseCompany.vue'
import { ref, reactive, getCurrentInstance } from 'vue'
import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue'
@ -28,7 +34,7 @@ const title = ref('新增从业人员')
const loading = ref(false)
const disabled = ref(false)
const FormRef = ref(null)
const RefConmay = ref()
const props = defineProps({
modelValue: {
type: Boolean,
@ -56,6 +62,9 @@ const formList = reactive([
{ label: "资格证截至日期", prop: "zgzJssj", type: "date" },
{ label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
],
[
{ label: "培训公司", prop: "pxgs", type: "slot" },
],
[
{ label: "外派单位", prop: "wpdw", type: "input" },
],
@ -76,10 +85,20 @@ const rules = {
zgzKssj: [{ required: true, message: "请选择资格证起始日期", trigger: "change" }],
zgzJssj: [{ required: true, message: "请选择资格证截至日期", trigger: "blur" }],
whcd: [{ required: true, message: "请选择文化程度", trigger: "change" }],
pxgs: [{ required: true, message: "请选择培训公司", trigger: "change" }],
}
const formData = ref({})
const selectPxgs = () => {
RefConmay.value.open()
}
const changePxgs = (data) => {
formData.value.pxgs = data.pxgs
formData.value.pxgsid = data.pxgsid
}
const close = () => {
FormRef.value?.reset();
formData.value = {}
@ -89,14 +108,10 @@ const close = () => {
const open = (row = {}, type = 'add') => {
dialogVisible.value = true
disabled.value = false
const fieldsToSplit = ['tp', 'bazzp'];
fieldsToSplit.forEach(field => {
row[field] = typeof row[field] === 'string'
? row[field].split(',')
: row[field];
row[field] = typeof row[field] === 'string' ? row[field].split(',') : row[field];
});
formData.value = { ...row }
if (type === 'add') {
title.value = '新增从业人员'

View File

@ -0,0 +1,91 @@
<template>
<el-dialog class="dialogWerapper" width="80%" v-model="visibleDialog" title="选择公司" @close="handleClose">
<div>
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
</MyTable>
</div>
<template #footer>
<div class="flex just-center">
<el-button type="primary" @click="handleSubmit">确定</el-button>
<el-button @click="handleClose">取消</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import MyTable from "@/components/aboutTable/MyTable.vue";
import { ref, reactive,getCurrentInstance } from 'vue';
import { qcckPost } from "@/api/qcckApi.js";
const emits = defineEmits(['change']);
const { proxy } = getCurrentInstance();
const visibleDialog = ref(false);
const pageData = reactive({
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "radio",
loading: false,
haveControls:false
},
tableHeight:500,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 180,
tableColumn: [
{ label: "单位名称", prop: "dwmc" },
{ label: "信用代码", prop: "xydm" },
{ label: "场所名称", prop: "csmc" },
{ label: "场所电话", prop: "csLxdh" }
]
});
const formData = ref({})
const handleClose = () => {
formData.value = {};
visibleDialog.value = false;
}
const chooseData = (row) => {
formData.value.pxgsid = row[0].id;
formData.value.pxgs = row[0].dwmc;
}
const handleSubmit = async () => {
if(!formData.value.pxgsid) return proxy.$message.error('请选择公司');
let obj = JSON.parse(JSON.stringify(formData.value))
emits('change',obj)
handleClose()
}
function open() {
pageData.keyCount++;
visibleDialog.value = true;
getList();
}
function getList () {
pageData.tableConfiger.loading = true;
qcckPost({ keyword : localStorage.getItem('idEntityCard')}, "/mosty-base/baxx/dwgl/list").then((res) => {
pageData.tableData = res || []
pageData.tableConfiger.loading = false;
}).catch(() => {
pageData.tableConfiger.loading = false;
});
}
defineExpose({
open
})
</script>

View File

@ -13,10 +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.newSflz" :options="D_BZ_SF" />
<span>{{ row.sflz == 1 ? '离职' : '在职' }}</span>
</template>
<template #gw="{ row }">
<DictTag :value="row.gw" :options="D_BAXX_GWLX" />
<DictTag :value="row.gw" :tag="false" :options="D_BAXX_GWLX" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
@ -31,7 +31,6 @@
total: pageData.total
}"></Pages>
</div>
<add-practitioner-dialog v-model="isVisible" ref="addPractitionerRef" @refresh="getList" />
</div>
</template>
@ -150,21 +149,12 @@ const handleDelete = async (ids) => {
};
const getList = async () => {
try {
pageData.tableConfiger.loading = true;
const res = await qcckPost({
...pageData.pageConfiger,
...queryFrom.value
}, `/bagl/mosty-base/baxx/cyry/page`)
if(res) {
// 处理sflz为null默认为0
pageData.tableData = res.records?.map(i => ({ ...i, newSflz: i?.sflz === null ? 0 : i.sflz })) || [];
pageData.total = res.total;
}
} finally {
pageData.tableConfiger.loading = false;
}
pageData.tableConfiger.loading = true;
let params = { ...pageData.pageConfiger, ...queryFrom.value }
const res = await qcckPost(params, `/mosty-base/baxx/cyry/page`)
pageData.tableData = res.records || []
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}
const changeNo = (val) => {

View File

@ -13,10 +13,7 @@
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #gw="{ row }">
<DictTag :value="row.gw" :options="D_BAXX_GWLX" />
</template>
<template #ssbags="{ row }">
<DictTag :value="row.ssbags" :options="D_BAXX_DWLX" />
<DictTag :value="row.gw" :tag="false" :options="D_BAXX_GWLX" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
@ -91,14 +88,13 @@ const pageData = reactive({
{ label: "证件号码", prop: "sfzh" },
{ label: "联系方式", prop: "lxdh" },
{ label: "岗位", prop: "gw", showSolt: true },
{ label: "所属保安公司", prop: "ssbags", showSolt: true },
{ label: "所属保安公司", prop: "pxgs" },
]
});
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight =
window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
@ -115,52 +111,29 @@ const onSearch = (value) => {
}
const getList = async () => {
try {
pageData.tableConfiger.loading = true;
const res = await qcckPost({
...pageData.pageConfiger,
...queryFrom.value,
sfxxpx: '01'
}, `/mosty-base/baxx/pxry/page`)
if(res) {
pageData.tableData = res.records || [];
pageData.total = res.total;
}
} finally {
pageData.tableConfiger.loading = false;
}
pageData.tableConfiger.loading = true;
let pxgsid = localStorage.getItem('userInfo') ? JSON.parse(localStorage.getItem('userInfo'))?.pxgsid : null;
let params = { ...pageData.pageConfiger, ...queryFrom.value, sfxxpx: '01',pxgsid: pxgsid }
const res = await qcckPost(params, `/mosty-base/baxx/pxry/page`)
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}
// 提交培训
const handleSubmitTraining = async (row) => {
await proxy.$modal.confirm("是否确认提交该人员进行待培训?")
try {
await qcckPost({
...row,
sfxxpx: '02'
}, "/mosty-base/baxx/pxry/edit")
proxy.$modal.msgSuccess("提交培训成功");
await getList();
} catch (error) {
proxy.$modal.msgError("提交培训失败");
console.log(error)
}
await qcckPost({ ...row, sfxxpx: '02' }, "/mosty-base/baxx/pxry/edit")
proxy.$modal.msgSuccess("提交培训成功");
await getList();
};
// 删除
const handleDelete = async (ids) => {
await proxy.$modal.confirm("是否确认删除该培训人员?")
try {
await qcckPost({ idList: ids }, "/bagl/mosty-base/baxx/pxry/remove")
proxy.$modal.msgSuccess("删除成功");
await getList();
} catch (error) {
proxy.$modal.msgError("删除失败");
console.log(error)
}
await qcckPost({ idList: ids }, "/mosty-base/baxx/pxry/remove")
proxy.$modal.msgSuccess("删除成功");
await getList();
};
const changeNo = (val) => {

View File

@ -76,19 +76,13 @@ const tabHeightFn = () => {
const getList = async () => {
try {
pageData.tableConfiger.loading = true;
const res = await qcckPost({
...pageData.pageConfiger,
}, `/bagl/mosty-base/baxx/dwgl/page`)
if(res) {
pageData.tableData = res.records || [];
pageData.total = res.total;
}
} finally {
pageData.tableConfiger.loading = false;
}
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, }
data.keyword = localStorage.getItem('idEntityCard');
const res = await qcckPost(data, `/mosty-base/baxx/dwgl/page`)
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
};
const addEdit = (type, row) => {