main.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <template>
  2. <div>
  3. <el-dialog title="详情" :visible.sync="dialogTableVisible" width="1280px">
  4. <detailDatatable
  5. style="margin: 0; padding: 0"
  6. v-if="sitem"
  7. :newTime="newTime"
  8. :sitem="sitem"
  9. :columns="columns"
  10. >
  11. <template slot="status">
  12. <el-tag
  13. :size="'mini'"
  14. v-text="
  15. (statusOptions.find((item) => item.value == sitem.status) || {})
  16. .label || '--'
  17. "
  18. ></el-tag>
  19. </template>
  20. <template slot="order_type">
  21. <el-tag
  22. :size="'mini'"
  23. v-text="
  24. (
  25. xs_order_type_options.find(
  26. (item) => item.id == sitem.order_type
  27. ) || {}
  28. ).label || '--'
  29. "
  30. ></el-tag>
  31. </template>
  32. <template slot="is_act">
  33. <el-tag
  34. :size="'mini'"
  35. v-text="
  36. (is_act_options.find((item) => item.value == sitem.is_act) || {})
  37. .label || '--'
  38. "
  39. ></el-tag>
  40. </template>
  41. <template slot="customer_remark">
  42. <el-tag
  43. :size="'mini'"
  44. v-if="sitem.is_act === '1'"
  45. v-text="
  46. (
  47. customer_remark_options.find(
  48. (item) => item.value == sitem.customer_remark
  49. ) || {}
  50. ).label || '--'
  51. "
  52. ></el-tag>
  53. <el-tag :size="'mini'" v-else v-text="'--'"></el-tag>
  54. </template>
  55. </detailDatatable>
  56. </el-dialog>
  57. <ex-table
  58. v-loading="loading"
  59. :table="table"
  60. :data="tableData"
  61. :columns="listColumns"
  62. :page="pageInfo"
  63. :size="size"
  64. @page-curr-change="handlePageChange"
  65. @page-size-change="handleSizeChange"
  66. @screen-reset="
  67. pageInfo.curr = 1;
  68. parmValue.page = 1;
  69. searchList();
  70. "
  71. @screen-submit="
  72. pageInfo.curr = 1;
  73. parmValue.page = 1;
  74. searchList();
  75. "
  76. >
  77. <template #status="{ scope }">
  78. <el-tag
  79. :size="tablebtnSize"
  80. :type="scope.row.status == '0' ? 'warning' : ''"
  81. v-text="
  82. (
  83. listStatusOptions.find((item) => item.id == scope.row.status) ||
  84. {}
  85. ).label || '--'
  86. "
  87. ></el-tag>
  88. </template>
  89. <template #operation="{ scope }">
  90. <el-tooltip effect="dark" content="详情" placement="top">
  91. <i class="el-icon-view tb-icon" @click="dilog(scope.row.id)"></i>
  92. </el-tooltip>
  93. </template>
  94. </ex-table>
  95. </div>
  96. </template>
  97. <script>
  98. import { columns, listColumns } from "./columns";
  99. // import { cg_order_type_options } from "@/assets/js/statusList";
  100. import { xs_order_type_options } from "@/assets/js/statusList";
  101. //————————————————
  102. import mixinPage from "@/mixins/elPaginationHandle";
  103. import resToken from "@/mixins/resToken";
  104. import asyncRequest from "@/apis/service/sellOut/zxDiffOrder";
  105. import { mapGetters } from "vuex";
  106. import detailDatatable from "../detail-data-table";
  107. export default {
  108. mixins: [mixinPage, resToken],
  109. components: {
  110. detailDatatable,
  111. },
  112. computed: {
  113. ...mapGetters(["tablebtnSize", "searchSize", "size", "private_field"]),
  114. powers() {
  115. let tran =
  116. this.$store.getters.btnList.find(
  117. (item) => item.menu_route == "standingBookDetail"
  118. ) || {};
  119. if (tran && tran.action && tran.action.length > 0) {
  120. return tran.action;
  121. } else {
  122. return [];
  123. }
  124. },
  125. },
  126. props: ["queryId"],
  127. data() {
  128. return {
  129. parmValue: {
  130. zxNo: "", // 竞价单编码
  131. khNo: "", // 客户编码
  132. cpName: "", //商品名称
  133. status: "", //竞价类型
  134. salesman: "", //申请人
  135. start: "",
  136. end: "",
  137. page: 1, // 页码
  138. size: 15, // 每页显示条数
  139. },
  140. tableData: [],
  141. // 表格 - 参数
  142. table: {
  143. stripe: true,
  144. border: true,
  145. // _defaultHeader_: ["setcol"],
  146. },
  147. // 表格 - 分页
  148. pageInfo: {
  149. size: 15,
  150. curr: 1,
  151. total: 0,
  152. },
  153. listColumns,
  154. loading: true,
  155. dialogTableVisible: false,
  156. xs_order_type_options,
  157. // statusOptions,
  158. activeTabs: "1",
  159. activeNames: ["-1", "0", "1", "2", "3", "4", "5", "10"],
  160. statusOptions: [
  161. { value: "1", label: "待业务部门审核" },
  162. { value: "2", label: "审批已完成" },
  163. ],
  164. listStatusOptions: [
  165. { id: "1", label: "待业务部门审核" },
  166. { id: "2", label: "工差单审核完成" },
  167. ],
  168. xs_order_type_options,
  169. customer_remark_options: [
  170. {
  171. value: "1",
  172. label: "竞价订单减工差",
  173. },
  174. {
  175. value: "2",
  176. label: "竞价订单不减工差",
  177. },
  178. ],
  179. is_act_options: [
  180. {
  181. value: "1",
  182. label: "接受工差",
  183. },
  184. {
  185. value: "2",
  186. label: "不接受工差-退回重做",
  187. },
  188. ],
  189. // cost_detailArr: [],
  190. //——————————————————————
  191. columns,
  192. newTime: "",
  193. status: "",
  194. sitem: null,
  195. loading: false,
  196. };
  197. },
  198. mounted() {
  199. this.searchList();
  200. },
  201. methods: {
  202. getNewTime() {
  203. this.newTime = new Date().valueOf();
  204. },
  205. async initData(id) {
  206. const res = await asyncRequest.detail({ id });
  207. if (res && res.code === 0 && res.data) {
  208. this.sitem = res.data;
  209. const { can, status } = res.data;
  210. this.status = status;
  211. this.sitem.class_cat = "";
  212. if (can && can.length > 0) {
  213. can.forEach((x, i) => {
  214. this.sitem.class_cat += i === 0 ? x.name : "/" + x.name;
  215. });
  216. }
  217. this.getNewTime();
  218. } else if (res && res.code >= 100 && res.code <= 104) {
  219. await this.logout();
  220. } else {
  221. this.$message.warning(res.message);
  222. }
  223. },
  224. async searchList() {
  225. //通过订单编号去查询所有列表、当订单编号为空时,所有涉及字段不展示
  226. this.parmValue.orderCode = this.queryId;
  227. this.loading = true;
  228. const res = await asyncRequest.list(this.parmValue);
  229. if (res && res.code === 0 && res.data) {
  230. this.tableData = res.data.list;
  231. this.tableData.map((v) => {
  232. v.sale_price = this.setNum(v.sale_price);
  233. v.sale_fee = this.setNum(v.sale_fee);
  234. v.class_cat = "";
  235. if (v.can && v.can.length > 0) {
  236. v.can.forEach((x, i) => {
  237. v.class_cat += i === 0 ? x.name : "/" + x.name;
  238. });
  239. }
  240. return v;
  241. });
  242. this.pageInfo.total = Number(res.data.count);
  243. } else if (res && res.code >= 100 && res.code <= 104) {
  244. await this.logout();
  245. } else {
  246. this.tableData = [];
  247. this.pageInfo.total = 0;
  248. }
  249. this.loading = false;
  250. },
  251. dilog(id){
  252. this.dialogTableVisible = true;
  253. this.initData(id);
  254. }
  255. },
  256. };
  257. </script>
  258. <style>
  259. </style>