index.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <template>
  2. <div>
  3. <FullPage
  4. title="包装单"
  5. :list="set_list"
  6. @init="init"
  7. :loading="loading"
  8. @searchData="init"
  9. @changePage="changePage"
  10. @changeSize="changeSize"
  11. :tableColums="computedTable"
  12. :tableData="tableData"
  13. :pageIndex="pageIndex"
  14. :total="total"
  15. >
  16. <div slot="navButton">
  17. <Button
  18. v-if="persimissionData['表头设置'] || persimissionData.all"
  19. @click="setupTableHeader"
  20. type="primary"
  21. ghost
  22. icon="ios-cog"
  23. >表头设置</Button
  24. >
  25. </div>
  26. <template slot="basicTypeSet" slot-scope="{ row }">
  27. <div>
  28. <span
  29. v-for="item in warningList"
  30. :key="item.id"
  31. :style="{ color: item.color }"
  32. v-show="item.id == row.warning_state"
  33. >{{ item.title }}</span
  34. >
  35. </div>
  36. </template>
  37. <template slot="set" slot-scope="{ row }">
  38. <a
  39. v-if="persimissionData['查看详情'] || persimissionData.all"
  40. @click="goPage(row)"
  41. >查看详情</a
  42. >
  43. </template>
  44. </FullPage>
  45. </div>
  46. </template>
  47. <script>
  48. import { mapState } from "vuex";
  49. export default {
  50. data() {
  51. return {
  52. tableColums: [
  53. {
  54. title: "序号",
  55. align: "center",
  56. key: "index",
  57. width: "100",
  58. fixed: "left",
  59. render: (h, params) => h("span", {}, params.index + 1),
  60. },
  61. { title: "订单编号", align: "center", key: "order_no", minWidth: 200 },
  62. {
  63. title: "订单类型",
  64. align: "center",
  65. key: "type",
  66. minWidth: 100,
  67. render: (h, params) =>
  68. h("span", {}, params.row.type == 1 ? "工装" : "家装"),
  69. },
  70. {
  71. title: "项目名称",
  72. align: "center",
  73. key: "residential_name",
  74. minWidth: 200,
  75. },
  76. { title: "手机号", align: "center", key: "mobile", minWidth: 200 },
  77. {
  78. title: "紧急程度",
  79. align: "center",
  80. key: "warning_state",
  81. minWidth: 100,
  82. slot: "basicTypeSet",
  83. },
  84. {
  85. title: "生产进度",
  86. align: "center",
  87. key: "complete_rate",
  88. minWidth: 180,
  89. render(h, params) {
  90. return h(
  91. "span",
  92. {},
  93. parseInt(params.row.complete_rate * 100) + "%"
  94. );
  95. },
  96. },
  97. {
  98. title: "订单开始日期",
  99. align: "center",
  100. key: "start_time",
  101. minWidth: 180,
  102. render: (h, params) =>
  103. h("span", {}, this.func.replaceDate(params.row.start_time * 1, 1)),
  104. },
  105. {
  106. title: "订单结束时间",
  107. align: "center",
  108. key: "end_time",
  109. minWidth: 200,
  110. render: (h, params) =>
  111. h("span", {}, this.func.replaceDate(params.row.end_time * 1, 1)),
  112. },
  113. { title: "包装员", align: "center", key: "nickname", minWidth: 150 },
  114. {
  115. title: "包装状态",
  116. align: "center",
  117. key: "state",
  118. minWidth: 150,
  119. render: (h, params) =>
  120. h(
  121. "span",
  122. {},
  123. // params.row.sub_state == 0
  124. // ? "未指派"
  125. params.row.sub_state == 1
  126. ? "未包装"
  127. : params.row.sub_state == 2
  128. ? "包装中"
  129. : "包装完成"
  130. ),
  131. },
  132. {
  133. title: "操作",
  134. align: "center",
  135. key: "set",
  136. slot: "set",
  137. fixed: "right",
  138. width: "100",
  139. },
  140. ],
  141. tableData: [{ order_no: "123" }],
  142. pageIndex: 1,
  143. total: 0,
  144. pageSize: 10,
  145. loading: false,
  146. proxyObj: {},
  147. tableheaders: [],
  148. warningList: [],
  149. userList: [],
  150. };
  151. },
  152. created() {
  153. // 获取紧急程度
  154. this.axios.get("/api/warning_list").then((res) => {
  155. this.warningList = res.data.data;
  156. });
  157. // 获取用户列表
  158. this.axios({ method: "get", url: "/api/employee_list" }).then((res) => {
  159. this.userList = res.data;
  160. });
  161. },
  162. computed: {
  163. ...mapState(["persimissionData"]),
  164. computedTable() {
  165. if (this.tableheaders.length < 1) {
  166. return this.tableColums;
  167. }
  168. return this.func.computedHeader(this.tableheaders, this.tableColums);
  169. },
  170. set_list() {
  171. return [
  172. {
  173. title: "订单编号",
  174. name: "Input",
  175. placeholder: "请输入订单编号",
  176. value: "",
  177. serverName: "order_no",
  178. },
  179. {
  180. title: "项目名称",
  181. name: "Input",
  182. placeholder: "请输入项目名称",
  183. value: "",
  184. serverName: "residential_name",
  185. },
  186. {
  187. title: "包装状态",
  188. name: "Select",
  189. placeholder: "请选择",
  190. serverName: "sub_state",
  191. value: "",
  192. option: [
  193. // { label: "未指派", value: 0 },
  194. { label: "未包装", value: 1 },
  195. { label: "包装中", value: 2 },
  196. { label: "包装完成", value: 3 },
  197. ],
  198. },
  199. {
  200. title: "订单类型",
  201. name: "Select",
  202. placeholder: "请选择",
  203. serverName: "type",
  204. value: "",
  205. option: [
  206. { label: "工装", value: 1 },
  207. { label: "家装", value: 0 },
  208. ],
  209. },
  210. {
  211. title: "日期范围",
  212. name: "Input",
  213. start_server: "start_time",
  214. end_server: "end_time",
  215. start_value: "",
  216. end_value: "",
  217. isDate: true,
  218. start_placeholder: "开始日期",
  219. end_placeholder: "结束日期",
  220. },
  221. {
  222. title: "客户",
  223. name: "Input",
  224. placeholder: "请输入客户昵称",
  225. value: "",
  226. serverName: "client_name",
  227. },
  228. {
  229. title: "手机号",
  230. name: "Input",
  231. placeholder: "请输入手机号",
  232. value: "",
  233. serverName: "mobile",
  234. },
  235. {
  236. title: "包装员",
  237. name: "Select",
  238. placeholder: "请选择包装员",
  239. value: "",
  240. optionValue: "id",
  241. filterable: true,
  242. optionName: "nickname",
  243. serverName: "salesman",
  244. option: this.userList,
  245. },
  246. {
  247. title: "紧急程度",
  248. name: "Select",
  249. placeholder: "请选择",
  250. serverName: "warning_state",
  251. optionValue: "id",
  252. optionName: "title",
  253. value: "",
  254. option: this.warningList,
  255. },
  256. ];
  257. },
  258. },
  259. methods: {
  260. init(row) {
  261. this.pageIndex = 1;
  262. row.page_index = this.pageIndex;
  263. row.page_size = this.pageSize;
  264. this.proxyObj = row;
  265. this.getData(row);
  266. },
  267. getData(row) {
  268. this.loading = true;
  269. this.axios("/api/orders_in_list", { params: row }).then((res) => {
  270. this.loading = false;
  271. this.tableData = res.data.data;
  272. this.total = res.data.total;
  273. this.tableheaders = res.data.tableSet || [];
  274. });
  275. },
  276. changePage(e) {
  277. this.pageIndex = e;
  278. this.proxyObj.page_index = this.pageIndex;
  279. this.getData(this.proxyObj);
  280. },
  281. changeSize(e) {
  282. this.pageSize = e;
  283. this.proxyObj.page_size = this.pageSize;
  284. this.getData(this.proxyObj);
  285. },
  286. goPage(row) {
  287. this.$router.push({
  288. path: "/cms/productionorderlist/inboundform/details",
  289. query: {
  290. order_no: row.order_no,
  291. type: 4,
  292. },
  293. });
  294. },
  295. setupTableHeader() {
  296. this.tableheaders.length < 1
  297. ? (this.tableheaders = this.tableColums.reduce(
  298. (pre, cur) => pre.concat(cur.key),
  299. []
  300. ))
  301. : "";
  302. this.$setTableheader({
  303. list: this.tableColums,
  304. selects: this.tableheaders,
  305. then: (result) => {
  306. this.tableheaders = result;
  307. this.axios
  308. .post("/api/update/table", { id: this.$route.query.id, result })
  309. .then((res) => {
  310. if (res.code == 200) {
  311. this.$Message.success(res.msg);
  312. }
  313. });
  314. },
  315. });
  316. },
  317. },
  318. };
  319. </script>
  320. <style lang="scss" scoped></style>