formbottom.vue 47 KB

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