| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- <template>
- <div class="p-2">
- <el-card shadow="never">
- <template #header>
- <el-row :gutter="10" class="mb8">
- <el-col :span="22">
- <span>企业采购习惯</span>
- </el-col>
- </el-row>
- </template>
- <el-form ref="purchaseHabitFormRef" :model="form" :rules="rules" label-width="140px">
- <!-- 基本信息 -->
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="月度采购金额预估" prop="monthPurchase">
- <el-input v-model="form.monthPurchase" placeholder="请输入月度采购金额预估" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="年度采购金额" prop="yearPurchase">
- <el-input v-model="form.yearPurchase" placeholder="请输入年度采购金额" />
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 产品选择 -->
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="产品选型" prop="choiceModel">
- <el-radio-group v-model="form.choiceModel">
- <el-radio v-for="dict in product_types_choosing" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 日常打印量 -->
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="日常打印量" prop="printAmount">
- <el-radio-group v-model="form.printAmount">
- <el-radio v-for="dict in daily_print_volume" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 购买选项 -->
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="购买原装耗材" prop="buyOriginal">
- <el-radio-group v-model="form.buyOriginal">
- <el-radio v-for="dict in sys_platform_yes_no" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="专人进行技术服务" prop="technologyService">
- <el-radio-group v-model="form.technologyService">
- <el-radio v-for="dict in sys_platform_yes_no" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 主要办公采购类目 -->
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="主要办公采购类目" prop="purchaseCategory">
- <el-checkbox-group v-model="purchaseCategoryArr">
- <el-checkbox v-for="dict in purchase_item" :key="dict.value" :value="dict.value">
- {{ dict.label }}
- </el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item prop="otherCategory">
- <el-input v-model="form.otherCategory" type="textarea" :rows="2" placeholder="其他采购品类" />
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 企业福利 -->
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="企业福利" prop="adaptScene">
- <el-checkbox-group v-model="adaptSceneArr">
- <el-checkbox v-for="dict in welfare_item" :key="dict.value" :value="dict.value">
- {{ dict.label }}
- </el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item prop="otherScene">
- <el-input v-model="form.otherScene" type="textarea" :rows="2" placeholder="其他企业福利" />
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 产品定制需求 -->
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="产品定制需求" prop="customizeDemand">
- <el-checkbox-group v-model="customizeDemandArr">
- <el-checkbox v-for="dict in product_customization" :key="dict.value" :value="dict.value">
- {{ dict.label }}
- </el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item prop="otherCustomize">
- <el-input v-model="form.otherCustomize" type="textarea" :rows="2" placeholder="其他定制化需求" />
- </el-form-item>
- </el-col>
- </el-row>
- <!-- 提交按钮 -->
- <el-row :gutter="20">
- <el-col :span="24" class="text-center">
- <el-button @click="goBack">取消</el-button>
- <el-button :loading="buttonLoading" type="primary" @click="submitForm">保存</el-button>
- </el-col>
- </el-row>
- </el-form>
- </el-card>
- </div>
- </template>
- <script setup name="PurchaseHabit" lang="ts">
- import {
- listPurchaseHabit,
- getPurchaseHabit,
- delPurchaseHabit,
- addPurchaseHabit,
- updatePurchaseHabit,
- getCustomerPurchaseHabitData
- } from '@/api/customer/customerFile/purchaseHabit';
- import { PurchaseHabitVO, PurchaseHabitQuery, PurchaseHabitForm } from '@/api/customer/customerFile/purchaseHabit/types';
- // 接收父组件传递的props
- const props = defineProps<{
- customerId?: string;
- customerNo?: string;
- customerName?: string;
- }>();
- const { proxy } = getCurrentInstance() as ComponentInternalInstance;
- const { welfare_item, sys_platform_yes_no, product_types_choosing, purchase_item, product_customization, daily_print_volume } = toRefs<any>(
- proxy?.useDict('welfare_item', 'sys_platform_yes_no', 'product_types_choosing', 'purchase_item', 'product_customization', 'daily_print_volume')
- );
- const purchaseHabitList = ref<PurchaseHabitVO[]>([]);
- const buttonLoading = ref(false);
- const loading = ref(true);
- const router = useRouter();
- const ids = ref<Array<string | number>>([]);
- const single = ref(true);
- const multiple = ref(true);
- const total = ref(0);
- const adaptSceneArr = ref<Array<string | number>>([]);
- const purchaseCategoryArr = ref<Array<string | number>>([]);
- const customizeDemandArr = ref<Array<string | number>>([]);
- const queryFormRef = ref<ElFormInstance>();
- const purchaseHabitFormRef = ref<ElFormInstance>();
- const dialog = reactive<DialogOption>({
- visible: false,
- title: ''
- });
- const initFormData: PurchaseHabitForm = {
- id: undefined,
- customerId: undefined,
- customerNo: undefined,
- monthPurchase: undefined,
- yearPurchase: undefined,
- permanentOfficer: undefined,
- choiceModel: undefined,
- printAmount: undefined,
- buyOriginal: '1',
- technologyService: '1',
- purchaseCategory: undefined,
- otherCategory: undefined,
- adaptScene: undefined,
- otherScene: undefined,
- customizeDemand: undefined,
- otherCustomize: undefined,
- remark: undefined
- };
- const data = reactive<PageData<PurchaseHabitForm, PurchaseHabitQuery>>({
- form: { ...initFormData },
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- customerId: undefined,
- customerNo: undefined,
- monthPurchase: undefined,
- yearPurchase: undefined,
- permanentOfficer: undefined,
- choiceModel: undefined,
- printAmount: undefined,
- buyOriginal: undefined,
- technologyService: undefined,
- purchaseCategory: undefined,
- otherCategory: undefined,
- adaptScene: undefined,
- otherScene: undefined,
- customizeDemand: undefined,
- otherCustomize: undefined,
- platformCode: undefined,
- params: {}
- },
- rules: {
- buyOriginal: [{ required: true, message: '是否购买原装耗材不能为空', trigger: 'change' }],
- technologyService: [{ required: true, message: '是否购买技术服务不能为空', trigger: 'change' }]
- }
- });
- const { queryParams, form, rules } = toRefs(data);
- /** 查询客户采购习惯列表 */
- const getList = async () => {
- loading.value = true;
- const res = await listPurchaseHabit(queryParams.value);
- purchaseHabitList.value = res.rows;
- total.value = res.total;
- loading.value = false;
- };
- /** 加载客户采购画像数据 */
- const loadCustomerPurchaseData = async () => {
- if (!props.customerId) return;
- try {
- loading.value = true;
- const res = await getCustomerPurchaseHabitData(props.customerId);
- if (res.data) {
- Object.assign(form.value, res.data);
- // 将字符串转换为数组并赋值给对应的数组变量
- if (form.value.purchaseCategory && typeof form.value.purchaseCategory === 'string') {
- purchaseCategoryArr.value = form.value.purchaseCategory.split(',').filter((item: string) => item.trim());
- } else {
- purchaseCategoryArr.value = [];
- }
- if (form.value.adaptScene && typeof form.value.adaptScene === 'string') {
- adaptSceneArr.value = form.value.adaptScene.split(',').filter((item: string) => item.trim());
- } else {
- adaptSceneArr.value = [];
- }
- if (form.value.customizeDemand && typeof form.value.customizeDemand === 'string') {
- customizeDemandArr.value = form.value.customizeDemand.split(',').filter((item: string) => item.trim());
- } else {
- customizeDemandArr.value = [];
- }
- } else {
- // 如果没有数据,设置客户编号并初始化数组
- form.value.customerId = props.customerId;
- form.value.customerNo = props.customerNo;
- purchaseCategoryArr.value = [];
- adaptSceneArr.value = [];
- customizeDemandArr.value = [];
- }
- } catch (error) {
- console.error('加载采购画像数据失败:', error);
- // 如果加载失败,设置客户编号并初始化数组
- form.value.customerId = props.customerId;
- form.value.customerNo = props.customerNo;
- purchaseCategoryArr.value = [];
- adaptSceneArr.value = [];
- customizeDemandArr.value = [];
- } finally {
- loading.value = false;
- }
- };
- const goBack = () => {
- router.push('/customer/customer-file/customer-list');
- };
- /** 提交按钮 */
- const submitForm = () => {
- purchaseHabitFormRef.value?.validate(async (valid: boolean) => {
- if (valid) {
- buttonLoading.value = true;
- // 将数组变量转换为逗号分隔的字符串并赋值给form字段
- form.value.purchaseCategory = purchaseCategoryArr.value.join(',');
- form.value.adaptScene = adaptSceneArr.value.join(',');
- form.value.customizeDemand = customizeDemandArr.value.join(',');
- try {
- if (form.value.id) {
- await updatePurchaseHabit(form.value);
- } else {
- await addPurchaseHabit(form.value);
- }
- proxy?.$modal.msgSuccess('保存成功');
- // 重新加载数据
- await loadCustomerPurchaseData();
- } catch (error) {
- console.error('保存失败:', error);
- proxy?.$modal.msgError('保存失败,请重试');
- } finally {
- buttonLoading.value = false;
- }
- }
- });
- };
- /** 删除按钮操作 */
- const handleDelete = async (row?: PurchaseHabitVO) => {
- const _ids = row?.id || ids.value;
- await proxy?.$modal.confirm('是否确认删除客户采购习惯编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
- await delPurchaseHabit(_ids);
- proxy?.$modal.msgSuccess('删除成功');
- await getList();
- };
- /** 导出按钮操作 */
- const handleExport = () => {
- proxy?.download(
- 'customer/purchaseHabit/export',
- {
- ...queryParams.value
- },
- `purchaseHabit_${new Date().getTime()}.xlsx`
- );
- };
- onMounted(() => {
- // 页面加载时根据客户编号查询采购画像数据
- loadCustomerPurchaseData();
- });
- // 监听props变化
- watch(
- () => props.customerId,
- (newCustomerId) => {
- if (newCustomerId) {
- loadCustomerPurchaseData();
- }
- }
- );
- </script>
|