考试申请

This commit is contained in:
13684185576
2025-07-07 09:25:03 +08:00
parent e83dbabe9d
commit 3700602c41
10 changed files with 288 additions and 546 deletions

136
package-lock.json generated
View File

@ -2043,6 +2043,51 @@
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true "dev": true
}, },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"ssri": { "ssri": {
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
@ -2051,6 +2096,28 @@
"requires": { "requires": {
"minipass": "^3.1.1" "minipass": "^3.1.1"
} }
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
}
} }
} }
}, },
@ -14550,75 +14617,6 @@
} }
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-router": { "vue-router": {
"version": "4.1.3", "version": "4.1.3",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",

View File

@ -0,0 +1,55 @@
<template>
<div class="form-item-box zj-packageSelect-wrap" :style="{ width: width }">
<el-select v-bind="$attrs" :model-value="modelValue" @change="hanlderSelect"
:popper-class="selectOption.length > 20 ? 'nation-select' : ''" :placeholder="placeholder">
<el-option v-for="item in selectOption" :key="item.dm" :label="item.zdmc" :value="item.dm">
</el-option>
</el-select>
</div>
</template>
<script setup>
import { COMPONENT_WIDTH } from '@/constant';
import { nextTick, onBeforeMount, ref } from "vue";
import { getDictInfoByDictEnum } from "@/api/sysDict";
const emits = defineEmits(["handleChange"]); //子组件向父组件事件传递
const props = defineProps({
//获取组件传值
placeholder: {
default: "请选择",
type: String
},
modelValue: {
default: "",
type: String
},
dictEnum: {
default: "",
type: String
},
width: {
default: COMPONENT_WIDTH,
type: String
}
});
const selectOption = ref([]);
onBeforeMount(async () => {
const res = await getDictInfoByDictEnum({ dictElementEnum: props.dictEnum });
//正常下拉结构
if (res.zdlx === 1) {
selectOption.value = [...res.itemList];
} else {
//树形结构数据
}
});
const hanlderSelect = (data) => {
emits("handleChange", data);
};
</script>
<style lang="scss" scoped>
.zj-packageSelect-wrap {
::v-deep .el-select {
width: 100%;
}
}
</style>

View File

@ -11,6 +11,7 @@ import Upload from "./Upload/index.vue";
import Department from "./Department/index.vue"; import Department from "./Department/index.vue";
import DepartmentTree from "./DepartmentTree/index.vue"; import DepartmentTree from "./DepartmentTree/index.vue";
import ChooseIcon from "./ChooseIcon/index.vue"; import ChooseIcon from "./ChooseIcon/index.vue";
import PackageSelect from "./PackageSelect/index.vue";
import StationSelect from "./StationSelect/index.vue"; import StationSelect from "./StationSelect/index.vue";
import Provinces from "./Provinces2/index.vue"; import Provinces from "./Provinces2/index.vue";
import MarkdownEdit from "./MarkdownEdit/index.vue"; import MarkdownEdit from "./MarkdownEdit/index.vue";
@ -36,5 +37,6 @@ export {
MarkdownEdit, MarkdownEdit,
FileUpload, FileUpload,
RichOnly, RichOnly,
Date Date,
PackageSelect
}; };

View File

