对接接口和更新新增表单组件

This commit is contained in:
zy_zr 2025-04-22 19:03:28 +08:00
parent 95d84c3b06
commit 6c694b52d3
13 changed files with 305 additions and 556 deletions

View File

@ -165,7 +165,7 @@ header {
} }
.searchBox { .searchBox {
padding: 15px 15px 0 15px; padding: 15px;
border-radius: 1px; border-radius: 1px;
position: relative; position: relative;
background: #fff; background: #fff;
@ -210,7 +210,7 @@ header {
position: relative; position: relative;
background: #fff; background: #fff;
border-radius: 4px; border-radius: 4px;
height: calc(100vh - 124px); height: calc(100vh - 327px);
.el-table--fit { .el-table--fit {
width: calc(100% - 20px) !important; width: calc(100% - 20px) !important;
position: absolute; position: absolute;

View File

@ -1,127 +1,82 @@
<template> <template>
<el-form <el-form ref="elform" :model="listQuery" :label-width="140" :rules="props.rules" :inline="true" label-position="right">
ref="elform" <el-form-item v-for="item in props.formData" :style="{ width: item.width }" :prop="item.prop" :label="item.label" :label-width="item.labelWidth" :key="item">
:model="listQuery" <!-- input表单 -->
:label-width="140" <MOSTY.Other v-if="item.type == 'input'" width="100%" clearable v-model="listQuery[item.prop]" :placeholder="`请输入${item.label}`"/>
:rules="props.rules" <el-input v-model="listQuery[item.prop]" v-else-if="item.type == 'textarea'" :placeholder="`请输入${item.label}`" />
:inline="true" <!-- Select选择 -->
label-position="right" <MOSTY.Select
> v-else-if="item.type == 'select'"
<el-form-item v-for="item in props.formData" :style="{ width: item.width }" :prop="item.prop" :label="item.text" :label-width="item.labelWidth" :key="item"> width="100%"
<!-- input表单 --> clearable
<MOSTY.Other v-if="item.type == 'input'" width="100%" clearable v-model="listQuery[item.prop]" :placeholder="`请输入${item.text}`"/> v-model="listQuery[item.prop]"
<el-input v-model="listQuery[item.prop]" v-else-if="item.type == 'textarea'" :placeholder="`请输入${item.text}`" /> :dictEnum="item.options"
<!-- Select选择 --> :placeholder="`请选择${item.label}`"/>
<MOSTY.Select <template v-else-if="item.showType === 'department'">
v-else-if="item.type == 'select'" <MOSTY.Department clearable v-model="listQuery[item.prop]" />
width="100%" </template>
clearable <!-- Upload选择 -->
v-model="listQuery[item.prop]" <MOSTY.Upload v-else-if="item.type == 'upload'" width="100%" v-model="listQuery[item.prop]"/>
:dictEnum="item.optionList" <!-- CheckBox选择 -->
:placeholder="`请选择${item.text}`" <MOSTY.CheckBox v-else-if="item.type == 'checkbox'" width="100%" clearable v-model="listQuery[item.prop]" :checkList="item.options" :placeholder="`请选择${item.label}`"/>
/>
<template v-else-if="item.showType === 'department'"> <!-- 单选 -->
<MOSTY.Department clearable v-model="listQuery[item.prop]" /> <el-radio-group v-model="listQuery[item.prop]" v-else-if="item.type == 'radio'">
</template> <el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value" >{{ obj.label }}</el-radio>
</el-radio-group>
<!-- Upload选择 --> <!-- 时间选择 -->
<MOSTY.Upload <el-time-picker v-else-if="item.type == 'time'" v-model="listQuery[item.prop]" placeholder="选择时间"/>
v-else-if="item.type == 'upload'" <el-date-picker v-else-if="item.type == 'date'" v-model="listQuery[item.prop]" type="date" value-format="YYYY-MM-DD" :placeholder="请选择时间"/>
width="100%" <el-date-picker v-else-if="item.type == 'datetime'" v-model="listQuery[item.prop]" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" :placeholder="请选择时间"/>
v-model="listQuery[item.prop]" <el-date-picker v-else-if="item.type == 'datetimerange'" v-model="listQuery[item.prop]" type="datetimerange" :shortcuts="shortcuts" range-separator="To" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="选择开始时间" end-placeholder="选择结束时间"/>
/> <el-date-picker v-else-if="item.type == 'daterange'" v-model="listQuery[item.prop]" type="daterange" range-separator="To" value-format="YYYY-MM-DD" start-placeholder="选择开始日期" end-placeholder="选择开始日期" />
<!-- CheckBox选择 -->
<MOSTY.CheckBox <el-switch v-else-if="item.type == 'switch'" v-model="listQuery[item.prop]" class="ml-2" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"/>
v-else-if="item.type == 'checkbox'"
width="100%" <template v-else-if="item.type === 'slot'">
clearable <slot :name="item.prop"></slot>
v-model="listQuery[item.prop]" </template>
:checkList="item.optionList" </el-form-item>
:placeholder="`请选择${item.text}`" </el-form>
/> </template>
<el-radio-group v-model="listQuery[item.prop]" v-else-if="item.type == 'radio'">
<el-radio
v-for="obj in item.optionList"
:key="obj.value"
:label="obj.value"
>{{ obj.label }}</el-radio
>
</el-radio-group>
<el-date-picker
v-else-if="item.type == 'date'"
v-model="listQuery[item.prop]"
type="date"
value-format="YYYY-MM-DD"
:placeholder="请选择时间"
/>
<el-date-picker
v-else-if="item.type == 'datetime'"
v-model="listQuery[item.prop]"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
:placeholder="请选择时间"
/>
<el-date-picker
v-else-if="item.type == 'datetimerange'"
v-model="listQuery[item.prop]"
type="datetimerange"
:shortcuts="shortcuts"
range-separator="To"
value-format="YYYY-MM-DD HH:mm:ss"
start-placeholder="选择开始时间"
end-placeholder="选择结束时间"
/>
<el-date-picker
v-else-if="item.type == 'daterange'"
v-model="listQuery[item.prop]"
type="daterange"
range-separator="To"
value-format="YYYY-MM-DD"
start-placeholder="选择开始日期"
end-placeholder="选择开始日期"
/>
<el-switch
v-else-if="item.type == 'switch'"
v-model="listQuery[item.prop]"
class="ml-2"
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
/>
<template v-else-if="item.type === 'slot'">
<slot :name="item.prop"></slot>
</template>
</el-form-item>
</el-form>
</template>
<script setup> <script setup>
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js"; import * as MOSTY from "@/components/MyComponents/index";
import * as MOSTY from "@/components/MyComponents/index"; import { ref, defineProps, defineEmits, defineExpose, watch } from "vue";
import { ref, defineProps, defineEmits, defineExpose } from "vue"; const props = defineProps({
const props = defineProps({ //
// formData: {
formData: { default: [],
default: [], type: Array
type: Array },
}, propName: {
propName: { default: "",
default: "", type: String
type: String },
}, rules: {
rules: { default: {},
default: {}, type: Object
type: Object },
} modelValue: {
type: Object,
default: {}
},
});
const elform = ref();
const listQuery = ref({});
const emits = defineEmits(["update:modelValue"]);
//
const submit = (resfun) => {
elform.value.validate((valid) => {
if (!valid) return false;
resfun(listQuery.value);
}); });
const elform = ref(); };
const listQuery = ref({});
const emits = defineEmits(["update:modelValue"]); watch(() => listQuery.value,(newVal) => {
emits('update:modelValue', newVal)
const submit = (resfun) => { },{ immediate: true, deep: true }
elform.value.validate((valid) => { );
if (!valid) return false; defineExpose({ submit });
resfun(listQuery.value); </script>
});
};
defineExpose({ submit });
</script>

View File

@ -5,6 +5,9 @@
<li :class=" idx == active ? 'hedBtn':''" @click="handleBtn(it,idx)" class="pointer ml10 mr10" v-for="(it,idx) in title" :key="it">{{ it }}</li> <li :class=" idx == active ? 'hedBtn':''" @click="handleBtn(it,idx)" class="pointer ml10 mr10" v-for="(it,idx) in title" :key="it">{{ it }}</li>
</ul> </ul>
<div class="font" v-else>{{ title }}</div> <div class="font" v-else>{{ title }}</div>
<div class="ml30">
<slot name="left"></slot>
</div>
</div> </div>
<div class="cnetr"> <div class="cnetr">
<slot name="center"></slot> <slot name="center"></slot>

View File

@ -576,7 +576,7 @@ watchEffect(() => {
flex-wrap: wrap; flex-wrap: wrap;
.item { .item {
display: flex; display: flex;
margin-right: 20px; margin-right: 12px;
margin-bottom: 15px; margin-bottom: 15px;
} }
.label { .label {

View File

@ -49,13 +49,8 @@ import installFilter from "@/filters";
//事件总线 //事件总线
import mitt from "mitt"; import mitt from "mitt";
import { import { resetForm } from "@/utils/validate";
resetForm import { getDict, setCascader } from '@/utils/dict';
} from "@/utils/validate";
import {
getDict,
setCascader
} from '@/utils/dict';
import axios from "axios"; import axios from "axios";
//挂载全局方法 //挂载全局方法

View File

@ -6,7 +6,7 @@ import {
removeAllItem removeAllItem
} from "@/utils/storage"; } from "@/utils/storage";
// 白名单 // 白名单
const whiteList = ['/login','/','/KeyPopulations', '/FourColorWarning','/oatuh_login','/editPassword', '/404', '/401'] const whiteList = ['/login','/oatuh_login','/404', '/401']
/** /**
* 路由前置守卫 * 路由前置守卫
* to 去哪里 * to 去哪里

View File

@ -16,7 +16,103 @@ import store from "@/store";
*/ */
export const privateRoutes = [ export const privateRoutes = [
{
path: "/systemConfig",
component: layout,
name: "systemConfigModel",
redirect: "/dict/index",
meta: {
title: "系统管理",
icon: "article"
},
children: [
{
path: "/user/department-ist",
name: "departmentList",
component: () => import("@/views/backOfficeSystem/systemConfig/department-list/index"),
meta: {
title: "部门管理",
icon: "article-ranking"
}
},
{
path: "/user/userList",
name: "userList",
component: () => import("@/views/backOfficeSystem/systemConfig/user-list/index"),
meta: {
title: "用户管理",
icon: "article-ranking"
}
},
{
path: "/user/role",
name: "userRoleIndex",
component: () => import("@/views/backOfficeSystem/systemConfig/role-list/index"),
meta: {
title: "角色列表",
icon: "article-ranking"
}
},
{
path: "/user/menuList",
name: "menuList",
component: () => import("@/views/backOfficeSystem/systemConfig/menu-list/index"),
meta: {
title: "菜单管理",
icon: "article-ranking"
}
},
{
path: "/dict/detail",
name: "dictDetail",
component: () => import("@/views/backOfficeSystem/systemConfig/dict/detail"),
meta: {
title: "字典数据"
}
},
{
path: "/dict/index",
name: "dictIndex",
component: () => import("@/views/backOfficeSystem/systemConfig/dict/index"),
meta: {
title: "字典列表",
icon: "article-ranking"
}
},
{
path: "/user/deptAllocationUser/:id",
name: "deptAllocationUser",
component: () =>
import("@/views/backOfficeSystem/systemConfig/department-list/deptAllocationUser"),
meta: {
title: "管理用户"
}
},
{
path: "/user/allocationUser/:id",
name: "allocationUser",
component: () =>
import("@/views/backOfficeSystem/systemConfig/role-list/allocationUser"),
meta: {
title: "分配用户"
}
},
{
path: "/user/systemConfig",
name: "systemConfig",
component: () =>
import("@/views/backOfficeSystem/systemConfig/system-config-list/index"),
meta: {
title: "系统配置",
icon: "article-ranking"
}
},
]
},
]; ];
/** /**
@ -44,103 +140,7 @@ export const publicRoutes = [
component: layout, component: layout,
redirect: "/IdentityManage", redirect: "/IdentityManage",
children: [ children: [
{
path: "/systemConfig",
// component: layout,
name: "systemConfigModel",
redirect: "/dict/index",
meta: {
title: "系统管理",
icon: "article"
},
children: [
{
path: "/user/department-ist",
name: "departmentList",
component: () => import("@/views/backOfficeSystem/systemConfig/department-list/index"),
meta: {
title: "部门管理",
icon: "article-ranking"
}
},
{
path: "/user/userList",
name: "userList",
component: () => import("@/views/backOfficeSystem/systemConfig/user-list/index"),
meta: {
title: "用户管理",
icon: "article-ranking"
}
},
{
path: "/user/role",
name: "userRoleIndex",
component: () => import("@/views/backOfficeSystem/systemConfig/role-list/index"),
meta: {
title: "角色列表",
icon: "article-ranking"
}
},
{
path: "/user/menuList",
name: "menuList",
component: () => import("@/views/backOfficeSystem/systemConfig/menu-list/index"),
meta: {
title: "菜单管理",
icon: "article-ranking"
}
},
{
path: "/dict/detail",
name: "dictDetail",
component: () => import("@/views/backOfficeSystem/systemConfig/dict/detail"),
meta: {
title: "字典数据"
}
},
{
path: "/dict/index",
name: "dictIndex",
component: () => import("@/views/backOfficeSystem/systemConfig/dict/index"),
meta: {
title: "字典列表",
icon: "article-ranking"
}
},
{
path: "/user/deptAllocationUser/:id",
name: "deptAllocationUser",
component: () =>
import("@/views/backOfficeSystem/systemConfig/department-list/deptAllocationUser"),
meta: {
title: "管理用户"
}
},
{
path: "/user/allocationUser/:id",
name: "allocationUser",
component: () =>
import("@/views/backOfficeSystem/systemConfig/role-list/allocationUser"),
meta: {
title: "分配用户"
}
},
{
path: "/user/systemConfig",
name: "systemConfig",
component: () =>
import("@/views/backOfficeSystem/systemConfig/system-config-list/index"),
meta: {
title: "系统配置",
icon: "article-ranking"
}
},
]
},
{ {
path: "/FourColorWarning", path: "/FourColorWarning",
name: "FourColorWarning", name: "FourColorWarning",

View File

@ -1,8 +1,5 @@
// 专门处理权限路由的模块 // 专门处理权限路由的模块
import { import { publicRoutes, privateRoutes } from '@/router'
publicRoutes,
privateRoutes
} from '@/router'
function filter(data, menus) { function filter(data, menus) {
var newData = data.filter(x => menus ?.includes(x.name)) var newData = data.filter(x => menus ?.includes(x.name))
@ -12,8 +9,7 @@ function filter(data, menus) {
export default { export default {
namespaced: true, namespaced: true,
state: { state: {
// 路由表:初始拥有静态路由权限 routes: [],// 路由表:初始拥有静态路由权限
routes: [],
routeReady: 0 routeReady: 0
}, },
mutations: { mutations: {

View File

@ -1,10 +1,5 @@
import { import { ref, toRefs } from 'vue';
ref, import { getSysDictByCode } from '@/api/sysDict' //引入封装数字字典接口
toRefs
} from 'vue';
import {
getSysDictByCode
} from '@/api/sysDict' //引入封装数字字典接口
/** /**
* 获取字典数据 * 获取字典数据
*/ */

View File

@ -8,24 +8,16 @@
</div> </div>
</div> </div>
<div class="form_cnt"> <div class="form_cnt">
<FormMessage :formData="formData" ref="elform" :rules="rules"></FormMessage> <FormMessage v-model="listQuery" :formData="formData" ref="elform" :rules="rules"></FormMessage>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import * as rule from "@/utils/rules.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue' import FormMessage from '@/components/aboutTable/FormMessage.vue'
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js"; import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, nextTick } from "vue";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
const emit = defineEmits(["updateDate"]); const emit = defineEmits(["updateDate"]);
const props = defineProps({ const props = defineProps({
dic: Object dic: Object
@ -33,147 +25,51 @@ const props = defineProps({
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const dialogForm = ref(false); // const dialogForm = ref(false); //
const formData = ref([ const formData = ref([
{ { label: "标签名称", prop: "bqMc", type: "input", required: true },
text: "组合标签名称", { label: "标签代码", prop: "bqDm", type: "input", required: true },
prop: "bqmc", { label: "标签说明", prop: "bqSm", type: "input", required: true },
type: "input", { label: "组合标签名称", prop: "bqmc", type: "input", required: true },
required: true { label: "标签大类", prop: "bqLb", type: "select", options: props.dic.D_GS_BQ_LB },
}, { label: "标签细类", prop: "bqLx", type: "select", options: props.dic.D_GS_BQ_LX },
{ { label: "标签等级", prop: "bqDj", type: "select", options: props.dic.D_GS_BQ_DJ },
text: "身份标签大类", { label: "标签颜色", prop: "bqYs", type: "select", options: props.dic.D_GS_SSYJ },
prop: "sfbqdl", { label: "标签分值", prop: "bqFz", type: "input" },
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签细类",
prop: "sfbqxl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签等级",
prop: "sfbqdj",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签颜色",
prop: "sfbqys",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签大类",
prop: "xwbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签细类",
prop: "xwbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签等级",
prop: "sfbqdj",
type: "select",
value: "",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签颜色",
prop: "xwbqys",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签积分",
prop: "sfbqjf",
type: "input"
},
{
text: "行为标签积分",
prop: "xwbqjf",
type: "input"
},
{
text: "组合标签积分",
prop: "zhbqjf",
type: "input"
}
]); ]);
const listQuery = ref({
sfbqdj: []
}); //
const loading = ref(false);
const elform = ref();
const title = ref("");
const rules = reactive({ const rules = reactive({
bqmc: [{ required: true, message: "请输入标签名称", trigger: "blur" }] bqmc: [{ required: true, message: "请输入标签名称", trigger: "blur" }]
}); });
const editpeo = ref();
const listQuery = ref({}); //
const loading = ref(false);
const elform = ref();
const title = ref("");
onMounted(() => {}); onMounted(() => {});
// //
const init = (type, row, lx) => { const init = (type, row,) => {
dialogForm.value = true; dialogForm.value = true;
title.value = row ? "编辑" : "新增"; title.value = row ? "编辑" : "新增";
if (row) getDataById(row.id); if (row) getDataById(row.id);
}; };
// id // id
const getDataById = (id) => { const getDataById = (id) => {
let url = ""; qcckGet({}, '/mosty-gsxt/tbGsxtBqgl/'+id).then((res) => {
qcckGet({ id }, url).then((res) => {
listQuery.value = res; listQuery.value = res;
nextTick(() => {
editpeo.value.getList();
});
}); });
}; };
const changeInput = (val) => {
listQuery.value = {
[Object.keys(val)]: val[Object.keys(val)],
...listQuery.value
};
console.log(listQuery.value, "formData.value");
};
// //
const submit = () => { const submit = () => {
elform.value.submit(handleInfoFn); elform.value.submit((data)=>{
}; let url = title.value == "新增" ? '/mosty-gsxt/tbGsxtBqgl/save':'/mosty-gsxt/tbGsxtBqgl/update';
const handleInfoFn = (val) => { qcckPost(data, url).then((res) => {
qcckPost(val, "url")
.then((res) => {
proxy.$message({ type: "success", message: title.value + "成功" }); proxy.$message({ type: "success", message: title.value + "成功" });
close(); close();
}) }).catch(() => {});
.catch(() => {}); });
}; };
// //
const close = () => { const close = () => {
listQuery.value = {}; listQuery.value = {};

View File

@ -2,6 +2,14 @@
<div> <div>
<div class="titleBox"> <div class="titleBox">
<PageTitle title="身份标签管理"> <PageTitle title="身份标签管理">
<template #left>
<el-button :type="type == '标签大类'? 'success':''" @click="chooseListType('标签大类')">
<span style="vertical-align: middle">标签大类</span>
</el-button>
<el-button :type="type == '标签细类'? 'success':''" @click="chooseListType('标签细类')">
<span style="vertical-align: middle">标签细类</span>
</el-button>
</template>
<el-button type="primary" @click="addEdit('add', '')"> <el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
@ -10,16 +18,10 @@
</div> </div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
<template #defaultSlot>
<el-select placeholder="请选择类型" v-model="chooseType" @change="handleType">
<el-option v-for="it in list.chooseList" :key="it" :value="it" :label="it"></el-option>
</el-select>
</template>
</Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable <MyTable
:tableData="pageData.tableData" :tableData="pageData.tableData"
:tableColumn="pageData.tableColumn" :tableColumn="pageData.tableColumn"
@ -29,16 +31,22 @@
:controlsWidth="pageData.controlsWidth" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData" @chooseData="chooseData"
> >
<template #sfjs="{ row }"> <template #bqLx="{ row }">
<DictTag :value="row.sfjs" :options="list.sf" /> <DictTag :value="row.bqLx" :options="D_GS_BQ_LX" />
</template> </template>
<template #xxlx="{ row }"> <template #bqLb="{ row }">
<DictTag :value="row.xxlx" :options="list.xxlx" /> <DictTag :value="row.bqLb" :options=" D_GS_BQ_LB" />
</template>
<template #bqYs="{ row }">
<DictTag :value="row.bqYs" :options=" D_GS_SSYJ" />
</template>
<template #bqDj="{ row }">
<DictTag :value="row.bqDj" :options=" D_GS_BQ_DJ" />
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button> <el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
<el-button size="small" @click="delDictItem([row.id])" type="danger">删除</el-button> <el-button size="small" @click="delDictItem(row.id)" type="danger">删除</el-button>
</template> </template>
</MyTable> </MyTable>
<Pages <Pages
@ -52,7 +60,7 @@
></Pages> ></Pages>
</div> </div>
<!-- 编辑详情 --> <!-- 编辑详情 -->
<EditAddForm ref="detailDiloag" :dic="{xxlx:list.xxlx,sf:list.sf}" @updateDate="getList" /> <EditAddForm ref="detailDiloag" :dic="{D_GS_BQ_DJ,D_GS_SSYJ,D_GS_BQ_LB,D_GS_BQ_LX}" @updateDate="getList" />
</div> </div>
</template> </template>
@ -65,30 +73,16 @@ import EditAddForm from "./components/editAddForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const qypzDialog = ref(); const { D_GS_BQ_DJ,D_GS_SSYJ,D_GS_BQ_LB,D_GS_BQ_LX } = proxy.$dict("D_GS_BQ_DJ","D_GS_SSYJ","D_GS_BQ_LB","D_GS_BQ_LX"); //
const detailDiloag = ref(); const detailDiloag = ref();
const searchBox = ref(); // const searchBox = ref(); //
const chooseType = ref('学校') // const type = ref('标签大类')
const list = reactive({
chooseList :['学校','医院','娱乐场所','民爆库房'],
xxlx:[
{label:'职业学校',value:'01'},
{label:'大专',value:'02'},
{label:'本科',value:'03'},
{label:'研究生',value:'04'},
{label:'博士',value:'05'},
],
sf:[
{label:'是',value:'1'},
{label:'否',value:'0'},
],
})
const searchConfiger = ref([ const searchConfiger = ref([
{ label: "标签名称",prop:'bqmc',placeholder: "请输入学校名称", showType: "input",}, { label: "标签大类",prop:'sfbqdl' ,placeholder: "请输入标签大类", showType: "input"},
{ label: "标签大类",prop:'sfbqdl' ,placeholder: "请选择标签大类", showType: "select",options:list.xxlx }, { label: "标签名称",prop:'bqmc',placeholder: "请输入学校名称", showType: "input"},
{ label: "标签细类",prop:'sfbqdl' ,placeholder: "请选择标签细类", showType: "select",options:list.xxlx }, { label: "标签等级",prop:'sfbqdl' ,placeholder: "请选择标签等级", showType: "select",options:D_GS_BQ_DJ },
{ label: "标签等级",prop:'sfbqdl' ,placeholder: "请选择标签等级", showType: "select",options:list.xxlx }, { label: "标签颜色",prop:'sfbqdl' ,placeholder: "请选择标签颜色", showType: "select",options:D_GS_SSYJ },
{ label: "标签颜色",prop:'sfbqdl' ,placeholder: "请选择标签颜色", showType: "select",options:list.xxlx },
{ label: "积分分值",prop:'bqmc',placeholder: "请输入积分分值", showType: "input",}, { label: "积分分值",prop:'bqmc',placeholder: "请输入积分分值", showType: "input",},
]); ]);
const queryFrom = ref({}); const queryFrom = ref({});
@ -107,166 +101,84 @@ const pageData = reactive({
}, // }, //
controlsWidth: 160, // controlsWidth: 160, //
tableColumn: [ tableColumn: [
{ label: "标签名称", prop: "name" }, { label: "标签名称", prop: "bqMc" },
{ label: "标签大类", prop: "xxrs" }, { label: "标签代码", prop: "bqDm" },
{ label: "标签细类", prop: "sfjs",showSolt:true}, { label: "标签类型", prop: "bqLx",howSolt:true },
{ label: "标签等级", prop: "xxlx",showSolt:true}, { label: "标签类别", prop: "bqLb",howSolt:true },
{ label: "标签颜色", prop: "xzxm"}, { label: "标签等级", prop: "bqDj",showSolt:true},
{ label: "积分分值", prop: "lxfs" }, { label: "标签颜色", prop: "bqYs",showSolt:true},
] ]
}); });
onMounted(() => { onMounted(() => {
getList(chooseType.value) getList()
tabHeightFn(); tabHeightFn();
}); });
// //
const handleType = (val) => { const chooseListType = (val) => {
type.value = val;
pageData.keyCount++; pageData.keyCount++;
pageData.pageConfiger.pageCurrent = 1;
searchConfiger.value = searchConfiger.value.slice(0,1);
let arr = [],tableColumn = [];
switch(val){ switch(val){
case '学校': case '标签大类':
arr = [ let obj1 = { label: "标签大类",prop:'sfbqdl' ,placeholder: "请输入标签大类", showType: "input"}
{ label: "学校名称" ,prop:'name', placeholder: "请输入学校名称", showType: "input" }, searchConfiger.value.splice(0, 1, obj1);
{ label: "学校类型" ,prop:'xxlx', placeholder: "请选择学校类型", showType: "select",options:list.xxlx }, break;
] case '标签细类':
tableColumn = [ let obj2 = { label: "标签细类",prop:'sfbqdl' ,placeholder: "请输入标签细类", showType: "input"}
{ label: "学校名称", prop: "name" }, searchConfiger.value.splice(0, 1, obj2);
{ label: "学校人数", prop: "xxrs" }, break;
{ label: "是否寄宿学校", prop: "sfjs",showSolt:true},
{ label: "学校类型", prop: "xxlx",showSolt:true},
{ label: "校长", prop: "xzxm"},
{ label: "校长联系方式", prop: "lxfs" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '医院':
arr = [{ label: "医院名称" ,prop:'name',placeholder: "请输入医院名称", showType: "input" }];
tableColumn = [
{ label: "医院名称", prop: "name" },
{ label: "医院法人", prop: "frxm" },
{ label: "法人联系方式", prop: "lxfs" },
{ label: "床位数", prop: "cws" },
{ label: "医院人数", prop: "yyrs" },
{ label: "医院人流量", prop: "yyrll" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '娱乐场所':
arr = [{ label: "娱乐场所" ,prop:'name',placeholder: "请输娱乐场所名称", showType: "input" }]
tableColumn = [
{ label: "场所名称", prop: "name" },
{ label: "法人", prop: "frxm" },
{ label: "法人联系方式", prop: "lxfs" },
{ label: "面积", prop: "mj" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '民爆库房':
arr = [{ label: "民爆库房" ,prop:'bmkf',placeholder: "请输民爆库房名称", showType: "input" }]
tableColumn = [
{ label: "库房名称", prop: "name" },
{ label: "库房所有人", prop: "kfsyr" },
{ label: "所有人联系方式", prop: "syrLxfs" },
{ label: "库房使用人", prop: "kfUser" },
{ label: "使用人联系方式", prop: "userLxfs" },
{ label: "库容量", prop: "kry" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
} }
searchConfiger.value = searchConfiger.value.concat(arr); pageData.pageConfiger.pageCurrent = 1;
pageData.tableColumn = tableColumn; getList()
getList(chooseType.value) };
}
// //
const onSearch = (val) =>{ const onSearch = (val) =>{
queryFrom.value = {...val} queryFrom.value = {...val}
pageData.pageConfiger.pageCurrent = 1; pageData.pageConfiger.pageCurrent = 1;
getList(chooseType.value) getList()
} }
//
const changeNo = (val) =>{ const changeNo = (val) =>{
pageData.pageConfiger.pageNum = val; pageData.pageConfiger.pageNum = val;
getList(chooseType.value) getList()
} }
//
const changeSize = (val) =>{ const changeSize = (val) =>{
pageData.pageConfiger.pageSize = val; pageData.pageConfiger.pageSize = val;
getList(chooseType.value) getList()
} }
// //
const getList = (val) =>{ const getList = (val) =>{
let url = '' // pageData.tableConfiger.loading = true;
switch(val){ // let data = { ...pageData.pageConfiger,...queryFrom.value };
case '学校': // qcckPost(data,'/mosty-gsxt/tbGsxtBqgl/selectPage').then(res=>{
url = '/mosty-lzcj/tbDwXx/queryList'; // pageData.tableData = res.records || [];
break; // pageData.total = res.total;
case '医院': // pageData.tableConfiger.loading = false;
url = '/mosty-lzcj/tbDwYy/queryList'; // }).catch(()=>{ pageData.tableConfiger.loading = false; })
break;
case '娱乐场所':
url = '/mosty-lzcj/TbDwYlth/queryList';
break;
case '民爆库房':
url = '/mosty-lzcj/tbDwMbkf/queryList';
break;
}
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger,...queryFrom.value };
qcckPost(data,url).then(res=>{
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch(()=>{ pageData.tableConfiger.loading = false; })
} }
// //
const delDictItem = (ids) =>{ const delDictItem = (id) =>{
let url = '' proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
switch(chooseType.value){ qcckPost({},'/mosty-gsxt/tbGsxtBqgl/'+id).then(()=>{
case '学校': proxy.$message({ type: "success", message: "删除成功" });
url = '/mosty-lzcj/tbDwXx/delete'; getList();
break; })
case '医院': }).catch(() => {});
url = '/mosty-lzcj/tbDwYy/delete';
break;
case '娱乐场所':
url = '/mosty-lzcj/TbDwYlth/delete';
break;
case '民爆库房':
url = '/mosty-lzcj/tbDwMbkf/delete';
break;
}
// proxy.$confirm("", "", {type: "warning"}).then(() => {
// qcckPost(ids,url).then(()=>{
// proxy.$message({ type: "success", message: "" });
// getList(chooseType.value);
// })
// }).catch(() => {});
} }
// //
const addEdit = (type, row) => { const addEdit = (type, row) => {
detailDiloag.value.init(type, row,chooseType.value); detailDiloag.value.init(type, row);
}; };
// //
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () { window.onresize = function () { tabHeightFn(); };
tabHeightFn();
};
}; };
</script> </script>

View File

@ -66,8 +66,8 @@ const store = useStore();
const kaptchaUrl = ref(""); const kaptchaUrl = ref("");
// //
const loginForm = ref({ const loginForm = ref({
userName: "admin", userName: "",
password: "111111", password: "",
kaptcha: "" kaptcha: ""
}); });
const loginDialog = ref(false); const loginDialog = ref(false);
@ -111,24 +111,21 @@ const router = useRouter();
const handleLogin = () => { const handleLogin = () => {
loginFromRef.value.validate((valid) => { loginFromRef.value.validate((valid) => {
if (!valid) return false; if (!valid) return false;
setItem('token', '1255555888'); loading.value = true;
setItem('isOatuh', 0) store.dispatch("user/login", loginForm.value).then((res) => {
router.push("/"); loading.value = false;
// loading.value = true; //
// store.dispatch("user/login", loginForm.value).then((res) => { if (res.deptList.length === 1) {
// loading.value = false; window.location.href = '/'
// // } else {
// if (res.deptList.length === 1) { deptList.value = [...res.deptList];
// window.location.href = '/' loginDialog.value = true;
// } else { authorization.value = res.jwtToken;
// deptList.value = [...res.deptList]; ElNotification({title: "提示",message: "请选择部门",duration: 3000});
// loginDialog.value = true; }
// authorization.value = res.jwtToken; }).catch(() => {
// ElNotification({title: "",message: "",duration: 3000}); loading.value = false;
// } });
// }).catch(() => {
// loading.value = false;
// });
}); });
}; };
const logout = () => { const logout = () => {

View File

@ -4,7 +4,7 @@ function resolve(dir) {
return path.join(__dirname, dir); return path.join(__dirname, dir);
} }
const serverHost = "http://127.0.0.1:8006" const serverHost = "http://192.168.4.29:8006"
module.exports = { module.exports = {
publicPath: "./", publicPath: "./",
outputDir: "ylth", outputDir: "ylth",