Parcourir la source

deploy

master
Soleilw il y a 11 mois
Parent
révision
62df80d0f0

dist/assets/index-DI_9j32K.js
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


dist/assets/index-DUAyzA4g.css
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 2
- 2
dist/index.html Voir le fichier

@@ -5,8 +5,8 @@
<link rel="icon" type="image/svg+xml" href="/logo_1.jpg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>菊城人才市场后台管理</title>
<script type="module" crossorigin src="/assets/index-DFiphGzz.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-cIDG0BDa.css">
<script type="module" crossorigin src="/assets/index-DI_9j32K.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DUAyzA4g.css">
</head>
<body>
<div id="app"></div>

+ 8
- 0
src/apis/models/index.ts Voir le fichier

@@ -245,3 +245,11 @@ export const GetFeePackageDetail = getModel(url.FeePackageDetail);

export const GetFeeOrderList = getModel(url.FeeOrderList);
export const GetFeeOrderDetail = getModel(url.FeeOrderDetail);


// 字典管理
export const PostDictAdd = postModel(url.DictAdd);
export const PostDictDel = postModel(url.DictDel);
export const PostDictUpdate = postModel(url.DictUpdate);
export const GetDictList = getModel(url.DictList);
export const GetDictDetail = getModel(url.DictDetail);

+ 6
- 0
src/apis/types/url.d.ts Voir le fichier

@@ -222,5 +222,11 @@ declare namespace urlType {

FeeOrderList : String,
FeeOrderDetail : String,
DictAdd: String, // 添加
DictDel: String, // 删除
DictUpdate: String, // 编辑
DictList: String, // 列表
DictDetail: String, // 详情
}
}

+ 7
- 0
src/apis/url.ts Voir le fichier

@@ -236,4 +236,11 @@ export const url : urlType.url = {
FeeOrderList: admin + '/fee/order_list', // 列表
FeeOrderDetail: admin + '/fee/order_info', // 详情
// 字典管理
DictAdd: common + '/dict/add', // 添加
DictDel: common + '/dict/del', // 删除
DictUpdate: common + '/dict/update', // 编辑
DictList: common + '/dict/list', // 列表
DictDetail: common + '/dict/detail', // 详情
}

+ 6
- 4
src/components/cTable/cTable.vue Voir le fichier

@@ -1,6 +1,6 @@
<template>
<a-table :data-source="data" :columns="columns" scrollToFirstRowOnChange :pagination="pagination"
@change="pageChange" bordered class="ant-table-striped" childrenColumnName="childs" rowKey="id" :indentSize="30"
@change="pageChange" bordered class="ant-table-striped" :childrenColumnName="childrenName" rowKey="id" :indentSize="30"
:expanded-row-keys="state.expandRowKeys"
:rowClassName="(record, index) => (index % 2 === 1 ? 'table-striped' : null)" :loading="loading"
:scroll="{ y: 600 }">
@@ -58,11 +58,12 @@

