用户管理

main
siontion 6 months ago
parent bcb21b93cd
commit 0d11e6a80d

@ -36,3 +36,20 @@ export const getEipSupplierWoSimpList = async () => {
return res
})
}
export const getUser = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/GetUser`, data })
}
export const saveUser = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/SaveUser`, data })
}
export const editUser = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/EditUser`, data })
}
export const getUserPagingList = async (data: any) => {
return await request
.post({ url: `/DistributionBoxTesting/GetPagingUserList`, data })
.then((res) => {
return res
})
}

@ -49,6 +49,7 @@ const zh_CN = {
baseComposition: '材质',
baseVoltage: '电压等级',
baseEntityID: '实物ID',
user:'用户'
}
}

@ -46,6 +46,7 @@ import BaseMaterialView from '../views/Gw/baseMaterial/BaseMaterial.vue'
import BaseSupplierView from '../views/Gw/baseSupplier/BaseSupplier.vue'
import BaseVoltageView from '../views/Gw/baseVoltage/BaseVoltage.vue'
import BaseEntityIDView from '../views/Gw/baseEntityID/BaseEntityID.vue'
import UserView from '../views/Gw/user/User.vue'
// 其它
import { useUserStore } from '@/stores/user'
import { storeToRefs } from 'pinia'
@ -275,6 +276,11 @@ const router = createRouter({
path: 'base-entity-id',
name: 'baseEntityID',
component: BaseEntityIDView
},
{
path: 'user',
name: 'user',
component: UserView
}
]
}

@ -39,6 +39,7 @@ const items: any = ref([
{ title: '材质', name: 'baseComposition', iconfont: 'iconfont icon-jixiecaozuo' },
{ title: '电压等级', name: 'baseVoltage', iconfont: 'iconfont icon-jixiecaozuo' },
{ title: '实物ID', name: 'baseEntityID', iconfont: 'iconfont icon-jixiecaozuo' },
{ title: '用户', name: 'user', iconfont: 'iconfont icon-jixiecaozuo' },
]
}
])

@ -0,0 +1,167 @@
<template>
<div class="xyp-bi-lei-qi">
<a-card :bordered="false" style="margin: 10px">
<vxe-grid ref="xGrid" :stripe="true" v-bind="gridOptionsA">
<template #toolbar_buttons>
<vxe-button status="success" icon="vxe-icon-add" @click="fnUserForm('add')"></vxe-button>
</template>
<template #operate="{ row }">
<vxe-button type="text" status="primary" content="修改密码" icon="vxe-icon-edit"
@click="fnUserForm('edit', row)"></vxe-button>
</template>
<template #slotManufactureDate="{ row }">
{{ dayjs(row.ManufactureDate).format("YYYY-MM-DD") }}
</template>
<template #slotIncomDate="{ row }">
{{ dayjs(row.IncomDate).format("YYYY-MM-DD") }}
</template>
<template #slotIsAlarmData="{ row }">
<template v-if="row.IsAlarmData == 1"><span style="color:green"></span></template>
<template v-else><span style="color:red">不是</span></template>
</template>
<template #slotIsQualify="{ row }">
<template v-if="row.IsQualify == 1"><span style="color:green"></span></template>
<template v-else><span style="color:red">不合格</span></template>
</template>
</vxe-grid>
</a-card>
</div>
<UserForm ref="refUserForm" @success="proxyReload" />
</template>
<script lang="ts" setup name="User">
import { onMounted, ref, reactive, h } from 'vue';
import * as comApi from '@/api/gw/com'
import UserForm from './UserForm.vue'
import { map as _map } from 'lodash'
const xGrid = ref()
const gridOptionsA: any = reactive({
columns: [
{ field: 'UserName', title: '用户名' },
{ title: '操作', width: 160, fixed: 'right', slots: { default: 'operate' } }
],
pagerConfig: {
enabled: true,
total: 0,
currentPage: 1,
pageSize: 10,
pageSizes: [10, 20, 50, 100, 200, 500]
},
sortConfig: {
trigger: 'cell',
remote: true
},
formConfig: {
titleWidth: 160,
titleAlign: 'right',
items: [
{ field: 'UserName', title: '用户名', span: 8, itemRender: { name: '$input', props: { placeholder: '请输入用户名' } } },
// { field: 'PoNo', title: '', span: 8, itemRender: { name: '$input', props: { placeholder: '' } } },
// { field: 'PoItemId', title: 'id', span: 8, itemRender: { name: '$input', props: { placeholder: '' } } },
{ span: 24, align: 'center', collapseNode: true, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '查询', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
]
},
toolbarConfig: {
refresh: true, //
// import: true, //
// export: true, //
// print: true, //
zoom: true, //
custom: true, //
slots: {
buttons: 'toolbar_buttons'
}
},
proxyConfig: {
seq: true, //
sort: true, // query
filter: true, // query
form: true, // reload
props: {
// Promise<{ result: [], page: { total: 100 } }>
result: 'List', //
total: 'Total' //
},
// Promise
ajax: {
// queryreload
query: async ({ page, sorts, filters, form }: any) => {
const queryParamsA: any = reactive({
currentPage: page.currentPage,
pageSize: page.pageSize,
filter: {
"logic": 0,
"filters": _map(form, (o1: any, k1: any) => {
return {
"field": k1,
"operator": 0,
"value": o1
}
})
}
})
if (sorts.length > 0) {
queryParamsA.orderBy = _map(sorts, (o1) => {
let isAscending = false;
if (o1.order == "asc") {
isAscending = true;
}
return {
"field": o1.field,
"isAscending": (() => {
return o1.order == "asc"
})()
}
})
}
const data = await comApi.getUserPagingList(queryParamsA)
return data
// //
// const firstSort = sorts[0]
// if (firstSort) {
// queryParams.sort = firstSort.field
// queryParams.order = firstSort.order
// }
// //
// filters.forEach(({ field, values }) => {
// queryParams[field] = values.join(',')
// })
// return fetch(`${serveApiUrl}/api/pub/page/list/${page.pageSize}/${page.currentPage}?${XEUtils.serialize(queryParams)}`).then(response => response.json())
},
// delete
delete: ({ body }:any) => { },
// save
save: ({ body }:any) => { },
add: ({ body }: any) => {
},
}
}
})
//
const proxyReload = () => {
const $grid = xGrid.value
if ($grid) {
$grid.commitProxy('reload')
}
}
// ref
const refUserForm = ref()
//
const fnUserForm = async (type: string, row?: any) => {
refUserForm.value.open(type, row)
}
//
onMounted(() => {
})
</script>
<style scoped>
.xyp-bi-lei-qi {
width: 100%;
height: 100%;
}
</style>

@ -0,0 +1,150 @@
<template>
<vxe-modal class-name="csty-bi-lei-qi-form" v-model="refShow" width="800" height="360" show-zoom show-footer
:mask-closable=true>
<template #title>
<span style="color:#ffffff">{{ modalTitle }}</span>
</template>
<template #default>
<a-card :bordered="false">
<vxe-form title-colon ref="refFormA" title-align="right" title-width="150" :data="formDataA"
:rules="formRulesA" @submit="fnSubmitA">
<vxe-form-gather span="24">
<vxe-form-item span="24">
<template #default="params">
<div
style="font-size: larger;border-bottom: solid 1px #606266;padding: 0px 0px 5px 0px;">
用户信息
</div>
</template>
</vxe-form-item>
</vxe-form-gather>
<vxe-form-gather span="24">
<vxe-form-item title="用户名" field="UserName" span="20">
<template #default="params">
<vxe-input v-model="params.data.UserName" placeholder="请输入用户名" clearable :disabled="formTypeA == add"
@change="fnChangeA(params)"></vxe-input>
</template>
</vxe-form-item>
<vxe-form-item title="新密码" field="Password" span="24">
<template #default="params">
<vxe-input v-model="params.data.Password" placeholder="请输入新密码" clearable
@change="fnChangeA(params)"></vxe-input>
</template>
</vxe-form-item>
</vxe-form-gather>
</vxe-form>
</a-card>
</template>
<template #footer>
<vxe-button type="submit" status="primary" content="保存" @click="fnSubmitA"></vxe-button>
<vxe-button type="reset" content="取消" @click="fnEventCancel"></vxe-button>
</template>
</vxe-modal>
</template>
<script lang="ts" setup name="BiLeiQiForm">
import { ref, onMounted, computed } from 'vue'
import { map as _map } from 'lodash'
import { VXETable } from 'vxe-table'
import * as comApi from '@/api/gw/com'
// [success]
const emit = defineEmits(['success'])
//
const refShow = ref(false)
//
const modalTitle = ref('未知表单')
//
const refFormA = ref()
// [add - |update - |del - ]
const formTypeA: any = ref('')
// A -
const formDataAInit: any = {
Id: 0,
UserName: "",
Password: ""
}
const fnChangeA = (params: any) => {
const $form = refFormA.value
if ($form) {
$form.updateStatus(params)
}
}
//
const formDataA: any = ref(formDataAInit)
//
const formRulesA: any = ref({
Password: [
{ required: true, message: '密码不能为空' }
]
})
//
onMounted(() => {
})
//
const open = async (type: string, row?: any) => {
formTypeA.value = type
await fnResetA()
switch (type) {
case 'add':
refShow.value = true
modalTitle.value = '添加用户'
break;
case 'edit':
refShow.value = true
modalTitle.value = '修改密码'
const paramsA = {
"filter": {
"field": "ID",
"operator": "Eq",
"value": row.ID
}
}
const rowInfoA = await comApi.getUser(paramsA)
console.log(rowInfoA)
formDataA.value = rowInfoA.Data
break;
}
}
//
const fnSubmitA = async () => {
switch (formTypeA.value) {
case 'add':
const paramsA = {
data: formDataA.value
}
await comApi.saveUser(paramsA)
VXETable.modal.message({ content: '新增成功', status: 'success' })
break;
case 'edit':
let setVal: any = _map(formDataA.value, (o1, k1) => {
return { field: k1, value: o1 }
})
const paramsB = {
filter: {
field: 'ID',
value: formDataA.value.ID
},
set: setVal
}
await comApi.editUser(paramsB)
VXETable.modal.message({ content: '修改成功', status: 'success' })
break;
}
refShow.value = false
emit('success')
}
// open
defineExpose({ open })
//
const fnResetA = () => {
formDataA.value = formDataAInit
}
//
const fnEventCancel = () => {
refShow.value = false
}
</script>
<style scoped></style>
Loading…
Cancel
Save