add.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <div>
  3. <el-button type="primary" size="small" @click="drawer = true">新建物流单</el-button>
  4. <el-drawer
  5. title="新建物流单"
  6. :visible.sync="drawer"
  7. direction="rtl"
  8. size="80%"
  9. append-to-body
  10. @close="onClose">
  11. <div class="drawer__panel">
  12. <p class="normal-title normal-margin">基础信息</p>
  13. <el-form :inline="true" :model="form" class="demo-form-inline" size="small" label-width="100px" label-position="right">
  14. <el-form-item label="企业名称" prop="">
  15. <enterprise :qiyi="true" ref="ent" @rowClick="entRowClick"></enterprise>
  16. </el-form-item>
  17. <el-form-item label="物流公司">
  18. <logisticcom ref="logis" @logisticRowClick="logisticRowClick"></logisticcom>
  19. </el-form-item>
  20. <el-form-item label="物流单号">
  21. <el-input v-model="form.billno" placeholder="物流单号"></el-input>
  22. </el-form-item>
  23. <el-form-item label="寄付方式">
  24. <el-select v-model="form.paytype" placeholder="请选择" @change="selectChange">
  25. <el-option
  26. label="到付"
  27. value="到付">
  28. </el-option>
  29. <el-option
  30. label="预付"
  31. value="预付">
  32. </el-option>
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item label="车牌号">
  36. <el-input v-model.number="form.carnum" placeholder="车牌号"></el-input>
  37. </el-form-item>
  38. <el-form-item label="物流联系人">
  39. <el-input v-model.number="form.logiscontact" placeholder="物流联系人"></el-input>
  40. </el-form-item>
  41. <el-form-item label="物流电话">
  42. <el-input v-model.number="form.logisphone" placeholder="物流电话"></el-input>
  43. </el-form-item>
  44. <el-form-item label="运费">
  45. <el-input v-model.number="form.freightamount" placeholder="运费"></el-input>
  46. </el-form-item>
  47. <el-form-item label="备注">
  48. <el-input v-model.number="form.remarks" placeholder="运费"></el-input>
  49. </el-form-item>
  50. <el-form-item label="单据日期">
  51. <el-date-picker
  52. v-model="form.billdate"
  53. type="date"
  54. value-format="yyyy-MM-dd"
  55. :picker-options="pickerOptions"
  56. placeholder="单据日期">
  57. </el-date-picker>
  58. </el-form-item>
  59. </el-form>
  60. <div class="mt-10">
  61. <div>
  62. <p class="normal-title inline-16">添加发货单</p>
  63. <el-button type="text" size="mini" @click="addMoreBill">{{setcol === 12?'关闭选择':'添加发货单'}}</el-button>
  64. </div>
  65. <el-row :gutter="10">
  66. <el-col :span="setcol">
  67. <dispatch-table ref="dislist"></dispatch-table>
  68. </el-col>
  69. <el-col :span="24 - setcol">
  70. <add-disbill ref="addbill" :data="enterpriseInfo" :paytype="form.paytype" @onConfirm="onConfirm"></add-disbill>
  71. </el-col>
  72. </el-row>
  73. </div>
  74. </div>
  75. <div class="fixed__btn__panel">
  76. <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
  77. <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">保存修改</el-button>
  78. </div>
  79. </el-drawer>
  80. <el-dialog append-to-body title="选择收货地址" :visible.sync="dialogAddress">
  81. <p style="color:red" class="mt-10">存在多个收货地址,请选择正确收货地址!</p>
  82. <el-table :data="rec_address">
  83. <el-table-column property="name" label="收货人" width="150"></el-table-column>
  84. <el-table-column property="phonenumber" label="联系电话" width="200"></el-table-column>
  85. <el-table-column label="地址">
  86. <template slot-scope="scope">
  87. {{scope.row.province}}{{scope.row.city}}{{scope.row.county}}{{scope.row.address}}
  88. </template>
  89. </el-table-column>
  90. <el-table-column>
  91. <template slot-scope="scope">
  92. <el-button type="text" @click="selectAddress(scope.row)" size="small">选 择</el-button>
  93. </template>
  94. </el-table-column>
  95. </el-table>
  96. </el-dialog>
  97. </div>
  98. </template>
  99. <script>
  100. import dispatchTable from './dispatchTable.vue'
  101. import enterprise from './enterprise'
  102. import logisticcom from '@/template/selectLogisticcom/index.vue'
  103. import addDisbill from '@/template/logisyticCanUseDisBill/index.vue'
  104. export default {
  105. components:{
  106. dispatchTable,
  107. enterprise,
  108. addDisbill,
  109. logisticcom
  110. },
  111. data () {
  112. return {
  113. drawer:false,
  114. visible:false,
  115. dialogAddress:false,
  116. setcol:24,
  117. form:{
  118.         "freightamount": "",
  119.         "logisticno": "",
  120.         "paytype": "",
  121.         "remarks": "",
  122.         "sa_dispatchids": [],
  123.         "sa_logiscompid": 0,
  124.         "sa_logisticsid": 0,
  125.         "sys_enterpriseid": '',
  126.         "carnum":"",
  127.         "logisphone":"",
  128.         "logiscontact":"",
  129.         "rec_contactsid":'',
  130. billdate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDay()}`
  131. },
  132. rules:{
  133. point:[
  134. { required: true, message: '请选择账期依据', trigger: 'change'},
  135. ],
  136. },
  137. enterpriseInfo:null,
  138. rec_address:[],
  139. pickerOptions: {
  140. disabledDate(time) {
  141. return time.getTime() < Date.now() - 24 * 3600 * 1000;
  142. }
  143. }
  144. }
  145. },
  146. methods:{
  147. addMoreBill () {
  148. if (this.enterpriseInfo === null) return this.$message({
  149. message:'请先选择企业信息',
  150. type:'error'
  151. })
  152. this.setcol === 12?this.setcol = 24 : this.setcol = 12
  153. this.$refs['addbill'].listData()
  154. },
  155. entRowClick (row) {
  156. this.enterpriseInfo = row
  157. this.form.sys_enterpriseid = row.sys_enterpriseid
  158. },
  159. logisticRowClick (row) {
  160. console.log(row)
  161. this.form.sa_logiscompid = row.sa_logiscompid
  162. },
  163. onConfirm (data) {
  164. function unique(arr, uniId){
  165. const res = new Map();
  166. return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));
  167. }
  168. this.$refs['dislist'].tableData = unique([...this.$refs['dislist'].tableData,...data],'billno')
  169. },
  170. async onSubmit () {
  171. this.form.sa_dispatchids = this.$refs['dislist'].tableData.map(e=>{
  172. return e.sa_dispatchid
  173. })
  174. const res = await this.$api.requested({
  175. "id": "202212004124804",
  176. "content": this.form
  177. })
  178. console.log(res);
  179. if (Array.isArray(res.data)) {
  180. this.dialogAddress = true
  181. this.rec_address = res.data
  182. } else {
  183. this.tool.showMessage(res,()=>{
  184. this.drawer = false
  185. this.dialogAddress = false
  186. this.$emit('onSuccess')
  187. this.form = {}
  188. })
  189. }
  190. this.$router.push({path:'/logisticsdetail',query:{id:res.data.sa_logisticsid,rowindex:res.data.rowindex}})
  191. },
  192. selectAddress (row) {
  193. this.form.rec_contactsid = row.rec_contactsid
  194. this.onSubmit()
  195. },
  196. selectChange () {
  197. this.$refs['addbill'].listData()
  198. },
  199. onClose () {
  200. this.$refs['ent'].form = this.$refs['logis'].form = {}
  201. }
  202. }
  203. }
  204. </script>