index.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <template>
  2. <div class="table-box">
  3. <LjVxeTable
  4. ref="VxeTableRef"
  5. row-key="softbed_id"
  6. :columns="columns"
  7. :init-param="initParams"
  8. :request-api="getData"
  9. :data-callback="dataCallback"
  10. :dwname="DwnameEnum.softbedQuote"
  11. :table-props="tableProps"
  12. :table-events="tableEvents"
  13. :auto-load-layout="false"
  14. :search-btn-size-extent="[]"
  15. pagination
  16. >
  17. <!-- 表格 header 按钮 -->
  18. <template #tableHeader>
  19. <LjHeaderMenu :action="action" />
  20. </template>
  21. </LjVxeTable>
  22. </div>
  23. </template>
  24. <script setup lang="ts" name="softbedQuote">
  25. import { ref, reactive } from "vue";
  26. import { useRouter } from "vue-router";
  27. import { CommonDynamicSelect } from "@/api/modules/common";
  28. import { useHooks } from "./hooks/index";
  29. import LjHeaderMenu from "@/components/LjHeaderMenu/index.vue";
  30. import { useI18n } from "vue-i18n";
  31. import { useAuthButtons } from "@/hooks/useAuthButtons";
  32. import { DwnameEnum } from "@/enums/dwnameEnum";
  33. import { formatToDateTime, formatToDate } from "@/utils/dateUtil";
  34. import { cloneDeep } from "lodash-es";
  35. import { useGlobalStore } from "@/stores/modules/global";
  36. import { ElMessage, ElMessageBox } from "element-plus";
  37. import { detailAction } from "@/components/LjDetail/interface";
  38. import { useUserStore } from "@/stores/modules/user";
  39. import { getCurrentRecords } from "@/utils/index";
  40. const { t } = useI18n();
  41. const router = useRouter();
  42. const globalStore = useGlobalStore();
  43. const { columns, orderStatus, VxeTableRef, initParams, onAudit, onCAudit, onDelete, onShowFormula } = useHooks(t);
  44. const { CheckPower, CheckOption, buttonNew, buttonDefault } = useAuthButtons(t);
  45. const { userInfo } = useUserStore();
  46. const showHeadboard = ref(true);
  47. const showNightstand = ref(true);
  48. const showBedframe = ref(true);
  49. const getData = (params: any) => {
  50. let newParams: any = {};
  51. params.pageNum && (newParams.pageindex = params.pageNum);
  52. params.pageSize && (newParams.pagesize = params.pageSize);
  53. params.orderstr && (newParams.orderstr = params.orderstr);
  54. delete params.pageNum;
  55. delete params.pageSize;
  56. delete params.orderstr;
  57. let _params = cloneDeep(params);
  58. newParams.queryParams = _params;
  59. newParams.dsname = "web_softbed_list";
  60. return CommonDynamicSelect(newParams, DwnameEnum.softbedQuote);
  61. };
  62. const dataCallback = (data: any) => {
  63. return {
  64. list: data.datatable,
  65. tableinfo: data.tableinfo,
  66. total: data.totalcnt,
  67. pageNum: data.pageindex,
  68. pageSize: data.pagesize
  69. };
  70. };
  71. const handleDBlClickTable = ({ row, rowIndex, $rowIndex, column, columnIndex, $columnIndex, $event }: any) => {
  72. //
  73. if (globalStore.detailBlank) {
  74. // 打开新的窗口
  75. const routeUrl = router.resolve({
  76. path: `/softbedQuote/detail`,
  77. query: {
  78. id: row.softbed_id,
  79. code: row.softbed_code
  80. }
  81. });
  82. window.open(routeUrl.href, "_blank");
  83. } else {
  84. // 打开新的标签页
  85. router.push(`/softbedQuote/detail?id=${row.softbed_id}&code=${row.softbed_code}`);
  86. }
  87. };
  88. const rowClsNameFunc = (data: any) => {
  89. const { row, rowIndex, $rowIndex } = data;
  90. return "";
  91. };
  92. const tableProps = {
  93. height: "auto",
  94. editConfig: { trigger: "click", mode: "cell" },
  95. rowClassName: rowClsNameFunc,
  96. exportConfig: {
  97. filename: t("menu.softbedQuote") + formatToDate(new Date(), "YYYY-MM-DD HH:mm:ss")
  98. }
  99. };
  100. // 返回绑定的事件
  101. const tableEvents = {
  102. "cell-dblclick": handleDBlClickTable
  103. };
  104. /**
  105. * @description 按钮展示
  106. */
  107. const action: detailAction[] = [
  108. buttonDefault({
  109. label: t("common.redo"),
  110. clickFunc: item => {
  111. VxeTableRef.value.refresh();
  112. }
  113. }),
  114. buttonDefault({
  115. label: t("common.add"),
  116. power: 133,
  117. clickFunc: item => {
  118. router.push(`/softbedQuote/new?id=0`);
  119. }
  120. }),
  121. buttonDefault({
  122. label: t("common.editText"),
  123. power: 133,
  124. clickFunc: item => {
  125. const { $table, curRecords } = getCurrentRecords(VxeTableRef.value);
  126. if (!curRecords.length) {
  127. ElMessage.warning(t("business.tips.mattress.records"));
  128. return;
  129. }
  130. const _cur = curRecords[curRecords.length - 1];
  131. if (_cur.flag == 1) {
  132. ElMessage.warning("单据已审核,不能修改");
  133. return;
  134. }
  135. router.push(`/softbedQuote/edit?id=${_cur.softbed_id}&code=${_cur.softbed_code}`);
  136. }
  137. }),
  138. buttonDefault({
  139. label: t("common.delText"),
  140. power: 136,
  141. disabledTextCallBack: (data: any) => {
  142. if (!CheckPower(136)) {
  143. return "你没有【报价单-删除】的使用权限";
  144. }
  145. return "";
  146. },
  147. clickFunc: item => {
  148. const { curRecords } = getCurrentRecords(VxeTableRef.value);
  149. if (!curRecords.length) {
  150. ElMessage.warning(t("business.tips.mattress.records"));
  151. return;
  152. }
  153. let list = curRecords.map((item: any) => {
  154. return { softbed_id: Number(item.softbed_id) };
  155. });
  156. onDelete(list);
  157. }
  158. }),
  159. buttonDefault({
  160. label: t("common.auditText"),
  161. power: 134,
  162. limited: () => {
  163. return !!orderStatus.value;
  164. },
  165. disabledTextCallBack: (data: any) => {
  166. if (!CheckPower(134)) {
  167. return `你没有【报价单-${t("common.auditText")}】的使用权限`;
  168. }
  169. return "";
  170. },
  171. clickFunc: item => {
  172. const { curRecords } = getCurrentRecords(VxeTableRef.value);
  173. let list = curRecords.map((item: any) => {
  174. return { softbed_id: Number(item.softbed_id) };
  175. });
  176. onAudit(list, () => {
  177. VxeTableRef.value.refresh();
  178. });
  179. }
  180. }),
  181. buttonDefault({
  182. label: t("common.withdrawAuditText"),
  183. power: 135,
  184. limited: () => {
  185. return !!orderStatus.value;
  186. },
  187. disabledTextCallBack: (data: any) => {
  188. if (!CheckPower(135)) {
  189. return `你没有【报价单-${t("common.withdrawAuditText")}】的使用权限`;
  190. }
  191. return "";
  192. },
  193. clickFunc: item => {
  194. const { curRecords } = getCurrentRecords(VxeTableRef.value);
  195. let list = curRecords.map((item: any) => {
  196. return { softbed_id: Number(item.softbed_id) };
  197. });
  198. onCAudit(list),
  199. () => {
  200. VxeTableRef.value.refresh();
  201. };
  202. }
  203. }),
  204. buttonDefault({
  205. label: t("common.copyQuote"),
  206. power: 75,
  207. clickFunc: item => {
  208. const { $table, curRecords } = getCurrentRecords(VxeTableRef.value);
  209. if (!curRecords.length) {
  210. ElMessage.warning(t("business.tips.mattress.records"));
  211. return;
  212. }
  213. const _cur = $table.getCurrentRecord() ?? null;
  214. if (_cur) {
  215. router.push(`/softbedQuote/copy?id=${_cur.softbed_id}&code=${_cur.softbed_code}`);
  216. } else {
  217. const _cur = curRecords[curRecords.length - 1];
  218. router.push(`/softbedQuote/copy?id=${_cur.softbed_id}&code=${_cur.softbed_code}`);
  219. }
  220. }
  221. }),
  222. buttonDefault({
  223. label: t("common.showFormula"),
  224. disabledTextCallBack: () => {
  225. return userInfo.usermode == 1 ? "业务员模式不可以查看!" : "";
  226. },
  227. clickFunc: item => {}
  228. }),
  229. buttonDefault({
  230. label: t("common.viewHistoricalQuotes"),
  231. power: 61,
  232. clickFunc: item => {
  233. alert("功能维护中!");
  234. }
  235. }),
  236. buttonDefault({
  237. label: t("common.dataTransmission"),
  238. power: 61,
  239. clickFunc: item => {
  240. alert("功能维护中!");
  241. }
  242. })
  243. ];
  244. </script>