ZBLOG

关联客户 ...

你可以通过在响应中检查特定消息并相应地更新组件的状态,以允许用户手动输入产品名称和借据号。可以在 Vue 组件中增加一个状态变量来控制是否允许手动输入。

以下是如何实现这一点的示例代码:

  1. <template>
  2. <a-button
  3. class="margin-right-10 button-light-blue"
  4. type="primary"
  5. @click="handleAssociateCustomer"
  6. >
  7. 关联客户
  8. </a-button>
  9. <a-form-item>
  10. <a-row>
  11. <a-col :span="12" v-if="isCustomerAssociated">
  12. <a-form-item label="产品名称" style="width: 250%; margin-left: -130px">
  13. <a-select
  14. v-model:value="formModal.productName"
  15. mode="multiple"
  16. placeholder="请选择产品名称或手动输入"
  17. :options="productOptions"
  18. :disabled="isEditing && !canManuallyInput"
  19. allowClear
  20. />
  21. <a-input
  22. v-if="canManuallyInput"
  23. v-model:value="manualProductName"
  24. placeholder="请输入产品名称,多个用逗号隔开"
  25. @keyup.enter.prevent="addManualProductName"
  26. />
  27. </a-form-item>
  28. </a-col>
  29. </a-row>
  30. <a-row>
  31. <a-col :span="12" v-if="isCustomerAssociated">
  32. <a-form-item label="借据号" style="width: 250%; margin-left: -130px">
  33. <a-select
  34. v-model:value="formModal.loanInfoCode"
  35. mode="multiple"
  36. placeholder="请选择借据号或手动输入"
  37. :options="loanOptions"
  38. :disabled="!formModal.productName.length || isEditing && !canManuallyInput"
  39. allowClear
  40. />
  41. <a-input
  42. v-if="canManuallyInput"
  43. v-model:value="manualLoanInfoCode"
  44. placeholder="请输入借据号,多个用逗号隔开"
  45. @keyup.enter.prevent="addManualLoanInfoCode"
  46. />
  47. </a-form-item>
  48. </a-col>
  49. </a-row>
  50. </a-form-item>
  51. </template>
  52. <script setup>
  53. import { ref, computed } from 'vue';
  54. import { message } from 'ant-design-vue';
  55. import { getCustomerByIdent } from './api';
  56. const isCustomerAssociated = ref(false);
  57. const isEditing = ref(false);
  58. const canManuallyInput = ref(false); // 新增变量用于控制是否可手动输入
  59. const formModal = ref({
  60. ident: '',
  61. customerName: '',
  62. phoneNumber: '',
  63. productName: [],
  64. loanInfoCode: ''
  65. });
  66. const productOptions = ref([]);
  67. const loanOptions = ref([]);
  68. const workOrderLoans = ref([]);
  69. // 手动输入的变量
  70. const manualProductName = ref('');
  71. const manualLoanInfoCode = ref('');
  72. const filteredProductOptions = computed(() => {
  73. const uniqueProducts = new Set();
  74. workOrderLoans.value.forEach((loan) => uniqueProducts.add(loan.productName));
  75. return Array.from(uniqueProducts).map((product) => ({
  76. value: product,
  77. label: product,
  78. }));
  79. });
  80. const filteredLoanOptions = computed(() => {
  81. if (!formModal.value.productName || formModal.value.productName.length === 0) {
  82. return [];
  83. }
  84. const filteredLoans = workOrderLoans.value.filter((loan) =>
  85. formModal.value.productName.includes(loan.productName)
  86. );
  87. return filteredLoans.map((loan) => ({
  88. value: loan.loanInfoCode,
  89. label: loan.loanInfoCode,
  90. }));
  91. });
  92. const handleAssociateCustomer = () => {
  93. getCustomerByIdent({ ident: formModal.value.ident }).then((response) => {
  94. if (response.success) {
  95. isCustomerAssociated.value = true;
  96. formModal.value.customerName = response.data.customerName;
  97. formModal.value.phoneNumber = response.data.phoneNumber;
  98. workOrderLoans.value = response.data.workOrderLoans;
  99. } else if (response.message === '身份证号未匹配到客户信息请排查') {
  100. message.error('身份证号未匹配到客户信息,请手动输入');
  101. isCustomerAssociated.value = true;
  102. canManuallyInput.value = true; // 当收到该消息时允许手动输入产品和借据编号
  103. } else {
  104. message.error(response.message);
  105. }
  106. });
  107. };
  108. // 添加手动输入的功能(根据需要进行处理)
  109. const addManualProductName = () => {
  110. if (manualProductName.value.trim()) {
  111. const productsToAdd = manualProductName.value.split(',').map(item => item.trim()).filter(item => item);
  112. formModal.value.productName.push(...productsToAdd);
  113. manualProductName.value ='';
  114. }
  115. };
  116. const addManualLoanInfoCode= () => {
  117. if (manualLoanInfoCode.value.trim()) {
  118. const loansToAdd= manualLoanInfoCode.value.split(',').map(item=>item.trim()).filter(item=>item);
  119. formModal.value.loanInfoCode.push(...loansToAdd);
  120. manualLoanInfoCode .value='';
  121. }
  122. };
  123. </script>
  124. <style scoped>
  125. // 在此添加样式,如果需要的话。
  126. </style>

改动说明:

  1. 新增 canManuallyInput 状态:当接收到“身份证号未匹配到客户信息请排查”的响应时,设置为 true,以启用手动输入功能。
  2. 使用 <input> 元素:在下拉框旁边添加了文本框,用于用户直接键入多个选项(以逗号分隔)。
  3. 分割字符串:新增了方法 addManualProductNameaddManualLoanInfoCode 来将用户键入的值添加到对应的数组中。

这样一来,当查询结果返回特定信息时,用户就能够直接在下拉框旁边进行手动输入。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22845

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?