formbottom.vue 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977
  1. <template>
  2. <div>
  3. <el-form :model="assemblyForm" ref="form" label-width="90px" :disabled="disabled">
  4. <el-row>
  5. <!-- <el-col :span="6">
  6. <el-form-item label="业务类型" prop="businessTypes">
  7. <span slot="label">
  8. <span style="color: #1e9fff">业务类型</span>
  9. </span>
  10. <search-query :datalist="businessTypesData" :selectValue="assemblyForm.businessTypes" :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey', }"
  11. :filterable="true" :clearable="true" :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  12. placeholder="请选择业务类型" @corpChange="corpChange($event, 'businessTypes')">
  13. </search-query>
  14. </el-form-item>
  15. </el-col> -->
  16. <el-col :span="6">
  17. <el-form-item label="应结日期" prop="dueDate">
  18. <span slot="label">
  19. <span style="color: #1e9fff">应结日期</span>
  20. </span>
  21. <el-date-picker v-model="assemblyForm.dueDate" type="date" style="width: 100%;"
  22. value-format="yyyy-MM-dd HH:mm:ss" size="small" :disabled="detailData.seeDisabled"
  23. placeholder="请选择应结日期">
  24. </el-date-picker>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="6">
  28. <el-form-item label="订舱日期" prop="bookingDate">
  29. <span slot="label">
  30. <span style="color: #1e9fff">订舱日期</span>
  31. </span>
  32. <el-date-picker v-model="assemblyForm.bookingDate" type="date" style="width: 100%;"
  33. value-format="yyyy-MM-dd HH:mm" size="small"
  34. :disabled="detailData.seeDisabled || (assemblyForm.billType == 'MH' && assemblyForm.masterBillNo > 0)"
  35. placeholder="请选择截港时间">
  36. </el-date-picker>
  37. </el-form-item>
  38. </el-col>
  39. <!-- <el-col :span="6">
  40. <el-form-item label="签单方式" prop="issueType">
  41. <span slot="label">
  42. <span style="color: #1e9fff">签单方式</span>
  43. </span>
  44. <el-select style="width: 100%" v-model="assemblyForm.issueType" size="small" placeholder="请选择签单方式"
  45. :filterable="true" :clearable="true" :disabled="detailData.seeDisabled">
  46. <el-option v-for="item in issueTypeData" :key="item.dictKey"
  47. :label="item.dictValue" :value="item.dictKey">
  48. </el-option>
  49. </el-select>
  50. </el-form-item>
  51. </el-col> -->
  52. <el-col :span="6">
  53. <el-form-item label="航线" prop="lineCnName">
  54. <span slot="label">
  55. <span style="color: #1e9fff">航线</span>
  56. </span>
  57. <search-query :datalist="lineData" :selectValue="assemblyForm.lineCnName" :filterable="true"
  58. :clearable="true" :remote="true"
  59. :disabled="detailData.seeDisabled || (assemblyForm.billType == 'MH' && assemblyForm.masterBillNo > 0)"
  60. :buttonIf="false" :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
  61. placeholder="请选择航线" @remoteMethod="remoteMethod($event, 'line')"
  62. @corpChange="corpChange($event, 'line')" @corpFocus="remoteMethod($event, 'line')">
  63. </search-query>
  64. </el-form-item>
  65. </el-col>
  66. <el-col :span="6">
  67. <el-form-item label="业务来源" prop="srcType"
  68. :rules="[{ required: true, message: '', trigger: 'blur' }]">
  69. <el-row :gutter="10">
  70. <el-col :span="10">
  71. <search-query :datalist="sourceTypeData" :selectValue="assemblyForm.srcType"
  72. :disabled="detailData.seeDisabled || assemblyForm.feeCenterListD.filter(item => item.auditStatus > 0).length || assemblyForm.feeCenterListC.filter(item => item.auditStatus > 0).length"
  73. :filterable="true" :clearable="true" :remote="true" :buttonIf="false"
  74. placeholder="请选择业务来源" @corpChange="sourceCorp($event, 'srcType')">
  75. </search-query>
  76. </el-col>
  77. <el-col :span="13">
  78. <search-query :datalist="srcData" :selectValue="assemblyForm.srcCnName"
  79. :filterable="true" :clearable="true" :remote="true"
  80. :disabled="!assemblyForm.srcType || detailData.seeDisabled || assemblyForm.feeCenterListD.filter(item => item.auditStatus > 0).length || assemblyForm.feeCenterListC.filter(item => item.auditStatus > 0).length"
  81. :buttonIf="false" :forParameter="sourceforParameter" placeholder="请选择来源明细"
  82. @remoteMethod="sourceRemote($event, 'srcCnName')"
  83. @corpChange="sourceCorp($event, 'srcCnName')"
  84. @corpFocus="sourceRemote($event, 'srcCnName')">
  85. </search-query>
  86. </el-col>
  87. </el-row>
  88. </el-form-item>
  89. </el-col>
  90. <el-col :span="6">
  91. <el-form-item label="退舱日期" prop="bookingWithdrawTime">
  92. <span slot="label">
  93. <span style="color: #1e9fff">退舱日期</span>
  94. </span>
  95. <el-date-picker v-model="assemblyForm.bookingWithdrawTime" type="date" style="width: 100%;"
  96. value-format="yyyy-MM-dd HH:mm" size="small" disabled placeholder="请选择退舱日期">
  97. </el-date-picker>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="6">
  101. <el-form-item label="POL免箱使天数" prop="polFreeBoxUseDays" label-width="100px">
  102. <span slot="label">
  103. <span style="color: #1e9fff">POL免箱使天数</span>
  104. </span>
  105. <div>
  106. <el-input v-model="assemblyForm.polFreeBoxUseDays" size="small" :controls="false"
  107. style="width: 100%;" placeholder="请输入POL免箱使天数"
  108. :disabled="detailData.seeDisabled"></el-input>
  109. </div>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="6">
  113. <el-form-item label="POD免箱使天数" prop="podFreeBoxUseDays" label-width="100px">
  114. <span slot="label">
  115. <span style="color: #1e9fff">POD免箱使天数</span>
  116. </span>
  117. <div>
  118. <el-input v-model="assemblyForm.podFreeBoxUseDays" size="small" :controls="false"
  119. style="width: 100%;" placeholder="请输入POD免箱使天数"
  120. :disabled="detailData.seeDisabled"></el-input>
  121. </div>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="6">
  125. <el-form-item label="装箱方式" prop="loadType">
  126. <span slot="label">
  127. <span style="color: #1e9fff">装箱方式</span>
  128. </span>
  129. <search-query :datalist="loadTypeData" :selectValue="assemblyForm.loadType" :filterable="true"
  130. :clearable="true" :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  131. :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey', }"
  132. placeholder="请选择装箱方式" @corpChange="corpChange($event, 'loadType')">
  133. </search-query>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="6">
  137. <el-form-item label="正本份数" prop="numberOfObl">
  138. <span slot="label">
  139. <span style="color: #1e9fff">正本份数</span>
  140. </span>
  141. <search-query :datalist="numberOfData" :selectValue="assemblyForm.numberOfObl" :clearable="true"
  142. :disabled="detailData.seeDisabled" :buttonIf="false"
  143. :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictValue', }"
  144. placeholder="请选择正本份数" @corpChange="corpChange($event, 'Obl')"
  145. @corpFocus="remoteMethod($event, 'numberOfObl')">
  146. </search-query>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="6">
  150. <el-form-item label="副本份数" prop="numberOfCopy">
  151. <span slot="label">
  152. <span style="color: #1e9fff">副本份数</span>
  153. </span>
  154. <search-query :datalist="numberOfData" :selectValue="assemblyForm.numberOfCopy"
  155. :clearable="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  156. :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictValue' }"
  157. placeholder="请选择副本份数" @corpChange="corpChange($event, 'Copy')"
  158. @corpFocus="remoteMethod($event, 'numberOfCopy')">
  159. </search-query>
  160. </el-form-item>
  161. </el-col>
  162. <el-col span="6">
  163. <el-form-item label="签单地点" prop="issueAt">
  164. <span slot="label">
  165. <span style="color: #1e9fff">签单地点</span>
  166. </span>
  167. <search-query :datalist="issueAtData" :selectValue="assemblyForm.issueAt" :filterable="true"
  168. :clearable="true" :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  169. :forParameter="{ key: 'id', label: 'enName', value: 'enName' }" placeholder="请选择签单地点"
  170. @remoteMethod="remoteMethod($event, 'issueAt')" @corpChange="corpChange($event, 'issueAt')"
  171. @corpFocus="remoteMethod($event, 'issueAt')">
  172. </search-query>
  173. </el-form-item>
  174. </el-col>
  175. <el-col :span="6">
  176. <el-form-item label="业务类型" prop="businessTypes">
  177. <span slot="label">
  178. <span style="color: #1e9fff">业务类型</span>
  179. </span>
  180. <search-query :datalist="businessTypesData" :selectValue="assemblyForm.businessTypes"
  181. :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey', }" :filterable="true"
  182. :clearable="true" :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  183. placeholder="请选择业务类型" @corpChange="corpChange($event, 'businessTypes')">
  184. </search-query>
  185. </el-form-item>
  186. </el-col>
  187. <el-col :span="6">
  188. <el-form-item label="HB/L付款地点" prop="hpayplace">
  189. <span slot="label">
  190. <span style="color: #1e9fff">HB/L付款地点</span>
  191. </span>
  192. <search-query :datalist="hpayplaceData" :selectValue="assemblyForm.hpayplace" :filterable="true"
  193. :clearable="true" :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  194. :forParameter="{ key: 'id', label: 'enName', value: 'enName' }" placeholder="请选择HB/L付款地点"
  195. @remoteMethod="remoteMethod($event, 'hpayplace')"
  196. @corpChange="corpChange($event, 'hpayplace')"
  197. @corpFocus="remoteMethod($event, 'hpayplace')">
  198. </search-query>
  199. </el-form-item>
  200. </el-col>
  201. <el-col :span="6">
  202. <el-form-item label="MB/L付款地点" prop="mPayplace">
  203. <span slot="label">
  204. <span style="color: #1e9fff">MB/L付款地点</span>
  205. </span>
  206. <search-query :datalist="mpayplaceData" :selectValue="assemblyForm.mpayplace" :filterable="true"
  207. :clearable="true" :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
  208. :forParameter="{ key: 'id', label: 'enName', value: 'enName' }" placeholder="请选择MB/L付款地点"
  209. @remoteMethod="remoteMethod($event, 'mpayplace')"
  210. @corpChange="corpChange($event, 'mpayplace')"
  211. @corpFocus="remoteMethod($event, 'mpayplace')">
  212. </search-query>
  213. </el-form-item>
  214. </el-col>
  215. <el-col :span="6">
  216. <el-form-item label="限制重量(吨)" prop="weightLimit">
  217. <span slot="label">
  218. <span style="color: #1e9fff">限制重量(吨)</span>
  219. </span>
  220. <div>
  221. <el-input v-model="assemblyForm.weightLimit" size="small" :controls="false"
  222. style="width: 100%;" placeholder="请输入限制重量(吨)"
  223. :disabled="detailData.seeDisabled"></el-input>
  224. </div>
  225. </el-form-item>
  226. </el-col>
  227. <el-col :span="6">
  228. <el-form-item label="限制舱位(T)" prop="restrictedCabinSpace">
  229. <span slot="label">
  230. <span style="color: #1e9fff">限制舱位(T)</span>
  231. </span>
  232. <el-input v-model="assemblyForm.restrictedCabinSpace" size="small" placeholder="请输入限制舱位(T)"
  233. style="width: 100%;" :disabled="detailData.seeDisabled"></el-input>
  234. </el-form-item>
  235. </el-col>
  236. <el-col :span="6">
  237. <el-form-item label="单据类型" prop="billType">
  238. <span slot="label">
  239. <span style="color: #1e9fff">单据类型</span>
  240. </span>
  241. <search-query :datalist="billTypeData" :selectValue="assemblyForm.billType" :filterable="true"
  242. :clearable="true" :remote="true" :disabled="true" :buttonIf="false" placeholder="请选择单据类型"
  243. @corpChange="corpChange($event, 'billType')">
  244. </search-query>
  245. </el-form-item>
  246. </el-col>
  247. <el-col :span="24">
  248. <el-col :span="6">
  249. <el-form-item label="" prop="billNo">
  250. <span slot="label">
  251. <span style="color: #1e9fff">单据编号</span>
  252. </span>
  253. <el-input v-model="assemblyForm.billNo" size="small" placeholder="请输入单据编号"
  254. style="width: 100%;" disabled></el-input>
  255. </el-form-item>
  256. </el-col>
  257. <el-col :span="4">
  258. <el-form-item label="" prop="createUserName">
  259. <span slot="label">
  260. <span style="color: #1e9fff">制单人</span>
  261. </span>
  262. <el-input v-model="assemblyForm.createUserName" size="small" placeholder="请输入单据编号"
  263. style="width: 100%;" disabled></el-input>
  264. </el-form-item>
  265. </el-col>
  266. <el-col :span="5">
  267. <el-form-item label="" prop="createTime">
  268. <span slot="label">
  269. <span style="color: #1e9fff">制单日期</span>
  270. </span>
  271. <el-input v-model="assemblyForm.createTime" size="small" placeholder="请输入单据编号"
  272. style="width: 100%;" disabled></el-input>
  273. </el-form-item>
  274. </el-col>
  275. <el-col :span="4">
  276. <el-form-item label="" prop="updateUserName">
  277. <span slot="label">
  278. <span style="color: #1e9fff">修改人</span>
  279. </span>
  280. <el-input v-model="assemblyForm.updateUserName" size="small" placeholder="请输入单据编号"
  281. style="width: 100%;" disabled></el-input>
  282. </el-form-item>
  283. </el-col>
  284. <el-col :span="5">
  285. <el-form-item label="" prop="updateTime">
  286. <span slot="label">
  287. <span style="color: #1e9fff">修改日期</span>
  288. </span>
  289. <el-input v-model="assemblyForm.updateTime" size="small" placeholder="请输入单据编号"
  290. style="width: 100%;" disabled></el-input>
  291. </el-form-item>
  292. </el-col>
  293. </el-col>
  294. </el-row>
  295. <!-- <el-row>
  296. <el-col :span="6">
  297. <el-checkbox size="medium" :true-label="1" :false-label="0" :disabled="detailData.seeDisabled"
  298. v-model="assemblyForm.isLargeCargo">大件货</el-checkbox>
  299. </el-col>
  300. <el-col :span="6">
  301. <div>
  302. <el-checkbox size="medium" :true-label="1" :false-label="0" :disabled="detailData.seeDisabled"
  303. v-model="assemblyForm.isNeedLand">陆运</el-checkbox>
  304. <el-checkbox size="medium" :true-label="1" :false-label="0" :disabled="detailData.seeDisabled"
  305. v-model="assemblyForm.isNeedDeclare">需报关</el-checkbox>
  306. <el-checkbox size="medium" :true-label="1" :false-label="0" :disabled="detailData.seeDisabled"
  307. v-model="assemblyForm.isNeedIq">需三检</el-checkbox>
  308. </div>
  309. </el-col>
  310. <el-col :span="6">
  311. <el-form-item label="箱数或件数大写" prop="quantityPackingDescr" label-width="100px">
  312. <span slot="label">
  313. <span style="color: #1e9fff">箱数或件数大写</span>
  314. </span>
  315. <el-input type="age" style="width: 100%;" v-model="assemblyForm.quantityPackingDescr"
  316. size="small" autocomplete="off" :disabled="true" clearable
  317. placeholder="请输入箱数或件数大写"></el-input>
  318. </el-form-item>
  319. </el-col>
  320. <el-col :span="6">
  321. <el-form-item label="创建日期" prop="cyTrailerTime">
  322. <span slot="label">
  323. <span style="color: #1e9fff">创建日期</span>
  324. </span>
  325. <el-date-picker v-model="assemblyForm.createTime" type="date" style="width: 100%;"
  326. value-format="yyyy-MM-dd" size="small" :disabled="true" placeholder="请选择创建日期">
  327. </el-date-picker>
  328. </el-form-item>
  329. </el-col>
  330. </el-row> -->
  331. </el-form>
  332. <el-dialog title="INTTRA EDI" :visible.sync="inttraVisible" width="50%" append-to-body
  333. :before-close="beforeClose">
  334. <div>
  335. <el-form :model="assemblyForm" ref="form" label-width="160px">
  336. <el-row v-if="inttraDoorToVisible" :gutter="20">
  337. <el-col :span="12">
  338. <el-form-item :label="`DOOR TO 客户名称`" prop="hNotify2CnName">
  339. <el-input type="age" style="width: 100%;"
  340. v-model="assemblyForm.detail[`inttraDoorToCorpName`]" size="small"
  341. autocomplete="off" :disabled="detailData.seeDisabled" clearable
  342. :placeholder="`请输入 DOOR TO 客户名称`"
  343. @input="inttraTitleInput($event, 'CorpName')"></el-input>
  344. </el-form-item>
  345. </el-col>
  346. <el-col :span="12">
  347. <el-form-item :label="`DOOR TO 客户地址`">
  348. <el-input type="age" style="width: 100%;"
  349. v-model="assemblyForm.detail[`inttraDoorToCorpAddr`]" size="small"
  350. autocomplete="off" :disabled="detailData.seeDisabled" clearable
  351. :placeholder="`请输入${inttraText} 客户地址`"
  352. @input="inttraTitleInput($event, 'CorpAddr')"></el-input>
  353. </el-form-item>
  354. </el-col>
  355. <el-col :span="12">
  356. <el-form-item :label="`DOOR TO 联系人`">
  357. <el-input type="age" style="width: 100%;"
  358. v-model="assemblyForm.detail[`inttraDoorToCorpContacts`]" size="small"
  359. autocomplete="off" :disabled="detailData.seeDisabled" clearable
  360. :placeholder="`请输入 DOOR TO 联系人`"
  361. @input="inttraTitleInput($event, 'CorpContacts')"></el-input>
  362. </el-form-item>
  363. </el-col>
  364. <el-col :span="12">
  365. <el-form-item :label="`DOOR TO 联系电话`">
  366. <el-input type="age" style="width: 100%;"
  367. v-model="assemblyForm.detail[`inttraDoorToCorpTel`]" size="small" autocomplete="off"
  368. :disabled="detailData.seeDisabled" clearable :placeholder="`请输入 DOOR TO 联系人电话`"
  369. @input="inttraTitleInput($event, 'CorpTel')"></el-input>
  370. </el-form-item>
  371. </el-col>
  372. </el-row>
  373. <el-row v-if="inttraToDoorVisible" :gutter="20">
  374. <el-col :span="12">
  375. <el-form-item :label="`TO DOOR 客户名称`" prop="hNotify2CnName">
  376. <el-input type="age" style="width: 100%;"
  377. v-model="assemblyForm.detail[`inttraToDoorCorpName`]" size="small"
  378. autocomplete="off" :disabled="detailData.seeDisabled" clearable
  379. :placeholder="`请输入 TO DOOR 客户名称`"
  380. @input="inttraTitleInput($event, 'CorpName')"></el-input>
  381. </el-form-item>
  382. </el-col>
  383. <el-col :span="12">
  384. <el-form-item :label="`TO DOOR 客户地址`">
  385. <el-input type="age" style="width: 100%;"
  386. v-model="assemblyForm.detail[`inttraToDoorCorpAddr`]" size="small"
  387. autocomplete="off" :disabled="detailData.seeDisabled" clearable
  388. :placeholder="`请输入 TO DOOR 客户地址`"
  389. @input="inttraTitleInput($event, 'CorpAddr')"></el-input>
  390. </el-form-item>
  391. </el-col>
  392. <el-col :span="12">
  393. <el-form-item :label="`TO DOOR 联系人`">
  394. <el-input type="age" style="width: 100%;"
  395. v-model="assemblyForm.detail[`inttraToDoorCorpContacts`]" size="small"
  396. autocomplete="off" :disabled="detailData.seeDisabled" clearable
  397. :placeholder="`请输入 TO DOOR 联系人`"
  398. @input="inttraTitleInput($event, 'CorpContacts')"></el-input>
  399. </el-form-item>
  400. </el-col>
  401. <el-col :span="12">
  402. <el-form-item :label="`TO DOOR 联系电话`">
  403. <el-input type="age" style="width: 100%;"
  404. v-model="assemblyForm.detail[`inttraToDoorCorpTel`]" size="small" autocomplete="off"
  405. :disabled="detailData.seeDisabled" clearable :placeholder="`请输入 TO DOOR 联系人电话`"
  406. @input="inttraTitleInput($event, 'CorpTel')"></el-input>
  407. </el-form-item>
  408. </el-col>
  409. </el-row>
  410. </el-form>
  411. </div>
  412. <span slot="footer" class="dialog-footer">
  413. <el-button type="danger" @click="inttraCancellation('清除')">清 除</el-button>
  414. <el-button type="primary" @click="inttraVisible = false">确 定</el-button>
  415. </span>
  416. </el-dialog>
  417. </div>
  418. </template>
  419. <script>
  420. import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
  421. import { getBcorpslistByType, getBcorpsDetail } from "@/api/iosBasicData/bcorps";
  422. import { getWorkDicts } from "@/api/system/dictbiz";
  423. import { bportsList } from "@/api/iosBasicData/bports";
  424. import emailhash from '@/views/iosBasicData/SeafreightExportF/bills/assembly/Jsonfile/emailhash.json'
  425. import { getBcorpsattnList } from "@/api/iosBasicData/bcorpsattn";
  426. import { getBservicetermsList } from "@/api/iosBasicData/bserviceterms";
  427. import { blinesList } from "@/api/iosBasicData/blines";
  428. import { getDeptLazyTree } from "@/api/system/dept";
  429. import { selectListLos } from "@/api/approval/processConfig";
  430. import dicSelect from "@/components/dicSelect/main";
  431. export default {
  432. components: { SearchQuery, dicSelect },
  433. props: {
  434. assemblyForm: {
  435. type: Object
  436. },
  437. detailData: {
  438. type: Boolean,
  439. },
  440. // 是否生成账单
  441. generateBillsfalse: {
  442. type: Boolean,
  443. default: false
  444. },
  445. disabled: {
  446. type: Boolean,
  447. default: false
  448. }
  449. },
  450. data() {
  451. return {
  452. // 订舱代理数据
  453. bookingAgentData: [],
  454. // 业务来源
  455. sourceTypeData: [
  456. {
  457. label: '公司',
  458. value: 'OWN'
  459. },
  460. {
  461. label: '代理',
  462. value: 'AGENT'
  463. },
  464. {
  465. label: '业务员',
  466. value: 'SALES'
  467. }
  468. ],
  469. // 业务来源下级配置
  470. sourceforParameter: {},
  471. // 业务来源下级
  472. srcData: [],
  473. emailhash: emailhash, // 邮箱跳转地址
  474. lineData: [], // 航线
  475. // 场站
  476. cyData: [],
  477. cyContactsData: [], // 场站联系人
  478. // HB/L付款地点数据
  479. hpayplaceData: [],
  480. // MB/L付款地点
  481. mpayplaceData: [],
  482. // 签单地点
  483. issueAtData: [],
  484. // INTTRA EDI弹窗
  485. inttraVisible: false,
  486. inttraDoorToVisible: false,
  487. inttraToDoorVisible: false,
  488. inttraText: '', // 服务方式弹窗字段拼接
  489. inttraTitle: '',
  490. inttraData: [],
  491. // 份数
  492. numberOfData: [],
  493. // 签单方式
  494. issueTypeData: [],
  495. // 装箱方式
  496. loadTypeData: [],
  497. // 业务类型
  498. businessTypesData: [],
  499. // 单据类型
  500. billTypeData: [
  501. {
  502. label: '直单',
  503. value: 'DD'
  504. },
  505. {
  506. label: '主单',
  507. value: 'MM'
  508. },
  509. {
  510. label: '分单',
  511. value: 'MH'
  512. }
  513. ],
  514. }
  515. },
  516. created() {
  517. // this.cyBcorpslistByType()
  518. this.getWorkDictsfun()
  519. this.ownDeptLazyTreefun()
  520. },
  521. methods: {
  522. // 业务来源下拉
  523. sourceCorp(value, name) {
  524. if (name == 'srcCnName') {
  525. if (!value) {
  526. this.$set(this.assemblyForm, 'srcId', '')
  527. this.$set(this.assemblyForm, 'srcCnName', '')
  528. this.$set(this.assemblyForm, 'srcEnName', '')
  529. }
  530. for (let item of this.srcData) {
  531. if (item[this.sourceforParameter.value] == value) {
  532. if (this.assemblyForm.srcType == 'OWN') {
  533. // 国家
  534. this.$set(this.assemblyForm, 'srcId', item.id)
  535. this.$set(this.assemblyForm, 'srcCnName', item.title)
  536. this.$set(this.assemblyForm, 'srcEnName', item.title)
  537. } else if (this.assemblyForm.srcType == 'AGENT') {
  538. // 代理
  539. this.$set(this.assemblyForm, 'srcId', item.id)
  540. this.$set(this.assemblyForm, 'srcCnName', item.cnName)
  541. this.$set(this.assemblyForm, 'srcEnName', item.cnName)
  542. } else if (this.assemblyForm.srcType == 'SALES') {
  543. // 业务员
  544. this.$set(this.assemblyForm, 'srcId', item.id)
  545. this.$set(this.assemblyForm, 'srcCnName', item.name)
  546. this.$set(this.assemblyForm, 'srcEnName', item.name)
  547. }
  548. }
  549. }
  550. } else if (name == 'srcType') {
  551. this.$set(this.assemblyForm, 'srcType', value)
  552. this.$set(this.assemblyForm, 'srcId', '')
  553. this.$set(this.assemblyForm, 'srcCnName', '')
  554. this.$set(this.assemblyForm, 'srcEnName', '')
  555. if (this.assemblyForm.srcType == 'OWN') {
  556. this.sourceforParameter = { key: 'id', label: 'title', value: 'title' }
  557. this.ownDeptLazyTreefun()
  558. } else if (this.assemblyForm.srcType == 'AGENT') {
  559. this.sourceforParameter = { key: 'id', label: 'cnName', value: 'cnName' }
  560. this.agentBcorpsListfun()
  561. } else if (this.assemblyForm.srcType == 'SALES') {
  562. this.sourceforParameter = { key: 'id', label: 'name', value: 'name' }
  563. this.salesUserGetListfun()
  564. }
  565. }
  566. },
  567. // 业务来源接口
  568. sourceRemote(value, name) {
  569. if (name == 'srcCnName') {
  570. if (this.assemblyForm.srcType == 'OWN') {
  571. this.sourceforParameter = { key: 'id', label: 'title', value: 'title' }
  572. this.ownDeptLazyTreefun()
  573. } else if (this.assemblyForm.srcType == 'AGENT') {
  574. this.sourceforParameter = { key: 'id', label: 'cnName', value: 'cnName' }
  575. this.agentBcorpsListfun(value)
  576. } else if (this.assemblyForm.srcType == 'SALES') {
  577. this.sourceforParameter = { key: 'id', label: 'name', value: 'name' }
  578. this.salesUserGetListfun(value)
  579. }
  580. }
  581. },
  582. // 获取业务来源代理数据
  583. agentBcorpsListfun(cnName) {
  584. let corpTypeName = '国内直接客户,国内同行及代理,国外直接客户,国外同行及代理,代理客户'
  585. getBcorpslistByType(1, 10, { cnName, corpTypeName }).then(res => {
  586. this.srcData = res.data.data.records
  587. })
  588. },
  589. // 订舱代理
  590. bookingAgentBcorpsListfun(cnName) {
  591. let corpTypeName = '国内直接客户,国内同行及代理,国外直接客户,国外同行及代理'
  592. getBcorpslistByType(1, 10, { cnName, status: 0, corpTypeName }).then(res => {
  593. this.bookingAgentData = res.data.data.records
  594. })
  595. },
  596. // 获取业务来源业务员数据
  597. salesUserGetListfun(account) {
  598. selectListLos('业务员').then(res => {
  599. this.srcData = res.data.data
  600. })
  601. },
  602. // 获取公司名称 用户管理左侧
  603. ownDeptLazyTreefun() {
  604. getDeptLazyTree(0).then(res => {
  605. this.srcData = res.data.data
  606. // 来源 内容 默认登录人所属公司
  607. for (let item of this.srcData) {
  608. if (item.id == JSON.parse(localStorage.getItem('saber-userInfo')).content.dept_id) {
  609. this.$set(this.assemblyForm, 'srcId', item.id)
  610. this.$set(this.assemblyForm, 'srcCnName', item.title)
  611. this.$set(this.assemblyForm, 'srcEnName', item.title)
  612. }
  613. }
  614. })
  615. },
  616. // 远程搜索
  617. remoteMethod(value, name) {
  618. let inttraArr = ['inttraDoorTo', 'inttraToDoor']
  619. let numberOfArr = ['numberOfObl', 'numberOfCopy']
  620. let payplaceArr = ['hpayplace', 'mpayplace', 'issueAt']
  621. if (name == 'cy') {
  622. this.cyBcorpslistByType(value)
  623. } else if (inttraArr.indexOf(name) != -1) {
  624. this.inttraBcorpslistByType(value)
  625. }
  626. // else if (name == 'issueType') {
  627. // // 签单方式
  628. // this.getWorkDictsfun()
  629. // }
  630. // 场站联系人
  631. else if (name == 'cyContacts') {
  632. this.cyBcorpsattnListfun()
  633. }
  634. // 份数
  635. else if (numberOfArr.indexOf(name) != -1) {
  636. this.numberoforiginalWorkDicts()
  637. }
  638. // 服务方式
  639. else if (name == 'serviceTerms') {
  640. this.serviceTermsWorkDicts()
  641. }
  642. // HB/L付款状态 MB/L 付款状态
  643. else if (payplaceArr.indexOf(name) != -1) {
  644. this[name + 'BportsListfun'](value)
  645. }
  646. else if (name == 'line') {
  647. this.lineblinesListfun(value)
  648. }
  649. },
  650. // 选择框的回调
  651. corpChange(value, name) {
  652. let inttraArr = ['inttraDoorTo', 'inttraToDoor']
  653. let numberOfArr = ['Obl', 'Copy']
  654. if (name == 'cy') {
  655. if (!value) {
  656. this.$set(this.assemblyForm, 'cyId', '')
  657. this.$set(this.assemblyForm, 'cyCode', '')
  658. this.$set(this.assemblyForm, 'cyCnName', '')
  659. this.$set(this.assemblyForm, 'cyEnName', '')
  660. this.$set(this.assemblyForm, 'cyRemarks', '')
  661. // 联系人
  662. this.$set(this.assemblyForm, 'cyTel', '')
  663. this.$set(this.assemblyForm, 'cyAddress', '')
  664. this.$set(this.assemblyForm, 'cyContacts', '')
  665. }
  666. for (let item of this.cyData) {
  667. if (item.cnName == value) {
  668. this.$set(this.assemblyForm, 'cyId', item.id)
  669. this.$set(this.assemblyForm, 'cyCode', item.code)
  670. this.$set(this.assemblyForm, 'cyCnName', item.cnName)
  671. this.$set(this.assemblyForm, 'cyEnName', item.enName)
  672. this.$set(this.assemblyForm, 'cyRemarks', item.details) // 客户里的详情信息
  673. // 查询场站联系人
  674. getBcorpsattnList(1, 20, { pid: this.assemblyForm.cyId }).then(res => {
  675. console.log(res, 590)
  676. this.$set(this.assemblyForm, 'cyTel', res.data.data.records[0].tel)
  677. this.$set(this.assemblyForm, 'cyAddress', res.data.data.records[0].addr)
  678. this.$set(this.assemblyForm, 'cyContacts', res.data.data.records[0].cname)
  679. })
  680. }
  681. }
  682. }
  683. // 场站联系人
  684. else if (name == 'cyContacts') {
  685. if (!value) {
  686. this.$set(this.assemblyForm, 'cyTel', '')
  687. this.$set(this.assemblyForm, 'cyAddress', '')
  688. this.$set(this.assemblyForm, 'cyContacts', '')
  689. }
  690. for (let item of this.cyContactsData) {
  691. if (item.cname == value) {
  692. this.$set(this.assemblyForm, 'cyTel', item.tel)
  693. this.$set(this.assemblyForm, 'cyAddress', item.addr)
  694. this.$set(this.assemblyForm, 'cyContacts', item.cname)
  695. }
  696. }
  697. }
  698. else if (inttraArr.indexOf(name) != -1) {
  699. for (let item of this.inttraData) {
  700. if (item.cnName == value) {
  701. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpName`, item.cnName)
  702. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpAddr`, item.cnAddr)
  703. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpContacts`, item.attnName)
  704. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpTel`, item.attnTel)
  705. }
  706. }
  707. }
  708. // 份数
  709. else if (numberOfArr.indexOf(name) != -1) {
  710. if (!value) {
  711. this.$set(this.assemblyForm, 'numberOf' + name, '')
  712. this.$set(this.assemblyForm, 'numberOf' + name + 'Digit', '')
  713. }
  714. for (let item of this.numberOfData) {
  715. if (item.dictValue == value) {
  716. this.$set(this.assemblyForm, 'numberOf' + name, item.dictValue)
  717. this.$set(this.assemblyForm, 'numberOf' + name + 'Digit', item.dictKey)
  718. }
  719. }
  720. }
  721. // 签单地点
  722. else if (name == 'issueAt') {
  723. for (let item of this.issueAtData) {
  724. if (item.enName == value) {
  725. this.$set(this.assemblyForm, 'issueAt', item.enName)
  726. this.$set(this.assemblyForm, 'issueAtId', item.id)
  727. }
  728. }
  729. }
  730. // 航线
  731. else if (name == 'line') {
  732. for (let item of this[name + 'Data']) {
  733. if (item.cnName == value) {
  734. this.$set(this.assemblyForm, 'lineId', item.id)
  735. this.$set(this.assemblyForm, 'lineCnName', item.cnName)
  736. this.$set(this.assemblyForm, 'lineEnName', item.enName)
  737. }
  738. }
  739. }
  740. // 订舱代理
  741. else if (name == 'bookingAgent') {
  742. if (!value) {
  743. this.$set(this.assemblyForm, 'bookingAgentId', '')
  744. this.$set(this.assemblyForm, 'bookingAgentCnName', '')
  745. this.$set(this.assemblyForm, 'bookingAgentEnName', '')
  746. this.$set(this.assemblyForm, 'bookingRemarks', '')
  747. }
  748. for (let item of this[name + 'Data']) {
  749. if (item.cnName == value) {
  750. this.$set(this.assemblyForm, 'bookingAgentId', item.id)
  751. this.$set(this.assemblyForm, 'bookingAgentCnName', item.cnName)
  752. this.$set(this.assemblyForm, 'bookingAgentEnName', item.enName)
  753. this.$set(this.assemblyForm, 'bookingRemarks', item.remarks)
  754. }
  755. }
  756. }
  757. else {
  758. this.assemblyForm[name] = value ? value : ''
  759. }
  760. },
  761. // 获取航线数据
  762. lineblinesListfun(cnName) {
  763. blinesList(1, 10, { cnName, status: 0 }).then(res => {
  764. this.lineData = res.data.data.records
  765. })
  766. },
  767. // INTTRA EDI弹窗 输入框监听
  768. inttraTitleInput(value, name) {
  769. // if (this.assemblyForm.serviceTerms == 'DOOR to DOOR') {
  770. // this.$set(this.assemblyForm,`inttraDoorTo${name}`,value)
  771. // this.$set(this.assemblyForm,`inttraToDoor${name}`,value)
  772. // }else {
  773. // this.$set(this.assemblyForm,`inttra${this.inttraTitle}${name}`,value)
  774. // }
  775. },
  776. // 发送INTTRA EDI弹窗开启
  777. inttraAdd() {
  778. if (!this.assemblyForm.serviceTerms) {
  779. this.$message({
  780. showClose: true,
  781. message: '请先选择服务方式',
  782. type: 'warning'
  783. });
  784. return
  785. }
  786. if (this.assemblyForm.serviceTerms == 'DOOR to CY') {
  787. this.inttraTitle = 'DoorTo'
  788. this.inttraText = 'DOOR TO'
  789. // this.inttraBcorpslistByType()
  790. this.inttraVisible = true
  791. this.inttraDoorToVisible = true
  792. this.inttraToDoorVisible = false
  793. //
  794. } else if (this.assemblyForm.serviceTerms == 'CY to DOOR') {
  795. this.inttraTitle = 'ToDoor'
  796. this.inttraText = 'TO DOOR'
  797. // this.inttraBcorpslistByType()
  798. this.inttraVisible = true
  799. this.inttraDoorToVisible = false
  800. this.inttraToDoorVisible = true
  801. } else if (this.assemblyForm.serviceTerms == 'DOOR to DOOR') {
  802. this.inttraTitle = 'ToDoor'
  803. this.inttraText = 'DOOR TO DOOR'
  804. // this.inttraBcorpslistByType()
  805. this.inttraVisible = true
  806. this.inttraDoorToVisible = true
  807. this.inttraToDoorVisible = true
  808. } else {
  809. this.$confirm('请选择其他的服务方式', {
  810. confirmButtonText: "确定",
  811. cancelButtonText: "取消",
  812. type: "warning"
  813. }).then(() => {
  814. console.log('123123')
  815. }).catch(() => {
  816. console.log('11111111')
  817. })
  818. }
  819. console.log(this.assemblyForm.serviceTerms, this.inttraDoorToVisible, this.inttraToDoorVisible)
  820. },
  821. // INTTRA EDI弹窗清除
  822. inttraCancellation(name) {
  823. let title = ''
  824. if (name == '清除') {
  825. title = '确认清除吗?'
  826. }
  827. this.$confirm(title)
  828. .then(_ => {
  829. if (this.assemblyForm.serviceTerms == 'DOOR to DOOR') {
  830. this.$set(this.assemblyForm, 'inttraDoorToCorpName', '')
  831. this.$set(this.assemblyForm, 'inttraDoorToCorpAddr', '')
  832. this.$set(this.assemblyForm, 'inttraDoorToCorpContacts', '')
  833. this.$set(this.assemblyForm, 'inttraDoorToCorpTel', '')
  834. this.$set(this.assemblyForm, 'inttraToDoorCorpName', '')
  835. this.$set(this.assemblyForm, 'inttraToDoorCorpAddr', '')
  836. this.$set(this.assemblyForm, 'inttraToDoorCorpContacts', '')
  837. this.$set(this.assemblyForm, 'inttraToDoorCorpTel', '')
  838. } else {
  839. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpName`, '')
  840. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpAddr`, '')
  841. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpContacts`, '')
  842. this.$set(this.assemblyForm, `inttra${this.inttraTitle}CorpTel`, '')
  843. }
  844. this.inttraVisible = false
  845. })
  846. .catch(_ => { });
  847. },
  848. // 弹窗关闭
  849. beforeClose(done) {
  850. done();
  851. },
  852. // 邮箱跳转
  853. emailJump() {
  854. if (!this.assemblyForm.cyId) {
  855. this.$message({
  856. message: '请先选择场站',
  857. type: 'warning'
  858. });
  859. return
  860. }
  861. // 调详情获取邮箱
  862. getBcorpsDetail(this.assemblyForm.cyId).then(res => {
  863. let email = res.data.data.email.split('@')[1] // 取@符号后面的数据
  864. for (let i in this.emailhash) {
  865. if (email == i) {
  866. // 跳转打开一个新的页面
  867. window.open(this.emailhash[i], "_blank")
  868. }
  869. }
  870. })
  871. },
  872. // 接口数据请求🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏
  873. // 获取场站数据
  874. cyBcorpslistByType(cnName) {
  875. let corpTypeName = '场站'
  876. getBcorpslistByType(1, 10, { cnName, status: 0, corpTypeName }).then(res => {
  877. this.cyData = res.data.data.records
  878. })
  879. },
  880. // 获取场站下的联系人数据
  881. cyBcorpsattnListfun() {
  882. getBcorpsattnList(1, 20, { pid: this.assemblyForm.cyId }).then(res => {
  883. this.cyContactsData = res.data.data.records
  884. })
  885. },
  886. // 获取客户数据
  887. inttraBcorpslistByType(cnName) {
  888. getBcorpslistByType(1, 10, { cnName, status: 0 }).then(res => {
  889. this.inttraData = res.data.data.records
  890. })
  891. },
  892. // 获取签单方式字典数据
  893. getWorkDictsfun() {
  894. getWorkDicts('issue_type_F').then(res => {
  895. this.issueTypeData = res.data.data
  896. })
  897. getWorkDicts('packing_method').then(res => {
  898. this.loadTypeData = res.data.data
  899. })
  900. getWorkDicts('business_Type_detail').then(res => {
  901. this.businessTypesData = res.data.data
  902. })
  903. },
  904. // 获取份数数据
  905. numberoforiginalWorkDicts() {
  906. getWorkDicts('number_of_original').then(res => {
  907. this.numberOfData = res.data.data
  908. })
  909. },
  910. // 获取服务方式数据
  911. serviceTermsWorkDicts() {
  912. // getWorkDicts('service_terms').then(res=>{
  913. // this.serviceTermsData = res.data.data
  914. // })
  915. getBservicetermsList(1, 20, { status: 0 }).then(res => {
  916. this.serviceTermsData = res.data.data.records
  917. })
  918. },
  919. // HB/L 付款地点
  920. hpayplaceBportsListfun(enName) {
  921. bportsList(1, 10, { enName, status: 0 }).then(res => {
  922. this.hpayplaceData = res.data.data.records
  923. })
  924. },
  925. // MB/L 付款地点
  926. mpayplaceBportsListfun(enName) {
  927. bportsList(1, 10, { enName, status: 0 }).then(res => {
  928. this.mpayplaceData = res.data.data.records
  929. })
  930. },
  931. // 签单地点
  932. issueAtBportsListfun(enName) {
  933. bportsList(1, 10, { enName, status: 0 }).then(res => {
  934. this.issueAtData = res.data.data.records
  935. })
  936. },
  937. }
  938. }
  939. </script>
  940. <style lang="scss" scoped>
  941. ::v-deep.el-form-item {
  942. margin-bottom: 10px;
  943. }
  944. ::v-deep .el-input-number .el-input__inner {
  945. text-align: left
  946. }
  947. ::v-deep .el-select>.el-input {
  948. display: inline-block !important;
  949. }
  950. </style>