Browse Source

BUG修改

master
yejiaxing 10 months ago
parent
commit
626e449cea
  1. 52
      src/utils/dict.ts
  2. 1
      src/views/eam/basic/item/index.vue
  3. 3
      src/views/eam/item/itemApplyMain/index.vue
  4. 194
      src/views/eam/item/itemApplyMain/itemApplyMain.data.ts
  5. 368
      src/views/system/dept/DeptForm.vue

52
src/utils/dict.ts

@ -13,21 +13,21 @@ const dictStore = useDictStoreWithOut()
* @returns {*|Array} * @returns {*|Array}
*/ */
export interface DictDataType { export interface DictDataType {
dictType: string dictType : string
label: string label : string
value: string | number | boolean value : string | number | boolean
colorType: ElementPlusInfoType | '' colorType : ElementPlusInfoType | ''
cssClass: string cssClass : string
} }
export const getDictOptions = (dictType: string) => { export const getDictOptions = (dictType : string) => {
return dictStore.getDictByType(dictType) || [] return dictStore.getDictByType(dictType) || []
} }
export const getIntDictOptions = (dictType: string) => { export const getIntDictOptions = (dictType : string) => {
const dictOption: DictDataType[] = [] const dictOption : DictDataType[] = []
const dictOptions: DictDataType[] = getDictOptions(dictType) const dictOptions : DictDataType[] = getDictOptions(dictType)
dictOptions.forEach((dict: DictDataType) => { dictOptions.forEach((dict : DictDataType) => {
dictOption.push({ dictOption.push({
...dict, ...dict,
value: parseInt(dict.value + '') value: parseInt(dict.value + '')
@ -36,10 +36,10 @@ export const getIntDictOptions = (dictType: string) => {
return dictOption return dictOption
} }
export const getStrDictOptions = (dictType: string) => { export const getStrDictOptions = (dictType : string) => {
const dictOption: DictDataType[] = [] const dictOption : DictDataType[] = []
const dictOptions: DictDataType[] = getDictOptions(dictType) const dictOptions : DictDataType[] = getDictOptions(dictType)
dictOptions.forEach((dict: DictDataType) => { dictOptions.forEach((dict : DictDataType) => {
dictOption.push({ dictOption.push({
...dict, ...dict,
value: dict.value + '' value: dict.value + ''
@ -48,10 +48,10 @@ export const getStrDictOptions = (dictType: string) => {
return dictOption return dictOption
} }
export const getBoolDictOptions = (dictType: string) => { export const getBoolDictOptions = (dictType : string) => {
const dictOption: DictDataType[] = [] const dictOption : DictDataType[] = []
const dictOptions: DictDataType[] = getDictOptions(dictType) const dictOptions : DictDataType[] = getDictOptions(dictType)
dictOptions.forEach((dict: DictDataType) => { dictOptions.forEach((dict : DictDataType) => {
dictOption.push({ dictOption.push({
...dict, ...dict,
value: dict.value + '' === 'true' value: dict.value + '' === 'true'
@ -66,8 +66,8 @@ export const getBoolDictOptions = (dictType: string) => {
* @param value * @param value
* @return DictDataType * @return DictDataType
*/ */
export const getDictObj = (dictType: string, value: any): DictDataType | undefined => { export const getDictObj = (dictType : string, value : any) : DictDataType | undefined => {
const dictOptions: DictDataType[] = getDictOptions(dictType) const dictOptions : DictDataType[] = getDictOptions(dictType)
for (const dict of dictOptions) { for (const dict of dictOptions) {
if (dict.value === value + '') { if (dict.value === value + '') {
return dict return dict
@ -82,10 +82,10 @@ export const getDictObj = (dictType: string, value: any): DictDataType | undefin
* @param value * @param value
* @return * @return
*/ */
export const getDictLabel = (dictType: string, value: any): string => { export const getDictLabel = (dictType : string, value : any) : string => {
const dictOptions: DictDataType[] = getDictOptions(dictType) const dictOptions : DictDataType[] = getDictOptions(dictType)
const dictLabel = ref('') const dictLabel = ref('')
dictOptions.forEach((dict: DictDataType) => { dictOptions.forEach((dict : DictDataType) => {
if (dict.value === value + '') { if (dict.value === value + '') {
dictLabel.value = dict.label dictLabel.value = dict.label
} }
@ -277,7 +277,7 @@ export enum DICT_TYPE {
DEVICE_MOLD_TYPE = 'device_mold_type', // 设备/模具类型 DEVICE_MOLD_TYPE = 'device_mold_type', // 设备/模具类型
TRANSACTION_TYPE = 'transaction_Type', // 事务类型 TRANSACTION_TYPE = 'transaction_Type', // 事务类型
RESULT = 'result', // 事务类型 RESULT = 'result', // 事务类型
REQUEST_APPLY = 'class_type', // 班组类型
} }

1
src/views/eam/basic/item/index.vue

@ -147,7 +147,6 @@
} }
/** 添加设备操作 */ /** 添加设备操作 */
// (titleName: any, allSchemas: any,getApiPage: any, formField: any, searchField: any,multiple: any, type: any, row: any, searchCondition:any , isCountRequestRe:any ) // (titleName: any, allSchemas: any,getApiPage: any, formField: any, searchField: any,multiple: any, type: any, row: any, searchCondition:any , isCountRequestRe:any )
const searchTableRef = ref() const searchTableRef = ref()
const selectDevice = (row) => { const selectDevice = (row) => {

3
src/views/eam/item/itemApplyMain/index.vue

@ -76,7 +76,8 @@
// //
row[formField] = val[0][searchField] row[formField] = val[0][searchField]
row['itemNumber'] = val[0]['number'] row['itemNumber'] = val[0]['number']
row['isRadeIn'] = val[0]['isRadeIn']
row['available'] = val[0]['available']
}else { }else {
const setV = {} const setV = {}
setV[formField] = val[0][searchField] setV[formField] = val[0][searchField]

194
src/views/eam/item/itemApplyMain/itemApplyMain.data.ts

@ -1,10 +1,7 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import { Item } from '@/views/eam/basic/item/item.data' import { Item } from '@/views/eam/basic/item/item.data'
import * as ItemApi from '@/api/eam/basic/item' import * as ItemApi from '@/api/eam/basic/item'
import { validateHanset, validateEmail } from '@/utils/validator' import { validateHanset, validateEmail } from '@/utils/validator'
const { t } = useI18n() // 国际化 const { t } = useI18n() // 国际化
@ -16,109 +13,39 @@ export const ItemApplyMain = useCrudSchemas(reactive<CrudSchema[]>([
label: '申请编号', label: '申请编号',
field: 'number', field: 'number',
sort: 'custom', sort: 'custom',
isForm: false,
isSearch: true, isSearch: true,
}, table: {
{ width: 180,
label: '描述', fixed: 'left'
field: 'name',
sort: 'custom',
},
{
label: '维修申领、以旧换新',
field: 'type',
sort: 'custom',
form: {
component: 'Select'
}, },
}, },
{ {
label: '申领人id', label: '申领人',
field: 'applyId', field: 'applyId',
sort: 'custom', sort: 'custom',
form: { isForm: false,
component: 'InputNumber', isSearch: true,
value: 0
},
},
{
label: '申领人部门id',
field: 'applyDeptId',
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
},
}, },
{ {
label: '审批人id', label: '审批人',
field: 'approveId', field: 'approveId',
sort: 'custom', sort: 'custom',
form: { isForm: false,
component: 'InputNumber', isSearch: true,
value: 0
},
},
{
label: '审批时间',
field: 'approveTime',
sort: 'custom',
formatter: dateFormatter,
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
}, },
{ {
label: '出库人id', label: '出库人',
field: 'outId', field: 'outId',
sort: 'custom', sort: 'custom',
form: { isForm: false,
component: 'InputNumber',
value: 0
},
},
{
label: '出库时间',
field: 'outTime',
sort: 'custom',
formatter: dateFormatter,
isSearch: true, isSearch: true,
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
}, },
{ {
label: '创建时间', label: '描述',
field: 'createTime', field: 'name',
sort: 'custom', sort: 'custom',
formatter: dateFormatter,
isSearch: true,
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
isForm: false,
}, },
{ {
label: '是否可用', label: '是否可用',
field: 'available', field: 'available',
@ -144,7 +71,6 @@ export const ItemApplyMain = useCrudSchemas(reactive<CrudSchema[]>([
} }
} }
}, },
{ {
label: '操作', label: '操作',
field: 'action', field: 'action',
@ -158,8 +84,8 @@ export const ItemApplyMain = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验 //表单校验
export const ItemApplyMainRules = reactive({ export const ItemApplyMainRules = reactive({
type: [ name: [
{ required: true, message: '请选择订单类型', trigger: 'change' } { required: true, message: '请填写描述', trigger: 'change' }
], ],
remark: [ remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' } { max: 50, message: '不得超过50个字符', trigger: 'blur' }
@ -193,17 +119,50 @@ export const ItemApplyDetail = useCrudSchemas(reactive<CrudSchema[]>([
] ]
}, },
}, },
{ {
label: '备注', label: '数量',
field: 'remark', field: 'qty',
sort: 'custom',
table: { table: {
width: 150 width: 150
}, },
form: {
component: 'InputNumber',
componentProps: {
min: 1,
precision: 6
}
},
tableForm: {
type: 'InputNumber',
min: 1,
precision: 6
}
},
{
label: '库存数量',
field: 'currentQty',
sort: 'custom',
table: {
width: 150
},
form: {
component: 'InputNumber',
componentProps: {
min: 1,
precision: 6
}
},
tableForm: {
type: 'InputNumber',
min: 1,
precision: 6
}
}, },
{ {
label: '是否可用', label: '是否可用',
field: 'available', field: 'available',
sort: 'custom',
dictType: DICT_TYPE.TRUE_FALSE, dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string', dictClass: 'string',
isSearch: true, isSearch: true,
@ -213,42 +172,35 @@ export const ItemApplyDetail = useCrudSchemas(reactive<CrudSchema[]>([
}, },
tableForm: { tableForm: {
type: 'Select', type: 'Select',
default: 'TRUE', disabled: true
inactiveValue: 'FALSE',
activeValue: 'TRUE'
},
form: {
component: 'Switch',
value: 'TRUE',
componentProps: {
inactiveValue: 'FALSE',
activeValue: 'TRUE'
}
} }
}, },
{ {
label: '创建时间', label: '是否以旧换新',
field: 'createTime', field: 'isRadeIn',
sort: 'custom',
dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string',
isSearch: true,
isTable: true, isTable: true,
isTableForm: false,
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
table: { table: {
width: 180 width: 150
}, },
isForm: false, tableForm: {
form: { type: 'Select',
component: 'DatePicker', disabled: true
componentProps: {
style: { width: '100%' },
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x',
}
} }
}, },
{
label: '备注',
field: 'remark',
table: {
width: 150
},
},
{ {
label: '操作', label: '操作',
field: 'action', field: 'action',

368
src/views/system/dept/DeptForm.vue

@ -1,199 +1,181 @@
<template> <template>
<Dialog v-model="dialogVisible" :title="dialogTitle"> <Dialog v-model="dialogVisible" :title="dialogTitle">
<el-form <el-form
ref="formRef" ref="formRef"
v-loading="formLoading" v-loading="formLoading"
:model="formData" :model="formData"
:rules="formRules" :rules="formRules"
label-width="150px" label-width="150px"
> >
<el-form-item label="上级部门" prop="parentId"> <el-form-item label="上级部门" prop="parentId">
<el-tree-select <el-tree-select
v-model="formData.parentId" v-model="formData.parentId"
:data="deptTree" :data="deptTree"
:props="defaultProps" :props="defaultProps"
check-strictly check-strictly
default-expand-all default-expand-all
placeholder="请选择上级部门" placeholder="请选择上级部门"
value-key="deptId" value-key="deptId"
/> />
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="name"> <el-form-item label="部门名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入部门名称" /> <el-input v-model="formData.name" placeholder="请输入部门名称" />
</el-form-item> </el-form-item>
<el-form-item label="显示排序" prop="sort"> <el-form-item label="显示排序" prop="sort">
<el-input-number v-model="formData.sort" :min="0" controls-position="right" /> <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderUserId"> <el-form-item label="负责人" prop="leaderUserId">
<el-select v-model="formData.leaderUserId" clearable placeholder="请输入负责人"> <el-select v-model="formData.leaderUserId" clearable placeholder="请输入负责人">
<el-option <el-option
v-for="item in userList" v-for="item in userList"
:key="item.id" :key="item.id"
:label="item.nickname" :label="item.nickname"
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="phone"> <el-form-item label="联系电话" prop="phone">
<el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" /> <el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />
</el-form-item> </el-form-item>
<el-form-item label="邮箱" prop="email"> <el-form-item label="邮箱" prop="email">
<el-input v-model="formData.email" maxlength="50" placeholder="请输入邮箱" /> <el-input v-model="formData.email" maxlength="50" placeholder="请输入邮箱" />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select v-model="formData.status" clearable placeholder="请选择状态"> <el-select v-model="formData.status" clearable placeholder="请选择状态">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否设备维修班组" prop="isDeviceClass"> <el-form-item label="班组类型" prop="classType"> <el-select v-model="formData.classType" clearable placeholder="请选择班组类型"> <el-option v-for="dict in getIntDictOptions(DICT_TYPE.REQUEST_APPLY)" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item>
<el-select v-model="formData.isDeviceClass" clearable placeholder="请选择是否设备维修班组">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否模具维修班组" prop="isMoldClass">
<el-select v-model="formData.isMoldClass" clearable placeholder="请选择是否模具维修班组"> </el-form>
<el-option <template #footer>
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" <el-button type="primary" @click="submitForm"> </el-button>
:key="dict.value" <el-button @click="dialogVisible = false"> </el-button>
:label="dict.label" </template>
:value="dict.value" </Dialog>
/> </template>
</el-select> <script lang="ts" setup>
</el-form-item> import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
</el-form> import { defaultProps, handleTree } from '@/utils/tree'
<template #footer> import * as DeptApi from '@/api/system/dept'
<el-button type="primary" @click="submitForm"> </el-button> import * as UserApi from '@/api/system/user'
<el-button @click="dialogVisible = false"> </el-button> import { CommonStatusEnum } from '@/utils/constants'
</template>
</Dialog> defineOptions({ name: 'SystemDeptForm' })
</template>
<script lang="ts" setup> const { t } = useI18n() //
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' const message = useMessage() //
import { defaultProps, handleTree } from '@/utils/tree'
import * as DeptApi from '@/api/system/dept' const dialogVisible = ref(false) //
import * as UserApi from '@/api/system/user' const dialogTitle = ref('') //
import { CommonStatusEnum } from '@/utils/constants' const formLoading = ref(false) // 12
const formType = ref('') // create - update -
defineOptions({ name: 'SystemDeptForm' }) const formData = ref({
id: undefined,
const { t } = useI18n() // title: '',
const message = useMessage() // parentId: undefined,
name: undefined,
const dialogVisible = ref(false) // sort: undefined,
const dialogTitle = ref('') // leaderUserId: undefined,
const formLoading = ref(false) // 12 phone: undefined,
const formType = ref('') // create - update - email: undefined,
const formData = ref({
id: undefined,
title: '',
parentId: undefined,
name: undefined,
sort: undefined,
leaderUserId: undefined,
phone: undefined,
email: undefined,
status: CommonStatusEnum.ENABLE, status: CommonStatusEnum.ENABLE,
isDeviceClass: CommonStatusEnum.DISABLE, classType: undefined,
isMoldClass: CommonStatusEnum.DISABLE, })
}) const formRules = reactive({
const formRules = reactive({ parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }],
parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }], name: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
name: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }], sort: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }],
sort: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }], email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }],
email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }], phone: [
phone: [ { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' }
{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' } ],
], status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }] classType: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
const deptTree = ref() // const deptTree = ref() //
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (type: string, id?: number) => {
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = t('action.' + type) dialogTitle.value = t('action.' + type)
formType.value = type formType.value = type
resetForm() resetForm()
// //
if (id) { if (id) {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await DeptApi.getDept(id) formData.value = await DeptApi.getDept(id)
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
} }
// //
userList.value = await UserApi.getSimpleUserList() userList.value = await UserApi.getSimpleUserList()
// //
await getTree() await getTree()
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 提交表单 */ /** 提交表单 */
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = async () => { const submitForm = async () => {
// //
if (!formRef) return if (!formRef) return
const valid = await formRef.value.validate() const valid = await formRef.value.validate()
if (!valid) return if (!valid) return
// //
formLoading.value = true formLoading.value = true
try { try {
const data = formData.value as unknown as DeptApi.DeptVO const data = formData.value as unknown as DeptApi.DeptVO
if (formType.value === 'create') { if (formType.value === 'create') {
await DeptApi.createDept(data) await DeptApi.createDept(data)
message.success(t('common.createSuccess')) message.success(t('common.createSuccess'))
} else { } else {
await DeptApi.updateDept(data) await DeptApi.updateDept(data)
message.success(t('common.updateSuccess')) message.success(t('common.updateSuccess'))
} }
dialogVisible.value = false dialogVisible.value = false
// //
emit('success') emit('success')
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
} }
/** 重置表单 */ /** 重置表单 */
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
id: undefined, id: undefined,
title: '', title: '',
parentId: undefined, parentId: undefined,
name: undefined, name: undefined,
sort: undefined, sort: undefined,
leaderUserId: undefined, leaderUserId: undefined,
phone: undefined, phone: undefined,
email: undefined, email: undefined,
status: CommonStatusEnum.ENABLE, status: CommonStatusEnum.ENABLE,
isDeviceClass: CommonStatusEnum.DISABLE, isDeviceClass: CommonStatusEnum.DISABLE,
isMoldClass: CommonStatusEnum.DISABLE, isMoldClass: CommonStatusEnum.DISABLE,
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
/** 获得部门树 */ /** 获得部门树 */
const getTree = async () => { const getTree = async () => {
deptTree.value = [] deptTree.value = []
const data = await DeptApi.getSimpleDeptList() const data = await DeptApi.getSimpleDeptList()
let dept: Tree = { id: 0, name: '顶级部门', children: [] } let dept: Tree = { id: 0, name: '顶级部门', children: [] }
dept.children = handleTree(data) dept.children = handleTree(data)
deptTree.value.push(dept) deptTree.value.push(dept)
} }
</script> </script>

Loading…
Cancel
Save