index.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px">
  4. <el-form-item label="客户" prop="customerId">
  5. <el-input
  6. v-model="queryParams.customerId"
  7. placeholder="请输入客户"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item label="单据状态" prop="orderStatus">
  14. <el-select v-model="queryParams.orderStatus" placeholder="请选择单据状态" clearable size="small">
  15. <el-option
  16. v-for="dict in dict.type.so_status"
  17. :key="dict.value"
  18. :label="dict.label"
  19. :value="dict.value"
  20. />
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="单据类型" prop="orderType">
  24. <el-select v-model="queryParams.orderType" placeholder="请选择单据类型" clearable size="small">
  25. <el-option
  26. v-for="dict in dict.type.so_type"
  27. :key="dict.value"
  28. :label="dict.label"
  29. :value="dict.value"
  30. />
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item label="发货时间" prop="shipmentTime">
  34. <el-date-picker clearable size="small"
  35. v-model="queryParams.shipmentTime"
  36. type="date"
  37. value-format="yyyy-MM-dd"
  38. placeholder="发货时间">
  39. </el-date-picker>
  40. </el-form-item>
  41. <el-form-item label="创建时间">
  42. <el-date-picker
  43. v-model="dateRange"
  44. size="small"
  45. style="width: 240px"
  46. value-format="yyyy-MM-dd"
  47. type="daterange"
  48. range-separator="-"
  49. start-placeholder="开始日期"
  50. end-placeholder="结束日期"
  51. ></el-date-picker>
  52. </el-form-item>
  53. <el-form-item>
  54. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  55. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  56. </el-form-item>
  57. </el-form>
  58. <el-row :gutter="10" class="mb8">
  59. <el-col :span="1.5">
  60. <el-button
  61. type="primary"
  62. plain
  63. icon="el-icon-plus"
  64. size="mini"
  65. @click="handleAdd"
  66. v-hasPermi="['docOrder:docOrder:add']"
  67. >新增
  68. </el-button>
  69. </el-col>
  70. <el-col :span="1.5">
  71. <el-button
  72. type="danger"
  73. plain
  74. icon="el-icon-message"
  75. size="mini"
  76. :disabled="multiple"
  77. @click="handlePush"
  78. v-hasPermi="['docOrder:docOrder:push']"
  79. >发送</el-button>
  80. </el-col>
  81. <!--<el-col :span="1.5">
  82. <el-button
  83. type="success"
  84. plain
  85. icon="el-icon-edit"
  86. size="mini"
  87. :disabled="single"
  88. @click="handleUpdate"
  89. v-hasPermi="['docOrder:docOrder:edit']"
  90. >修改</el-button>
  91. </el-col>
  92. <el-col :span="1.5">
  93. <el-button
  94. type="danger"
  95. plain
  96. icon="el-icon-delete"
  97. size="mini"
  98. :disabled="multiple"
  99. @click="handleDelete"
  100. v-hasPermi="['docOrder:docOrder:remove']"
  101. >删除</el-button>
  102. </el-col>
  103. <el-col :span="1.5">
  104. <el-button
  105. type="warning"
  106. plain
  107. icon="el-icon-download"
  108. size="mini"
  109. @click="handleExport"
  110. v-hasPermi="['docOrder:docOrder:export']"
  111. >导出</el-button>
  112. </el-col>-->
  113. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  114. </el-row>
  115. <el-table v-loading="loading" :data="docOrderList" @selection-change="handleSelectionChange">
  116. <el-table-column type="selection" width="55" align="center"/>
  117. <el-table-column label="出库单号" align="center" prop="orderNo"/>
  118. <!--<el-table-column label="货主代码" align="center" prop="customerId" />-->
  119. <el-table-column label="单据状态" align="center" prop="orderStatus">
  120. <template slot-scope="scope">
  121. <dict-tag :options="dict.type.so_status" :value="scope.row.orderStatus"/>
  122. </template>
  123. </el-table-column>
  124. <el-table-column label="单据类型" align="center" prop="orderType">
  125. <template slot-scope="scope">
  126. <dict-tag :options="dict.type.so_type" :value="scope.row.orderType"/>
  127. </template>
  128. </el-table-column>
  129. <el-table-column label="客户单号1" align="center" prop="soReference1"/>
  130. <el-table-column label="客户单号2" align="center" prop="soReference2"/>
  131. <el-table-column label="客户单号3" align="center" prop="soReference3"/>
  132. <el-table-column label="创建时间" align="center" prop="createTime"/>
  133. <el-table-column label="创建人" align="center" prop="createBy"/>
  134. <!--<el-table-column label="单据操作优先级" align="center" prop="priority" />-->
  135. <!--<el-table-column label="收货单位名称" align="center" prop="consigneeName" />-->
  136. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  137. <template slot-scope="scope">
  138. <el-button
  139. size="mini"
  140. type="text"
  141. icon="el-icon-view"
  142. @click="handleView(scope.row)"
  143. >查看
  144. </el-button>
  145. <el-button
  146. size="mini"
  147. type="text"
  148. icon="el-icon-edit"
  149. @click="handleUpdate(scope.row)"
  150. v-if="scope.row.orderStatus != '99'"
  151. v-hasPermi="['docOrder:docOrder:edit']"
  152. >修改
  153. </el-button>
  154. <el-button
  155. size="mini"
  156. type="text"
  157. icon="el-icon-edit"
  158. v-if="scope.row.orderStatus === '00' || scope.row.orderStatus === '10'"
  159. @click="doAllocation(scope.row)"
  160. v-hasPermi="['docOrder:docOrder:edit']"
  161. >分配
  162. </el-button>
  163. <el-button
  164. size="mini"
  165. type="text"
  166. icon="el-icon-delete"
  167. @click="handleDelete(scope.row)"
  168. v-if="scope.row.orderStatus == '00' || scope.row.orderStatus == '90'"
  169. v-hasPermi="['docOrder:docOrder:remove']"
  170. >删除
  171. </el-button>
  172. <el-button
  173. size="mini"
  174. type="text"
  175. icon="el-icon-delete"
  176. v-if="scope.row.orderStatus != '99' && scope.row.orderStatus != '00'"
  177. @click="handleCancel(scope.row)"
  178. v-hasPermi="['docOrder:docOrder:cancel']"
  179. >取消
  180. </el-button>
  181. </template>
  182. </el-table-column>
  183. </el-table>
  184. <pagination
  185. v-show="total>0"
  186. :total="total"
  187. :page.sync="queryParams.pageNum"
  188. :limit.sync="queryParams.pageSize"
  189. @pagination="getList"
  190. />
  191. <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getList"></add-or-update>
  192. </div>
  193. </template>
  194. <script>
  195. import {
  196. listDocOrder,
  197. getDocOrder,
  198. delDocOrder,
  199. addDocOrder,
  200. updateDocOrder,
  201. doAllocation,
  202. doCancel,
  203. pushDocOrder
  204. } from "@/api/docOrder/docOrder";
  205. import AddOrUpdate from './docOrderHeader-add-or-update'
  206. import {pushDocAsn} from "@/api/docAsn/docAsn";
  207. export default {
  208. name: "DocOrder",
  209. dicts: ['so_status', 'so_type'],
  210. data() {
  211. return {
  212. addOrUpdateVisible: false,
  213. // 遮罩层
  214. loading: true,
  215. // 选中数组
  216. ids: [],
  217. // 非单个禁用
  218. single: true,
  219. // 非多个禁用
  220. multiple: true,
  221. // 显示搜索条件
  222. showSearch: true,
  223. // 总条数
  224. total: 0,
  225. // 出库单头表格数据
  226. docOrderList: [],
  227. // 弹出层标题
  228. title: "",
  229. // 是否显示弹出层
  230. open: false,
  231. dateRange: [],
  232. // 查询参数
  233. queryParams: {
  234. pageNum: 1,
  235. pageSize: 10,
  236. customerId: null,
  237. orderStatus: null,
  238. orderType: null,
  239. soReference1: null,
  240. soReference2: null,
  241. soReference3: null,
  242. priority: null,
  243. consigneeName: null,
  244. shipmentTime: '',
  245. createTime: ''
  246. },
  247. // 表单参数
  248. form: {},
  249. // 表单校验
  250. rules: {}
  251. };
  252. },
  253. components: {
  254. AddOrUpdate
  255. },
  256. created() {
  257. this.getList();
  258. },
  259. methods: {
  260. /** 查询出库单头列表 */
  261. getList() {
  262. this.loading = true;
  263. listDocOrder(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
  264. this.docOrderList = response.rows;
  265. this.total = response.total;
  266. this.loading = false;
  267. });
  268. },
  269. // 取消按钮
  270. cancel() {
  271. this.open = false;
  272. this.reset();
  273. },
  274. // 表单重置
  275. reset() {
  276. this.form = {
  277. orderNo: null,
  278. customerId: null,
  279. orderStatus: null,
  280. orderType: null,
  281. soReference1: null,
  282. soReference2: null,
  283. soReference3: null,
  284. priority: null,
  285. consigneeId: null,
  286. consigneeName: null,
  287. cusCountry: null,
  288. cusProvince: null,
  289. cusCity: null,
  290. cusDistrict: null,
  291. cusAddress: null,
  292. cusContact: null,
  293. cusPostcode: null,
  294. cusEmail: null,
  295. carrierId: null,
  296. shipmentTime: null,
  297. carrierName: null,
  298. deliveryNo: null,
  299. ediSendFlag: null,
  300. remark: null,
  301. warehouseId: null,
  302. userdefine1: null,
  303. userdefine2: null,
  304. userdefine3: null,
  305. userdefine4: null,
  306. userdefine5: null,
  307. userdefine6: null,
  308. addTime: null,
  309. addWho: null,
  310. editTime: null,
  311. editWho: null,
  312. hEdi01: null,
  313. hEdi02: null,
  314. hEdi03: null,
  315. hEdi04: null,
  316. hEdi05: null,
  317. hEdi06: null,
  318. hEdi07: null,
  319. hEdi08: null,
  320. hEdi09: null,
  321. hEdi10: null,
  322. hEdi11: null,
  323. hEdi12: null,
  324. hEdi13: null,
  325. hEdi14: null,
  326. hEdi15: null,
  327. desc2:null
  328. };
  329. this.resetForm("form");
  330. },
  331. /** 搜索按钮操作 */
  332. handleQuery() {
  333. this.queryParams.pageNum = 1;
  334. this.getList();
  335. },
  336. /** 重置按钮操作 */
  337. resetQuery() {
  338. this.resetForm("queryForm");
  339. this.handleQuery();
  340. },
  341. // 多选框选中数据
  342. handleSelectionChange(selection) {
  343. this.ids = selection.map(item => item.orderNo)
  344. this.single = selection.length !== 1
  345. this.multiple = !selection.length
  346. },
  347. /** 新增按钮操作 */
  348. handleAdd() {
  349. this.reset();
  350. this.addOrUpdateVisible = true
  351. this.$nextTick(() => {
  352. this.$refs.addOrUpdate.init('undefine')
  353. })
  354. },
  355. /** 发送按钮操作 */
  356. handlePush(row) {
  357. const orderNos = row.orderNo || this.ids;
  358. this.$modal.confirm('是否确认发送出库单编号为"' + orderNos + '"的数据项?').then(function() {
  359. return pushDocOrder(orderNos);
  360. }).then(() => {
  361. this.getList();
  362. this.$modal.msgSuccess("发送成功");
  363. }).catch(() => {});
  364. },
  365. /** 修改按钮操作 */
  366. handleUpdate(row) {
  367. this.reset();
  368. this.addOrUpdateVisible = true
  369. this.$nextTick(() => {
  370. this.$refs.addOrUpdate.init(row.orderNo)
  371. })
  372. },
  373. /** 提交按钮 */
  374. submitForm() {
  375. this.$refs["form"].validate(valid => {
  376. if (valid) {
  377. if (this.form.orderNo != null) {
  378. updateDocOrder(this.form).then(response => {
  379. this.$modal.msgSuccess("修改成功");
  380. this.open = false;
  381. this.getList();
  382. });
  383. } else {
  384. addDocOrder(this.form).then(response => {
  385. this.$modal.msgSuccess("新增成功");
  386. this.open = false;
  387. this.getList();
  388. });
  389. }
  390. }
  391. });
  392. },
  393. /** 删除按钮操作 */
  394. handleDelete(row) {
  395. const orderNos = row.orderNo || this.ids;
  396. this.$modal.confirm('是否确认删除出库单头编号为"' + orderNos + '"的数据项?').then(function () {
  397. return delDocOrder(orderNos);
  398. }).then(() => {
  399. this.getList();
  400. this.$modal.msgSuccess("删除成功");
  401. }).catch(() => {
  402. });
  403. },
  404. /** 导出按钮操作 */
  405. handleExport() {
  406. this.download('docOrder/docOrder/export', {
  407. ...this.queryParams
  408. }, `docOrder_${new Date().getTime()}.xlsx`)
  409. },
  410. doAllocation(row) {
  411. let obj = {}
  412. obj.orderNo = row.orderNo
  413. this.$modal.confirm('是否确认要进行分配库存').then(function () {
  414. return doAllocation(obj);
  415. }).then((data) => {
  416. this.getList();
  417. this.$modal.msgSuccess(data.msg);
  418. }).catch(() => {
  419. });
  420. },
  421. handleCancel(row) {
  422. this.$modal.confirm('确定要进行取消操作').then(function () {
  423. return doCancel(row.orderNo);
  424. }).then((data) => {
  425. this.getList();
  426. this.$modal.msgSuccess(data.msg);
  427. }).catch(() => {
  428. });
  429. },
  430. handleView(row) {
  431. this.addOrUpdateVisible = true
  432. this.$nextTick(() => {
  433. this.$refs.addOrUpdate.init(row.orderNo, true)
  434. })
  435. }
  436. }
  437. };
  438. </script>