detail.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <LjDetail
  3. name="rpMustPayCrmDetail"
  4. ref="LjDetailRef"
  5. v-bind="detailProps"
  6. :data="mainData"
  7. :request-api="getData"
  8. :data-callback="dataCallback"
  9. :init-param="initParams"
  10. v-model:order-status="orderStatus"
  11. :action="orderStatus ? orderEditAction : orderDefaultAction"
  12. >
  13. <!-- @to-pin-detail="emit('toPinDetail')" -->
  14. <template #rpMustPayMxList>
  15. <LjVxeTable
  16. ref="rpMustPayMxList"
  17. row-key="key"
  18. table-cls=""
  19. :request-api="getData_mx"
  20. :data-callback="dataCallback"
  21. :init-param="initParams"
  22. :columns="columnsMx"
  23. :dwname="DwnameEnum.mattressQuoteMx"
  24. :table-props="tableProps_mx"
  25. :tool-button="['export', 'refresh', 'setting']"
  26. :auto-load-layout="false"
  27. pagination
  28. >
  29. </LjVxeTable>
  30. </template>
  31. </LjDetail>
  32. </template>
  33. <script setup lang="ts" name="mattressQuoteDetail">
  34. import { ref, watch, reactive, inject, nextTick, computed, onMounted } from "vue";
  35. import { DwnameEnum } from "@/enums/dwnameEnum";
  36. import LjDetail from "@/components/LjDetail/index.vue";
  37. import { DetailProp } from "@/components/LjDetail/interface";
  38. import { useI18n } from "vue-i18n";
  39. import { useHooks } from "./hooks/index";
  40. import { useAuthButtons } from "@/hooks/useAuthButtons";
  41. import LjVxeTable from "@/components/LjVxeTable/index.vue";
  42. import { cloneDeep } from "lodash-es";
  43. import { useRoute, useRouter } from "vue-router";
  44. import { CommonDynamicSelect } from "@/api/modules/common";
  45. interface detailProp {
  46. /**
  47. * @argument any 页面数据
  48. */
  49. data?: any;
  50. /**
  51. * @argument string 请求数据的api ==> 非必传
  52. */
  53. requestApi?: (params: any) => Promise<any>;
  54. /**
  55. * @argument any 基础信息,表格展示数据
  56. */
  57. // columns?: any;
  58. /**
  59. * @description 是否可编辑
  60. */
  61. status: "edit" | "new" | string;
  62. }
  63. const props = withDefaults(defineProps<detailProp>(), {});
  64. const { t } = useI18n();
  65. const route = useRoute();
  66. const { columns, columnsMx } = useHooks(t);
  67. const { CheckPower, CheckOption, buttonNew, buttonDefault } = useAuthButtons(t);
  68. const initParams = ref({ arg_mattressid: 0 });
  69. const mainData = ref([]);
  70. const orderStatus = ref("");
  71. const detailProps = reactive<DetailProp>({
  72. dwname: DwnameEnum.mattressQuote,
  73. columns: columns,
  74. // headerstatus: ["status", "ifamt_ok"],
  75. basicDefault: {
  76. basicGroup: [
  77. {
  78. label: "单据信息",
  79. span: 1
  80. },
  81. {
  82. label: "床垫信息",
  83. span: 1
  84. },
  85. {
  86. label: "报价信息",
  87. span: 1
  88. },
  89. {
  90. label: ""
  91. }
  92. ]
  93. },
  94. header: {
  95. fieldNames: {
  96. code: "sptcode",
  97. codeLabel: t("table.u_spt.sptcode") + ":",
  98. name: "name"
  99. },
  100. // icon: "iconclipboard",
  101. tabsProp: {
  102. scrollspy: true,
  103. sticky: true
  104. }
  105. },
  106. mould: [
  107. {
  108. id: "rpMustPayMxList",
  109. type: "table",
  110. label: t("business.takePay.mustPayMx")
  111. }
  112. ]
  113. });
  114. const tableProps_mx = {
  115. // height: "auto",
  116. height: "",
  117. minHeight: "300px",
  118. editConfig: { trigger: "click", mode: "cell" }
  119. // exportConfig: {
  120. // filename: t("menu.saleTaskCrmDetail") + formatToDate(new Date(), "YYYY-MM-DD HH:mm:ss")
  121. // }
  122. };
  123. const getData = (params: any) => {
  124. console.log("getData params :>> ", params);
  125. let newParams: any = {};
  126. params.pageNum && (newParams.pageindex = params.pageNum);
  127. params.pageSize && (newParams.pagesize = params.pageSize);
  128. delete params.pageNum;
  129. delete params.pageSize;
  130. newParams.queryParams = params;
  131. console.log("params :>> ", params);
  132. newParams.dsname = "web_mattress";
  133. return CommonDynamicSelect(newParams, DwnameEnum.mattressQuote);
  134. // return [];
  135. };
  136. const getData_mx = (params: any) => {
  137. console.log("getData params :>> ", params);
  138. let newParams: any = {};
  139. params.pageNum && (newParams.pageindex = params.pageNum);
  140. params.pageSize && (newParams.pagesize = params.pageSize);
  141. delete params.pageNum;
  142. delete params.pageSize;
  143. newParams.queryParams = params;
  144. console.log("params :>> ", params);
  145. newParams.dsname = "web_mattress_mx";
  146. return CommonDynamicSelect(newParams, DwnameEnum.mattressQuoteMx);
  147. // return [];
  148. };
  149. const dataCallback = (data: any) => {
  150. console.log("dataCallback data :>> ", data);
  151. return {
  152. list: data.datatable,
  153. tableinfo: data.tableinfo,
  154. total: data.totalcnt,
  155. pageNum: data.pageindex,
  156. pageSize: data.pagesize
  157. };
  158. };
  159. const orderDefaultAction = [
  160. buttonDefault({
  161. label: t("common.add")
  162. }),
  163. buttonDefault({
  164. label: t("common.editText")
  165. }),
  166. buttonDefault({
  167. label: t("common.delText")
  168. }),
  169. [
  170. buttonDefault({
  171. label: t("common.auditFinance"),
  172. clickFunc: () => {}
  173. }),
  174. buttonDefault({
  175. label: t("common.withdrawAuditFinance"),
  176. clickFunc: () => {}
  177. })
  178. ],
  179. buttonDefault({
  180. label: t("common.copyQuote")
  181. }),
  182. buttonDefault({
  183. label: t("common.showFormula")
  184. }),
  185. buttonDefault({
  186. label: t("common.viewHistoricalQuotes")
  187. })
  188. ];
  189. const orderEditAction = [];
  190. onMounted(async () => {
  191. console.log("route onMounted:>> ", route);
  192. console.log("route onMounted:>> ", route.params);
  193. console.log("route onMounted:>> ", route.params.id);
  194. if (route.query?.id) {
  195. // 赋值主表数据
  196. // mainData.value = res.datatable.length ? res.datatable[0] : {};
  197. console.log("mainData.value :>> ", mainData.value);
  198. // 刷新数据
  199. initParams.value.arg_mattressid = Number(route.query?.id);
  200. console.log("detail onMounted initParams.value :>> ", initParams.value);
  201. // } else {
  202. // // 直接读取
  203. // mainData.value = props.data;
  204. }
  205. });
  206. </script>
  207. <style lang="scss">
  208. .select-text-right {
  209. .el-select__wrapper {
  210. text-align: right;
  211. }
  212. }
  213. </style>