This commit is contained in:
lcw
2025-07-21 16:25:08 +08:00
53 changed files with 439 additions and 516 deletions

136
package-lock.json generated
View File

@ -2043,6 +2043,51 @@
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"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": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
@ -2051,6 +2096,28 @@
"requires": {
"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": {
"version": "4.1.3",
"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 DepartmentTree from "./DepartmentTree/index.vue";
import ChooseIcon from "./ChooseIcon/index.vue";
import PackageSelect from "./PackageSelect/index.vue";
import StationSelect from "./StationSelect/index.vue";
import Provinces from "./Provinces2/index.vue";
import MarkdownEdit from "./MarkdownEdit/index.vue";
@ -36,5 +37,6 @@ export {
MarkdownEdit,
FileUpload,
RichOnly,
Date
Date,
PackageSelect
};

View File

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

View File

@ -5,45 +5,32 @@
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
>
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<!-- <template #defaultSlot>
<div>
<el-input-number v-model="queryFrom.xqy"></el-input-number>
<span class="ml10 mr10" style="color: #000"></span>
<el-input-number v-model="queryFrom.dqy"></el-input-number>
</div>
</template> -->
</Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary" @click="addEdit('basic', row)">详情</el-link>
<el-link type="primary" @click="addEdit('staff', row)"
>从业人员</el-link
>
<el-link type="primary" @click="addEdit('vehicle', row)"
>车辆</el-link
>
<el-link type="primary" @click="addEdit('staff', row)">从业人员</el-link>
<el-link type="primary" @click="addEdit('vehicle', row)">车辆</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 详情 -->
<DetailForm ref="detailDiloag" :dict="{D_BZ_MZ,D_BZ_GGJTGJLX}"/>
@ -80,9 +67,7 @@ const searchConfiger = ref([
const queryFrom = ref({});
const pageData = reactive({
tableData: [
],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,

View File

@ -34,15 +34,10 @@
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 详情 -->
<DetailForm ref="detailDiloag" title="公交线路详情" :dict="{D_BZ_XZQHDM}"/>

View File

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

View File

@ -55,20 +55,12 @@
</div>
</div>
<div
class="form-row"
:key="index"
v-for="(item, index) in listQuery.ckxxList"
>
<div class="form-row" :key="index" v-for="(item, index) in listQuery.ckxxList">
<div class="form-item">
<div class="menu">{{ item.xm }}</div>
<div class="menu">{{ item.sfzh }}</div>
<div class="menu">
<dict-tag
:options="dict.D_BZ_XB"
:value="item.xbdm"
:tag="false"
/>
<dict-tag :options="dict.D_BZ_XB" :value="item.xbdm" :tag="false" />
</div>
<div class="menu">{{ item.hjdz }}</div>
</div>
@ -88,22 +80,13 @@
<div class="menu control">上车地址</div>
</div>
</div>
<div
class="form-row"
:key="index"
v-for="(item, index) in listQuery.ztscryList"
>
<div class="form-row" :key="index" v-for="(item, index) in listQuery.ztscryList">
<div class="form-item">
<div class="menu">{{ item.xm }}</div>
<div class="menu">{{ item.sfzh }}</div>
<div class="menu">
<dict-tag
:options="dict.D_BZ_XB"
:value="item.xbdm"
:tag="false"
/>
<dict-tag :options="dict.D_BZ_XB" :value="item.xbdm" :tag="false" />
</div>
<div class="menu">{{ item.hjdz }}</div>
<div class="menu">{{ item.scdz }}</div>
</div>
@ -122,20 +105,12 @@
<div class="menu control">户籍地址</div>
</div>
</div>
<div
class="form-row"
:key="index"
v-for="(item, index) in listQuery.zdrList"
>
<div class="form-row" :key="index" v-for="(item, index) in listQuery.zdrList">
<div class="form-item">
<div class="menu">{{ item.xm }}</div>
<div class="menu">{{ item.sfzh }}</div>
<div class="menu">
<dict-tag
:options="dict.D_BZ_XB"
:value="item.xbdm"
:tag="false"
/>
<dict-tag :options="dict.D_BZ_XB" :value="item.xbdm" :tag="false" />
</div>
<div class="menu">{{ item.hjdz }}</div>
@ -182,7 +157,9 @@
</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>
</template>
@ -206,7 +183,6 @@ const show = ref(true);
const init = (type, row) => {
dialogForm.value = true;
// 根据type和row初始化表单数据
if (type == "track") {
show.value = false;
gettbGpJbxxgetInfo(row.id);
@ -265,6 +241,7 @@ defineExpose({ init });
align-items: center;
margin-bottom: 20px;
}
.cntinfo {
height: calc(100% - 70px);
overflow: hidden;
@ -274,6 +251,7 @@ defineExpose({ init });
.form-row {
display: flex;
color: #000;
.form-item {
line-height: 32px;
align-items: center;
@ -281,10 +259,12 @@ defineExpose({ init });
width: 100%;
display: flex;
}
.el-form-items {
flex: 0.5;
}
}
.lable {
background-color: #f7fafb;
padding: 0px 8px;
@ -294,6 +274,7 @@ defineExpose({ init });
height: 36px;
border: 1px solid #e3e7ed;
}
.menu {
height: 36px;
flex: 1;
@ -301,9 +282,11 @@ defineExpose({ init });
border: 1px solid #e3e7ed;
background-color: #fff;
}
.control {
background-color: #f7fafb;
}
.upload-group {
display: flex;
// gap: 20px;
@ -316,6 +299,7 @@ defineExpose({ init });
.unit {
margin-left: 5px;
}
::v-deep .el-input__inner {
height: 36px !important;
line-height: 36px !important;
@ -323,9 +307,11 @@ defineExpose({ init });
color: #777575;
}
}
.interval {
margin-top: 10px;
}
.map {
margin-top: 10px;
height: 85%;

View File

@ -5,40 +5,23 @@
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
/>
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary" @click="addEdit('track', row)"
>车辆轨迹</el-link
>
<el-link type="primary" @click="addEdit('track', row)">车辆轨迹</el-link>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 详情 -->
<DetailForm ref="detailDiloag" :dict="{ D_BZ_XB }" />
@ -64,18 +47,7 @@ const searchConfiger = ref([
placeholder: "车牌号",
showType: "input"
},
// {
// label: "起点",
// prop: "xlqdz",
// placeholder: "起点",
// showType: "input"
// },
// {
// label: "终点",
// prop: "xlzdz",
// placeholder: "终点",
// showType: "input"
// },
{
label: "购票日期",
prop: "gprq",

View File

@ -1,4 +1,72 @@
<!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/vconsole.min.js"></script><script src="./static/js/jquery-1.12.4.min.js"></script><script src="./static/js/moment.js"></script><script src="./static/js/vue.js"></script><script src="./static/js/antd.min.js"></script><script src="./static/js/antd-with-locales.min.js"></script><link href="static/css/chunk-09ca48cc.f7cbaf6a.css" rel="prefetch"><link href="static/css/chunk-0a1fd7f4.d746725f.css" rel="prefetch"><link href="static/css/chunk-0fdaaf92.db916b7b.css" rel="prefetch"><link href="static/css/chunk-10fce026.dc80f006.css" rel="prefetch"><link href="static/css/chunk-14aa086e.1d74ce14.css" rel="prefetch"><link href="static/css/chunk-15d0e086.3440019d.css" rel="prefetch"><link href="static/css/chunk-19815cd9.139a93fa.css" rel="prefetch"><link href="static/css/chunk-28bd6e9c.48d99538.css" rel="prefetch"><link href="static/css/chunk-3596bc08.1afc7a53.css" rel="prefetch"><link href="static/css/chunk-48f37632.16db3d3e.css" rel="prefetch"><link href="static/css/chunk-548a1330.fec91e96.css" rel="prefetch"><link href="static/css/chunk-608198a8.e91625ec.css" rel="prefetch"><link href="static/css/chunk-61c2abd0.00c5e95f.css" rel="prefetch"><link href="static/css/chunk-67863059.910bc36e.css" rel="prefetch"><link href="static/css/chunk-792019d0.d705d3b8.css" rel="prefetch"><link href="static/css/chunk-7b3f9a30.a3543662.css" rel="prefetch"><link href="static/css/chunk-a37f0b78.d618262c.css" rel="prefetch"><link href="static/css/chunk-a6018400.2b796476.css" rel="prefetch"><link href="static/css/chunk-cadd7c5e.6f1e785e.css" rel="prefetch"><link href="static/css/chunk-fc70b89e.9b419676.css" rel="prefetch"><link href="static/js/chunk-09ca48cc.151702df.js" rel="prefetch"><link href="static/js/chunk-0a1fd7f4.5797fbab.js" rel="prefetch"><link href="static/js/chunk-0fdaaf92.96513d67.js" rel="prefetch"><link href="static/js/chunk-10fce026.23ec475e.js" rel="prefetch"><link href="static/js/chunk-14aa086e.7b81938b.js" rel="prefetch"><link href="static/js/chunk-15d0e086.e35a849a.js" rel="prefetch"><link href="static/js/chunk-19815cd9.831d7c4e.js" rel="prefetch"><link href="static/js/chunk-28bd6e9c.f97fa2ad.js" rel="prefetch"><link href="static/js/chunk-3596bc08.64d195aa.js" rel="prefetch"><link href="static/js/chunk-48f37632.5f7f6c0e.js" rel="prefetch"><link href="static/js/chunk-548a1330.f50e10a5.js" rel="prefetch"><link href="static/js/chunk-608198a8.7a34e974.js" rel="prefetch"><link href="static/js/chunk-61c2abd0.340a5058.js" rel="prefetch"><link href="static/js/chunk-67863059.2227b023.js" rel="prefetch"><link href="static/js/chunk-792019d0.72242fee.js" rel="prefetch"><link href="static/js/chunk-7b3f9a30.c55636e5.js" rel="prefetch"><link href="static/js/chunk-a37f0b78.e08e0f95.js" rel="prefetch"><link href="static/js/chunk-a6018400.c4908397.js" rel="prefetch"><link href="static/js/chunk-cadd7c5e.ef340dda.js" rel="prefetch"><link href="static/js/chunk-fc70b89e.46304eea.js" rel="prefetch"><link href="static/css/app.4926db33.css" rel="preload" as="style"><link href="static/css/chunk-vendors.ccb705f1.css" rel="preload" as="style"><link href="static/js/app.72e2223d.js" rel="preload" as="script"><link href="static/js/chunk-vendors.62ab2f07.js" rel="preload" as="script"><link href="static/css/chunk-vendors.ccb705f1.css" rel="stylesheet"><link href="static/css/app.4926db33.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/vconsole.min.js"></script>
<script src="./static/js/jquery-1.12.4.min.js"></script>
<script src="./static/js/moment.js"></script>
<script src="./static/js/vue.js"></script>
<script src="./static/js/antd.min.js"></script>
<script src="./static/js/antd-with-locales.min.js"></script>
<link href="static/css/chunk-09ca48cc.f7cbaf6a.css" rel="prefetch">
<link href="static/css/chunk-0a1fd7f4.d746725f.css" rel="prefetch">
<link href="static/css/chunk-0fdaaf92.db916b7b.css" rel="prefetch">
<link href="static/css/chunk-10fce026.dc80f006.css" rel="prefetch">
<link href="static/css/chunk-14aa086e.1d74ce14.css" rel="prefetch">
<link href="static/css/chunk-15d0e086.3440019d.css" rel="prefetch">
<link href="static/css/chunk-19815cd9.139a93fa.css" rel="prefetch">
<link href="static/css/chunk-28bd6e9c.48d99538.css" rel="prefetch">
<link href="static/css/chunk-3596bc08.1afc7a53.css" rel="prefetch">
<link href="static/css/chunk-48f37632.16db3d3e.css" rel="prefetch">
<link href="static/css/chunk-548a1330.fec91e96.css" rel="prefetch">
<link href="static/css/chunk-608198a8.e91625ec.css" rel="prefetch">
<link href="static/css/chunk-61c2abd0.00c5e95f.css" rel="prefetch">
<link href="static/css/chunk-67863059.910bc36e.css" rel="prefetch">
<link href="static/css/chunk-792019d0.d705d3b8.css" rel="prefetch">
<link href="static/css/chunk-7b3f9a30.a3543662.css" rel="prefetch">
<link href="static/css/chunk-a37f0b78.d618262c.css" rel="prefetch">
<link href="static/css/chunk-a6018400.2b796476.css" rel="prefetch">
<link href="static/css/chunk-cadd7c5e.6f1e785e.css" rel="prefetch">
<link href="static/css/chunk-fc70b89e.9b419676.css" rel="prefetch">
<link href="static/js/chunk-09ca48cc.151702df.js" rel="prefetch">
<link href="static/js/chunk-0a1fd7f4.5797fbab.js" rel="prefetch">
<link href="static/js/chunk-0fdaaf92.96513d67.js" rel="prefetch">
<link href="static/js/chunk-10fce026.23ec475e.js" rel="prefetch">
<link href="static/js/chunk-14aa086e.7b81938b.js" rel="prefetch">
<link href="static/js/chunk-15d0e086.e35a849a.js" rel="prefetch">
<link href="static/js/chunk-19815cd9.831d7c4e.js" rel="prefetch">
<link href="static/js/chunk-28bd6e9c.f97fa2ad.js" rel="prefetch">
<link href="static/js/chunk-3596bc08.64d195aa.js" rel="prefetch">
<link href="static/js/chunk-48f37632.5f7f6c0e.js" rel="prefetch">
<link href="static/js/chunk-548a1330.f50e10a5.js" rel="prefetch">
<link href="static/js/chunk-608198a8.7a34e974.js" rel="prefetch">
<link href="static/js/chunk-61c2abd0.340a5058.js" rel="prefetch">
<link href="static/js/chunk-67863059.2227b023.js" rel="prefetch">
<link href="static/js/chunk-792019d0.72242fee.js" rel="prefetch">
<link href="static/js/chunk-7b3f9a30.c55636e5.js" rel="prefetch">
<link href="static/js/chunk-a37f0b78.e08e0f95.js" rel="prefetch">
<link href="static/js/chunk-a6018400.c4908397.js" rel="prefetch">
<link href="static/js/chunk-cadd7c5e.ef340dda.js" rel="prefetch">
<link href="static/js/chunk-fc70b89e.46304eea.js" rel="prefetch">
<link href="static/css/app.4926db33.css" rel="preload" as="style">
<link href="static/css/chunk-vendors.ccb705f1.css" rel="preload" as="style">
<link href="static/js/app.72e2223d.js" rel="preload" as="script">
<link href="static/js/chunk-vendors.62ab2f07.js" rel="preload" as="script">
<link href="static/css/chunk-vendors.ccb705f1.css" rel="stylesheet">
<link href="static/css/app.4926db33.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 +74,9 @@
}
},
false
);</script><script src="static/js/chunk-vendors.62ab2f07.js"></script><script src="static/js/app.72e2223d.js"></script></body></html>
);</script>
<script src="static/js/chunk-vendors.3cfe86c5.js"></script>
<script src="static/js/app.7ff2e197.js"></script>
</body>
</html>

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

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