detail.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <LjDetail
  3. name="bednetvarListDetail"
  4. ref="LjDetailRef"
  5. v-bind="detailProps"
  6. v-model:order-status="orderStatus"
  7. :data="mainData"
  8. :if-fold-layout="false"
  9. :if-layout-editable="false"
  10. :search-col="{ xs: 4, sm: 4, md: 4, lg: 4, xl: 4 }"
  11. :basic-group-col="{ xs: 4, sm: 4, md: 4, lg: 4, xl: 4 }"
  12. :enum="props.enum"
  13. :if-basic-editable="false"
  14. >
  15. <!-- :action="orderStatus ? orderEditAction : orderDefaultAction" -->
  16. <template #mxList="scope">
  17. <!-- {{ scope }}
  18. {{ LjDetailRef?._mainData.varclass }}
  19. {{ LjDetailRef?._mainData?.varclass != "2" }} -->
  20. <LjVxeTable
  21. v-if="scope?.data?.varclass != '2'"
  22. ref="VxeTableMxRef"
  23. row-key="varmxid"
  24. table-cls=""
  25. :request-api="getMxData"
  26. :data-callback="dataCallback"
  27. :init-param="initParams_mx"
  28. :columns="columns_mx"
  29. :dwname="dwname_mx"
  30. :table-props="tableProps"
  31. :auto-load-layout="false"
  32. :collapse-buttons="true"
  33. :table-buttons="[]"
  34. >
  35. </LjVxeTable>
  36. </template>
  37. </LjDetail>
  38. </template>
  39. <script setup lang="tsx" name="bednetvarListDetail">
  40. import { ref, watch, reactive, inject, onMounted } from "vue";
  41. import { DwnameEnum } from "@/enums/dwnameEnum";
  42. import LjDetail from "@/components/LjDetail/index.vue";
  43. import { DetailProp, detailModelItemProp } from "@/components/LjDetail/interface";
  44. import { useI18n } from "vue-i18n";
  45. import { useHooks } from "./hooks/index";
  46. import { useAuthButtons } from "@/hooks/useAuthButtons";
  47. import { getBedNetVarMxList, getBedNetVarMxNewList } from "@/api/modules/basicinfo";
  48. import { cloneDeep } from "lodash-es";
  49. interface detailProp {
  50. /**
  51. * @argument any 页面数据
  52. */
  53. data?: any;
  54. /**
  55. * @argument string 请求数据的api ==> 非必传
  56. */
  57. requestApi?: (params: any) => Promise<any>;
  58. /**
  59. * @argument any 基础信息,表格展示数据
  60. */
  61. // columns?: any;
  62. /**
  63. * @description 是否可编辑
  64. */
  65. status: "edit" | "new" | string;
  66. enum?: any;
  67. }
  68. const handleSelVarclass = (value: number) => {
  69. initParams_mx.value.varclass = value;
  70. // detailProps.mould.forEach((item: any) => {
  71. // item.value.isHidden = value > 1;
  72. // });
  73. detailProps.mould = [];
  74. };
  75. const props = withDefaults(defineProps<detailProp>(), {});
  76. const { t } = useI18n();
  77. const { LjDetailRef, columns, columns_mx, VxeTableMxRef, fChangeBedNetType } = useHooks(t, handleSelVarclass);
  78. const { CheckPower, CheckOption, buttonNew, buttonDefault } = useAuthButtons(t);
  79. const mainData = ref([{}]);
  80. const initParams_mx = ref({ varid: 0, varclass: 0 });
  81. /**
  82. * @description 是否可编辑
  83. */
  84. const orderStatus = ref("");
  85. const detailProps = reactive<DetailProp>({
  86. dwname: DwnameEnum.bednetvarlist,
  87. columns: columns,
  88. // addPower: 5,
  89. // editPower: 4359,
  90. header: {
  91. fieldNames: {
  92. code: "deptname",
  93. codeLabel: t("table.u_cust.cuscode") + ":",
  94. name: "name"
  95. },
  96. icon: "iconuser-01",
  97. tabsProp: {
  98. scrollspy: false,
  99. sticky: true
  100. }
  101. },
  102. mould: [
  103. {
  104. id: "mxList",
  105. type: "table",
  106. label: "变量明细定义"
  107. // limited: (params: any) => {
  108. // console.log("mxList params?.if_w_butao :>> ", params);
  109. // if (!params) return true;
  110. // console.log("params?.varclass :>> ", params?.varclass);
  111. // return Number(params?.varclass) == 2;
  112. // // return true;
  113. // }
  114. }
  115. ]
  116. });
  117. const dwname_mx = "web_bednetvarmxlist";
  118. const tableProps = {
  119. height: "",
  120. editConfig: { trigger: "click", mode: "cell" }
  121. // rowClassName: rowClsNameFunc
  122. // exportConfig: {
  123. // filename: t("menu.saletaskmx") + formatToDate(new Date(), "YYYY-MM-DD HH:mm:ss")
  124. // }
  125. };
  126. const getMxData = (params: any) => {
  127. if (orderStatus.value === "new") {
  128. return getBedNetVarMxNewList(params);
  129. }
  130. return getBedNetVarMxList(params);
  131. };
  132. const dataCallback = (data: any) => {
  133. return {
  134. list: data.datatable,
  135. tableinfo: data.tableinfo,
  136. total: data.totalcnt,
  137. pageNum: data.pageindex,
  138. pageSize: data.pagesize
  139. };
  140. };
  141. watch(
  142. () => props.data,
  143. val => {
  144. console.log("props.data, val :>> ", val);
  145. mainData.value = [val];
  146. initParams_mx.value.varid = parseInt(val.varid);
  147. initParams_mx.value.varclass = parseInt(val.varclass);
  148. fChangeBedNetType(parseInt(val.varclass));
  149. },
  150. { immediate: true }
  151. );
  152. watch(
  153. () => props.status,
  154. val => {
  155. console.log("props.status val :>> ", val);
  156. orderStatus.value = val;
  157. },
  158. { immediate: true, deep: true }
  159. );
  160. </script>