main.vue 7.5 KB

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