_id.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  1. <template>
  2. <div>
  3. <div class="headline">
  4. <span v-if="IslookOrUpdate === 'update'">客户资料编辑</span>
  5. <span v-else-if="IslookOrUpdate === 'add'">客户资料新增</span>
  6. <span v-else>客户资料查看</span>
  7. </div>
  8. <div class="infoView">
  9. <ul>
  10. <li class="clearfix">
  11. <div class="pull-left w33 clearfix">
  12. <div class="name pull-left">客户名称</div>
  13. <el-input placeholder="请输入客户名称" v-model="chooseItem.companyName" clearable class="w22 pull-left" v-if="IslookOrUpdate === 'add'">
  14. </el-input>
  15. <div class="w22 pull-left text" v-if="IslookOrUpdate === 'look' || IslookOrUpdate === 'update'">{{chooseItem.companyName}}</div>
  16. </div>
  17. <div class="pull-left w33 clearfix">
  18. <div class="name pull-left">发票地址</div>
  19. <el-input placeholder="请输入发票地址" v-model="chooseItem.address" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  20. </el-input>
  21. <div class="w22 pull-left text" v-else>{{chooseItem.address}}</div>
  22. </div>
  23. <div class="pull-left w33 clearfix">
  24. <div class="name pull-left">发票电话</div>
  25. <el-input placeholder="请输入发票电话" v-model="chooseItem.telephone" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  26. </el-input>
  27. <div class="w22 pull-left text" v-else>{{chooseItem.telephone}}</div>
  28. </div>
  29. </li>
  30. <li class="clearfix">
  31. <div class="pull-left w33 clearfix">
  32. <div class="name pull-left">汇率</div>
  33. <el-select placeholder="请选择汇率" v-model="chooseItem.exchangeRateMethod" class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  34. <el-option label="当天汇率" value="当天汇率"></el-option>
  35. <el-option label="海关汇率" value="海关汇率"></el-option>
  36. </el-select>
  37. <div class="w22 pull-left text" v-else>{{chooseItem.exchangeRateMethod}}</div>
  38. </div>
  39. <div class="pull-left w33 clearfix">
  40. <div class="name pull-left">代理费率</div>
  41. <el-input placeholder="请输入代理费率" v-model="chooseItem.agencyRate" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  42. </el-input>
  43. <div class="w22 pull-left text" v-else>{{chooseItem.agencyRate}}</div>
  44. </div>
  45. <div class="pull-left w33 clearfix">
  46. <div class="name pull-left">最低代理费率</div>
  47. <el-input placeholder="请输入最低代理费率" v-model="chooseItem.minAgencyRate" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" maxlength="12">
  48. </el-input>
  49. <div class="w22 pull-left text" v-else>{{chooseItem.minAgencyRate}}</div>
  50. </div>
  51. </li>
  52. <li class="clearfix">
  53. <div class="pull-left w33 clearfix">
  54. <div class="name pull-left">计费方式</div>
  55. <el-select placeholder="请选择计费方式" v-model="chooseItem.billMethod" class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  56. <el-option label="货" value="货"></el-option>
  57. <el-option label="货+税" value="货+税"></el-option>
  58. </el-select>
  59. <div class="w22 pull-left text" v-else>{{chooseItem.billMethod}}</div>
  60. </div>
  61. <div class="pull-left w33 clearfix">
  62. <div class="name pull-left">成交方式</div>
  63. <el-select placeholder="请选择成交方式" v-model="chooseItem.transactionMode" class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  64. <el-option label="FOB" value="FOB"></el-option>
  65. <el-option label="CIF" value="CIF"></el-option>
  66. </el-select>
  67. <div class="w22 pull-left text" v-else>{{chooseItem.transactionMode}}</div>
  68. </div>
  69. <div class="pull-left w33 clearfix">
  70. <div class="name pull-left">发票类型</div>
  71. <el-select placeholder="请选择发票类型" v-model="chooseItem.billType" class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  72. <el-option label="海关增值税发票" value="海关增值税发票"></el-option>
  73. <el-option label="增值税专票" value="增值税专票"></el-option>
  74. </el-select>
  75. <div class="w22 pull-left text" v-else>{{chooseItem.billType}}</div>
  76. </div>
  77. </li>
  78. <li class="clearfix">
  79. <div class="pull-left w33 clearfix">
  80. <div class="name pull-left">客服</div>
  81. <el-input placeholder="请输入客服" v-model="chooseItem.customService" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  82. </el-input>
  83. <div class="w22 pull-left text" v-else>{{chooseItem.customService}}</div>
  84. </div>
  85. <div class="pull-left w33 clearfix">
  86. <div class="name pull-left">税号</div>
  87. <el-input placeholder="请输入税号" v-model="chooseItem.taxNum" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  88. </el-input>
  89. <div class="w22 pull-left text" v-else>{{chooseItem.taxNum}}</div>
  90. </div>
  91. <div class="pull-left w33 clearfix">
  92. <div class="name pull-left">银行账号</div>
  93. <el-input placeholder="请输入银行账号" v-model="chooseItem.bankAccount" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  94. </el-input>
  95. <div class="w22 pull-left text" v-else>{{chooseItem.bankAccount}}</div>
  96. </div>
  97. </li>
  98. <li class="clearfix">
  99. <div class="pull-left w33 clearfix">
  100. <div class="name pull-left">海关编码</div>
  101. <el-input placeholder="请输入海关编码" v-model="chooseItem.customscode" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" maxlength="18">
  102. </el-input>
  103. <div class="w22 pull-left text" v-else>{{chooseItem.customscode}}</div>
  104. </div>
  105. <div class="pull-left w33 clearfix">
  106. <div class="name pull-left">统一社会信用编码</div>
  107. <el-input placeholder="请输入统一社会信用编码" v-model="chooseItem.unifiedSocialCreditCode" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  108. </el-input>
  109. <div class="w22 pull-left text" v-else>{{chooseItem.unifiedSocialCreditCode}}</div>
  110. </div>
  111. <div class="pull-left w33 clearfix">
  112. <div class="name pull-left">组织机构代码</div>
  113. <el-input placeholder="请输入组织机构代码" v-model="chooseItem.organizationCode" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  114. </el-input>
  115. <div class="w22 pull-left text" v-else>{{chooseItem.organizationCode}}</div>
  116. </div>
  117. </li>
  118. <li class="clearfix">
  119. <div class="pull-left w33 clearfix">
  120. <div class="name pull-left">账期代码</div>
  121. <el-input placeholder="请输入账期代码" v-model="chooseItem.accountPeriodCode" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  122. </el-input>
  123. <div class="w22 pull-left text" v-else>{{chooseItem.accountPeriodCode}}</div>
  124. </div>
  125. <div class="pull-left w33 clearfix">
  126. <div class="name pull-left">账期名称</div>
  127. <el-input placeholder="请输入账期名称" v-model="chooseItem.accountPeriodName" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'">
  128. </el-input>
  129. <div class="w22 pull-left text" v-else>{{chooseItem.accountPeriodName}}</div>
  130. </div>
  131. <div class="pull-left w33 clearfix">
  132. <div class="name pull-left">入仓号</div>
  133. <el-input placeholder="请输入入仓号" v-model="chooseItem.warehousingNo" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" maxlength="18">
  134. </el-input>
  135. <div class="w22 pull-left text" v-else>{{chooseItem.warehousingNo}}</div>
  136. </div>
  137. </li>
  138. <li class="clearfix">
  139. <div class="pull-left w33 clearfix">
  140. <div class="name pull-left">结账日</div>
  141. <el-input placeholder="请输入结账日" v-model="chooseItem.accountDay" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" type="number">
  142. </el-input>
  143. <div class="w22 pull-left text" v-else>{{chooseItem.accountDay}}</div>
  144. <!--<el-date-picker-->
  145. <!--v-model="chooseItem.accountDay"-->
  146. <!--type="date"-->
  147. <!--placeholder="选择日期"-->
  148. <!--class="w22 pull-left"-->
  149. <!--&gt;-->
  150. <!--</el-date-picker>-->
  151. </div>
  152. <div class="pull-left w33 clearfix">
  153. <div class="name pull-left">付款日</div>
  154. <el-input placeholder="请输入付款日" v-model="chooseItem.payDay" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" type="number">
  155. </el-input>
  156. <div class="w22 pull-left text" v-else>{{chooseItem.payDay}}</div>
  157. <!--<el-date-picker-->
  158. <!--v-model="chooseItem.payDay"-->
  159. <!--type="date"-->
  160. <!--placeholder="选择日期"-->
  161. <!--class="w22 pull-left"-->
  162. <!--&gt;-->
  163. <!--</el-date-picker>-->
  164. </div>
  165. </li>
  166. <li class="clearfix">
  167. <div class="pull-left w33 clearfix">
  168. <div class="name pull-left">信用天数</div>
  169. <el-input placeholder="请输入结账日" v-model="chooseItem.creditDay" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" type="number">
  170. </el-input>
  171. <div class="w22 pull-left text" v-else>{{chooseItem.creditDay}}</div>
  172. </div>
  173. <div class="pull-left w33 clearfix">
  174. <div class="name pull-left">固定日</div>
  175. <el-input placeholder="请输入付款日" v-model="chooseItem.fixedDay" clearable class="w22 pull-left" v-if="IslookOrUpdate !== 'look'" type="number">
  176. </el-input>
  177. <div class="w22 pull-left text" v-else>{{chooseItem.fixedDay}}</div>
  178. </div>
  179. </li>
  180. </ul>
  181. <div class="control-btn">
  182. <template v-if="IslookOrUpdate !== 'look'">
  183. <div class="save" @click="closeAlert('save')">保存</div>
  184. <div class="cancel" @click="closeAlert()">取消</div>
  185. </template>
  186. <template v-else>
  187. <div class="save" @click="changeUpdate()">编辑</div>
  188. </template>
  189. </div>
  190. </div>
  191. <div v-if="getInfo && false"></div>
  192. </div>
  193. </template>
  194. <script>
  195. import { clone, Vuehttp } from '@/utils/tools'
  196. export default {
  197. data() {
  198. return {
  199. IslookOrUpdate: 'update',
  200. chooseItem: {}
  201. }
  202. },
  203. fetch({store, route}) {
  204. if (route.params.id === -1) {
  205. } else {
  206. return Promise.all([
  207. store.dispatch('getOnceCusinfo',{id: route.params.id})
  208. ])
  209. }
  210. },
  211. computed: {
  212. getInfo() {
  213. if (this.$store.state.customer.details.data.content) {
  214. this.chooseItem = clone(this.$store.state.customer.details.data.content)
  215. this.IslookOrUpdate = this.$route.query.type
  216. } else {
  217. this.chooseItem = {}
  218. this.IslookOrUpdate = 'add'
  219. }
  220. return ''
  221. }
  222. },
  223. methods: {
  224. changeUpdate() {
  225. this.IslookOrUpdate = 'update'
  226. },
  227. closeAlert(_tp) {
  228. if (_tp === undefined) {
  229. this.$router.go(-1)
  230. return false
  231. }
  232. else if (!this.chooseItem.companyName) {
  233. this.$message({
  234. type: 'error',
  235. message: '请填写客户名字'
  236. })
  237. return;
  238. }
  239. else if (!this.chooseItem.address) {
  240. this.$message({
  241. type: 'error',
  242. message: '请输入发票地址'
  243. })
  244. return;
  245. }
  246. else if (!this.chooseItem.telephone) {
  247. this.$message({
  248. type: 'error',
  249. message: '请输入发票电话'
  250. })
  251. return;
  252. }
  253. else if (!this.chooseItem.exchangeRateMethod) {
  254. this.$message({
  255. type: 'error',
  256. message: '请选择汇率'
  257. })
  258. return;
  259. }
  260. else if (!this.chooseItem.agencyRate) {
  261. // 这里要做 数字正则
  262. this.$message({
  263. type: 'error',
  264. message: '请输入代理费率'
  265. })
  266. return;
  267. }
  268. else if (!/^[0-9]+$/.test(this.chooseItem.agencyRate)) {
  269. this.$message({
  270. type: 'error',
  271. message: '代理费率只能为数字'
  272. })
  273. return;
  274. }
  275. else if (!this.chooseItem.minAgencyRate) {
  276. // 这里要做 数字正则
  277. this.$message({
  278. type: 'error',
  279. message: '请输入最低代理费率'
  280. })
  281. return;
  282. }
  283. else if (!/^[0-9]+$/.test(this.chooseItem.minAgencyRate)) {
  284. this.$message({
  285. type: 'error',
  286. message: '最低代理费率只能为数字'
  287. })
  288. return;
  289. }
  290. else if (!this.chooseItem.billMethod) {
  291. this.$message({
  292. type: 'error',
  293. message: '请选择计费方式'
  294. })
  295. return;
  296. }
  297. else if (!this.chooseItem.transactionMode) {
  298. this.$message({
  299. type: 'error',
  300. message: '请选择成交方式'
  301. })
  302. return;
  303. }
  304. else if (!this.chooseItem.billType) {
  305. this.$message({
  306. type: 'error',
  307. message: '请选择发票类型'
  308. })
  309. return;
  310. }
  311. else if (!this.chooseItem.customService) {
  312. this.$message({
  313. type: 'error',
  314. message: '请输入客服'
  315. })
  316. return;
  317. }
  318. else if (!this.chooseItem.taxNum) {
  319. this.$message({
  320. type: 'error',
  321. message: '请输入税号'
  322. })
  323. return;
  324. }
  325. else if (!this.chooseItem.bankAccount) {
  326. this.$message({
  327. type: 'error',
  328. message: '请输入银行账号'
  329. })
  330. return;
  331. }
  332. else if (!this.chooseItem.customscode) {
  333. this.$message({
  334. type: 'error',
  335. message: '请输入海关编码'
  336. })
  337. return;
  338. }
  339. else if (!this.chooseItem.unifiedSocialCreditCode) {
  340. this.$message({
  341. type: 'error',
  342. message: '请输入统一社会信用代码'
  343. })
  344. return;
  345. }
  346. else if (!this.chooseItem.organizationCode) {
  347. this.$message({
  348. type: 'error',
  349. message: '请输入组织机构代码'
  350. })
  351. return;
  352. }
  353. else if (!this.chooseItem.accountPeriodCode) {
  354. this.$message({
  355. type: 'error',
  356. message: '请输入账期代码'
  357. })
  358. return;
  359. }
  360. else if (!this.chooseItem.accountPeriodName) {
  361. this.$message({
  362. type: 'error',
  363. message: '请输入账期名称'
  364. })
  365. return;
  366. }
  367. else if (!this.chooseItem.warehousingNo) {
  368. // 这里要做 数字正则
  369. this.$message({
  370. type: 'error',
  371. message: '请输入入仓号'
  372. })
  373. return;
  374. }
  375. else if (!/^[0-9]+$/.test(this.chooseItem.warehousingNo)) {
  376. this.$message({
  377. type: 'error',
  378. message: '入仓号只能为数字'
  379. })
  380. return
  381. }
  382. else if (!this.chooseItem.accountDay) {
  383. this.$message({
  384. type: 'error',
  385. message: '结账日输入有误'
  386. })
  387. return;
  388. }
  389. else if (!/^[0-9]+$/.test(this.chooseItem.accountDay)) {
  390. this.$message({
  391. type: 'error',
  392. message: '结账日只能为数字'
  393. })
  394. return
  395. }
  396. else if (this.chooseItem.accountDay > 31) {
  397. this.$message({
  398. type: 'error',
  399. message: '结账日不能大于31'
  400. })
  401. return
  402. }
  403. else if (!this.chooseItem.payDay) {
  404. // 这里要做 数字正则
  405. this.$message({
  406. type: 'error',
  407. message: '付款日输入有误'
  408. })
  409. return;
  410. }
  411. else if (!/^[0-9]+$/.test(this.chooseItem.payDay)) {
  412. this.$message({
  413. type: 'error',
  414. message: '付款日只能为数字'
  415. })
  416. return
  417. }
  418. else if (this.chooseItem.payDay > 31) {
  419. this.$message({
  420. type: 'error',
  421. message: '付款日不能大于31'
  422. })
  423. return
  424. }
  425. else if (!this.chooseItem.creditDay) {
  426. // 这里要做 数字正则
  427. this.$message({
  428. type: 'error',
  429. message: '信用天数输入有误'
  430. })
  431. return;
  432. }
  433. else if (!/^[0-9]+$/.test(this.chooseItem.creditDay)) {
  434. this.$message({
  435. type: 'error',
  436. message: '信用天数只能为数字'
  437. })
  438. return
  439. }
  440. else if (this.chooseItem.creditDay > 60) {
  441. this.$message({
  442. type: 'error',
  443. message: '信用天数不能大于60'
  444. })
  445. return
  446. }
  447. else if (!this.chooseItem.fixedDay) {
  448. // 这里要做 数字正则
  449. this.$message({
  450. type: 'error',
  451. message: '固定日输入有误'
  452. })
  453. return;
  454. }
  455. else if (!/^[0-9]+$/.test(this.chooseItem.fixedDay)) {
  456. this.$message({
  457. type: 'error',
  458. message: '固定日只能为数字'
  459. })
  460. return
  461. }
  462. else if (this.chooseItem.fixedDay > 31) {
  463. this.$message({
  464. type: 'error',
  465. message: '固定日不能大于31'
  466. })
  467. return
  468. }
  469. let params = {
  470. customer: this.chooseItem
  471. }
  472. Vuehttp(params, '/customer/persist').then(res => {
  473. if (res.data.code !== 1) {
  474. this.$message.error(res.data.message)
  475. } else {
  476. this.chooseItem = res.data.content
  477. this.IslookOrUpdate = 'look'
  478. this.$message({
  479. type: 'success',
  480. message: '保存成功',
  481. })
  482. }
  483. })
  484. },
  485. }
  486. }
  487. </script>
  488. <style scoped lang="scss">
  489. .infoView {
  490. margin: 0 10px;
  491. ul {
  492. border-bottom: 1px solid #6093f6;
  493. padding-bottom: 20px;
  494. margin-bottom: 40px;
  495. li {
  496. margin-bottom: 20px;
  497. }
  498. .name {
  499. font-size: 14px;
  500. color: #333;
  501. line-height: 40px;
  502. width: 120px;
  503. }
  504. .text {
  505. font-size: 14px;
  506. color: #333;
  507. line-height: 40px;
  508. }
  509. .w33 {
  510. width: 33.3%;
  511. word-wrap: break-word;
  512. }
  513. .w66 {
  514. width: 66.6%;
  515. word-wrap: break-word;
  516. }
  517. .w22 {
  518. width: 220px;
  519. word-wrap: break-word;
  520. }
  521. .w88 {
  522. width: 500px;
  523. word-wrap: break-word;
  524. }
  525. }
  526. .control-btn {
  527. text-align: center;
  528. padding-bottom: 80px;
  529. div {
  530. width: 70px;
  531. height: 34px;
  532. line-height: 34px;
  533. text-align: center;
  534. border-radius: 3px;
  535. cursor: pointer;
  536. display: inline-block;
  537. margin-right: 12px;
  538. margin-top: 12px;
  539. &:nth-last-of-type(1) {
  540. margin-right: 0px;
  541. }
  542. }
  543. .save {
  544. background: #f97f25;
  545. border: 1px solid #f97f25;
  546. color: #fff;
  547. &:hover {
  548. background: #fd964a;
  549. }
  550. }
  551. .cancel {
  552. background: #fff;
  553. color: #f97f25;
  554. border: 1px solid #f97f25;
  555. &:hover {
  556. background: #fd964a;
  557. color: #fff;
  558. }
  559. }
  560. }
  561. }
  562. </style>