add.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <template>
  2. <div class="form">
  3. <van-nav-bar
  4. :title="$t('arrivalQuality.name')"
  5. :left-text="$t('common.back')"
  6. left-arrow
  7. @click-left="onClickLeft"
  8. >
  9. </van-nav-bar>
  10. <testForm
  11. v-model="formData.data"
  12. :formOption="formOption"
  13. :formConfig="formConfig"
  14. :rules="rules"
  15. @onSubmit="onSubmit"
  16. ref="formDom"
  17. ></testForm>
  18. </div>
  19. </template>
  20. <script setup>
  21. import { ref, reactive, getCurrentInstance, onMounted } from "vue";
  22. import { showSuccessToast, showFailToast } from "vant";
  23. import { useRoute } from "vue-router";
  24. import testForm from "@/components/testForm/index.vue";
  25. const proxy = getCurrentInstance().proxy;
  26. const route = useRoute();
  27. const formDom = ref(null);
  28. const formData = reactive({
  29. data: {},
  30. });
  31. const rules = {
  32. qualifiedCount: [
  33. {
  34. required: true,
  35. message: proxy.t("arrivalQuality.qualityQualifiedCanNotBeEmpty"),
  36. },
  37. ],
  38. noQualifiedCount: [
  39. {
  40. required: true,
  41. message: proxy.t("arrivalQuality.qualityUnQualifiedCanNotBeEmpty"),
  42. },
  43. ],
  44. };
  45. const formOption = reactive({
  46. readonly: false, //用于控制整个表单是否只读
  47. disabled: false,
  48. labelAlign: "top",
  49. scroll: true,
  50. labelWidth: "62pk",
  51. submitBtnText: proxy.t("common.submit"),
  52. btnConfig: {
  53. isNeed: false,
  54. listTitle: proxy.t("arrivalQuality.relatedContract"),
  55. prop: "arrivalQualityContractList",
  56. plain: true,
  57. listConfig: [],
  58. },
  59. });
  60. const formConfig = reactive([
  61. {
  62. type: "input",
  63. label: proxy.t("arrivalQuality.supplyName"),
  64. prop: "supplyName",
  65. itemType: "text",
  66. readonly: true,
  67. },
  68. {
  69. type: "input",
  70. label: proxy.t("arrivalQuality.arrivalCode"),
  71. prop: "code",
  72. itemType: "text",
  73. readonly: true,
  74. },
  75. {
  76. type: "input",
  77. label: proxy.t("arrivalQuality.productName"),
  78. prop: "productName",
  79. itemType: "text",
  80. readonly: true,
  81. },
  82. {
  83. type: "input",
  84. label: proxy.t("arrivalQuality.productSpec"),
  85. prop: "productSpec",
  86. itemType: "text",
  87. readonly: true,
  88. },
  89. {
  90. type: "input",
  91. label: proxy.t("arrivalQuality.arrivalNumber"),
  92. prop: "count",
  93. itemType: "text",
  94. readonly: true,
  95. },
  96. {
  97. type: "input",
  98. label: proxy.t("arrivalQuality.alreadyQualityNumber"),
  99. prop: "sumQualityCount",
  100. itemType: "text",
  101. readonly: true,
  102. },
  103. {
  104. type: "input",
  105. label: proxy.t("arrivalQuality.qualityQualified"),
  106. prop: "qualifiedCount",
  107. itemType: "number",
  108. },
  109. {
  110. type: "input",
  111. label: proxy.t("arrivalQuality.qualityUnQualified"),
  112. prop: "noQualifiedCount",
  113. itemType: "number",
  114. },
  115. ]);
  116. const onClickLeft = () => history.back();
  117. onMounted(() => {
  118. if (route.query && route.query.id) {
  119. let ids = [route.query.id];
  120. proxy.post("/arrivalDetail/detail", { ids }).then((res) => {
  121. formData.data = {
  122. arrivalId: route.query.arrivalId,
  123. supplyId: route.query.supplyId,
  124. supplyName: route.query.supplyName,
  125. code: route.query.code,
  126. productSpec: route.query.productSpec,
  127. productName: route.query.productName,
  128. count: route.query.count,
  129. arrivalDetailId: res.data[0].id,
  130. sumQualityCount: res.data[0].sumQualityCount,
  131. qualifiedCount: "",
  132. noQualifiedCount: "",
  133. };
  134. });
  135. }
  136. });
  137. const onSubmit = () => {
  138. let data = { ...formData.data };
  139. if (Number(data.qualifiedCount) + Number(data.noQualifiedCount) > 0) {
  140. if (
  141. Number(data.qualifiedCount) +
  142. Number(data.noQualifiedCount) +
  143. Number(data.sumQualityCount) >
  144. Number(data.count)
  145. ) {
  146. return showFailToast(
  147. proxy.t(
  148. "arrivalQuality.qualityInspectionQuantityNotBeGreaterThanArrivalNumber"
  149. )
  150. );
  151. } else {
  152. let obj = {
  153. arrivalDetailId: data.arrivalDetailId,
  154. qualifiedCount: data.qualifiedCount,
  155. noQualifiedCount: data.noQualifiedCount,
  156. };
  157. delete data.arrivalDetailId;
  158. delete data.qualifiedCount;
  159. delete data.noQualifiedCount;
  160. data.qualityDetailList = [obj];
  161. proxy.post("/quality/add", data).then(
  162. () => {
  163. showSuccessToast(proxy.t("common.operationSuccessful"));
  164. setTimeout(() => {
  165. onClickLeft();
  166. }, 500);
  167. },
  168. (err) => {
  169. return showFailToast(err.message);
  170. }
  171. );
  172. }
  173. } else {
  174. return showFailToast(
  175. proxy.t("arrivalQuality.qualityInspectionQuantityCannotBeZero")
  176. );
  177. }
  178. };
  179. </script>
  180. <style lang="scss" scoped>
  181. </style>