<template>
|
<view class="account-detail">
|
<PageHeader :title="pageTitle" @back="goBack" />
|
<up-form ref="formRef" :model="form" :rules="rules" label-width="120">
|
<u-cell-group title="供应商信息" class="form-section">
|
<up-form-item label="供应商名称" prop="supplierName" required>
|
<up-input v-model="form.supplierName" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="纳税人识别号" prop="taxpayerIdentificationNum" required>
|
<up-input v-model="form.taxpayerIdentificationNum" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="公司地址" prop="companyAddress" required>
|
<up-input v-model="form.companyAddress" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="公司电话" prop="companyPhone" required>
|
<up-input v-model="form.companyPhone" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="开户行" prop="bankAccountName" required>
|
<up-input v-model="form.bankAccountName" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="账号" prop="bankAccountNum" required>
|
<up-input v-model="form.bankAccountNum" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="联系人" prop="contactUserName">
|
<up-input v-model="form.contactUserName" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="联系电话" prop="contactUserPhone">
|
<up-input v-model="form.contactUserPhone" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="供应商类型" prop="supplierType" required>
|
<up-input
|
v-model="supplierTypeText"
|
placeholder="请选择"
|
readonly
|
@click="showSupplierTypeSheet = true"
|
/>
|
<template #right>
|
<up-icon name="arrow-right" @click="showSupplierTypeSheet = true"></up-icon>
|
</template>
|
</up-form-item>
|
<up-form-item label="是否白名单" prop="isWhite" required>
|
<up-input v-model="isWhiteText" placeholder="请选择" readonly @click="showIsWhiteSheet = true" />
|
<template #right>
|
<up-icon name="arrow-right" @click="showIsWhiteSheet = true"></up-icon>
|
</template>
|
</up-form-item>
|
<up-form-item label="维护人" prop="maintainUserName">
|
<up-input v-model="form.maintainUserName" disabled placeholder="自动填充" />
|
</up-form-item>
|
<up-form-item label="维护时间" prop="maintainTime">
|
<up-input v-model="form.maintainTime" disabled placeholder="自动填充" />
|
</up-form-item>
|
</u-cell-group>
|
</up-form>
|
<FooterButtons :loading="loading" confirmText="保存" @cancel="goBack" @confirm="handleSubmit" />
|
|
<up-action-sheet
|
:show="showSupplierTypeSheet"
|
title="选择供应商类型"
|
:actions="supplierTypeActions"
|
@select="onSelectSupplierType"
|
@close="showSupplierTypeSheet = false"
|
/>
|
<up-action-sheet
|
:show="showIsWhiteSheet"
|
title="选择白名单"
|
:actions="isWhiteActions"
|
@select="onSelectIsWhite"
|
@close="showIsWhiteSheet = false"
|
/>
|
</view>
|
</template>
|
|
<script setup>
|
import { computed, onMounted, ref } from "vue";
|
import { onLoad } from "@dcloudio/uni-app";
|
import FooterButtons from "@/components/FooterButtons.vue";
|
import useUserStore from "@/store/modules/user";
|
import { formatDateToYMD } from "@/utils/ruoyi";
|
import { addSupplier, getSupplier, updateSupplier } from "@/api/basicData/supplierManageFile";
|
|
const userStore = useUserStore();
|
const formRef = ref();
|
const loading = ref(false);
|
const supplierId = ref(undefined);
|
|
const form = ref({
|
supplierName: "",
|
taxpayerIdentificationNum: "",
|
companyAddress: "",
|
companyPhone: "",
|
bankAccountName: "",
|
bankAccountNum: "",
|
contactUserName: "",
|
contactUserPhone: "",
|
maintainUserId: "",
|
maintainUserName: "",
|
maintainTime: "",
|
supplierType: "",
|
isWhite: 0,
|
});
|
|
const rules = {
|
supplierName: [{ required: true, message: "请输入供应商名称", trigger: "blur" }],
|
taxpayerIdentificationNum: [{ required: true, message: "请输入纳税人识别号", trigger: "blur" }],
|
companyAddress: [{ required: true, message: "请输入公司地址", trigger: "blur" }],
|
companyPhone: [{ required: true, message: "请输入公司电话", trigger: "blur" }],
|
bankAccountName: [{ required: true, message: "请输入开户行", trigger: "blur" }],
|
bankAccountNum: [{ required: true, message: "请输入账号", trigger: "blur" }],
|
supplierType: [{ required: true, message: "请选择供应商类型", trigger: "change" }],
|
isWhite: [{ required: true, message: "请选择白名单", trigger: "change" }],
|
};
|
|
const pageTitle = computed(() => {
|
return supplierId.value ? "编辑供应商" : "新增供应商";
|
});
|
|
const supplierTypeActions = [
|
{ name: "甲", value: "甲" },
|
{ name: "乙", value: "乙" },
|
{ name: "丙", value: "丙" },
|
{ name: "丁", value: "丁" },
|
];
|
const isWhiteActions = [
|
{ name: "是", value: 0 },
|
{ name: "否", value: 1 },
|
];
|
|
const showSupplierTypeSheet = ref(false);
|
const showIsWhiteSheet = ref(false);
|
|
const supplierTypeText = computed(() => form.value.supplierType || "");
|
const isWhiteText = computed(() => {
|
return String(form.value.isWhite) === "0" ? "是" : "否";
|
});
|
|
const onSelectSupplierType = action => {
|
form.value.supplierType = action.value;
|
showSupplierTypeSheet.value = false;
|
};
|
|
const onSelectIsWhite = action => {
|
form.value.isWhite = action.value;
|
showIsWhiteSheet.value = false;
|
};
|
|
const initForAdd = () => {
|
form.value.maintainUserId = userStore.id;
|
form.value.maintainUserName = userStore.nickName;
|
form.value.maintainTime = formatDateToYMD(Date.now());
|
form.value.isWhite = 0;
|
};
|
|
const loadDetail = () => {
|
if (!supplierId.value) return;
|
uni.showLoading({ title: "加载中...", mask: true });
|
getSupplier(supplierId.value)
|
.then(res => {
|
form.value = { ...form.value, ...(res.data || {}) };
|
})
|
.catch(() => {
|
uni.showToast({ title: "获取详情失败", icon: "error" });
|
})
|
.finally(() => {
|
uni.hideLoading();
|
});
|
};
|
|
const goBack = () => {
|
uni.navigateBack();
|
};
|
|
const handleSubmit = async () => {
|
const valid = await formRef.value.validate().catch(() => false);
|
if (!valid) return;
|
loading.value = true;
|
const action = supplierId.value ? updateSupplier : addSupplier;
|
action({ ...form.value, id: supplierId.value })
|
.then(() => {
|
uni.showToast({ title: "保存成功", icon: "success" });
|
uni.navigateBack();
|
})
|
.catch(() => {
|
uni.showToast({ title: "保存失败", icon: "error" });
|
})
|
.finally(() => {
|
loading.value = false;
|
});
|
};
|
|
onMounted(() => {
|
userStore.getInfo();
|
initForAdd();
|
});
|
|
onLoad(options => {
|
if (options?.id) supplierId.value = options.id;
|
if (supplierId.value) loadDetail();
|
});
|
</script>
|
|
<style scoped lang="scss">
|
@import "@/styles/procurement-common.scss";
|
|
.account-detail {
|
min-height: 100vh;
|
background: #f8f9fa;
|
padding-bottom: 90px;
|
}
|
|
.form-section {
|
margin: 12px;
|
border-radius: 12px;
|
overflow: hidden;
|
}
|
</style>
|