From d13487486a3c3c7cf93bd3bda65dcc0d6af51aa2 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 03 六月 2025 17:37:04 +0800 Subject: [PATCH] 销售出库页面开发 --- src/views/salesOutbound/index.vue | 57 +++++++++++++- src/views/salesOutbound/components/formDia.vue | 133 +++++++++++++++++++++++++++++++++ src/components/Table/ETable.vue | 5 3 files changed, 188 insertions(+), 7 deletions(-) diff --git a/src/components/Table/ETable.vue b/src/components/Table/ETable.vue index 7a5b922..51859fa 100644 --- a/src/components/Table/ETable.vue +++ b/src/components/Table/ETable.vue @@ -172,9 +172,8 @@ </script> <style scoped> - :deep(.el-table) { - margin-bottom: 20px; - overflow-x: auto; + .el-table { + margin: 20px 0 !important; } :deep(.el-table th) { diff --git a/src/views/salesOutbound/components/formDia.vue b/src/views/salesOutbound/components/formDia.vue new file mode 100644 index 0000000..2984136 --- /dev/null +++ b/src/views/salesOutbound/components/formDia.vue @@ -0,0 +1,133 @@ +<template> + <div> + <el-dialog :title="operationType === 'add' ? '鏂板鍑哄簱' : '缂栬緫鍑哄簱'" + v-model="dialogVisitable" width="800px" @close="cancel"> + <el-form :model="form" :rules="rules" ref="userRef" label-width="100px"> + <el-row> + <el-col :span="12"> + <el-form-item label="閿�鍞棩鏈�" prop="userName"> + <el-date-picker + v-model="form.userName" + type="date" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + clearable + style="width: 100%" + placeholder="璇烽�夋嫨鏃ユ湡" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="瀹㈡埛" prop="nickName"> + <el-select v-model="form.nickName" placeholder="璇烽�夋嫨瀹㈡埛"> + <el-option + v-for="item in customerOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鐓ょ" prop="type"> + <el-select v-model="form.nickName" placeholder="璇烽�夋嫨鐓ょ"> + <el-option + v-for="item in typeOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍗曚綅" prop="nickName"> + <el-input v-model="form.nickName" placeholder="璇疯緭鍏ュ崟浣�" maxlength="30" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="閿�鍞暟閲�" prop="userName"> + <el-input v-model="form.userName" placeholder="璇疯緭鍏ラ攢鍞暟閲�" maxlength="30" type="number" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞崟浠�" prop="userName"> + <el-input v-model="form.userName" placeholder="璇疯緭鍏ラ攢鍞崟浠�(鍚◣)" maxlength="30" type="number" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="閿�鍞�讳环" prop="userName"> + <el-input v-model="form.userName" placeholder="璇疯緭鍏ラ攢鍞�讳环(鍚◣)" maxlength="30" type="number" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐑��" prop="userName"> + <el-input v-model="form.userName" placeholder="璇疯緭鍏ョ儹鍊�" maxlength="30" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button @click="cancel">鍙栨秷</el-button> + <el-button type="primary" @click="submitForm">淇濆瓨</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup> +import {ref, reactive} from "vue"; +const { proxy } = getCurrentInstance() +const emit = defineEmits() + +const dialogVisitable = ref(false); +const operationType = ref('add'); +const customerOptions = ref([]) // 瀹㈡埛涓嬫媺妗� +const typeOptions = ref([]) // 鐓ょ涓嬫媺妗� +const data = reactive({ + form: {}, + rules: { + userName: [{ required: true, message: "鐧诲綍璐﹀彿涓嶈兘涓虹┖", trigger: "blur" },], + nickName: [{ required: true, message: "鐢ㄦ埛濮撳悕涓嶈兘涓虹┖", trigger: "blur" }], + roleIds: [{ required: true, message: "瑙掕壊涓嶈兘涓虹┖", trigger: "change" }], + deptId: [{ required: true, message: "閮ㄩ棬涓嶈兘涓虹┖", trigger: "change" }], + password: [{ required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, { min: 5, max: 20, message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\ |", trigger: "blur" }], + } +}) + +const { form, rules } = toRefs(data) + +// 鎵撳紑寮规 +const openDialog = (type, row) => { + console.log('openDialog', type, row) + dialogVisitable.value = true +} +// 鎻愪氦鍚堝苟琛ㄥ崟 +const submitForm = () => { + proxy.$refs["userRef"].validate(valid => { + if (valid) { + + } + }) +} +// 鍏抽棴鍚堝苟琛ㄥ崟 +const cancel = () => { + proxy.resetForm("userRef") + dialogVisitable.value = false + emit('closeDia') +} +defineExpose({ openDialog }) +</script> + +<style scoped> + +</style> \ No newline at end of file diff --git a/src/views/salesOutbound/index.vue b/src/views/salesOutbound/index.vue index f104b4a..ab8942c 100644 --- a/src/views/salesOutbound/index.vue +++ b/src/views/salesOutbound/index.vue @@ -50,24 +50,67 @@ </el-tabs> <!-- 鎿嶄綔鎸夐挳鍖� --> <el-space> - <el-button type="primary" :icon="Plus" @click="handleAdd">鏂板缓</el-button> + <el-button type="primary" :icon="Plus" @click="openDia('add')">鏂板缓</el-button> <el-button type="danger" :icon="Delete" @click="handleDelete">鍒犻櫎</el-button> - <el-button type="info" :icon="Download" @click="handleExport">瀵煎嚭</el-button> + <el-button type="info" plain :icon="Download" @click="handleExport">瀵煎嚭</el-button> </el-space> + <!-- 琛ㄦ牸缁勪欢 --> + <div> + <ETable :loading="tableLoading" + :table-data="tableData" + :columns="columns" + @selection-change="handleSelectionChange" + :show-selection="true" + :border="true" + :maxHeight="480" + @edit="openDia"></ETable> + </div> + <pagination + v-if="total>0" + :page-num="pageNum" + :page-size="pageSize" + :total="total" + @pagination="handleQuery" + :layout="'total, prev, pager, next, jumper'" + /> </el-card> + <form-dia ref="formDia" @closeDia="handleQuery"></form-dia> </div> </template> <script setup> import {ref, reactive} from "vue"; +const { proxy } = getCurrentInstance() import {Delete, Download, Plus} from "@element-plus/icons-vue"; +import ETable from "@/components/Table/ETable.vue"; +import Pagination from "@/components/Pagination/index.vue"; +import FormDia from "@/views/salesOutbound/components/formDia.vue"; +const formDia = ref() const activeTab = ref("out"); // 鏍囩椤垫暟鎹� const tabs = reactive([ { name: "out", label: "閿�鍞嚭搴�" }, ]); +// 琛ㄦ牸鏁版嵁 const tableLoading = ref(false); +const tableData = ref([]); +const columns = ref([ + { prop: "supplierName", label: "閿�鍞棩鏈�", minWidth: 160 }, + { prop: "identifyNumber", label: "瀹㈡埛", minWidth: 120 }, + { prop: "address", label: "鐓ょ", minWidth: 150 }, + { prop: "unit", label: "鍗曚綅", minWidth: 150 }, + { prop: "bank", label: "搴撳瓨鏁伴噺", minWidth: 120 }, + { prop: "bankAccount", label: "鍗曚环(鍚◣)", minWidth: 150 }, + { prop: "contacts", label: "鎬讳环(鍚◣)", minWidth: 100 }, + { prop: "contactAddress", label: "鐑��", minWidth: 150 }, + { prop: "maintainer", label: "缁存姢浜�", minWidth: 100 }, + { prop: "maintainDate", label: "缁存姢鏃ユ湡", minWidth: 100 }, +]); +const selectedRows = ref([]); +const total = ref(0); +const pageNum = ref(1); +const pageSize = ref(10); // 鏌ヨ鍙傛暟 const queryParams = reactive({ searchText: "", @@ -93,8 +136,10 @@ handleQuery(); }; // 鏂板鍑哄簱 -const handleAdd = () => { - +const openDia = (type, row) => { + nextTick(() => { + formDia.value?.openDialog(type, row) + }) }; // 鍒犻櫎鍑哄簱 const handleDelete = () => { @@ -104,6 +149,10 @@ const handleExport = () => { }; +// 閫夋嫨琛� +const handleSelectionChange = (selection) => { + selectedRows.value = selection; +}; </script> <style scoped> -- Gitblit v1.9.3