| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // ä¾åºåæ¡£æ¡é¡µé¢æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | // å页æ¥è¯¢ |
| | | export function listManufacturer(query) { |
| | | return request({ |
| | | url: "/stock/manufacturer/listPage", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | // æ¥è¯¢ä¾åºåä¿¡æ¯è¯¦ç» |
| | | export function getManufacturer(id) { |
| | | return request({ |
| | | url: "/stock/manufacturer/" + id, |
| | | method: "get", |
| | | }); |
| | | } |
| | | // æ°å¢ä¾åºåä¿¡æ¯ |
| | | export function addManufacturer(data) { |
| | | return request({ |
| | | url: "/stock/manufacturer/add", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | // ä¿®æ¹ä¾åºåä¿¡æ¯ |
| | | export function updateManufacturer(data) { |
| | | return request({ |
| | | url: "/stock/manufacturer/update", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | // 导åºä¾åºåä¿¡æ¯ |
| | | export function exportManufacturer(query) { |
| | | return request({ |
| | | url: "/stock/manufacturer/export", |
| | | method: "get", |
| | | params: query, |
| | | responseType: "blob", |
| | | }); |
| | | } |
| | | // å é¤ä¾åºåä¿¡æ¯ |
| | | export function delManufacturer(ids) { |
| | | return request({ |
| | | url: "/stock/manufacturer/del", |
| | | method: "delete", |
| | | data: ids, |
| | | }); |
| | | } |
| | | // è·åä¾åºåé项å表 |
| | | export function getManufacturerOptions() { |
| | | return request({ |
| | | url: "/stock/manufacturer/getOptions", |
| | | method: "get", |
| | | }); |
| | | } |
| | | // æ¥è¯¢éä»¶å表 |
| | | export function fileListPage(query) { |
| | | return request({ |
| | | url: "/basic/manufacturerManageFile/listPage", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | // ä¿åéä»¶å表 |
| | | export function fileAdd(query) { |
| | | return request({ |
| | | url: "/basic/supplierManageFile/add", |
| | | method: "post", |
| | | data: query, |
| | | }); |
| | | } |
| | | // å é¤éä»¶å表 |
| | | export function fileDel(query) { |
| | | return request({ |
| | | url: "/basic/manufacturerManageFile/del", |
| | | method: "delete", |
| | | data: query, |
| | | }); |
| | | } |
| | |
| | | <div class="search_form"> |
| | | <div> |
| | | <span class="search_title">åå®¶æ¡£æ¡ï¼</span> |
| | | <el-input v-model="searchForm.supplierName" |
| | | <el-input v-model="searchForm.name" |
| | | style="width: 240px" |
| | | placeholder="è¾å
¥åå®¶åç§°æç´¢" |
| | | @change="handleQuery" |
| | |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå®¶åç§°ï¼" |
| | | prop="supplierName"> |
| | | <el-input v-model="form.supplierName" |
| | | prop="name"> |
| | | <el-input v-model="form.name" |
| | | placeholder="请è¾å
¥" |
| | | clearable /> |
| | | </el-form-item> |
| | |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå®¶ç±»åï¼" |
| | | prop="supplierType"> |
| | | <el-select v-model="form.supplierType" |
| | | prop="type"> |
| | | <el-select v-model="form.type" |
| | | placeholder="è¯·éæ©" |
| | | clearable> |
| | | <el-option label="ç²" |
| | |
| | | </el-dialog> |
| | | <FileList v-if="fileListDialogVisible" |
| | | v-model:visible="fileListDialogVisible" |
| | | record-type="supplier_manage" |
| | | record-type="manufacturer" |
| | | :record-id="recordId" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, ref } from "vue"; |
| | | import { |
| | | onMounted, |
| | | ref, |
| | | defineAsyncComponent, |
| | | getCurrentInstance, |
| | | reactive, |
| | | } from "vue"; |
| | | import { Search } from "@element-plus/icons-vue"; |
| | | import { delSupplier } from "@/api/basicData/supplierManageFile.js"; |
| | | import { delManufacturer } from "@/api/inspectionManagement/manufacturerManageFile.js"; |
| | | import { ElMessageBox } from "element-plus"; |
| | | import { userListNoPage } from "@/api/system/user.js"; |
| | | import { |
| | | addSupplier, |
| | | getSupplier, |
| | | listSupplier, |
| | | updateSupplier, |
| | | } from "@/api/basicData/supplierManageFile.js"; |
| | | addManufacturer, |
| | | getManufacturer, |
| | | listManufacturer, |
| | | updateManufacturer, |
| | | } from "@/api/inspectionManagement/manufacturerManageFile.js"; |
| | | import useUserStore from "@/store/modules/user"; |
| | | import { getToken } from "@/utils/auth.js"; |
| | | const FileList = defineAsyncComponent(() => |
| | |
| | | const tableColumn = ref([ |
| | | { |
| | | label: "åå®¶åç§°", |
| | | prop: "supplierName", |
| | | prop: "name", |
| | | width: 250, |
| | | }, |
| | | { |
| | | label: "åå®¶ç±»å", |
| | | prop: "supplierType", |
| | | prop: "type", |
| | | width: 120, |
| | | }, |
| | | { |
| | |
| | | const dialogFormVisible = ref(false); |
| | | const data = reactive({ |
| | | searchForm: { |
| | | supplierName: "", |
| | | name: "", |
| | | }, |
| | | form: { |
| | | supplierName: "", |
| | | name: "", |
| | | taxpayerIdentificationNum: "", |
| | | companyAddress: "", |
| | | companyPhone: "", |
| | |
| | | contactUserPhone: "", |
| | | maintainUserId: "", |
| | | maintainTime: "", |
| | | supplierType: "", |
| | | type: "", |
| | | isWhite: "", |
| | | }, |
| | | rules: { |
| | | supplierName: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | name: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | taxpayerIdentificationNum: [ |
| | | { required: true, message: "请è¾å
¥", trigger: "blur" }, |
| | | ], |
| | |
| | | companyPhone: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | bankAccountName: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | bankAccountNum: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | contactUserName: [{ required: false, message: "请è¾å
¥", trigger: "blur" }], |
| | | contactUserPhone: [{ required: false, message: "请è¾å
¥", trigger: "blur" }], |
| | | maintainUserId: [{ required: false, message: "è¯·éæ©", trigger: "change" }], |
| | | maintainTime: [{ required: false, message: "è¯·éæ©", trigger: "change" }], |
| | | supplierType: [ |
| | | { required: true, message: "è¯·éæ©åå®¶ç±»å", trigger: "change" }, |
| | | ], |
| | | contactUserName: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | contactUserPhone: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | maintainUserId: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | maintainTime: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | type: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | isWhite: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | }, |
| | | }); |
| | | const { searchForm, form, rules } = toRefs(data); |
| | |
| | | } |
| | | const getList = () => { |
| | | tableLoading.value = true; |
| | | listSupplier({ ...searchForm.value, ...page, isWhite: 1 }).then(res => { |
| | | listManufacturer({ ...searchForm.value, ...page, isWhite: 1 }).then(res => { |
| | | tableLoading.value = false; |
| | | tableData.value = res.data.records; |
| | | page.total = res.data.total; |
| | |
| | | // 设置ä¸ä¼ ç请æ±å¤´é¨ |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | // ä¸ä¼ çå°å |
| | | url: import.meta.env.VITE_APP_BASE_API + "/system/supplier/import", |
| | | url: import.meta.env.VITE_APP_BASE_API + "/stock/manufacturer/import", |
| | | }); |
| | | /** 导å
¥æé®æä½ */ |
| | | function handleImport() { |
| | |
| | | } |
| | | /** ä¸è½½æ¨¡æ¿ */ |
| | | function importTemplate() { |
| | | proxy.download("/system/supplier/downloadTemplate", {}, "å家导å
¥æ¨¡æ¿.xlsx"); |
| | | proxy.download( |
| | | "/stock/manufacturer/downloadTemplate", |
| | | {}, |
| | | "å家导å
¥æ¨¡æ¿.xlsx" |
| | | ); |
| | | } |
| | | |
| | | /**æä»¶ä¸ä¼ ä¸å¤ç */ |
| | |
| | | userList.value = res.data; |
| | | }); |
| | | if (type === "edit") { |
| | | getSupplier(row.id).then(res => { |
| | | getManufacturer(row.id).then(res => { |
| | | form.value = { ...res.data }; |
| | | }); |
| | | } |
| | |
| | | }; |
| | | // æäº¤æ°å¢ |
| | | const submitAdd = () => { |
| | | addSupplier(form.value).then(res => { |
| | | addManufacturer(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("æäº¤æå"); |
| | | closeDia(); |
| | | getList(); |
| | |
| | | }; |
| | | // æäº¤ä¿®æ¹ |
| | | const submitEdit = () => { |
| | | updateSupplier(form.value).then(res => { |
| | | updateManufacturer(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("æäº¤æå"); |
| | | closeDia(); |
| | | getList(); |
| | |
| | | }) |
| | | .then(() => { |
| | | proxy.download( |
| | | "/system/supplier/export", |
| | | "/stock/manufacturer/export", |
| | | { isWhite: 1 }, |
| | | "åå®¶æ¡£æ¡.xlsx" |
| | | ); |
| | |
| | | }) |
| | | .then(() => { |
| | | tableLoading.value = true; |
| | | delSupplier(ids) |
| | | delManufacturer(ids) |
| | | .then(res => { |
| | | proxy.$modal.msgSuccess("å 餿å"); |
| | | getList(); |
| | |
| | | <div class="search_form"> |
| | | <div style="margin-bottom: 10px;"> |
| | | <span class="search_title">åå®¶æ¡£æ¡ï¼</span> |
| | | <el-input v-model="searchForm.supplierName" |
| | | <el-input v-model="searchForm.name" |
| | | style="width: 240px" |
| | | placeholder="è¾å
¥åå®¶åç§°æç´¢" |
| | | @change="handleQuery" |
| | |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå®¶åç§°ï¼" |
| | | prop="supplierName"> |
| | | <el-input v-model="form.supplierName" |
| | | prop="name"> |
| | | <el-input v-model="form.name" |
| | | placeholder="请è¾å
¥" |
| | | clearable /> |
| | | </el-form-item> |
| | |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå®¶ç±»åï¼" |
| | | prop="supplierType"> |
| | | <el-select v-model="form.supplierType" |
| | | prop="type"> |
| | | <el-select v-model="form.type" |
| | | placeholder="è¯·éæ©" |
| | | clearable> |
| | | <el-option label="ç²" |
| | |
| | | </el-dialog> |
| | | <FileList v-if="fileListDialogVisible" |
| | | v-model:visible="fileListDialogVisible" |
| | | record-type="supplier_manage" |
| | | record-type="manufacturer" |
| | | :record-id="recordId" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, ref } from "vue"; |
| | | import { |
| | | onMounted, |
| | | ref, |
| | | defineAsyncComponent, |
| | | getCurrentInstance, |
| | | reactive, |
| | | } from "vue"; |
| | | import { Search } from "@element-plus/icons-vue"; |
| | | import { delSupplier } from "@/api/basicData/supplierManageFile.js"; |
| | | import { delManufacturer } from "@/api/inspectionManagement/manufacturerManageFile.js"; |
| | | import { ElMessageBox } from "element-plus"; |
| | | import { userListNoPage } from "@/api/system/user.js"; |
| | | import { |
| | | addSupplier, |
| | | getSupplier, |
| | | listSupplier, |
| | | updateSupplier, |
| | | } from "@/api/basicData/supplierManageFile.js"; |
| | | addManufacturer, |
| | | getManufacturer, |
| | | listManufacturer, |
| | | updateManufacturer, |
| | | } from "@/api/inspectionManagement/manufacturerManageFile.js"; |
| | | import useUserStore from "@/store/modules/user"; |
| | | import { getToken } from "@/utils/auth.js"; |
| | | const FileList = defineAsyncComponent(() => |
| | |
| | | const tableColumn = ref([ |
| | | { |
| | | label: "åå®¶åç§°", |
| | | prop: "supplierName", |
| | | prop: "name", |
| | | width: 250, |
| | | }, |
| | | { |
| | | label: "åå®¶ç±»å", |
| | | prop: "supplierType", |
| | | prop: "type", |
| | | width: 120, |
| | | }, |
| | | { |
| | |
| | | const selectedRows = ref([]); |
| | | const userList = ref([]); |
| | | const tableLoading = ref(false); |
| | | const fileListDialogVisible = ref(false); |
| | | const recordId = ref(); |
| | | const page = reactive({ |
| | | current: 1, |
| | | size: 100, |
| | | total: 0, |
| | | }); |
| | | const fileListDialogVisible = ref(false); |
| | | const recordId = ref(); |
| | | // ç¨æ·ä¿¡æ¯è¡¨åå¼¹æ¡æ°æ® |
| | | const operationType = ref(""); |
| | | const dialogFormVisible = ref(false); |
| | | const data = reactive({ |
| | | searchForm: { |
| | | supplierName: "", |
| | | name: "", |
| | | }, |
| | | form: { |
| | | supplierName: "", |
| | | name: "", |
| | | taxpayerIdentificationNum: "", |
| | | companyAddress: "", |
| | | companyPhone: "", |
| | |
| | | contactUserPhone: "", |
| | | maintainUserId: "", |
| | | maintainTime: "", |
| | | supplierType: "", |
| | | type: "", |
| | | isWhite: "", |
| | | }, |
| | | rules: { |
| | | supplierName: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | name: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | taxpayerIdentificationNum: [ |
| | | { required: true, message: "请è¾å
¥", trigger: "blur" }, |
| | | ], |
| | |
| | | companyPhone: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | bankAccountName: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | bankAccountNum: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | contactUserName: [{ required: false, message: "请è¾å
¥", trigger: "blur" }], |
| | | contactUserPhone: [{ required: false, message: "请è¾å
¥", trigger: "blur" }], |
| | | maintainUserId: [{ required: false, message: "è¯·éæ©", trigger: "change" }], |
| | | maintainTime: [{ required: false, message: "è¯·éæ©", trigger: "change" }], |
| | | supplierType: [ |
| | | { required: true, message: "è¯·éæ©åå®¶ç±»å", trigger: "change" }, |
| | | ], |
| | | contactUserName: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | contactUserPhone: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | maintainUserId: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | maintainTime: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | type: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | isWhite: [{ required: true, message: "请è¾å
¥", trigger: "blur" }], |
| | | }, |
| | | }); |
| | | const { searchForm, form, rules } = toRefs(data); |
| | |
| | | } |
| | | const getList = () => { |
| | | tableLoading.value = true; |
| | | listSupplier({ ...searchForm.value, ...page, isWhite: 0 }).then(res => { |
| | | listManufacturer({ ...searchForm.value, ...page, isWhite: 0 }).then(res => { |
| | | tableLoading.value = false; |
| | | tableData.value = res.data.records; |
| | | page.total = res.data.total; |
| | |
| | | // 设置ä¸ä¼ ç请æ±å¤´é¨ |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | // ä¸ä¼ çå°å |
| | | url: import.meta.env.VITE_APP_BASE_API + "/system/supplier/import", |
| | | url: import.meta.env.VITE_APP_BASE_API + "/stock/manufacturer/import", |
| | | }); |
| | | /** 导å
¥æé®æä½ */ |
| | | function handleImport() { |
| | |
| | | } |
| | | /** ä¸è½½æ¨¡æ¿ */ |
| | | function importTemplate() { |
| | | proxy.download("/system/supplier/downloadTemplate", {}, "å家导å
¥æ¨¡æ¿.xlsx"); |
| | | proxy.download( |
| | | "/stock/manufacturer/downloadTemplate", |
| | | {}, |
| | | "å家导å
¥æ¨¡æ¿.xlsx" |
| | | ); |
| | | } |
| | | |
| | | /**æä»¶ä¸ä¼ ä¸å¤ç */ |
| | |
| | | userList.value = res.data; |
| | | }); |
| | | if (type === "edit") { |
| | | getSupplier(row.id).then(res => { |
| | | getManufacturer(row.id).then(res => { |
| | | form.value = { ...res.data }; |
| | | }); |
| | | } |
| | |
| | | }; |
| | | // æäº¤æ°å¢ |
| | | const submitAdd = () => { |
| | | addSupplier(form.value).then(res => { |
| | | addManufacturer(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("æäº¤æå"); |
| | | closeDia(); |
| | | getList(); |
| | |
| | | }; |
| | | // æäº¤ä¿®æ¹ |
| | | const submitEdit = () => { |
| | | updateSupplier(form.value).then(res => { |
| | | updateManufacturer(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("æäº¤æå"); |
| | | closeDia(); |
| | | getList(); |
| | |
| | | }) |
| | | .then(() => { |
| | | proxy.download( |
| | | "/system/supplier/export", |
| | | "/stock/manufacturer/export", |
| | | { isWhite: 0 }, |
| | | "åå®¶æ¡£æ¡.xlsx" |
| | | ); |
| | |
| | | }) |
| | | .then(() => { |
| | | tableLoading.value = true; |
| | | delSupplier(ids) |
| | | delManufacturer(ids) |
| | | .then(res => { |
| | | proxy.$modal.msgSuccess("å 餿å"); |
| | | getList(); |
| | |
| | | </el-form-item> |
| | | <el-form-item label="åå®¶" |
| | | prop="manufacturer"> |
| | | <el-input v-model="formState.manufacturer" |
| | | placeholder="请è¾å
¥åå®¶" /> |
| | | <el-select v-model="formState.manufacturer" |
| | | placeholder="è¯·éæ©åå®¶" |
| | | clearable |
| | | filterable |
| | | style="width: 100%"> |
| | | <el-option v-for="item in manufacturerOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åºåç±»å" |
| | | prop="type" |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, computed, watch, getCurrentInstance } from "vue"; |
| | | import { ref, computed, watch, getCurrentInstance, onMounted } from "vue"; |
| | | import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue"; |
| | | import { addStockInRecordOnly } from "@/api/inventoryManagement/stockInventory.js"; |
| | | import { createStockUnInventory } from "@/api/inventoryManagement/stockUninventory.js"; |
| | | import { getManufacturerOptions } from "@/api/inspectionManagement/manufacturerManageFile.js"; |
| | | |
| | | const props = defineProps({ |
| | | visible: { |
| | |
| | | }); |
| | | |
| | | const showProductSelectDialog = ref(false); |
| | | const manufacturerOptions = ref([]); |
| | | |
| | | const loadManufacturerOptions = () => { |
| | | getManufacturerOptions().then(res => { |
| | | manufacturerOptions.value = res.data || []; |
| | | }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | loadManufacturerOptions(); |
| | | }); |
| | | |
| | | // æ¹å·ä¸ºç©ºæ¶è½¬ä¸º null |
| | | watch( |