<script lang="ts" setup>
import { ref, onMounted, defineEmits, defineProps, watch } from 'vue';
let props = defineProps(['data', 'columns', 'pagination', 'loading']);
let props = defineProps(['data', 'columns', 'pagination', 'loading', 'childrenName']);
const emit = defineEmits();
let data = ref<Object[]>([])
let columns = ref<Object[]>([])
let loading = ref<Boolean>(props.loading);
let childrenName = ref<String>('childs');
let pagination = ref<CommonType.PageType>({
current: 1,
pageSize: 10,
@@ -71,12 +72,13 @@
hideOnSinglePage: false,
showSizeChanger: true
})
watch(() => [props.data, props.columns, props.pagination, props.loading],
watch(() => [props.data, props.columns, props.pagination, props.loading,props.childrenName],
(newVal, oldVal) => {
data.value = newVal[0];
columns.value = newVal[1];
pagination.value = newVal[2];
loading.value = newVal[3]
loading.value = newVal[3];
childrenName.value = newVal[4]
})

const pageChange = (val) => {

+ 32
- 1
src/router/dynamic.ts Voir le fichier

@@ -513,6 +513,37 @@ const FeedbackRoute : AppRouteRecordRaw = {
],
};

// 字典管理
const DictionaryRoute : AppRouteRecordRaw = {
path: '/dictionary',
name: 'dictionary',
component: routerList.Dictionary,
meta: {
title: '字典管理',
icon: SettingOutlined
},
children: [
// {
// path: '/activity/list',
// name: 'activityList',
// component: routerList.ActivityList,
// meta: {
// title: '活动列表',
// icon: HomeOutlined
// },
// },
{
path: '/dictionary/list',
name: 'dictionaryList',
component: routerList.DictionaryList,
meta: {
title: '字典列表',
icon: HomeOutlined
},
}
],
};

// 求职企业账号管理
// const CustomerRoute : AppRouteRecordRaw = {
// path: '/customer',
@@ -576,4 +607,4 @@ const BuyRoute : AppRouteRecordRaw = {
};


export const routesModuleList : AppRouteModule[] = [CompanyRoute,BuyRoute, JokSeekerRoute, JokFairRoute, InformationRoute, AdvertisementRoute, ActivityRoute, StatisticsRoute,PermissionRoute, SettingRoute, OtherRoute, FeedbackRoute];
export const routesModuleList : AppRouteModule[] = [CompanyRoute,BuyRoute, JokSeekerRoute, JokFairRoute, InformationRoute, AdvertisementRoute, ActivityRoute, StatisticsRoute,PermissionRoute, SettingRoute, DictionaryRoute,OtherRoute, FeedbackRoute];

+ 8
- 1
src/router/routerList.ts Voir le fichier

@@ -72,6 +72,11 @@ import Buy from '@/views/buy/index.vue';
import BuyPackage from '@/views/buy/package/index.vue';
import BuyOrder from '@/views/buy/order/index.vue';

// 字典
import Dictionary from '@/views/dictionary/index.vue';
import DictionaryList from '@/views/dictionary/list/index.vue';


export const routerList = {
Permission,
ROLE,
@@ -123,5 +128,7 @@ export const routerList = {
CustomerList,
Buy,
BuyPackage,
BuyOrder
BuyOrder,
Dictionary,
DictionaryList
}

+ 9
- 0
src/views/dictionary/index.vue Voir le fichier

@@ -0,0 +1,9 @@
<template>
<router-view></router-view>
</template>

<script>
</script>

<style>
</style>

+ 13
- 0
src/views/dictionary/list/add/add.d.ts Voir le fichier

@@ -0,0 +1,13 @@
declare namespace DictionaryListType {
type addFormType = {
code?: String,
parent_id?: Number,
name?: String,
sort_number?: String,
display?: String,
childs?: Object,
}
type addOtherFormType = {
}
}

+ 111
- 0
src/views/dictionary/list/add/add.vue Voir le fichier

@@ -0,0 +1,111 @@
<template>
<a-modal v-model:visible="openAddModel" :title="title" ok-text="提交" cancel-text="取消" @ok="sumbitForm"
@cancel="cancelModal" width="50%">
<a-form :model="createForm" :label-col="{span: 4}" labelAlign="right">
<a-row gutter="20">
<a-col span="24">
<a-form-item required label="代码名称" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入代码名称" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="代码code" name="code">
<a-input v-model:value="createForm.code" placeholder="请输入代码code" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="代码值" name="value">
<a-input v-model:value="createForm.value" placeholder="请输入代码值" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="是否显示" name="display">
<a-radio-group v-model:value="createForm.display" @change="displayChange">
<a-radio value="S">是</a-radio>
<a-radio value="H">否</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>

<script setup lang="ts">
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue';
import { PostDictAdd, PostDictUpdate } from '@/apis/models';
import { dataForm, otherDataForm, reset } from '@/views/dictionary/list/add/data.js';
import { useCommon } from '@/hooks/useCommon';
let { store, openAddModel, hideModal, message, richOption } = useCommon();
const emit = defineEmits();
let props = defineProps(['edit_record', 'level_record']);
let title = ref<String>('新增字典');

let createForm = ref<DictionaryListType.addFormType>(dataForm)


const sumbitForm = () => {
console.log(createForm.value)
if (!createForm.value.id) {
PostDictAdd(createForm.value).then(res => {
message.success('创建字典成功');
hideModal();
resetForm();
emit('successAdd');
}).catch(err => {
})
} else {
PostDictUpdate(createForm.value).then(res => {
message.success('修改字典成功');
hideModal();
resetForm();
emit('successAdd');
}).catch(err => {
})
}
}

const resetForm = () => {
createForm.value = reset().dataForm;
}
const cancelModal = () => {
emit('closeAdd');
resetForm();
hideModal();
}


openAddModel = computed(() => {
return store.state.openAddModel;
})

watch(() => [props.edit_record, props.level_record], (newVal) => {
if (newVal[0]) {
console.log(newVal[0])
title.value = '编辑字典';
createForm.value = {
id: newVal[0].id,
code: newVal[0].code,
name: newVal[0].name,
display: newVal[0].display,
childs: newVal[0].childs,
parent_id: newVal[0].ParentId,
value: newVal[0].value,
}
} else if (newVal[1]) {
title.value = "添加子级";
if (newVal[1].parent_id == -1) {
createForm.value.parent_id = newVal[1].id
} else {
createForm.value.parent_id = newVal[1].id
}
} else {
title.value = '编辑字典';
}
})
</script>

<style>

</style>

+ 27
- 0
src/views/dictionary/list/add/data.ts Voir le fichier

@@ -0,0 +1,27 @@

export let dataForm = {
code: '',
parent_id: -1,
name: '',
value: '',
display: '',
childs: null,
}

export let otherDataForm = {
}

export const reset = () => {
dataForm = {
code: '',
parent_id: -1,
name: '',
value: '',
display: '',
childs: null,
};
otherDataForm = {
}

return { dataForm, otherDataForm }
}

+ 21
- 0
src/views/dictionary/list/columns/index.ts Voir le fichier

@@ -0,0 +1,21 @@
export const cols = <ColType.type[]>[
{
title: '代码名称',
dataIndex: 'name'
},
{
title: '代码code',
dataIndex: 'code'
},
{
title: '代码值',
dataIndex: 'value'
},
{
title: '操作',
dataIndex: 'operation',
slots: {
customRender: 'operation'
}
}
];

+ 119
- 0
src/views/dictionary/list/index.vue Voir le fichier

@@ -0,0 +1,119 @@
<template>
<list-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></list-search>
<a-c-operation @refresh="clearData">
</a-c-operation>
<a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page"
@page="getPage" :loading="loading" childrenName="children">
<template #default="{ record }">
<a-row :gutter="10">
<a-col><a-button type="primary" size="small" primary @click="edit(record)">编辑</a-button></a-col>
<a-col><a-button type="primary" size="small" primary
@click="addLevel(record)">添加子级</a-button></a-col>
<a-popconfirm title="是否删除该子级?" @confirm="del(record.id)">
<a-col><a-button v-if="record.parent_id != -1" type="primary" size="small" danger>删除</a-button></a-col>
</a-popconfirm>
</a-row>
</template>
</a-c-table>
<list-add :edit_record="edit_record" :level_record="level_record" @successAdd="successAdd"
@closeAdd="closeAdd"></list-add>
</template>
<script lang="ts" setup>
import { ref, onMounted, watch, computed } from 'vue';
import ListSearch from '@/views/dictionary/list/search/index.vue';
import ListAdd from '@/views/dictionary/list/add/add.vue';
import { GetDictList, GetDictDetail, PostDictDel } from '@/apis/models';
import { useCommon } from '@/hooks/useCommon';
import { cols } from '@/views/dictionary/list/columns';
let { store, commomParams, showModal, showOtherModal1, message } = useCommon();
let loading = ref<Boolean>(true);
onMounted(() => {
commomParams.value.search.show_childs = true;
commomParams.value.search.parent_id = -1;
getData(commomParams.value.search);
})

const searchData = (data : object) => {
commomParams.value.search = data
getData();
}

const clearData = (data : object) => {
if (data) {
commomParams.value.search = data
} else {
commomParams.value.search = {
page: 1,
pagesize: 10,
sort: 'id',
sortby: 'asc',
keyword: '',
parent_id: -1,
show_childs: true
}
}
getData();
}


const getPage = (data : object) => {
commomParams.value.search.page = data.current;
commomParams.value.search.pagesize = data.pageSize;
getData();
}
const getData = async () => {
try {
loading.value = true;
let res = await GetDictList(commomParams.value.search);
loading.value = false;
commomParams.value.table.data = res.data.dicts;
commomParams.value.table.columns = cols;
commomParams.value.page = {
current: commomParams.value.search.page,
pageSize: commomParams.value.search.pagesize,
total: res.data.total,
pageSizeOptions: ['10', '20', '30', '40'],
hideOnSinglePage: false,
showSizeChanger: true
};
} catch {
loading.value = false;
}
}
// 编辑
let edit_record = ref<Object>(null)
const edit = (record : object) => {
edit_record.value = record;
showModal()
}
// 添加下级
let level_record = ref<Object>(null)
const addLevel = (record) => {
level_record.value = record;
showModal()
}
const successAdd = () => {
getData();
}
const closeAdd = () => {
edit_record.value = null;
}


// 删除
const del = (id : number) => {
commomParams.value.delRecord = { id: id };
PostDictDel(commomParams.value.delRecord).then(res => {
message.success('删除成功');
getData();
})
}

</script>

<style lang="less" scoped>

</style>

+ 68
- 0
src/views/dictionary/list/search/index.vue Voir le fichier

@@ -0,0 +1,68 @@
<template>
<a-drawer :width="500" title="搜索" placement="right" :open="openSearchModel" @close="onClose">
<template #extra>
<a-button style="margin-right: 8px" @click="clearSearch">清空搜索</a-button>
<a-button type="primary" @click="getData">搜索</a-button>
</template>
<a-form :model="commomParams.search">
<a-row :gutter="[10]">
<a-col span="24">
<a-form-item>
<a-input addon-before="关键字" v-model:value="commomParams.search.keyword"
placeholder="请输入关键字" @keyup.enter="getData"/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-drawer>
</template>

<script lang="ts" setup>
import { ref, onMounted, watch, computed } from 'vue';
import { useCommon } from '@/hooks/useCommon';
let { store, commomParams, openSearchModel, hideSearch } = useCommon();
let props = defineProps(['search_params']);
const emit = defineEmits();

openSearchModel = computed(() => {
return store.state.openSearchModel;
})


// watch(() => props.search_params, (newVal) => {
// emit('searchData', commomParams.value.search)
// })
interface listType {
parent_id ?: Number
}
commomParams.value.search = commomParams.value.search as listType;
commomParams.value.search.parent_id = -1;
commomParams.value.search.show_childs = true;

const getData = () => {
emit('searchData', commomParams.value.search);
hideSearch()
}

// 清空搜索
const clearSearch = () => {
commomParams.value.search = {
page: 1,
pagesize: 10,
sort: 'id',
sortby: 'asc',
keyword: ''
}
emit('clearData', commomParams.value.search);
hideSearch()
}

const onClose = () => {
clearSearch()
hideSearch()
}
</script>

<style>
</style>

+ 2
- 2
src/views/permission/list/add/add.vue Voir le fichier

@@ -71,8 +71,8 @@
let cascaderParentId = ref([]);
const listFieldNames = ref({ label: 'name', value: 'id', children: 'childs' });

let createForm = ref<companyDepartmentType.addFormType>(dataForm)
let addOtherForm = ref<companyDepartmentType.addOtherFormType>(otherDataForm)
let createForm = ref<accountType.addAccountType>(dataForm)
let addOtherForm = ref<accountType.addAccountType>(otherDataForm)

onMounted(() => {
getPermissionListWithchilds({ page: 1, pagesize: 999 }).then(res => {

Chargement…
Annuler
Enregistrer