对接行为和身份标签的接口
This commit is contained in:
parent
6c694b52d3
commit
aa18dbf3ef
|
@ -99,7 +99,7 @@ header {
|
|||
left: 10px;
|
||||
background-color: #fff;
|
||||
z-index: 998;
|
||||
color: #fff;
|
||||
color: #333;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
.head_box {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
:key="item.value"
|
||||
:index="index"
|
||||
:class="item.elTagType"
|
||||
>{{ item.label }}</span>
|
||||
>{{ item.label || item.zdmc }}</span>
|
||||
<el-tag
|
||||
v-else
|
||||
:disable-transitions="true"
|
||||
|
@ -15,7 +15,7 @@
|
|||
:index="index"
|
||||
:type="item.elTagType === 'primary' ? '' : item.elTagType"
|
||||
:class="item.elTagType"
|
||||
>{{ item.label }}</el-tag
|
||||
>{{ item.label || item.zdmc }}</el-tag
|
||||
>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
<template>
|
||||
<el-form ref="elform" :model="listQuery" :label-width="140" :rules="props.rules" :inline="true" label-position="right">
|
||||
<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">
|
||||
<!-- input表单 -->
|
||||
<el-form-item v-for="item in props.formList" :style="{ width: item.width }" :prop="item.prop" :label="item.label" :label-width="item.labelWidth" :key="item">
|
||||
<!-- input表单 input-->
|
||||
<MOSTY.Other v-if="item.type == 'input'" width="100%" clearable v-model="listQuery[item.prop]" :placeholder="`请输入${item.label}`"/>
|
||||
<el-input v-model="listQuery[item.prop]" v-else-if="item.type == 'textarea'" :placeholder="`请输入${item.label}`" />
|
||||
<!-- Select选择 -->
|
||||
<MOSTY.Select
|
||||
v-else-if="item.type == 'select'"
|
||||
width="100%"
|
||||
clearable
|
||||
v-model="listQuery[item.prop]"
|
||||
:dictEnum="item.options"
|
||||
:placeholder="`请选择${item.label}`"/>
|
||||
<el-input v-model="listQuery[item.prop]" v-else-if="item.type == 'textarea'" type="textarea" :rows="3" :placeholder="`请输入${item.label}`" />
|
||||
<!-- 数值 inputNumber-->
|
||||
<el-input type="number" v-model="listQuery[item.prop]" v-else-if="item.type == 'inputNumber'" :placeholder="`请输入${item.label}`" />
|
||||
<!-- 数值 number-->
|
||||
<el-input-number v-model="listQuery[item.prop]" v-else-if="item.type == 'number'" style="width:100%" :min="0" :max="1000" />
|
||||
<!--选择 select-->
|
||||
<MOSTY.Select v-else-if="item.type == 'select'" v-model="listQuery[item.prop]" :dictEnum="item.options" width="100%" clearable :placeholder="`请选择${item.label}`"/>
|
||||
<!-- 部门department -->
|
||||
<template v-else-if="item.showType === 'department'">
|
||||
<MOSTY.Department clearable v-model="listQuery[item.prop]" />
|
||||
</template>
|
||||
<!-- Upload选择 -->
|
||||
|
||||
<!-- 上传 upload -->
|
||||
<MOSTY.Upload v-else-if="item.type == 'upload'" width="100%" v-model="listQuery[item.prop]"/>
|
||||
<!-- CheckBox选择 -->
|
||||
<!--选择checkbox -->
|
||||
<MOSTY.CheckBox v-else-if="item.type == 'checkbox'" width="100%" clearable v-model="listQuery[item.prop]" :checkList="item.options" :placeholder="`请选择${item.label}`"/>
|
||||
|
||||
<!-- 单选 -->
|
||||
<!-- 单选radio -->
|
||||
<el-radio-group v-model="listQuery[item.prop]" v-else-if="item.type == 'radio'">
|
||||
<el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value" >{{ obj.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
|
@ -45,14 +45,10 @@ import * as MOSTY from "@/components/MyComponents/index";
|
|||
import { ref, defineProps, defineEmits, defineExpose, watch } from "vue";
|
||||
const props = defineProps({
|
||||
//循环的值
|
||||
formData: {
|
||||
formList: {
|
||||
default: [],
|
||||
type: Array
|
||||
},
|
||||
propName: {
|
||||
default: "",
|
||||
type: String
|
||||
},
|
||||
rules: {
|
||||
default: {},
|
||||
type: Object
|
||||
|
@ -77,6 +73,12 @@ watch(() => listQuery.value,(newVal) => {
|
|||
emits('update:modelValue', newVal)
|
||||
},{ immediate: true, deep: true }
|
||||
);
|
||||
|
||||
watch(() => props.modelValue,(newVal) => {
|
||||
listQuery.value = newVal; //赋值
|
||||
},{ immediate: true, deep: true }
|
||||
);
|
||||
|
||||
defineExpose({ submit });
|
||||
</script>
|
||||
|
|
@ -1,9 +1,5 @@
|
|||
<template>
|
||||
<div
|
||||
v-loading="loadingPage"
|
||||
class="pageSearch searchBox"
|
||||
:style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`"
|
||||
>
|
||||
<div v-loading="loadingPage" class="pageSearch searchBox" :style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`">
|
||||
<div class="box">
|
||||
<div v-for="(item, index) in getArr" :key="index" class="item">
|
||||
<div class="label" v-if="item.label">{{ item.label }}</div>
|
||||
|
|
|
@ -155,15 +155,6 @@ export const publicRoutes = [
|
|||
icon: "article"
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/tagManage",
|
||||
name: "tagManage",
|
||||
component: () => import("@/views/backOfficeSystem/fourColorManage/tagManage/index"),
|
||||
meta: {
|
||||
title: "标签组合管理",
|
||||
icon: "article"
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/BehaviorLabels",
|
||||
name: "BehaviorLabels",
|
||||
|
@ -173,6 +164,15 @@ export const publicRoutes = [
|
|||
icon: "article"
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/tagManage",
|
||||
name: "tagManage",
|
||||
component: () => import("@/views/backOfficeSystem/fourColorManage/tagManage/index"),
|
||||
meta: {
|
||||
title: "标签组合管理",
|
||||
icon: "article"
|
||||
}
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
import axios from 'axios';
|
||||
import store from '@/store';
|
||||
import {
|
||||
ElMessage
|
||||
} from 'element-plus';
|
||||
import {
|
||||
isCheckTimeout
|
||||
} from '@/utils/auth';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { isCheckTimeout } from '@/utils/auth';
|
||||
|
||||
const service = axios.create({
|
||||
baseURL: process.env.VUE_APP_BASE_API,
|
||||
|
@ -18,11 +14,11 @@ service.interceptors.request.use(
|
|||
// 请求接口之前 做些什么
|
||||
//1.统一注入token
|
||||
if (store.getters.token) {
|
||||
// if (isCheckTimeout()) {
|
||||
// //超时 执行退出
|
||||
// store.dispatch('user/logout');
|
||||
// return Promise.reject(new Error('token 失效'));
|
||||
// }
|
||||
if (isCheckTimeout()) {
|
||||
//超时 执行退出
|
||||
store.dispatch('user/logout');
|
||||
return Promise.reject(new Error('token 失效'));
|
||||
}
|
||||
if (!config.url.startsWith("/jcApi")) {
|
||||
config.headers.Authorization = `${store.getters.token}`;
|
||||
}
|
||||
|
@ -42,13 +38,7 @@ service.interceptors.request.use(
|
|||
service.interceptors.response.use(
|
||||
// 请求成功的处理
|
||||
(response) => {
|
||||
const {
|
||||
success,
|
||||
code,
|
||||
msg,
|
||||
message,
|
||||
data
|
||||
} = response.data;
|
||||
const { success, code, msg, message, data } = response.data;
|
||||
// 需要判断当前请求是否成功
|
||||
if (success && code === 10000) {
|
||||
return data; // 成功后返回解析后的数据
|
||||
|
@ -56,20 +46,12 @@ service.interceptors.response.use(
|
|||
return data; // 成功后返回解析后的数据
|
||||
} else if (code === 401) {
|
||||
store.dispatch('user/logout');
|
||||
// ElMessage.error(message); // 提示错误信息
|
||||
// ElMessage({
|
||||
// message: message || msg,
|
||||
// grouping: true,
|
||||
// type: 'error'
|
||||
// })
|
||||
ElMessage.error(message); // 提示错误信息
|
||||
ElMessage({ message: message || msg, grouping: true, type: 'error' })
|
||||
} else {
|
||||
// 失败(请求成功 ,业务失败) 弹出消息提示
|
||||
// ElMessage({
|
||||
// message: message || msg,
|
||||
// grouping: true,
|
||||
// type: 'error'
|
||||
// })
|
||||
// return Promise.reject(new Error(message));
|
||||
ElMessage({ message: message || msg, grouping: true, type: 'error' })
|
||||
return Promise.reject(new Error(message));
|
||||
}
|
||||
},
|
||||
// 请求失败处理
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
<template>
|
||||
<div class="dialog" v-if="dialogForm">
|
||||
<div class="head_box">
|
||||
<span class="title">{{ title }} </span>
|
||||
<div>
|
||||
<el-button type="primary" size="small" :loading="loading" @click="submit" >保存</el-button>
|
||||
<el-button size="small" @click="close">关闭</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_cnt">
|
||||
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
|
||||
<template #bqDlId>
|
||||
<el-input readonly @click="showDialog = true" v-model="listQuery.bqDlId" placeholder="请选择标签大类" clearable />
|
||||
</template>
|
||||
</FormMessage>
|
||||
</div>
|
||||
<!-- 选择框 -->
|
||||
<DialogList type="02" v-model="showDialog" :dic="props.dic" @chooseDate="chooseDate"></DialogList>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import DialogList from '@/views/backOfficeSystem/fourColorManage/IdentityManage/components/dialogList.vue'
|
||||
import FormMessage from '@/components/aboutTable/FormMessage.vue'
|
||||
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||
import { ref,defineProps, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, watchEffect } from "vue";
|
||||
const emit = defineEmits(["updateDate"]);
|
||||
const props = defineProps({
|
||||
type:String,
|
||||
dic:Object,
|
||||
});
|
||||
const showDialog = ref(false); //弹窗
|
||||
const listQuery = ref({}); //表单
|
||||
const loading = ref(false);
|
||||
const elform = ref();
|
||||
const title = ref("");
|
||||
const { proxy } = getCurrentInstance();
|
||||
const dialogForm = ref(false); //弹窗
|
||||
const formData = reactive([
|
||||
{ label: "标签名称", prop: "bqMc", type: "input" },
|
||||
{ label: "标签代码", prop: "bqDm", type: "input" },
|
||||
{ label: "标签等级", prop: "bqDj", type: "select", options: [] },
|
||||
{ label: "标签颜色", prop: "bqYs", type: "select", options: [] },
|
||||
{ label: "标签分值", prop: "bqFz", type: "inputNumber" },
|
||||
{ label: "标签说明", prop: "bqSm", type: "textarea",width: '100%' },
|
||||
]);
|
||||
|
||||
const rules = reactive({
|
||||
bqMc: [{ required: true, message: "请输入标签名称", trigger: "blur" }],
|
||||
bqDm: [{ required: true, message: "请输入标签代码", trigger: "blur" }],
|
||||
bqDlId: [{ required: true, message: "请输入标签大类", trigger: ['blur','change'] }],
|
||||
});
|
||||
|
||||
watchEffect(()=>{
|
||||
if(props.dic){
|
||||
formData[2].options = props.dic.D_GS_BQ_DJ;
|
||||
formData[3].options = props.dic.D_GS_SSYJ;
|
||||
}
|
||||
})
|
||||
|
||||
// 初始化数据
|
||||
const init = (type, row,) => {
|
||||
title.value = type == 'add' ? "新增" : "编辑";
|
||||
dialogForm.value = true;
|
||||
if(props.type == '标签细类') formData.push({ label: "标签大类", prop: "bqDlId", width: '100%' , type: "slot" })
|
||||
if (row) getDataById(row.id);
|
||||
};
|
||||
|
||||
// 根据id查询详情
|
||||
const getDataById = (id) => {
|
||||
qcckGet({}, '/mosty-gsxt/tbGsxtBqgl/'+id).then((res) => {
|
||||
listQuery.value = res;
|
||||
});
|
||||
};
|
||||
|
||||
// 提交
|
||||
const submit = () => {
|
||||
elform.value.submit((data)=>{
|
||||
let url = title.value == "新增" ? '/mosty-gsxt/tbGsxtBqgl/save':'/mosty-gsxt/tbGsxtBqgl/update';
|
||||
let params = { ...data, bqLb:props.dic.D_GS_BQ_LB.find((it)=>it.zdmc == props.type).dm }
|
||||
params.bqLx = '02'
|
||||
qcckPost(params, url).then((res) => {
|
||||
proxy.$message({ type: "success", message: title.value + "成功" });
|
||||
emit("updateDate");
|
||||
close();
|
||||
}).catch(() => {});
|
||||
});
|
||||
};
|
||||
|
||||
// 选择的数据
|
||||
const chooseDate = (val) => {
|
||||
if(!val && val.length == 0) return;
|
||||
listQuery.value.bqDlId = val[0].id;
|
||||
}
|
||||
|
||||
// 关闭
|
||||
const close = () => {
|
||||
listQuery.value = {};
|
||||
dialogForm.value = false;
|
||||
loading.value = false;
|
||||
if(props.type == '标签细类') formData.pop()
|
||||
|
||||
};
|
||||
defineExpose({ init });
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/assets/css/layout.scss";
|
||||
@import "~@/assets/css/element-plus.scss";
|
||||
</style>
|
|
@ -1,13 +1,176 @@
|
|||
<template>
|
||||
<div>行为标签管理</div>
|
||||
<div>
|
||||
<div class="titleBox">
|
||||
<PageTitle title="行为标签管理">
|
||||
<template #left>
|
||||
<el-button v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
|
||||
<span style="vertical-align: middle">{{ it.zdmc }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
<el-button type="primary" @click="addEdit('add', '')">
|
||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||
<span style="vertical-align: middle">新增</span>
|
||||
</el-button>
|
||||
</PageTitle>
|
||||
</div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox">
|
||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
|
||||
<MyTable
|
||||
:tableData="pageData.tableData"
|
||||
:tableColumn="pageData.tableColumn"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount"
|
||||
:tableConfiger="pageData.tableConfiger"
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData"
|
||||
>
|
||||
<template #bqLx="{ row }">
|
||||
<DictTag :value="row.bqLx" :tag="false" :options="D_GS_BQ_LX" />
|
||||
</template>
|
||||
<template #bqLb="{ row }">
|
||||
<DictTag :value="row.bqLb" :tag="false" :options="D_GS_BQ_LB" />
|
||||
</template>
|
||||
<template #bqYs="{ row }">
|
||||
<DictTag :value="row.bqYs" :tag="false" :options="D_GS_SSYJ" />
|
||||
</template>
|
||||
<template #bqDj="{ row }">
|
||||
<DictTag :tag="false" :value="row.bqDj" :options="D_GS_BQ_DJ" />
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
<el-link size="small" @click="addEdit('edit', row)">编辑</el-link>
|
||||
<el-link size="small" @click="delDictItem(row.id)" type="danger">删除</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"
|
||||
></Pages>
|
||||
</div>
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm ref="detailDiloag" :type="type" :dic="{D_GS_BQ_LX,D_GS_BQ_DJ,D_GS_SSYJ,D_GS_BQ_LB}" @updateDate="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
<script setup>
|
||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
import { da } from "element-plus/es/locale.mjs";
|
||||
const { proxy } = getCurrentInstance();
|
||||
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 searchBox = ref(); //搜索框
|
||||
const type = ref('标签大类')
|
||||
|
||||
const searchConfiger = ref([
|
||||
{ label: "标签名称",prop:'bqMc',placeholder: "请输入学校名称", showType: "input"},
|
||||
{ label: "标签等级",prop:'bqDj' ,placeholder: "请选择标签等级", showType: "select",options:D_GS_BQ_DJ },
|
||||
{ label: "标签颜色",prop:'bqYs' ,placeholder: "请选择标签颜色", showType: "select",options:D_GS_SSYJ },
|
||||
]);
|
||||
const queryFrom = ref({});
|
||||
const pageData = reactive({
|
||||
tableData: [], //表格数据
|
||||
keyCount: 0,
|
||||
tableConfiger: {
|
||||
rowHieght: 61,
|
||||
showSelectType: "null",
|
||||
loading: false
|
||||
},
|
||||
total: 0,
|
||||
pageConfiger: {
|
||||
pageSize: 20,
|
||||
pageCurrent: 1
|
||||
}, //分页
|
||||
controlsWidth: 160, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ label: "标签名称", prop: "bqMc" },
|
||||
{ label: "标签代码", prop: "bqDm" },
|
||||
{ label: "标签类型", prop: "bqLx",showSolt:true },
|
||||
{ label: "标签类别", prop: "bqLb",showSolt:true },
|
||||
{ label: "标签等级", prop: "bqDj",showSolt:true},
|
||||
{ label: "标签颜色", prop: "bqYs",showSolt:true},
|
||||
]
|
||||
});
|
||||
onMounted(() => {
|
||||
getList()
|
||||
tabHeightFn();
|
||||
});
|
||||
|
||||
// 选择列表的大类和细类
|
||||
const chooseListType = (val) => {
|
||||
type.value = val;
|
||||
pageData.keyCount++;
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getList()
|
||||
};
|
||||
|
||||
// 搜索
|
||||
const onSearch = (val) =>{
|
||||
queryFrom.value = {...val}
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getList()
|
||||
}
|
||||
|
||||
// 分页
|
||||
const changeNo = (val) =>{
|
||||
pageData.pageConfiger.pageNum = val;
|
||||
getList()
|
||||
}
|
||||
// 页数
|
||||
const changeSize = (val) =>{
|
||||
pageData.pageConfiger.pageSize = val;
|
||||
getList()
|
||||
}
|
||||
|
||||
// 获取列表
|
||||
const getList = (val) =>{
|
||||
pageData.tableConfiger.loading = true;
|
||||
let data = { ...pageData.pageConfiger,...queryFrom.value,bqLx:'02' };
|
||||
data.bqLb = type.value == '标签大类'? '01':'02'
|
||||
qcckGet(data,'/mosty-gsxt/tbGsxtBqgl/selectPage').then(res=>{
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total;
|
||||
pageData.tableConfiger.loading = false;
|
||||
}).catch(()=>{ pageData.tableConfiger.loading = false; })
|
||||
}
|
||||
// 删除
|
||||
const delDictItem = (id) =>{
|
||||
proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
|
||||
qcckDelete({},'/mosty-gsxt/tbGsxtBqgl/'+id).then(()=>{
|
||||
proxy.$message({ type: "success", message: "删除成功" });
|
||||
getList();
|
||||
})
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
// 新增
|
||||
const addEdit = (type, row) => {
|
||||
detailDiloag.value.init(type, row);
|
||||
};
|
||||
|
||||
// 表格高度计算
|
||||
const tabHeightFn = () => {
|
||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||
window.onresize = function () { tabHeightFn(); };
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
.el-loading-mask {
|
||||
background: rgba(0, 0, 0, 0.5) !important;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,192 @@
|
|||
<template>
|
||||
<el-dialog :title="titleValue" width="900px" :model-value="modelValue" append-to-body @close="closed" >
|
||||
<div>
|
||||
<el-form :model="listQuery" class="mosty-from-wrap" :inline="true">
|
||||
<el-form-item label="标签名称">
|
||||
<el-input placeholder="请输入标签名称" v-model="listQuery.bqMc" clearable ></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="success" @click="handleFilter">查询</el-button>
|
||||
<el-button type="info" @click="reset()"> 重置 </el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="tabBox" :class="props.Single ? 'tabBoxRadio' : ''" style="margin-top: 0px">
|
||||
<el-table ref="multipleUserRef" @selection-change="handleSelectionChange" :data="tableData" border :row-key="keyid" style="width: 100%" height="450" >
|
||||
<el-table-column type="selection" width="55" :reserve-selection="true" />
|
||||
<el-table-column prop="bqMc" align="center" label="标签名称" />
|
||||
<el-table-column prop="bqDm" align="center" label="标签代码" />
|
||||
<el-table-column prop="bqLx" align="center" label="标签类型">
|
||||
<template #default="{ row }">
|
||||
<DictTag :value="row.bqLx" :tag="false" :options="props.dic.D_GS_BQ_LX" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="bqYs" align="center" label="标签颜色">
|
||||
<template #default="{ row }">
|
||||
<DictTag :value="row.bqYs" :tag="false" :options="props.dic.D_GS_SSYJ" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="fenye" :style="{ top: tableHeight + 'px' }">
|
||||
<el-pagination
|
||||
class="pagination"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="listQuery.current"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="listQuery.size"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
></el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="closed">取消</el-button>
|
||||
<el-button type="primary" @click="onComfirm">确认</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { defineProps, ref, onMounted } from "vue";
|
||||
import { qcckGet } from "@/api/qcckApi.js";
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
dic: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: "01"
|
||||
},
|
||||
titleValue: {
|
||||
type: String,
|
||||
default: "选择大类"
|
||||
},
|
||||
LeaderType: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
//是否单选
|
||||
Single: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
roleIds: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
});
|
||||
const total = ref(0);
|
||||
const listQuery = ref({
|
||||
current: 1,
|
||||
size: 20
|
||||
});
|
||||
const tableData = ref([]);
|
||||
const emits = defineEmits(["update:modelValue", "chooseDate"]);
|
||||
onMounted(() => {
|
||||
handleFilter();
|
||||
});
|
||||
const closed = () => {
|
||||
emits("update:modelValue", false);
|
||||
};
|
||||
const reset = () => {
|
||||
listQuery.value = { current: 1, size: 20, };
|
||||
getListData();
|
||||
};
|
||||
|
||||
const keyid = (row) => {
|
||||
return row.id;
|
||||
};
|
||||
// 为用户分配角色
|
||||
const onComfirm = () => {
|
||||
const userList = multipleSelectionUser.value;
|
||||
let list = [];
|
||||
let listId = [];
|
||||
userList.forEach((val) => {
|
||||
if (listId.indexOf(val.id) == -1) {
|
||||
list.push(val);
|
||||
listId.push(val.id);
|
||||
}
|
||||
});
|
||||
emits("chooseDate", list);
|
||||
let data = { type: props.LeaderType, userList: userList };
|
||||
emits("chooseDateLeader", data);
|
||||
closed();
|
||||
};
|
||||
/**
|
||||
* pageSize 改变触发
|
||||
*/
|
||||
const handleSizeChange = (currentSize) => {
|
||||
listQuery.value.size = currentSize;
|
||||
getListData();
|
||||
};
|
||||
|
||||
/**
|
||||
* 页码改变触发
|
||||
*/
|
||||
const handleCurrentChange = (currentPage) => {
|
||||
listQuery.value.current = currentPage;
|
||||
getListData();
|
||||
};
|
||||
const getListData = () => {
|
||||
const data = listQuery.value;
|
||||
data.bqLx = '01'
|
||||
data.bqLb = props.type;
|
||||
qcckGet(data,'/mosty-gsxt/tbGsxtBqgl/selectPage').then(res=>{
|
||||
tableData.value = res?.records;
|
||||
total.value = Number(res.total);
|
||||
multipleUser();
|
||||
}).catch(()=>{})
|
||||
|
||||
|
||||
};
|
||||
|
||||
//列表回显
|
||||
function multipleUser() {
|
||||
tableData.value.forEach((item) => {
|
||||
if (props.roleIds.some((id) => id == item.id)) {
|
||||
multipleUserRef.value.toggleRowSelection(item, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const handleFilter = () => {
|
||||
listQuery.value.current = 1;
|
||||
getListData();
|
||||
};
|
||||
|
||||
const multipleUserRef = ref(null);
|
||||
const multipleSelectionUser = ref([]);
|
||||
const handleSelectionChange = (val) => {
|
||||
if (props.Single) {
|
||||
if (val.length > 1) {
|
||||
let del_row = val.shift();
|
||||
multipleUserRef.value.toggleRowSelection(del_row, false);
|
||||
}
|
||||
multipleSelectionUser.value = val;
|
||||
} else {
|
||||
multipleSelectionUser.value = val;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "@/assets/css/layout.scss";
|
||||
@import "@/assets/css/element-plus.scss";
|
||||
</style>
|
||||
<style>
|
||||
.tabBoxRadio .el-checkbox__inner {
|
||||
border-radius: 50% !important;
|
||||
}
|
||||
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -8,47 +8,61 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form_cnt">
|
||||
<FormMessage v-model="listQuery" :formData="formData" ref="elform" :rules="rules"></FormMessage>
|
||||
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
|
||||
<template #bqDlId>
|
||||
<el-input readonly @click="showDialog = true" v-model="listQuery.bqDlId" placeholder="请选择标签大类" clearable />
|
||||
</template>
|
||||
</FormMessage>
|
||||
</div>
|
||||
<!-- 选择框 -->
|
||||
<DialogList type="01" v-model="showDialog" :dic="props.dic" @chooseDate="chooseDate"></DialogList>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import * as rule from "@/utils/rules.js";
|
||||
import DialogList from './dialogList.vue'
|
||||
import FormMessage from '@/components/aboutTable/FormMessage.vue'
|
||||
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, nextTick } from "vue";
|
||||
import { ref,defineProps, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, watchEffect } from "vue";
|
||||
const emit = defineEmits(["updateDate"]);
|
||||
const props = defineProps({
|
||||
dic: Object
|
||||
type:String,
|
||||
dic:Object,
|
||||
});
|
||||
const { proxy } = getCurrentInstance();
|
||||
const dialogForm = ref(false); //弹窗
|
||||
const formData = ref([
|
||||
{ label: "标签名称", prop: "bqMc", type: "input", required: true },
|
||||
{ label: "标签代码", prop: "bqDm", type: "input", required: true },
|
||||
{ label: "标签说明", prop: "bqSm", type: "input", required: true },
|
||||
{ label: "组合标签名称", prop: "bqmc", type: "input", 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 },
|
||||
{ label: "标签颜色", prop: "bqYs", type: "select", options: props.dic.D_GS_SSYJ },
|
||||
{ label: "标签分值", prop: "bqFz", type: "input" },
|
||||
]);
|
||||
const rules = reactive({
|
||||
bqmc: [{ required: true, message: "请输入标签名称", trigger: "blur" }]
|
||||
});
|
||||
|
||||
const showDialog = ref(false); //弹窗
|
||||
const listQuery = ref({}); //表单
|
||||
const loading = ref(false);
|
||||
const elform = ref();
|
||||
const title = ref("");
|
||||
const { proxy } = getCurrentInstance();
|
||||
const dialogForm = ref(false); //弹窗
|
||||
const formData = reactive([
|
||||
{ label: "标签名称", prop: "bqMc", type: "input" },
|
||||
{ label: "标签代码", prop: "bqDm", type: "input" },
|
||||
{ label: "标签等级", prop: "bqDj", type: "select", options: [] },
|
||||
{ label: "标签颜色", prop: "bqYs", type: "select", options: [] },
|
||||
{ label: "标签分值", prop: "bqFz", type: "inputNumber" },
|
||||
{ label: "标签说明", prop: "bqSm", type: "textarea",width: '100%' },
|
||||
]);
|
||||
|
||||
const rules = reactive({
|
||||
bqMc: [{ required: true, message: "请输入标签名称", trigger: "blur" }],
|
||||
bqDm: [{ required: true, message: "请输入标签代码", trigger: "blur" }],
|
||||
bqDlId: [{ required: true, message: "请输入标签大类", trigger: ['blur','change'] }],
|
||||
});
|
||||
|
||||
watchEffect(()=>{
|
||||
if(props.dic){
|
||||
formData[2].options = props.dic.D_GS_BQ_DJ;
|
||||
formData[3].options = props.dic.D_GS_SSYJ;
|
||||
}
|
||||
})
|
||||
|
||||
onMounted(() => {});
|
||||
// 初始化数据
|
||||
const init = (type, row,) => {
|
||||
title.value = type == 'add' ? "新增" : "编辑";
|
||||
dialogForm.value = true;
|
||||
title.value = row ? "编辑" : "新增";
|
||||
if(props.type == '标签细类') formData.push({ label: "标签大类", prop: "bqDlId", width: '100%' , type: "slot" })
|
||||
if (row) getDataById(row.id);
|
||||
};
|
||||
|
||||
|
@ -63,18 +77,29 @@ const getDataById = (id) => {
|
|||
const submit = () => {
|
||||
elform.value.submit((data)=>{
|
||||
let url = title.value == "新增" ? '/mosty-gsxt/tbGsxtBqgl/save':'/mosty-gsxt/tbGsxtBqgl/update';
|
||||
qcckPost(data, url).then((res) => {
|
||||
let params = { ...data, bqLb:props.dic.D_GS_BQ_LB.find((it)=>it.zdmc == props.type).dm }
|
||||
params.bqLx = '01'
|
||||
qcckPost(params, url).then((res) => {
|
||||
proxy.$message({ type: "success", message: title.value + "成功" });
|
||||
emit("updateDate");
|
||||
close();
|
||||
}).catch(() => {});
|
||||
});
|
||||
};
|
||||
|
||||
// 选择的数据
|
||||
const chooseDate = (val) => {
|
||||
if(!val && val.length == 0) return;
|
||||
listQuery.value.bqDlId = val[0].id;
|
||||
}
|
||||
|
||||
// 关闭
|
||||
const close = () => {
|
||||
listQuery.value = {};
|
||||
dialogForm.value = false;
|
||||
loading.value = false;
|
||||
if(props.type == '标签细类') formData.pop()
|
||||
|
||||
};
|
||||
defineExpose({ init });
|
||||
</script>
|
||||
|
|
|
@ -3,11 +3,8 @@
|
|||
<div class="titleBox">
|
||||
<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 v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
|
||||
<span style="vertical-align: middle">{{ it.zdmc }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
<el-button type="primary" @click="addEdit('add', '')">
|
||||
|
@ -32,21 +29,21 @@
|
|||
@chooseData="chooseData"
|
||||
>
|
||||
<template #bqLx="{ row }">
|
||||
<DictTag :value="row.bqLx" :options="D_GS_BQ_LX" />
|
||||
<DictTag :value="row.bqLx" :tag="false" :options="D_GS_BQ_LX" />
|
||||
</template>
|
||||
<template #bqLb="{ row }">
|
||||
<DictTag :value="row.bqLb" :options=" D_GS_BQ_LB" />
|
||||
<DictTag :value="row.bqLb" :tag="false" :options="D_GS_BQ_LB" />
|
||||
</template>
|
||||
<template #bqYs="{ row }">
|
||||
<DictTag :value="row.bqYs" :options=" D_GS_SSYJ" />
|
||||
<DictTag :value="row.bqYs" :tag="false" :options="D_GS_SSYJ" />
|
||||
</template>
|
||||
<template #bqDj="{ row }">
|
||||
<DictTag :value="row.bqDj" :options=" D_GS_BQ_DJ" />
|
||||
<DictTag :tag="false" :value="row.bqDj" :options="D_GS_BQ_DJ" />
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
|
||||
<el-button size="small" @click="delDictItem(row.id)" type="danger">删除</el-button>
|
||||
<el-link size="small" @click="addEdit('edit', row)">编辑</el-link>
|
||||
<el-link size="small" @click="delDictItem(row.id)" type="danger">删除</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages
|
||||
|
@ -60,7 +57,7 @@
|
|||
></Pages>
|
||||
</div>
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm ref="detailDiloag" :dic="{D_GS_BQ_DJ,D_GS_SSYJ,D_GS_BQ_LB,D_GS_BQ_LX}" @updateDate="getList" />
|
||||
<EditAddForm ref="detailDiloag" :type="type" :dic="{D_GS_BQ_LX,D_GS_BQ_DJ,D_GS_SSYJ,D_GS_BQ_LB}" @updateDate="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -79,11 +76,9 @@ const searchBox = ref(); //搜索框
|
|||
const type = ref('标签大类')
|
||||
|
||||
const searchConfiger = ref([
|
||||
{ label: "标签大类",prop:'sfbqdl' ,placeholder: "请输入标签大类", showType: "input"},
|
||||
{ label: "标签名称",prop:'bqmc',placeholder: "请输入学校名称", showType: "input"},
|
||||
{ label: "标签等级",prop:'sfbqdl' ,placeholder: "请选择标签等级", showType: "select",options:D_GS_BQ_DJ },
|
||||
{ label: "标签颜色",prop:'sfbqdl' ,placeholder: "请选择标签颜色", showType: "select",options:D_GS_SSYJ },
|
||||
{ label: "积分分值",prop:'bqmc',placeholder: "请输入积分分值", showType: "input",},
|
||||
{ label: "标签名称",prop:'bqMc',placeholder: "请输入学校名称", showType: "input"},
|
||||
{ label: "标签等级",prop:'bqDj' ,placeholder: "请选择标签等级", showType: "select",options:D_GS_BQ_DJ },
|
||||
{ label: "标签颜色",prop:'bqYs' ,placeholder: "请选择标签颜色", showType: "select",options:D_GS_SSYJ },
|
||||
]);
|
||||
const queryFrom = ref({});
|
||||
const pageData = reactive({
|
||||
|
@ -103,8 +98,8 @@ const pageData = reactive({
|
|||
tableColumn: [
|
||||
{ label: "标签名称", prop: "bqMc" },
|
||||
{ label: "标签代码", prop: "bqDm" },
|
||||
{ label: "标签类型", prop: "bqLx",howSolt:true },
|
||||
{ label: "标签类别", prop: "bqLb",howSolt:true },
|
||||
{ label: "标签类型", prop: "bqLx",showSolt:true },
|
||||
{ label: "标签类别", prop: "bqLb",showSolt:true },
|
||||
{ label: "标签等级", prop: "bqDj",showSolt:true},
|
||||
{ label: "标签颜色", prop: "bqYs",showSolt:true},
|
||||
]
|
||||
|
@ -118,16 +113,6 @@ onMounted(() => {
|
|||
const chooseListType = (val) => {
|
||||
type.value = val;
|
||||
pageData.keyCount++;
|
||||
switch(val){
|
||||
case '标签大类':
|
||||
let obj1 = { label: "标签大类",prop:'sfbqdl' ,placeholder: "请输入标签大类", showType: "input"}
|
||||
searchConfiger.value.splice(0, 1, obj1);
|
||||
break;
|
||||
case '标签细类':
|
||||
let obj2 = { label: "标签细类",prop:'sfbqdl' ,placeholder: "请输入标签细类", showType: "input"}
|
||||
searchConfiger.value.splice(0, 1, obj2);
|
||||
break;
|
||||
}
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getList()
|
||||
};
|
||||
|
@ -152,18 +137,19 @@ const changeSize = (val) =>{
|
|||
|
||||
// 获取列表
|
||||
const getList = (val) =>{
|
||||
// pageData.tableConfiger.loading = true;
|
||||
// let data = { ...pageData.pageConfiger,...queryFrom.value };
|
||||
// qcckPost(data,'/mosty-gsxt/tbGsxtBqgl/selectPage').then(res=>{
|
||||
// pageData.tableData = res.records || [];
|
||||
// pageData.total = res.total;
|
||||
// pageData.tableConfiger.loading = false;
|
||||
// }).catch(()=>{ pageData.tableConfiger.loading = false; })
|
||||
pageData.tableConfiger.loading = true;
|
||||
let data = { ...pageData.pageConfiger,...queryFrom.value,bqLx:'01' };
|
||||
data.bqLb = type.value == '标签大类'? '01':'02'
|
||||
qcckGet(data,'/mosty-gsxt/tbGsxtBqgl/selectPage').then(res=>{
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total;
|
||||
pageData.tableConfiger.loading = false;
|
||||
}).catch(()=>{ pageData.tableConfiger.loading = false; })
|
||||
}
|
||||
// 删除
|
||||
const delDictItem = (id) =>{
|
||||
proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
|
||||
qcckPost({},'/mosty-gsxt/tbGsxtBqgl/'+id).then(()=>{
|
||||
qcckDelete({},'/mosty-gsxt/tbGsxtBqgl/'+id).then(()=>{
|
||||
proxy.$message({ type: "success", message: "删除成功" });
|
||||
getList();
|
||||
})
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form_cnt">
|
||||
<FormMessage :formData="formData" ref="elform" :rules="rules"></FormMessage>
|
||||
<FormMessage :formList="formData" ref="elform" :rules="rules"></FormMessage>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
Loading…
Reference in New Issue
Block a user