@ -89,22 +89,22 @@ $test: rgba(0, 128, 0, 0.603);
.is-error { .is-error {
.form-item-box { .form-item-box {
position: relative; position: relative;
.el-input { // .el-input {
background-color: #001238; // background-color: #001238;
.el-input__inner { // .el-input__inner {
background-color: #001238; // background-color: #001238;
} // }
.el-input__count .el-input__count-inner { // .el-input__count .el-input__count-inner {
background-color: #001238; // background-color: #001238;
} // }
} // }
.el-cascader__tags { .el-cascader__tags {
.el-tag { // .el-tag {
background: #001238; // background: #001238;
} // }
.el-cascader__search-input { // .el-cascader__search-input {
background: #001238; // background: #001238;
} // }
.el-cascader__search-input { .el-cascader__search-input {
margin: 2px 0 2px 13px !important; margin: 2px 0 2px 13px !important;
} }
@ -130,13 +130,12 @@ $test: rgba(0, 128, 0, 0.603);
position: relative; position: relative;
.el-input { .el-input {
border: #57d040; border: #57d040;
.el-input__inner { // .el-input__inner {
background-color: #001238; // background-color: #001238;
// border: 1px solid #57d040; // }
} // .el-input__count .el-input__count-inner {
.el-input__count .el-input__count-inner { // background-color: #001238;
background-color: #001238; // }
}
} }
.el-cascader__tags { .el-cascader__tags {
.el-tag { .el-tag {

View File

@ -5,11 +5,7 @@
</div> </div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox">
<Search <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
>
<!-- <template #defaultSlot> <!-- <template #defaultSlot>
<div> <div>
<el-input-number v-model="queryFrom.xqy"></el-input-number> <el-input-number v-model="queryFrom.xqy"></el-input-number>
@ -21,35 +17,20 @@
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:tableData="pageData.tableData" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:tableColumn="pageData.tableColumn" @chooseData="chooseData">
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="primary" @click="addEdit('basic', row)">详情</el-link> <el-link type="primary" @click="addEdit('basic', row)">详情</el-link>
<el-link type="primary" @click="addEdit('staff', row)" <el-link type="primary" @click="addEdit('staff', row)">从业人员</el-link>
>从业人员</el-link <el-link type="primary" @click="addEdit('vehicle', row)">车辆</el-link>
>
<el-link type="primary" @click="addEdit('vehicle', row)"
>车辆</el-link
>
</template> </template>
</MyTable> </MyTable>
<Pages <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger, ...pageData.pageConfiger,
total: pageData.total total: pageData.total
}" }"></Pages>
></Pages>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<DetailForm ref="detailDiloag" /> <DetailForm ref="detailDiloag" />
@ -72,13 +53,13 @@ const searchBox = ref(); //搜索框
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "单位名称", label: "单位名称",
prop: "placeName", prop: "dwmc",
placeholder: "单位名称", placeholder: "单位名称",
showType: "input" showType: "input"
}, },
{ {
label: "单位类型", label: "单位类型",
prop: "placeName", prop: "dwlx",
placeholder: "单位类型", placeholder: "单位类型",
showType: "input" showType: "input"
} }
@ -86,18 +67,7 @@ const searchConfiger = ref([
const queryFrom = ref({}); const queryFrom = ref({});
const pageData = reactive({ const pageData = reactive({
tableData: [ tableData: [],
// {
// id: 1,
// placeName: "老王打印店",
// placePhone: "13800138000",
// legalPersonName: "张三",
// legalPersonId: "511222222222222",
// legalPersonPhone: "13900139000",
// operationStatus: "在营",
// jurisdiction: "巴宜区纺织路派出所"
// }
],
keyCount: 0, keyCount: 0,
tableConfiger: { tableConfiger: {
rowHieght: 61, rowHieght: 61,
@ -111,10 +81,10 @@ const pageData = reactive({
}, },
controlsWidth: 200, controlsWidth: 200,
tableColumn: [ tableColumn: [
{ label: "单位名称", prop: "placeName" }, { label: "单位名称", prop: "dwmc" },
{ label: "单位类型", prop: "operationStatus" }, { label: "单位类型", prop: "dwlx" },
{ label: "单位车辆数量", prop: "jurisdiction" }, { label: "单位车辆数量", prop: "dwclsl" },
{ label: "所属辖区", prop: "legalPersonName" } { label: "所属辖区", prop: "ssxq" }
] ]
}); });

View File

@ -5,11 +5,7 @@
</div> </div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox">
<Search <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
>
<!-- <template #defaultSlot> <!-- <template #defaultSlot>
<div> <div>
<el-input-number v-model="queryFrom.xqy"></el-input-number> <el-input-number v-model="queryFrom.xqy"></el-input-number>
@ -21,29 +17,18 @@
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:tableData="pageData.tableData" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:tableColumn="pageData.tableColumn" @chooseData="chooseData">
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link> <el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger, ...pageData.pageConfiger,
total: pageData.total total: pageData.total
}" }"></Pages>
></Pages>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<DetailForm ref="detailDiloag" title="公交线路详情" /> <DetailForm ref="detailDiloag" title="公交线路详情" />
@ -99,10 +84,10 @@ const pageData = reactive({
}, },
controlsWidth: 200, controlsWidth: 200,
tableColumn: [ tableColumn: [
{ label: "公交线路名称", prop: "placeName" }, { label: "公交线路名称", prop: "xlmc" },
{ label: "公交线路起点站", prop: "operationStatus" }, { label: "公交线路起点站", prop: "xlqdz" },
{ label: "公交线路终点站", prop: "jurisdiction" }, { label: "公交线路终点站", prop: "xlzdz" },
{ label: "行政区划", prop: "legalPersonName" } { label: "行政区划", prop: "xzqy" }
] ]
}); });

View File

@ -4,7 +4,9 @@
<div class="title">用户管理</div> <div class="title">用户管理</div>
<div class="btnBox"> <div class="btnBox">
<el-button type="primary" @click="addUserHander"> <el-button type="primary" @click="addUserHander">
<el-icon><CirclePlus /></el-icon> <el-icon>
<CirclePlus />
</el-icon>
<span>新增</span> <span>新增</span>
</el-button> </el-button>
</div> </div>
@ -12,46 +14,23 @@
<div class="searchBox" ref="searchBox"> <div class="searchBox" ref="searchBox">
<el-form :model="listQuery" class="mosty-from-wrap" :inline="true"> <el-form :model="listQuery" class="mosty-from-wrap" :inline="true">
<el-form-item label="用户名"> <el-form-item label="用户名">
<el-input <el-input placeholder="请输入用户名" v-model="listQuery.loginName" clearable></el-input>
placeholder="请输入用户名"
v-model="listQuery.loginName"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="移动电话"> <el-form-item label="移动电话">
<el-input <el-input placeholder="请输入移动电话" v-model="listQuery.phone" clearable></el-input>
placeholder="请输入移动电话"
v-model="listQuery.phone"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="身份证号"> <el-form-item label="身份证号">
<el-input <el-input placeholder="请输入身份证号" v-model="listQuery.idEntityCard" clearable></el-input>
placeholder="请输入身份证号"
v-model="listQuery.idEntityCard"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="警号"> <el-form-item label="警号">
<el-input <el-input placeholder="请输入警号" v-model="listQuery.inDustRialId" clearable></el-input>
placeholder="请输入警号"
v-model="listQuery.inDustRialId"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否包含下级"> <el-form-item label="是否包含下级">
<el-select v-model="listQuery.isChild"> <el-select v-model="listQuery.isChild">
<el-option <el-option v-for="item in D_BZ_SF" :key="item" :label="item.label" :value="item.value">{{ item.label
v-for="item in D_BZ_SF" }}</el-option>
:key="item"
:label="item.label"
:value="item.value"
>{{ item.label }}</el-option
>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleFilter">查询</el-button> <el-button @click="handleFilter">查询</el-button>
<el-button @click="reset()"> 重置 </el-button> <el-button @click="reset()"> 重置 </el-button>
@ -60,71 +39,27 @@
</div> </div>
<div class="main-box"> <div class="main-box">
<div class="treeBox" :style="{ height: treeHeight }"> <div class="treeBox" :style="{ height: treeHeight }">
<MOSTY.DepartmentTree <MOSTY.DepartmentTree width="280px" placeholder="管理部门ID" clearable filterable :isBmId="true"
width="280px" v-model="listQuery.deptId" />
placeholder="管理部门ID"
clearable
filterable
:isBmId="true"
v-model="listQuery.deptId"
/>
</div> </div>
<div class="tabBox"> <div class="tabBox">
<el-table <el-table :data="tableData" border style="width: 100%" :height="tableHeight" :key="keyCount">
:data="tableData" <el-table-column sortable prop="userName" align="center" label="用户名"></el-table-column>
border <el-table-column sortable prop="idEntityCard" align="center" label="身份证号"></el-table-column>
style="width: 100%" <el-table-column sortable prop="deptName" label="部门"></el-table-column>
:height="tableHeight" <el-table-column sortable prop="inDustRialId" align="center" label="警号">
:key="keyCount"
>
<el-table-column
sortable
prop="userName"
align="center"
label="用户名"
></el-table-column>
<el-table-column
sortable
prop="idEntityCard"
align="center"
label="身份证号"
></el-table-column>
<el-table-column
sortable
prop="deptName"
label="部门"
></el-table-column>
<el-table-column
sortable
prop="inDustRialId"
align="center"
label="警号"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column sortable prop="mobile" align="center" label="电话号码"></el-table-column>
sortable
prop="mobile"
align="center"
label="电话号码"
></el-table-column>
<el-table-column align="center" sortable label="性别" width="80"> <el-table-column align="center" sortable label="性别" width="80">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :options="D_BZ_XB" :value="row.sex" :tag="false" /> <dict-tag :options="D_BZ_XB" :value="row.sex" :tag="false" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column align="center" label="操作" fixed="right" width="250">
align="center"
label="操作"
fixed="right"
width="250"
>
<template #default="{ row }"> <template #default="{ row }">
<el-button @click="updateDict(row)" size="small">编辑</el-button> <el-button @click="updateDict(row)" size="small">编辑</el-button>
<el-dropdown <el-dropdown style="margin-left: 12px; margin-right: 12px" @command="dropdownAction">
style="margin-left: 12px; margin-right: 12px"
@command="dropdownAction"
>
<el-button style="" size="small" @click="handleClick"> <el-button style="" size="small" @click="handleClick">
更多<el-icon class="el-icon--right"> 更多<el-icon class="el-icon--right">
<arrow-down /> <arrow-down />
@ -132,23 +67,13 @@
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item <el-dropdown-item :command="commandValue('assignRoles', row)">分配角色</el-dropdown-item>
:command="commandValue('assignRoles', row)" <el-dropdown-item :command="commandValue('restPwd', row)">重置密码</el-dropdown-item>
>分配角色</el-dropdown-item
>
<el-dropdown-item :command="commandValue('restPwd', row)"
>重置密码</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<el-popconfirm <el-popconfirm confirm-button-text="" cancel-button-text="" icon-color="red" title="确定要删除?"
confirm-button-text="" @confirm="delRole(row)">
cancel-button-text=""
icon-color="red"
title="确定要删除?"
@confirm="delRole(row)"
>
<template #reference> <template #reference>
<el-button type="danger" size="small">删除</el-button> <el-button type="danger" size="small">删除</el-button>
</template> </template>
@ -157,16 +82,9 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="fenye" :style="{ top: tableHeight + 'px' }"> <div class="fenye" :style="{ top: tableHeight + 'px' }">
<el-pagination <el-pagination class="pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange"
class="pagination" :current-page="listQuery.page" :page-sizes="[10, 20, 50, 100]" :page-size="listQuery.size"
@size-change="handleSizeChange" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
@current-change="handleCurrentChange"
:current-page="listQuery.page"
:page-sizes="[10, 20, 50, 100]"
:page-size="listQuery.size"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
></el-pagination>
</div> </div>
</div> </div>
</div> </div>
@ -175,263 +93,106 @@
<span class="title">{{ isEdit ? "修改" : "新增" }}</span> <span class="title">{{ isEdit ? "修改" : "新增" }}</span>
<div> <div>
<!-- 修改 --> <!-- 修改 -->
<el-button <el-button v-if="isEdit" type="primary" size="small" @click="onSave" :loading="buttonLoading">修改</el-button>
v-if="isEdit"
type="primary"
size="small"
@click="onSave"
:loading="buttonLoading"
>修改</el-button
>
<!-- 新增 --> <!-- 新增 -->
<el-button v-else type="primary" size="small" @click="onAdd" <el-button v-else type="primary" size="small" @click="onAdd">保存</el-button>
>保存</el-button
>
<el-button size="small" @click="closeDialog">关闭</el-button> <el-button size="small" @click="closeDialog">关闭</el-button>
</div> </div>
</div> </div>
<el-form <el-form class="mosty-from-wrap" ref="elform" :model="dialogForm" :inline="true" label-position="top"
class="mosty-from-wrap" :rules="rules">
ref="elform"
:model="dialogForm"
:inline="true"
label-position="top"
:rules="rules"
>
<el-form-item label="部门:" prop="ssbmdm"> <el-form-item label="部门:" prop="ssbmdm">
<MOSTY.Department <MOSTY.Department :placeholder="dialogForm.ssbm" width="280px" clearable filterable
:placeholder="dialogForm.ssbm" v-model="dialogForm.ssbmdm" />
width="280px"
clearable
filterable
v-model="dialogForm.ssbmdm"
/>
</el-form-item> </el-form-item>
<el-form-item label="用户昵称:" prop="userName"> <el-form-item label="用户昵称:" prop="userName">
<MOSTY.Other <MOSTY.Other width="280px" placeholder="请输入用户昵称" clearable v-model="dialogForm.userName" />
width="280px"
placeholder="请输入用户昵称"
clearable
v-model="dialogForm.userName"
/>
</el-form-item> </el-form-item>
<el-form-item label="登录账号:" prop="loginName"> <el-form-item label="登录账号:" prop="loginName">
<MOSTY.Other <MOSTY.Other width="280px" placeholder="请输入登录账号" clearable v-model="dialogForm.loginName" />
width="280px"
placeholder="请输入登录账号"
clearable
v-model="dialogForm.loginName"
/>
</el-form-item> </el-form-item>
<el-form-item label="密码:" v-if="!isEdit" prop="password"> <el-form-item label="密码:" v-if="!isEdit" prop="password">
<MOSTY.Other <MOSTY.Other width="280px" placeholder="请输入密码" show-password v-model="dialogForm.password" />
width="280px"
placeholder="请输入密码"
show-password
v-model="dialogForm.password"
/>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="idEntityCard"> <el-form-item label="身份证号" prop="idEntityCard">
<MOSTY.IdentityCard <MOSTY.IdentityCard width="280px" v-model="dialogForm.idEntityCard" @change="fn" clearable>
width="280px" </MOSTY.IdentityCard>
v-model="dialogForm.idEntityCard"
@change="fn"
clearable
></MOSTY.IdentityCard>
</el-form-item> </el-form-item>
<el-form-item label="警号" prop="inDustRialId"> <el-form-item label="警号" prop="inDustRialId">
<MOSTY.Other <MOSTY.Other width="280px" placeholder="请输入警号" v-model="dialogForm.inDustRialId" />
width="280px"
placeholder="请输入警号"
v-model="dialogForm.inDustRialId"
/>
</el-form-item> </el-form-item>
<el-form-item label="岗位选择"> <el-form-item label="岗位选择">
<MOSTY.StationSelect <MOSTY.StationSelect width="300px" clearable filterable v-model="dialogForm.positionId" />
width="300px"
clearable
filterable
v-model="dialogForm.positionId"
/>
</el-form-item> </el-form-item>
<el-form-item label="用户类型:" prop="userType"> <el-form-item label="用户类型:" prop="userType">
<el-select <el-select style="width: 100%" v-model="dialogForm.userType" placeholder="请选择用户类型">
style="width: 100%" <el-option v-for="dict in D_BZ_YHLX" :label="dict.label" :value="dict.value" :key="dict.value" />
v-model="dialogForm.userType"
placeholder="请选择用户类型"
>
<el-option
v-for="dict in D_BZ_YHLX"
:label="dict.label"
:value="dict.value"
:key="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="虚拟用户:" prop="isVirtualUser"> <el-form-item label="虚拟用户:" prop="isVirtualUser">
<el-select <el-select style="width: 100%" v-model="dialogForm.isVirtualUser" placeholder="请选择">
style="width: 100%" <el-option v-for="dict in D_BZ_XNYH" :label="dict.label" :value="dict.value" :key="dict.value" />
v-model="dialogForm.isVirtualUser"
placeholder="请选择"
>
<el-option
v-for="dict in D_BZ_XNYH"
:label="dict.label"
:value="dict.value"
:key="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="电话号码:" prop="telePhone"> <el-form-item label="电话号码:" prop="telePhone">
<MOSTY.Phone <MOSTY.Phone width="280px" v-model="dialogForm.telePhone" maxlength="11" clearable></MOSTY.Phone>
width="280px"
v-model="dialogForm.telePhone"
maxlength="11"
clearable
></MOSTY.Phone>
</el-form-item> </el-form-item>
<el-form-item label="移动电话:" prop="mobile"> <el-form-item label="移动电话:" prop="mobile">
<MOSTY.Phone <MOSTY.Phone width="280px" v-model="dialogForm.mobile" maxlength="11" clearable></MOSTY.Phone>
width="280px"
v-model="dialogForm.mobile"
maxlength="11"
clearable
></MOSTY.Phone>
</el-form-item> </el-form-item>
<el-form-item label="民族:" prop="nation"> <el-form-item label="民族:" prop="nation">
<MOSTY.PackageSelect <MOSTY.PackageSelect width="280px" v-model="dialogForm.nation" dictEnum="NATION" clearable filterable />
width="280px"
v-model="dialogForm.nation"
dictEnum="NATION"
clearable
filterable
/>
</el-form-item> </el-form-item>
<el-form-item label="性别:" prop="sex"> <el-form-item label="性别:" prop="sex">
<el-select <el-select style="width: 100%" v-model="dialogForm.sex" placeholder="请选择性别">
style="width: 100%" <el-option v-for="(item, index) in D_BZ_XB" :key="index" :label="item.label"
v-model="dialogForm.sex" :value="item.value"></el-option>
placeholder="请选择性别"
>
<el-option
v-for="(item, index) in D_BZ_XB"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="文化程度:" prop="whcd"> <el-form-item label="文化程度:" prop="whcd">
<MOSTY.PackageSelect <MOSTY.PackageSelect dictEnum="EDUCATION" width="280px" v-model="dialogForm.whcd" clearable filterable />
dictEnum="EDUCATION"
width="280px"
v-model="dialogForm.whcd"
clearable
filterable
/>
</el-form-item> </el-form-item>
<el-form-item label="E-mail" prop="email"> <el-form-item label="E-mail" prop="email">
<MOSTY.Email <MOSTY.Email v-model="dialogForm.email" width="280px" clearable></MOSTY.Email>
v-model="dialogForm.email"
width="280px"
clearable
></MOSTY.Email>
</el-form-item> </el-form-item>
<el-form-item label="出生日期" prop="birthday"> <el-form-item label="出生日期" prop="birthday">
<el-date-picker <el-date-picker style="width: 100%" v-model="dialogForm.birthday" type="date" placeholder="出生日期"
style="width: 100%" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
v-model="dialogForm.birthday"
type="date"
placeholder="出生日期"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
/>
</el-form-item> </el-form-item>
<el-form-item label="所属模块:" prop="politic"> <el-form-item label="所属模块:" prop="politic">
<el-select <el-select style="width: 100%" v-model="dialogForm.politic" placeholder="请选择">
style="width: 100%" <el-option v-for="dict in D_BZ_ZZMM" :label="dict.label" :value="dict.value" :key="dict.value" />
v-model="dialogForm.politic"
placeholder="请选择"
>
<el-option
v-for="dict in D_BZ_ZZMM"
:label="dict.label"
:value="dict.value"
:key="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="婚姻状况:" prop="marital"> <el-form-item label="婚姻状况:" prop="marital">
<el-select <el-select style="width: 100%" v-model="dialogForm.marital" placeholder="请选择婚姻状况">
style="width: 100%" <el-option v-for="dict in D_BZ_HYZK" :label="dict.label" :value="dict.value" :key="dict.value" />
v-model="dialogForm.marital"
placeholder="请选择婚姻状况"
>
<el-option
v-for="dict in D_BZ_HYZK"
:label="dict.label"
:value="dict.value"
:key="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="人员类别:" prop="type"> <el-form-item label="人员类别:" prop="type">
<el-select <el-select style="width: 100%" v-model="dialogForm.type" placeholder="请选择人员类别">
style="width: 100%" <el-option v-for="dict in D_BZ_RYLB" :label="dict.label" :value="dict.value" :key="dict.value" />
v-model="dialogForm.type"
placeholder="请选择人员类别"
>
<el-option
v-for="dict in D_BZ_RYLB"
:label="dict.label"
:value="dict.value"
:key="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="有效期:" prop="endTime"> <el-form-item label="有效期:" prop="endTime">
<el-date-picker <el-date-picker style="width: 100%" v-model="dialogForm.endTime" type="datetime" placeholder="请选择有效期"
style="width: 100%" format="YYYY/MM/DD hh:mm:ss" value-format="x" />
v-model="dialogForm.endTime"
type="datetime"
placeholder="请选择有效期"
format="YYYY/MM/DD hh:mm:ss"
value-format="x"
/>
</el-form-item> </el-form-item>
<el-form-item label="是否融合"> <el-form-item label="是否融合">
<el-select <el-select style="width: 100%" v-model="dialogForm.sfrh" placeholder="请选择">
style="width: 100%" <el-option v-for="dict in D_BZ_SF" :label="dict.label" :value="dict.value" :key="dict.value" />
v-model="dialogForm.sfrh"
placeholder="请选择"
>
<el-option
v-for="dict in D_BZ_SF"
:label="dict.label"
:value="dict.value"
:key="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item style="width: 100%" label="备注"> <el-form-item style="width: 100%" label="备注">
<el-input <el-input v-model="dialogForm.bz" show-word-limit maxlength="200" :autosize="{ minRows: 2, maxRows: 4 }"
v-model="dialogForm.bz" type="textarea"></el-input>
show-word-limit
maxlength="200"
:autosize="{ minRows: 2, maxRows: 4 }"
type="textarea"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<RolesDialog <RolesDialog v-model="roleDialogVisible" :userId="currentUserId" @updateRole="handleFilter"></RolesDialog>
v-model="roleDialogVisible"
:userId="currentUserId"
@updateRole="handleFilter"
></RolesDialog>
</div> </div>
</template> </template>
@ -687,7 +448,7 @@ const closeDialog = () => {
dialogFormVisible.value = false; dialogFormVisible.value = false;
}; };
const moreAction = (e, item) => {}; const moreAction = (e, item) => { };
//分配角色 //分配角色
const currentUserId = ref(""); const currentUserId = ref("");
@ -704,7 +465,7 @@ const restPwd = (row) => {
handleFilter(); handleFilter();
}); });
}; };
const handleClick = (e) => {}; const handleClick = (e) => { };
//watch监听路由变化 //watch监听路由变化
watch(roleDialogVisible, (val) => { watch(roleDialogVisible, (val) => {
@ -782,5 +543,4 @@ onUnmounted(() => {
// width: 380px; // width: 380px;
// } // }
// } // }
// } // }</style>
</style>

View File

@ -55,20 +55,12 @@
</div> </div>
</div> </div>
<div <div class="form-row" :key="index" v-for="(item, index) in listQuery.ckxxList">
class="form-row"
:key="index"
v-for="(item, index) in listQuery.ckxxList"
>
<div class="form-item"> <div class="form-item">
<div class="menu">{{ item.xm }}</div> <div class="menu">{{ item.xm }}</div>
<div class="menu">{{ item.sfzh }}</div> <div class="menu">{{ item.sfzh }}</div>
<div class="menu"> <div class="menu">
<dict-tag <dict-tag :options="dict.D_BZ_XB" :value="item.xbdm" :tag="false" />
:options="dict.D_BZ_XB"
:value="item.xbdm"
:tag="false"
/>
</div> </div>
<div class="menu">{{ item.hjdz }}</div> <div class="menu">{{ item.hjdz }}</div>
</div> </div>
@ -88,22 +80,13 @@
<div class="menu control">上车地址</div> <div class="menu control">上车地址</div>
</div> </div>
</div> </div>
<div <div class="form-row" :key="index" v-for="(item, index) in listQuery.ztscryList">
class="form-row"
:key="index"
v-for="(item, index) in listQuery.ztscryList"
>
<div class="form-item"> <div class="form-item">
<div class="menu">{{ item.xm }}</div> <div class="menu">{{ item.xm }}</div>
<div class="menu">{{ item.sfzh }}</div> <div class="menu">{{ item.sfzh }}</div>
<div class="menu"> <div class="menu">
<dict-tag <dict-tag :options="dict.D_BZ_XB" :value="item.xbdm" :tag="false" />
:options="dict.D_BZ_XB"
:value="item.xbdm"
:tag="false"
/>
</div> </div>
<div class="menu">{{ item.hjdz }}</div> <div class="menu">{{ item.hjdz }}</div>
<div class="menu">{{ item.scdz }}</div> <div class="menu">{{ item.scdz }}</div>
</div> </div>
@ -122,20 +105,12 @@
<div class="menu control">户籍地址</div> <div class="menu control">户籍地址</div>
</div> </div>
</div> </div>
<div <div class="form-row" :key="index" v-for="(item, index) in listQuery.zdrList">
class="form-row"
:key="index"
v-for="(item, index) in listQuery.zdrList"
>
<div class="form-item"> <div class="form-item">
<div class="menu">{{ item.xm }}</div> <div class="menu">{{ item.xm }}</div>
<div class="menu">{{ item.sfzh }}</div> <div class="menu">{{ item.sfzh }}</div>
<div class="menu"> <div class="menu">
<dict-tag <dict-tag :options="dict.D_BZ_XB" :value="item.xbdm" :tag="false" />
:options="dict.D_BZ_XB"
:value="item.xbdm"
:tag="false"
/>
</div> </div>
<div class="menu">{{ item.hjdz }}</div> <div class="menu">{{ item.hjdz }}</div>
@ -182,7 +157,9 @@
</div> </div>
</div> </div>
</div> </div>
<div class="map"><GdMap style="width: 100%; width: 100%" /></div> <div class="map">
<GdMap style="width: 100%; width: 100%" />
</div>
</div> </div>
</div> </div>
</template> </template>
@ -205,7 +182,6 @@ const show = ref(true);
const init = (type, row) => { const init = (type, row) => {
dialogForm.value = true; dialogForm.value = true;
// 根据type和row初始化表单数据 // 根据type和row初始化表单数据
if (type == "track") { if (type == "track") {
show.value = false; show.value = false;
gettbGpJbxxgetInfo(row.id); gettbGpJbxxgetInfo(row.id);
@ -261,6 +237,7 @@ defineExpose({ init });
align-items: center; align-items: center;
margin-bottom: 20px; margin-bottom: 20px;
} }
.cntinfo { .cntinfo {
height: calc(100% - 70px); height: calc(100% - 70px);
overflow: hidden; overflow: hidden;
@ -270,6 +247,7 @@ defineExpose({ init });
.form-row { .form-row {
display: flex; display: flex;
color: #000; color: #000;
.form-item { .form-item {
line-height: 32px; line-height: 32px;
align-items: center; align-items: center;
@ -277,10 +255,12 @@ defineExpose({ init });
width: 100%; width: 100%;
display: flex; display: flex;
} }
.el-form-items { .el-form-items {
flex: 0.5; flex: 0.5;
} }
} }
.lable { .lable {
background-color: #f7fafb; background-color: #f7fafb;
padding: 0px 8px; padding: 0px 8px;
@ -290,6 +270,7 @@ defineExpose({ init });
height: 36px; height: 36px;
border: 1px solid #e3e7ed; border: 1px solid #e3e7ed;
} }
.menu { .menu {
height: 36px; height: 36px;
flex: 1; flex: 1;
@ -297,9 +278,11 @@ defineExpose({ init });
border: 1px solid #e3e7ed; border: 1px solid #e3e7ed;
background-color: #fff; background-color: #fff;
} }
.control { .control {
background-color: #f7fafb; background-color: #f7fafb;
} }
.upload-group { .upload-group {
display: flex; display: flex;
// gap: 20px; // gap: 20px;
@ -312,6 +295,7 @@ defineExpose({ init });
.unit { .unit {
margin-left: 5px; margin-left: 5px;
} }
::v-deep .el-input__inner { ::v-deep .el-input__inner {
height: 36px !important; height: 36px !important;
line-height: 36px !important; line-height: 36px !important;
@ -319,9 +303,11 @@ defineExpose({ init });
color: #777575; color: #777575;
} }
} }
.interval { .interval {
margin-top: 10px; margin-top: 10px;
} }
.map { .map {
margin-top: 10px; margin-top: 10px;
height: 85%; height: 85%;

View File

@ -5,40 +5,23 @@
</div> </div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox">
<Search <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
/>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:tableData="pageData.tableData" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:tableColumn="pageData.tableColumn" @chooseData="chooseData">
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="primary" @click="addEdit('track', row)" <el-link type="primary" @click="addEdit('track', row)">车辆轨迹</el-link>
>车辆轨迹</el-link
>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link> <el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger, ...pageData.pageConfiger,
total: pageData.total total: pageData.total
}" }"></Pages>
></Pages>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<DetailForm ref="detailDiloag" :dict="{ D_BZ_XB }" /> <DetailForm ref="detailDiloag" :dict="{ D_BZ_XB }" />
@ -77,15 +60,19 @@ const searchConfiger = ref([
showType: "input" showType: "input"
}, },
{ {
label: "日期", label: "购票日期",
prop: "endTime", prop: "gprq",
placeholder: "日期", placeholder: "购票日期",
showType: "date" showType: "date"
} }
]); ]);
const queryFrom = ref({}); const queryFrom = ref({});
const pageData = reactive({ const pageData = reactive({
tableData: [], tableData: [
{
cph:'川A8888'
}
],
keyCount: 0, keyCount: 0,
tableConfiger: { tableConfiger: {
rowHieght: 61, rowHieght: 61,
@ -99,16 +86,16 @@ const pageData = reactive({
}, },
controlsWidth: 200, controlsWidth: 200,
tableColumn: [ tableColumn: [
{ label: "车牌号", prop: "gjxlbm" }, { label: "车牌号", prop: "cph" },
{ label: "日期", prop: "zdmc" }, { label: "购票日期", prop: "gprq" },
{ label: "车辆驾驶员", prop: "xm" }, { label: "车辆驾驶员", prop: "cljsy" },
{ label: "车辆行驶线路", prop: "xzqhbm" }, { label: "车辆行驶线路", prop: "clqsxl" },
{ label: "乘客数量", prop: "xzqhbm" }, { label: "乘客数量", prop: "cksl" },
{ label: "重点人数量", prop: "xzqhbm" } { label: "重点人数量", prop: "zdrsl" }
] ]
}); });
onMounted(() => { onMounted(() => {
getList(); // getList();
tabHeightFn(); tabHeightFn();
}); });
//选择类型 //选择类型

View File

@ -3,7 +3,7 @@ const path = require("path");
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir); return path.join(__dirname, dir);
} }
const serverHost = "http://192.168.43.92:8006"; const serverHost = "http://192.168.1.32:8066";
// const serverHost = "http://127.0.0.1:8006" // const serverHost = "http://127.0.0.1:8006"
module.exports = { module.exports = {
publicPath: "./", publicPath: "./",