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

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

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

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

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

Loading…
Cancel
Save