超市相关表单清除空字符输入,修改数字输入的格式

This commit is contained in:
ctw committed 2025-01-13 18:21:52 +08:00
1 parent aafc93ba61
commit 62f19c9e4f
5 files changed
+146 -112

No files matched your search

@@ -4,7 +4,7 @@
<el-row :gutter="24">
<el-col :span="24" class="mb20">
<el-form-item label="条码" prop="barCode">
<el-input v-model="form.barCode" placeholder="请输入条码" />
<el-input v-model.trim="form.barCode" placeholder="请输入条码" />
</el-form-item>
</el-col>
</el-row>
@@ -19,56 +19,56 @@
</template>
<script setup lang="ts" name="SupermarketAuxiliaryCodeDialog">
import { nanoid } from 'nanoid';
import { nanoid } from "nanoid"
const emit = defineEmits(['refresh']);
const emit = defineEmits(["refresh"])
// 定义变量内容
const dataFormRef = ref();
const visible = ref(false);
const loading = ref(false);
const dataFormRef = ref()
const visible = ref(false)
const loading = ref(false)
// 提交表单数据
const form = reactive<any>({
id: '',
barCode: '',
});
id: "",
barCode: "",
})
// 定义校验规则
const dataRules = ref({
barCode: [{ required: true, message: '条码不能为空', trigger: 'blur' }],
spuId: [{ required: true, message: 'spuID不能为空', trigger: 'blur' }],
});
barCode: [{ required: true, message: "条码不能为空", trigger: "blur" }],
spuId: [{ required: true, message: "spuID不能为空", trigger: "blur" }],
})
// 打开弹窗
const openDialog = (rowData: any = null) => {
visible.value = true;
form.id = nanoid(5);
visible.value = true
form.id = nanoid(5)
// 重置表单数据
dataFormRef.value?.resetFields();
dataFormRef.value?.resetFields()
if (rowData) {
Object.assign(form, rowData);
Object.assign(form, rowData)
}
};
}
// 提交
const onSubmit = async () => {
const valid = await dataFormRef.value.validate().catch(() => {});
if (!valid) return false;
const valid = await dataFormRef.value.validate().catch(() => {})
if (!valid) return false
// try {
// loading.value = true;
// form.id ? await putObj(form) : await addObj(form);
// useMessage().success(form.id ? '修改成功' : '添加成功');
emit('refresh', { ...form });
visible.value = false;
emit("refresh", { ...form })
visible.value = false
// } catch (err: any) {
// useMessage().error(err.msg);
// } finally {
// loading.value = false;
// }
};
}
// 初始化表单数据
// const getsupermarketAuxiliaryCodeData = (id: string) => {
@@ -86,5 +86,5 @@ const onSubmit = async () => {
// 暴露变量
defineExpose({
openDialog,
});
})
</script>
@@ -4,19 +4,19 @@
<el-row :gutter="24">
<el-col :span="14" class="mb20">
<el-form-item label="条码" prop="barCode">
<el-input placeholder="请输入条码" v-model="form.barCode" />
<el-input placeholder="请输入条码" v-model.trim="form.barCode" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="规格" prop="spec">
<el-input placeholder="请输入规格" v-model="form.spec" />
<el-input placeholder="请输入规格" v-model.trim="form.spec" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="单位" prop="unit">
<el-input placeholder="请输入单位" v-model="form.unit" />
<el-input placeholder="请输入单位" v-model.trim="form.unit" />
</el-form-item>
</el-col>
@@ -31,29 +31,29 @@
<el-col :span="14" class="mb20">
<el-form-item label="内装数量" prop="packageNum">
<el-input-number v-model="form.packageNum" placeholder="请输入内装数量" />
<el-input-number v-model="form.packageNum" :min="0" :precision="0" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="零售价" prop="retailPrice">
<el-input-number v-model="form.retailPrice" :min="0" :precision="2" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="零售价" prop="retailPrice">
<el-input-number v-model="form.retailPrice" placeholder="请输入零售价" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="促销价" prop="promotionPrice">
<el-input-number v-model="form.promotionPrice" placeholder="请输入促销价" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="促销价" prop="promotionPrice">
<el-input-number v-model="form.promotionPrice" :min="0" :precision="2" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="进价" prop="purchasePrice">
<el-input-number v-model="form.purchasePrice" placeholder="请输入进价" />
<el-input-number v-model="form.purchasePrice" :min="0" :precision="2" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="成本价" prop="costPrice">
<el-input-number v-model="form.costPrice" placeholder="请输入成本价" />
<el-input-number v-model="form.costPrice" :min="0" :precision="2" />
</el-form-item>
</el-col>
</el-row>
@@ -68,71 +68,71 @@
</template>
<script setup lang="ts" name="SupermarketAuxiliaryCodeDialog">
import { nanoid } from 'nanoid';
import { nanoid } from "nanoid"
const emit = defineEmits(['refresh']);
const emit = defineEmits(["refresh"])
// 定义变量内容
const dataFormRef = ref();
const visible = ref(false);
const loading = ref(false);
const dataFormRef = ref()
const visible = ref(false)
const loading = ref(false)
// 提交表单数据
const form = reactive({
id: '',
barCode: '',
spec: '',
unit: '',
status: '',
id: "",
barCode: "",
spec: "",
unit: "",
status: "",
packageNum: 0,
purchasePrice: '',
retailPrice: '',
promotionPrice: '',
costPrice: '',
});
purchasePrice: "",
retailPrice: "",
promotionPrice: "",
costPrice: "",
})
// 定义校验规则
const dataRules = ref({
barCode: [{ required: true, message: '条码不能为空', trigger: 'blur' }],
spec: [{ required: true, message: '规格不能为空', trigger: 'blur' }],
unit: [{ required: true, message: '单位不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
packageNum: [{ required: true, message: '内装数量不能为空', trigger: 'blur' }],
barCode: [{ required: true, message: "条码不能为空", trigger: "blur" }],
spec: [{ required: true, message: "规格不能为空", trigger: "blur" }],
unit: [{ required: true, message: "单位不能为空", trigger: "blur" }],
status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
packageNum: [{ required: true, message: "内装数量不能为空", trigger: "blur" }],
// purchasePrice: [{ required: true, message: '进价不能为空', trigger: 'blur' }],
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
// promotionPrice: [{ required: true, message: '促销价不能为空', trigger: 'blur' }],
});
retailPrice: [{ required: true, message: "零售价不能为空", trigger: "blur" }],
// promotionPrice: [{ required: true, message: '促销价不能为空', trigger: 'blur' }],
})
// 打开弹窗
const openDialog = (rowData: any = null) => {
visible.value = true;
form.id = nanoid(5);
visible.value = true
form.id = nanoid(5)
// 重置表单数据
dataFormRef.value?.resetFields();
dataFormRef.value?.resetFields()
if (rowData) {
Object.assign(form, rowData);
Object.assign(form, rowData)
}
};
}
// 提交
const onSubmit = async () => {
const valid = await dataFormRef.value.validate().catch(() => {});
if (!valid) return false;
const valid = await dataFormRef.value.validate().catch(() => {})
if (!valid) return false
// try {
// loading.value = true;
// form.id ? await putObj(form) : await addObj(form);
// useMessage().success(form.id ? '修改成功' : '添加成功');
emit('refresh', { ...form });
visible.value = false;
emit("refresh", { ...form })
visible.value = false
// } catch (err: any) {
// useMessage().error(err.msg);
// } finally {
// loading.value = false;
// }
};
}
// 初始化表单数据
// const getSupermarketUnitData = (id: string) => {
@@ -150,5 +150,5 @@ const onSubmit = async () => {
// 暴露变量
defineExpose({
openDialog,
});
})
</script>
@@ -31,7 +31,12 @@
</el-row> -->
<el-row>
<div class="mb8" style="width: 100%">
<el-button icon="folder-add" type="primary" class="ml10" v-auth="'supermarket_supermarketUnit_add'" @click="formDialogRef.openDialog()"
<el-button
icon="folder-add"
type="primary"
class="ml10"
v-auth="'supermarket_supermarketUnit_add'"
@click="formDialogRef.openDialog()"
>新 增</el-button
>
<!-- <el-button
@@ -54,7 +59,12 @@
</div>
</el-row>
<el-form-item label="" prop="supermarketUnitEntityList">
<el-table :data="supermarketUnitEntityList" border :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle">
<el-table
:data="supermarketUnitEntityList"
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
>
<!-- <el-table-column type="selection" width="40" align="center" fixed /> -->
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="barCode" label="条码" show-overflow-tooltip />
@@ -67,17 +77,30 @@
</template>
</el-table-column>
<el-table-column prop="packageNum" label="内装数量" show-overflow-tooltip />
<el-table-column prop="purchasePrice" label="进价" show-overflow-tooltip />
<el-table-column prop="retailPrice" label="零售价" show-overflow-tooltip />
<el-table-column prop="purchasePrice" label="进价(元)" show-overflow-tooltip />
<el-table-column prop="retailPrice" label="零售价(元)" show-overflow-tooltip />
<!-- <el-table-column prop="spuId" label="spuId" show-overflow-tooltip /> -->
<el-table-column prop="promotionPrice" label="促销价" show-overflow-tooltip />
<el-table-column prop="costPrice" label="成本价" show-overflow-tooltip />
<el-table-column prop="promotionPrice" label="促销价(元)" show-overflow-tooltip />
<el-table-column prop="costPrice" label="成本价(元)" show-overflow-tooltip />
<el-table-column label="操作" width="150" fixed="right">
<template #default="scope">
<el-button icon="edit-pen" text type="primary" v-auth="'supermarket_supermarketUnit_edit'" @click="formDialogRef.openDialog(scope.row)">
<el-button
icon="edit-pen"
text
type="primary"
v-auth="'supermarket_supermarketUnit_edit'"
@click="formDialogRef.openDialog(scope.row)"
>
编辑
</el-button>
<el-button icon="delete" text type="primary" v-auth="'supermarket_supermarketUnit_del'" @click="handleDelete(scope.row)">删除</el-button>
<el-button
icon="delete"
text
type="primary"
v-auth="'supermarket_supermarketUnit_del'"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
@@ -91,11 +114,11 @@
<script setup lang="ts">
// import { BasicTableProps, useTable } from '/@/hooks/table';
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
const FormDialog = defineAsyncComponent(() => import("./form.vue"))
const supermarketUnitEntityList = defineModel<any>('supermarketUnitEntityList', { default: [] });
const supermarketUnitEntityList = defineModel<any>("supermarketUnitEntityList", { default: [] })
const formDialogRef = ref();
const formDialogRef = ref()
// 搜索变量
// const queryRef = ref();
// const showSearch = ref(true);
@@ -112,25 +135,25 @@ const formDialogRef = ref();
// const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, downBlobFile, tableStyle } = useTable(state);
const tableStyle = {
cellStyle: { textAlign: 'center' },
cellStyle: { textAlign: "center" },
headerCellStyle: {
textAlign: 'center',
background: 'var(--el-table-row-hover-bg-color)',
color: 'var(--el-text-color-primary)',
textAlign: "center",
background: "var(--el-table-row-hover-bg-color)",
color: "var(--el-text-color-primary)",
},
};
}
const getDataList = (formData: any) => {
console.log(formData);
const index = supermarketUnitEntityList.value?.findIndex((item: any) => item.id === formData.id);
console.log(formData)
const index = supermarketUnitEntityList.value?.findIndex((item: any) => item.id === formData.id)
if (supermarketUnitEntityList.value == null || index == undefined) {
supermarketUnitEntityList.value = [{ ...formData, isNew: true }];
supermarketUnitEntityList.value = [{ ...formData, isNew: true }]
} else if (index === -1) {
supermarketUnitEntityList.value.push({ ...formData, isNew: true });
supermarketUnitEntityList.value.push({ ...formData, isNew: true })
} else {
supermarketUnitEntityList.value[index] = formData;
supermarketUnitEntityList.value[index] = formData
}
};
}
// 清空搜索条件
// const resetQuery = () => {
@@ -156,7 +179,7 @@ const getDataList = (formData: any) => {
// 删除操作
const handleDelete = async (rowData: any) => {
supermarketUnitEntityList.value = supermarketUnitEntityList.value.filter((item: any) => item.id !== rowData.id);
supermarketUnitEntityList.value = supermarketUnitEntityList.value.filter((item: any) => item.id !== rowData.id)
// try {
// await useMessageBox().confirm('此操作将永久删除');
// } catch {
@@ -169,5 +192,5 @@ const handleDelete = async (rowData: any) => {
// } catch (err: any) {
// useMessage().error(err.msg);
// }
};
}
</script>
+24 -13
View File
@@ -36,11 +36,6 @@
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12" class="mb20">
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
</el-col> -->
<el-col :span="12" class="mb20">
<el-form-item label="商品分类" prop="categoryId">
<el-select v-model="form.categoryId" placeholder="请选择商品分类">
@@ -82,6 +77,11 @@
<el-input-number :min="0" :max="1000" :precision="0" v-model="form.sort" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
</el-col>
<el-col :span="24" class="mb20">
<el-form-item label="商品状态" prop="status">
<el-radio-group v-model="form.status">
@@ -226,6 +226,7 @@ import { rule } from "/@/utils/validate"
import supermarketAuxiliaryCode from "./components/supermarketAuxiliaryCode/index.vue"
import supermarketUnit from "./components/supermarketUnit/index.vue"
import { TabPaneName } from "element-plus"
import { displayPrice, storePrice } from "/@/utils/formatMoney"
const emit = defineEmits(["refresh"])
@@ -297,16 +298,18 @@ const brandOptions = ref<any>([]) // 超市品牌的下拉选项
const supplierOptions = ref<any>([]) // 货商的下拉选项
// 初始化表单数据
const getsupermarketSpuData = (id: string) => {
const getsupermarketSpuData = async (id: string) => {
// 获取数据
loading.value = true
getObj(id)
.then((res: any) => {
Object.assign(form, res.data)
})
.finally(() => {
loading.value = false
})
const res = await getObj(id).finally(() => (loading.value = false))
res.data.supermarketUnitEntityList.map((item: any) => {
item.costPrice = displayPrice(item.costPrice, "")
item.promotionPrice = displayPrice(item.promotionPrice, "")
item.purchasePrice = displayPrice(item.purchasePrice, "")
item.retailPrice = displayPrice(item.retailPrice, "")
})
Object.assign(form, res.data)
console.log(res.data)
}
// 打开弹窗
@@ -376,6 +379,10 @@ const onSubmit = async () => {
loading.value = true
if (form.id) {
form.supermarketUnitEntityList.map((item: any) => {
item.costPrice = storePrice(item.costPrice)
item.promotionPrice = storePrice(item.promotionPrice)
item.purchasePrice = storePrice(item.purchasePrice)
item.retailPrice = storePrice(item.retailPrice)
if (item.isNew) {
item.id = ""
delete item.isNew
@@ -391,6 +398,10 @@ const onSubmit = async () => {
} else {
form.supermarketUnitEntityList.map((item: any) => {
item.id = ""
item.costPrice = storePrice(item.costPrice)
item.promotionPrice = storePrice(item.promotionPrice)
item.purchasePrice = storePrice(item.purchasePrice)
item.retailPrice = storePrice(item.retailPrice)
})
form.supermarketAuxiliaryCodeEntityList.map((item: any) => {
item.id = ""
@@ -81,7 +81,7 @@
</el-table-column>
<el-table-column prop="status" label="商品状态" width="100">
<template #default="scope">
<dict-tag :options="status" :value="scope.row.status"></dict-tag>
<dict-tag :options="status" :value="scope.row.status" />
</template>
</el-table-column>
<!-- <el-table-column prop="costPrice" label="成本单价" show-overflow-tooltip width="100" /> -->
@@ -96,7 +96,7 @@
<!-- <el-table-column prop="promotionPrice" label="促销价" show-overflow-tooltip /> -->
<el-table-column prop="productNature" label="商品性质" show-overflow-tooltip width="150">
<template #default="scope">
<dict-tag :options="supermarket_nature" :value="scope.row.productNature"></dict-tag>
<dict-tag :options="supermarket_nature" :value="scope.row.productNature" />
</template>
</el-table-column>
<!-- <el-table-column prop="inventoryUpperLimit" label="库存上限" show-overflow-tooltip /> -->