OpInvitationOfficialActivities.vue 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126
  1. <template>
  2. <div class="car_add">
  3. <div class="haed-yqgw">
  4. <div class="communal-title">
  5. <div>{{ title }}</div>
  6. </div>
  7. <div style="display: flex;align-items: center;">
  8. <el-popover placement="right" trigger="hover">
  9. <el-table height="700" :data="budgeting" border>
  10. <el-table-column width="100" property="date" label="日期"></el-table-column>
  11. <el-table-column width="120" label="会务活动费">
  12. <template slot-scope="scope">
  13. <span>
  14. {{ townum(scope.row.officialActivitiesFee)+' '+ bizhong }}
  15. </span>
  16. </template>
  17. </el-table-column>
  18. <el-table-column width="120" label="公务翻译费">
  19. <template slot-scope="scope">
  20. <span>
  21. {{ townum(scope.row.officialTransFee)+' '+ bizhong }}
  22. </span>
  23. </template>
  24. </el-table-column>
  25. <el-table-column width="120" label="邀请函费用">
  26. <template slot-scope="scope">
  27. <span>
  28. {{ townum(scope.row.invitationFee) +' '+ bizhong }}
  29. </span>
  30. </template>
  31. </el-table-column>
  32. <el-table-column width="120" label="会务费">
  33. <template slot-scope="scope">
  34. <span>
  35. {{ townum(scope.row.activitiesFee)+' ' + bizhong }}
  36. </span>
  37. </template>
  38. </el-table-column>
  39. </el-table>
  40. <el-button type="primary" slot="reference">移上提示成本</el-button>
  41. </el-popover>
  42. <!-- 客户名单 -->
  43. <el-popover
  44. placement="bottom"
  45. width="662"
  46. trigger="hover">
  47. <el-table max-height="600" border :data="rollcallarr">
  48. <el-table-column width="100" property="date" label="姓名">
  49. <template slot-scope="scope">
  50. {{ scope.row.lastName}}{{scope.row.firstName}}
  51. </template>
  52. </el-table-column>
  53. <el-table-column width="200" property="lastName" label="拼音">
  54. <template slot-scope="scope">
  55. {{ pinyingxing(scope.row.lastName) }}/{{ pinyingxing(scope.row.firstName) }}
  56. </template>
  57. </el-table-column>
  58. <el-table-column width="50" property="sex" label="性别">
  59. <template slot-scope="scope">
  60. {{ scope.row.sex==0?'男':'女'}}
  61. </template>
  62. </el-table-column>
  63. <el-table-column width="110" property="birthDay" label="生日">
  64. <template slot-scope="scope">
  65. {{ fgarr(scope.row.birthDay) }}
  66. </template>
  67. </el-table-column>
  68. <el-table-column width="200" property="idCardNo" label="身份证号码">
  69. <template slot-scope="scope">
  70. {{ scope.row.idCardNo }}
  71. </template>
  72. </el-table-column>
  73. </el-table>
  74. <el-button style="margin-left: 10px;" slot="reference">移上查看客户名单</el-button>
  75. <!-- <span slot="reference" style="cursor: pointer;margin-left: 20px;">"移上查看客户名单"</span> -->
  76. </el-popover>
  77. </div>
  78. </div>
  79. <hr style='background-color:#5555; height:1px; border:none;margin: 10px 0;' />
  80. <div style="padding-top: 10px;">
  81. <el-form :model="delegationInfo" class="demo-ruleForm">
  82. <div style="display: flex;flex-wrap: wrap;">
  83. <div style="width: 385px;">
  84. <el-form-item label="团组名称:" label-width="160px">
  85. <el-select v-model="DiIdSelect" clearable filterable placeholder="团组选择"
  86. @change="DecreasePaymentsChange" :disabled="isShow" style="width: 100%;">
  87. <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
  88. :value="item.id">
  89. </el-option>
  90. </el-select>
  91. </el-form-item>
  92. </div>
  93. <div style="width: 385px;">
  94. <el-form-item label="团 号:" prop="tourCode" label-width="160px">
  95. <el-input placeholder="团号" v-model="delegationInfo.tourCode" :disabled="true">
  96. </el-input>
  97. </el-form-item>
  98. </div>
  99. <div style="width: 385px;">
  100. <el-form-item label="客户:" prop="clientName" label-width="160px">
  101. <el-input placeholder="客户" v-model="delegationInfo.clientName" :disabled="true">
  102. </el-input>
  103. </el-form-item>
  104. </div>
  105. <div style="width: 385px;">
  106. <el-form-item label="出访国家:" prop="visitCountry" label-width="160px">
  107. <el-input placeholder="出访国家" v-model="delegationInfo.visitCountry" :disabled="true">
  108. </el-input>
  109. </el-form-item>
  110. </div>
  111. </div>
  112. </el-form>
  113. <el-form :model="InvitationOfficialActivities" ref="InvitationOfficialActivities"
  114. :rules="InvitationOfficialActivitiesRules" label-width="160px" class="demo-ruleForm">
  115. <div style="display:flex ; flex-wrap: wrap;">
  116. <div style="width: 385px;">
  117. <el-form-item label="邀请方地区:" prop="inviterArea" label-width="160px">
  118. <el-input placeholder="邀请方地区" v-model="InvitationOfficialActivities.inviterArea">
  119. </el-input>
  120. </el-form-item>
  121. </div>
  122. <div style="width: 385px;">
  123. <el-form-item label="邀请方:" prop="inviter" label-width="160px">
  124. <el-input placeholder="邀请方" v-model="InvitationOfficialActivities.inviter">
  125. </el-input>
  126. </el-form-item>
  127. </div>
  128. <div style="width: 385px;">
  129. <el-form-item label="邀请时间:" prop="inviteTime" label-width="160px">
  130. <el-date-picker value-format="yyyy-MM-dd" v-model="InvitationOfficialActivities.inviteTime"
  131. type="date" placeholder="选择日期">
  132. </el-date-picker>
  133. </el-form-item>
  134. </div>
  135. <div style="width: 385px;">
  136. <el-form-item label="是否到场:" prop="isGoOfficaiaBussiness" label-width="160px">
  137. <el-radio-group v-model="InvitationOfficialActivities.isGoOfficaiaBussiness">
  138. <el-radio :label=1>是</el-radio>
  139. <el-radio :label=0>否</el-radio>
  140. </el-radio-group>
  141. </el-form-item>
  142. </div>
  143. </div>
  144. <div style="display:flex ; flex-wrap: wrap;">
  145. <div style="width: 385px;">
  146. <el-form-item label="联系人:" prop="contact" label-width="160px">
  147. <el-input placeholder="联系人" v-model="InvitationOfficialActivities.contact">
  148. </el-input>
  149. </el-form-item>
  150. </div>
  151. <div style="width: 385px;">
  152. <el-form-item label="联系电话:" prop="tel" label-width="160px">
  153. <el-input placeholder="联系电话" v-model="InvitationOfficialActivities.tel">
  154. </el-input>
  155. </el-form-item>
  156. </div>
  157. <div style="width: 385px;">
  158. <el-form-item label="电子邮箱:" prop="email" label-width="160px">
  159. <el-input placeholder="电子邮箱" v-model="InvitationOfficialActivities.email">
  160. </el-input>
  161. </el-form-item>
  162. </div>
  163. <div style="width: 385px;">
  164. <el-form-item label="传真号码:" prop="fax" label-width="160px">
  165. <el-input placeholder="传真号码" v-model="InvitationOfficialActivities.fax">
  166. </el-input>
  167. </el-form-item>
  168. </div>
  169. </div>
  170. <div style="display: flex; flex-wrap: wrap;">
  171. <div style="width: 775px;">
  172. <el-form-item label="邀请方地址:" prop="address" label-width="160px">
  173. <el-input type="textarea" :rows="5" placeholder="邀请方地址"
  174. v-model="InvitationOfficialActivities.address"></el-input>
  175. </el-form-item>
  176. </div>
  177. <div style="width: 775px;">
  178. <el-form-item label="其他信息:" prop="otherInformation" label-width="160px">
  179. <el-input type="textarea" :rows="5" placeholder="其他信息"
  180. v-model="InvitationOfficialActivities.otherInformation"></el-input>
  181. </el-form-item>
  182. </div>
  183. </div>
  184. <div style="display:flex ;flex-wrap: wrap;">
  185. <div style="width: 385px;">
  186. <div style="display: flex;">
  187. <div style="width: 72%;">
  188. <el-form-item label="公务活动费:" prop="eventsCost" label-width="160px">
  189. <el-input-number @change="computerenminbi" :precision="2" placeholder="公务活动费" v-model="InvitationOfficialActivities.eventsCost" :controls='false'>
  190. </el-input-number>
  191. </el-form-item>
  192. </div>
  193. <div style="width: 28%;">
  194. <el-form-item prop="eventsCurrency" label-width="5px">
  195. <el-select @change="computerenminbi(1)" v-model="InvitationOfficialActivities.eventsCurrency" placeholder="币种">
  196. <el-option v-for="item in rateList" :key="item.currencyId"
  197. :label="item.currencyCode" :value="item.currencyId"></el-option>
  198. </el-select>
  199. </el-form-item>
  200. </div>
  201. </div>
  202. </div>
  203. <div style="width: 385px;">
  204. <div style="display: flex;">
  205. <div style="width: 72%;">
  206. <el-form-item label="公务翻译费:" prop="translateCost" label-width="160px">
  207. <el-input-number @change="computerenminbi" :precision="2" placeholder="公务翻译费" v-model="InvitationOfficialActivities.translateCost" :controls='false'>
  208. </el-input-number>
  209. </el-form-item>
  210. </div>
  211. <div style="width: 28%;">
  212. <el-form-item prop="translateCurrency" label-width="5px">
  213. <el-select @change="computerenminbi" v-model="InvitationOfficialActivities.translateCurrency" placeholder="币种">
  214. <el-option v-for="item in rateList" :key="item.currencyId"
  215. :label="item.currencyCode" :value="item.currencyId"></el-option>
  216. </el-select>
  217. </el-form-item>
  218. </div>
  219. </div>
  220. </div>
  221. <div style="width: 385px;">
  222. <div style="display: flex;">
  223. <div style="width: 72%;">
  224. <el-form-item label="快递费:" prop="sendCost" label-width="160px">
  225. <el-input-number @change="computerenminbi" :precision="2" v-model="InvitationOfficialActivities.sendCost" :controls='false'
  226. ></el-input-number>
  227. </el-form-item>
  228. </div>
  229. <div style="width: 28%;">
  230. <el-form-item prop="sendCurrency" label-width="5px">
  231. <el-select @change="computerenminbi" v-model="InvitationOfficialActivities.sendCurrency" placeholder="币种">
  232. <el-option v-for="item in rateList" :key="item.currencyId"
  233. :label="item.currencyCode" :value="item.currencyId"></el-option>
  234. </el-select>
  235. </el-form-item>
  236. </div>
  237. </div>
  238. </div>
  239. <div style="width: 385px;">
  240. <div style="display: flex;">
  241. <div style="width: 72%;">
  242. <el-form-item label="邀请费用:" prop="inviteCost" label-width="160px">
  243. <el-input-number @change="computerenminbi" :precision="2" placeholder="邀请费用" v-model="InvitationOfficialActivities.inviteCost" :controls='false'>
  244. </el-input-number>
  245. </el-form-item>
  246. </div>
  247. <div style="width: 28%;">
  248. <el-form-item prop="inviteCurrency" label-width="5px">
  249. <el-select @change="computerenminbi" v-model="InvitationOfficialActivities.inviteCurrency" placeholder="币种">
  250. <el-option v-for="item in rateList" :key="item.currencyId"
  251. :label="item.currencyCode" :value="item.currencyId"></el-option>
  252. </el-select>
  253. </el-form-item>
  254. </div>
  255. </div>
  256. </div>
  257. <div style="width: 385px;">
  258. <div style="display: flex;">
  259. <div style="width: 72%;">
  260. <el-form-item label="支付总费用:" prop="payMoney" label-width="160px">
  261. <el-input-number :disabled="true" :precision="2" v-model="InvitationOfficialActivities.payMoney" :controls='false'
  262. ></el-input-number>
  263. </el-form-item>
  264. </div>
  265. <div style="width: 28%;">
  266. <el-form-item prop="paymentCurrency" label-width="5px">
  267. <el-select :disabled="true" v-model="InvitationOfficialActivities.paymentCurrency" placeholder="币种">
  268. <el-option v-for="item in rateList" :key="item.currencyId"
  269. :label="item.currencyCode" :value="item.currencyId"></el-option>
  270. </el-select>
  271. </el-form-item>
  272. </div>
  273. </div>
  274. </div>
  275. <div style="width: 385px;">
  276. <el-form-item label="收款方:" prop="payee" label-width="160px">
  277. <el-input placeholder="收款方" v-model="InvitationOfficialActivities.payee">
  278. </el-input>
  279. </el-form-item>
  280. </div>
  281. <div style="width: 385px;">
  282. <el-form-item label="费用标识:" prop="orbitalPrivateTransfer">
  283. <el-select v-model="InvitationOfficialActivities.orbitalPrivateTransfer" placeholder="费用标识"
  284. style="width: 100%;">
  285. <el-option v-for="item in costIdentificationData" :key="item.id" :label="item.name" :value="item.id">
  286. </el-option>
  287. </el-select>
  288. </el-form-item>
  289. </div>
  290. <div style="width: 385px;">
  291. <el-form-item label="消费日期:" prop="consumptionDate">
  292. <el-date-picker value-format="yyyy-MM-dd" v-model="InvitationOfficialActivities.consumptionDate"
  293. type="date" placeholder="选择日期">
  294. </el-date-picker>
  295. </el-form-item>
  296. </div>
  297. <div style="width: 385px;">
  298. <el-form-item label="消费方式:" prop="consumptionPatterns">
  299. <el-input placeholder="消费方式" v-model="InvitationOfficialActivities.consumptionPatterns">
  300. </el-input>
  301. </el-form-item>
  302. </div>
  303. <div style="width: 385px;">
  304. <el-form-item label="支付方式:" prop="payDId">
  305. <el-select v-model="InvitationOfficialActivities.payDId" placeholder="支付方式">
  306. <el-option v-for="item in payment" :key="item.id" :label="item.name" :value="item.id">
  307. </el-option>
  308. </el-select>
  309. </el-form-item>
  310. </div>
  311. <div v-if="InvitationOfficialActivities.payDId==72" style="width: 385px;">
  312. <el-form-item label="卡类型:" prop="ctdId">
  313. <el-select @change="cardhandoff" v-model="InvitationOfficialActivities.ctdId" placeholder="卡类型">
  314. <el-option v-for="item in cardTypeData" :key="item.id" :label="item.name" :value="item.id">
  315. </el-option>
  316. </el-select>
  317. </el-form-item>
  318. </div>
  319. <div v-if="InvitationOfficialActivities.payDId==72" style="width: 385px;">
  320. <el-form-item label="银行卡号:" prop="bankNo">
  321. <el-input :disabled="true" placeholder="银行卡号" v-model="InvitationOfficialActivities.bankNo">
  322. </el-input>
  323. </el-form-item>
  324. </div>
  325. <div v-if="InvitationOfficialActivities.payDId==72" style="width: 385px;">
  326. <el-form-item label="持卡人姓名:" prop="cardholderName">
  327. <el-input :disabled="true" placeholder="持卡人姓名" v-model="InvitationOfficialActivities.cardholderName">
  328. </el-input>
  329. </el-form-item>
  330. </div>
  331. <div v-if="InvitationOfficialActivities.payDId==73||InvitationOfficialActivities.payDId==83" style="width: 385px;">
  332. <el-form-item label="公司银行卡号:" prop="companyBankNo">
  333. <el-input placeholder="公司银行卡号" v-model="InvitationOfficialActivities.companyBankNo">
  334. </el-input>
  335. </el-form-item>
  336. </div>
  337. <div v-if="InvitationOfficialActivities.payDId==73||InvitationOfficialActivities.payDId==83" style="width: 385px;">
  338. <el-form-item label="对方开户行:" prop="otherBankName">
  339. <el-input placeholder="对方开户行" v-model="InvitationOfficialActivities.otherBankName">
  340. </el-input>
  341. </el-form-item>
  342. </div>
  343. <div v-if="InvitationOfficialActivities.payDId==73||InvitationOfficialActivities.payDId==83" style="width: 385px;">
  344. <el-form-item label="对方银行账号:" prop="otherSideNo">
  345. <el-input placeholder="对方银行账号" v-model="InvitationOfficialActivities.otherSideNo">
  346. </el-input>
  347. </el-form-item>
  348. </div>
  349. <div v-if="InvitationOfficialActivities.payDId==73||InvitationOfficialActivities.payDId==83" style="width: 385px;">
  350. <el-form-item label="对方姓名:" prop="otherSideName">
  351. <el-input placeholder="对方姓名" v-model="InvitationOfficialActivities.otherSideName">
  352. </el-input>
  353. </el-form-item>
  354. </div>
  355. <div style="width: 385px;">
  356. <el-form-item label="附件:" prop="fileUrl" label-width="160px">
  357. <el-upload :file-list="uploadFiles" ref="upload" :on-success="upLoadSuccess"
  358. :on-error="upLoadError" :before-remove="beforeRemove" :on-change="onChange" :limit="1"
  359. :on-exceed="exceed" :action="uploadURL" :headers="headers" :auto-upload="false">
  360. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  361. <!-- <el-button style="margin-left: 10px;" size="small" type="success"
  362. @click="submitUpload">上传到服务器</el-button> -->
  363. </el-upload>
  364. </el-form-item>
  365. </div>
  366. </div>
  367. <div style="display: flex;">
  368. <div style="width: 100%;">
  369. <el-form-item label="备 注:" prop="remark" label-width="160px">
  370. <el-input type="textarea" :rows="5" placeholder="备注"
  371. v-model="InvitationOfficialActivities.remark"></el-input>
  372. </el-form-item>
  373. </div>
  374. </div>
  375. <el-form-item>
  376. <div style="text-align: right;">
  377. <el-button type="primary" @click="addBtn">保存</el-button>
  378. <el-button @click="cancelbtn">取消</el-button>
  379. </div>
  380. </el-form-item>
  381. </el-form>
  382. </div>
  383. </div>
  384. </template>
  385. <script>
  386. import { pinyin } from 'pinyin-pro';
  387. export default {
  388. data() {
  389. return {
  390. uploadURL: "http://132.232.92.186:8888/api/Groups/UploadProject",
  391. projectName: "",
  392. uploadFiles: [],//上传的文件列表
  393. DelfileName: "",
  394. title: "新增商邀费用",
  395. token: '',
  396. userId: 0,
  397. id: '',
  398. DiId: '',
  399. isShow: false,
  400. DiIdSelect: '',
  401. delegationInfo: {},
  402. IsAuditGM: 0,
  403. delegationInfoList: [],//团组下拉框
  404. payment: [],//支付方式下拉框
  405. cardTypeData:[],//卡类型下拉框
  406. costIdentificationData:[],//费用标识下拉框
  407. InvitationOfficialActivities: {
  408. status: 0,
  409. payDId: 0,
  410. orbitalPrivateTransfer: 0,
  411. payee: '',
  412. id: 0,
  413. diId: '',
  414. inviterArea: '',
  415. inviter: '',
  416. inviteTime: this.transformDateFormat(new Date()),
  417. attachment: '',
  418. payMoney:0,
  419. paymentCurrency:'',
  420. eventsCost:0,
  421. eventsCurrency:'',
  422. inviteCost: 0,
  423. inviteCurrency: '',
  424. translateCost:0,
  425. translateCurrency: '',
  426. sendCost: 0,
  427. sendCurrency:'',
  428. isGoOfficaiaBussiness: 0,
  429. createUserId: 0,
  430. remark: '',
  431. address: '',
  432. contact: '',
  433. job: '',
  434. tel: '',
  435. email: '',
  436. fax: '',
  437. otherInformation: '',
  438. consumptionDate: '',//消费日期
  439. consumptionPatterns: '',//消费方式
  440. ctdId: '',//卡类型
  441. bankNo: '',//银行卡号
  442. cardholderName: '',//持卡人姓名
  443. companyBankNo: '',//公司银行卡号
  444. otherBankName: '',//对方开户行
  445. otherSideNo: '',//对方银行账号
  446. otherSideName: '',//对方姓名
  447. },
  448. headers: {
  449. Authorization: JSON.parse(localStorage.getItem('userinif')).token,
  450. TypeName: "B"
  451. },
  452. InvitationOfficialActivitiesRules: {
  453. inviteCost: [
  454. { required: true, message: '请输入费用金额', trigger: 'blur' },
  455. ],
  456. eventsCost: [
  457. { required: true, message: '请输入费用金额', trigger: 'blur' },
  458. ],
  459. translateCost: [
  460. { required: true, message: '请输入费用金额', trigger: 'blur' },
  461. ],
  462. sendCost: [
  463. { required: true, message: '请输入费用金额', trigger: 'blur' },
  464. ],
  465. payMoney: [
  466. { required: true, message: '请输入费用金额', trigger: 'blur' },
  467. ],
  468. companyBankNo: [
  469. { required: true, message: '请输入', trigger: 'blur' },
  470. ],
  471. otherBankName: [
  472. { required: true, message: '请输入', trigger: 'blur' },
  473. ],
  474. otherSideNo: [
  475. { required: true, message: '请输入', trigger: 'blur' },
  476. ],
  477. otherSideName: [
  478. { required: true, message: '请输入', trigger: 'blur' },
  479. ],
  480. inviterArea: [
  481. { required: true, message: '请输入邀请方地区', trigger: 'change' },
  482. { required: true, message: '请输入邀请方地区', trigger: 'blur' },
  483. ],
  484. inviter: [
  485. { required: true, message: '请输入邀请方', trigger: 'change' },
  486. { required: true, message: '请输入邀请方', trigger: 'blur' },
  487. ],
  488. inviteTime: [
  489. { required: true, message: '请选择邀请时间', trigger: 'change' },
  490. { required: true, message: '请选择邀请时间', trigger: 'blur' },
  491. ],
  492. consumptionDate: [
  493. { required: true, message: '请选择邀请时间', trigger: 'change' },
  494. { required: true, message: '请选择邀请时间', trigger: 'blur' },
  495. ],
  496. consumptionPatterns: [
  497. { required: true, message: '请选择邀请时间', trigger: 'change' },
  498. { required: true, message: '请选择邀请时间', trigger: 'blur' },
  499. ],
  500. contact: [
  501. { required: true, message: '请输入联系人', trigger: 'change' },
  502. { required: true, message: '请输入联系人', trigger: 'blur' },
  503. ],
  504. tel: [
  505. { required: true, message: '请输入联系方式', trigger: 'change' },
  506. { required: true, message: '请输入联系方式', trigger: 'blur' },
  507. ],
  508. address: [
  509. { required: true, message: '请输入邀请方地址', trigger: 'change' },
  510. { required: true, message: '请输入邀请方地址', trigger: 'blur' },
  511. ],
  512. payee: [
  513. { required: true, message: '请输入收款方', trigger: 'change' },
  514. { required: true, message: '请输入收款方', trigger: 'blur' },
  515. ],
  516. inviteCurrency: [
  517. { required: true, message: '请选择币种', trigger: 'change' },
  518. { required: true, message: '请选择币种', trigger: 'blur' },
  519. ],
  520. eventsCurrency: [
  521. { required: true, message: '请选择币种', trigger: 'change' },
  522. { required: true, message: '请选择币种', trigger: 'blur' },
  523. ],
  524. translateCurrency: [
  525. { required: true, message: '请选择币种', trigger: 'change' },
  526. { required: true, message: '请选择币种', trigger: 'blur' },
  527. ],
  528. sendCurrency: [
  529. { required: true, message: '请选择币种', trigger: 'change' },
  530. { required: true, message: '请选择币种', trigger: 'blur' },
  531. ],
  532. paymentCurrency: [
  533. { required: true, message: '请选择币种', trigger: 'change' },
  534. { required: true, message: '请选择币种', trigger: 'blur' },
  535. ],
  536. },
  537. rateList: [],
  538. budgeting:[],
  539. bizhong:'',
  540. rollcallarr:[],
  541. }
  542. },
  543. methods: {
  544. //拼音
  545. pinyingxing(val){
  546. return pinyin(val, { toneType: 'none' }).toUpperCase();
  547. },
  548. //fenge
  549. fgarr(val){
  550. val=val+""
  551. return val.split(' ')[0]
  552. },
  553. //保留两位小数
  554. townum(val) {
  555. if (val == 0.00) {
  556. return '--'
  557. } else {
  558. return val.toFixed(2)
  559. }
  560. },
  561. //卡类型切换
  562. cardhandoff(val){
  563. console.log(val)
  564. for(var i=0;i<this.cardTypeData.length;i++){
  565. if(val==this.cardTypeData[i].id){
  566. this.InvitationOfficialActivities.bankNo=this.cardTypeData[i].remark;
  567. this.InvitationOfficialActivities.cardholderName=this.cardTypeData[i].cardholder;
  568. }
  569. }
  570. },
  571. //获取基础数据
  572. InvitationOfficialActivityInitBasicData() {
  573. var url = "/api/Groups/InvitationOfficialActivityInitBasicData"
  574. var that = this
  575. this.$axios({
  576. method: 'post',
  577. url: url,
  578. headers: {
  579. Authorization: 'Bearer ' + this.token
  580. }
  581. }).then(function (res) {
  582. if (res.data.code == 200) {
  583. console.log(res)
  584. that.payment = res.data.data.payTypeData;
  585. that.cardTypeData = res.data.data.cardTypeData;
  586. that.costIdentificationData = res.data.data.costIdentificationData;
  587. //下拉框初始值
  588. that.InvitationOfficialActivities.orbitalPrivateTransfer=that.costIdentificationData[0].id;
  589. that.InvitationOfficialActivities.payDId=that.payment[0].id;
  590. that.InvitationOfficialActivities.ctdId=that.cardTypeData[0].id;
  591. that.InvitationOfficialActivities.bankNo=that.cardTypeData[0].remark;
  592. that.InvitationOfficialActivities.cardholderName=that.cardTypeData[0].cardholder;
  593. if (that.id != null && that.id != undefined && that.id != 0) {
  594. that.InvitationOfficialActivitiesById();
  595. that.title = "修改商邀费用";
  596. that.InvitationOfficialActivities.status = 2
  597. that.isShow = true
  598. } else {
  599. that.InvitationOfficialActivities.status = 1
  600. that.title = "新增商邀费用"
  601. that.isShow = false
  602. }
  603. }else{
  604. that.$message.error(res.data.msg);
  605. }
  606. })
  607. },
  608. //获取客户名单info
  609. PostTourClientListByDiId(val) {
  610. this.rollcallarr=[];
  611. var that = this
  612. var url = "/api/Groups/PostTourClientListByDiId"
  613. this.$axios({
  614. method: 'post',
  615. url: url,
  616. headers: {
  617. Authorization: 'Bearer ' + that.token
  618. },
  619. data: {
  620. portType:1,
  621. diid: val?val:that.DiIdSelect,
  622. pageId:104,
  623. userId:233
  624. }
  625. }).then(function (res) {
  626. if (res.data.code == 200) {
  627. that.rollcallarr=res.data.data;
  628. } else {
  629. that.$message.error(res.data.msg);
  630. }
  631. })
  632. },
  633. //获取成本提示
  634. getcostbudgeting() {
  635. this.budgeting = [];
  636. this.bizhong = '';
  637. var url = "/api/Groups/PostGroupCostModulePrompt"
  638. var that = this
  639. this.$axios({
  640. method: 'post',
  641. url: url,
  642. headers: {
  643. Authorization: 'Bearer ' + this.token
  644. },
  645. data: {
  646. userId: that.userId,
  647. diId: that.DiIdSelect ? that.DiIdSelect : that.DiId,
  648. cTable: 79,
  649. }
  650. }).then(function (res) {
  651. if (res.data.code == 200) {
  652. that.budgeting = res.data.data.modulePromptInfos[0].data;
  653. that.bizhong = res.data.data.modulePromptInfos[0].currencyCode;
  654. } else {
  655. that.$message.error(res.data.msg);
  656. }
  657. })
  658. },
  659. //团组下拉框
  660. AirTicketResSelect() {
  661. var url = "/api/Groups/DecreasePaymentsSelect"
  662. var that = this
  663. this.$axios({
  664. method: 'post',
  665. url: url,
  666. headers: {
  667. Authorization: 'Bearer ' + this.token
  668. },
  669. data: {
  670. userId: that.userId,
  671. ctId: 81
  672. }
  673. }).then(function (res) {
  674. if (res.data.code == 200) {
  675. console.log(res)
  676. that.delegationInfoList = res.data.data.groupName;
  677. that.DiIdSelect = parseInt(that.DiId)
  678. for (let index = 0; index < that.delegationInfoList.length; index++) {
  679. if (that.delegationInfoList[index].id == that.DiIdSelect) {
  680. that.delegationInfo = that.delegationInfoList[index];
  681. break;
  682. }
  683. }
  684. // that.PostTourClientListByDiId();
  685. // that.payment = res.data.data.payment
  686. }
  687. })
  688. },
  689. InvitationOfficialActivitiesById() {
  690. var url = "/api/Groups/InvitationOfficialActivitiesById"
  691. var that = this
  692. this.$axios({
  693. method: 'post',
  694. url: url,
  695. headers: {
  696. Authorization: 'Bearer ' + this.token
  697. },
  698. data: {
  699. Id: that.id,
  700. portType: 1
  701. }
  702. }).then(function (res) {
  703. if (res.data.code == 200) {
  704. console.log(res.data.data)
  705. that.InvitationOfficialActivities.payDId = res.data.data._CreditCard.payDId;
  706. that.InvitationOfficialActivities.orbitalPrivateTransfer = res.data.data._CreditCard.orbitalPrivateTransfer;
  707. that.InvitationOfficialActivities.payee = res.data.data._CreditCard.payee;
  708. that.InvitationOfficialActivities.id = res.data.data._Invitation.id;
  709. that.InvitationOfficialActivities.diId = res.data.data._Invitation.diId;
  710. that.InvitationOfficialActivities.inviterArea = res.data.data._Invitation.inviterArea;
  711. that.InvitationOfficialActivities.inviter = res.data.data._Invitation.inviter;
  712. that.InvitationOfficialActivities.inviteTime = res.data.data._Invitation.inviteTime;
  713. that.InvitationOfficialActivities.attachment = res.data.data._Invitation.attachment;
  714. that.projectName = res.data.data._Invitation.attachment;
  715. that.InvitationOfficialActivities.inviteCost = res.data.data._Invitation.inviteCost;
  716. that.InvitationOfficialActivities.inviteCurrency = res.data.data._Invitation.inviteCurrency;
  717. that.InvitationOfficialActivities.sendCost = res.data.data._Invitation.sendCost;
  718. that.InvitationOfficialActivities.sendCurrency = res.data.data._Invitation.sendCurrency;
  719. that.InvitationOfficialActivities.eventsCost = res.data.data._Invitation.eventsCost;
  720. that.InvitationOfficialActivities.eventsCurrency = res.data.data._Invitation.eventsCurrency;
  721. that.InvitationOfficialActivities.translateCost = res.data.data._Invitation.translateCost;
  722. that.InvitationOfficialActivities.translateCurrency = res.data.data._Invitation.translateCurrency;
  723. that.InvitationOfficialActivities.isGoOfficaiaBussiness = res.data.data._Invitation.isGoOfficaiaBussiness;
  724. that.InvitationOfficialActivities.remark = res.data.data._Invitation.remark;
  725. that.InvitationOfficialActivities.address = res.data.data._InvitationData.address;
  726. that.InvitationOfficialActivities.contact = res.data.data._InvitationData.contact;
  727. that.InvitationOfficialActivities.job = res.data.data._InvitationData.job;
  728. that.InvitationOfficialActivities.tel = res.data.data._InvitationData.tel;
  729. that.IsAuditGM = res.data.data._CreditCard.isAuditGM;
  730. //
  731. that.InvitationOfficialActivities.consumptionDate = res.data.data._CreditCard.consumptionDate;
  732. that.InvitationOfficialActivities.consumptionPatterns = res.data.data._CreditCard.consumptionPatterns;
  733. that.InvitationOfficialActivities.ctdId = res.data.data._CreditCard.ctdId;
  734. that.InvitationOfficialActivities.bankNo = res.data.data._CreditCard.bankNo;
  735. that.InvitationOfficialActivities.cardholderName = res.data.data._CreditCard.cardholderName;
  736. that.InvitationOfficialActivities.companyBankNo = res.data.data._CreditCard.companyBankNo;
  737. that.InvitationOfficialActivities.otherBankName = res.data.data._CreditCard.otherBankName;
  738. that.InvitationOfficialActivities.otherSideNo = res.data.data._CreditCard.otherSideNo;
  739. that.InvitationOfficialActivities.otherSideName = res.data.data._CreditCard.otherSideName;
  740. //
  741. that.InvitationOfficialActivities.payMoney=res.data.data._CreditCard.payMoney;
  742. that.InvitationOfficialActivities.paymentCurrency=res.data.data._CreditCard.paymentCurrency;
  743. that.InvitationOfficialActivities.email = res.data.data._InvitationData.email;
  744. that.InvitationOfficialActivities.fax = res.data.data._InvitationData.fax;
  745. that.InvitationOfficialActivities.otherInformation = res.data.data._InvitationData.remark;
  746. if (that.InvitationOfficialActivities.attachment != null && that.InvitationOfficialActivities.attachment != undefined && that.InvitationOfficialActivities.attachment != "") {
  747. that.uploadFiles.push({
  748. name: that.InvitationOfficialActivities.attachment,
  749. url: 'http://132.232.92.186:24/Office/GrpFile/商邀相关文件/',
  750. })
  751. }
  752. }
  753. })
  754. },
  755. //币种不同计算为人民币
  756. computerenminbi(val){
  757. if(val==1){
  758. if(this.InvitationOfficialActivities.inviteCurrency==''||this.InvitationOfficialActivities.translateCurrency==''||this.InvitationOfficialActivities.sendCurrency==''){
  759. this.InvitationOfficialActivities.inviteCurrency=this.InvitationOfficialActivities.eventsCurrency;
  760. this.InvitationOfficialActivities.translateCurrency=this.InvitationOfficialActivities.eventsCurrency;
  761. this.InvitationOfficialActivities.sendCurrency=this.InvitationOfficialActivities.eventsCurrency;
  762. }
  763. }
  764. var eventsRate=0;
  765. var inviteRate=0;
  766. var translateRate=0;
  767. var sendRate=0;
  768. for (let h = 0; h < this.rateList.length; h++) {
  769. if(this.InvitationOfficialActivities.eventsCurrency==this.rateList[h].currencyId){
  770. eventsRate=this.rateList[h].rate;
  771. }
  772. if(this.InvitationOfficialActivities.inviteCurrency==this.rateList[h].currencyId){
  773. inviteRate=this.rateList[h].rate;
  774. }
  775. if(this.InvitationOfficialActivities.translateCurrency==this.rateList[h].currencyId){
  776. translateRate=this.rateList[h].rate;
  777. }
  778. if(this.InvitationOfficialActivities.sendCurrency==this.rateList[h].currencyId){
  779. sendRate=this.rateList[h].rate;
  780. }
  781. }
  782. if(
  783. this.InvitationOfficialActivities.eventsCurrency!=this.InvitationOfficialActivities.inviteCurrency
  784. ||this.InvitationOfficialActivities.inviteCurrency!=this.InvitationOfficialActivities.translateCurrency
  785. ||this.InvitationOfficialActivities.translateCurrency!=this.InvitationOfficialActivities.sendCurrency
  786. ||this.InvitationOfficialActivities.sendCurrency!=this.InvitationOfficialActivities.eventsCurrency
  787. ){
  788. this.InvitationOfficialActivities.paymentCurrency=836
  789. this.InvitationOfficialActivities.payMoney=(
  790. this.InvitationOfficialActivities.eventsCost*eventsRate+
  791. this.InvitationOfficialActivities.inviteCost*inviteRate+
  792. this.InvitationOfficialActivities.translateCost*translateRate+
  793. this.InvitationOfficialActivities.sendCost*sendRate
  794. );
  795. }else{
  796. this.InvitationOfficialActivities.paymentCurrency=this.InvitationOfficialActivities.eventsCurrency
  797. this.InvitationOfficialActivities.payMoney=(
  798. this.InvitationOfficialActivities.eventsCost+
  799. this.InvitationOfficialActivities.inviteCost+
  800. this.InvitationOfficialActivities.translateCost+
  801. this.InvitationOfficialActivities.sendCost
  802. );
  803. }
  804. },
  805. cancelbtn(){
  806. this.$router.push({
  807. path: "/home/InvitationOfficialActivities",
  808. query: {
  809. DiId: this.DiId,
  810. }
  811. })
  812. },
  813. //点击保存事件
  814. addBtn() {
  815. if(this.InvitationOfficialActivities.payDId!=72){
  816. this.InvitationOfficialActivities.ctdId=0;
  817. this.InvitationOfficialActivities.bankNo="";
  818. this.InvitationOfficialActivities.cardholderName="";
  819. }
  820. if (this.IsAuditGM == 1) {
  821. this.$message.error('已通过审核,不可修改!');
  822. } else {
  823. if (this.DiId == null && this.DiId == undefined && this.DiId == "") {
  824. this.$message.error("请选择团组名称");
  825. return;
  826. }
  827. const that = this;
  828. that.$refs.InvitationOfficialActivities.validate((valid) => {
  829. if (valid) {
  830. if (that.InvitationOfficialActivities.attachment == that.projectName) {
  831. if (that.DelfileName != null && that.DelfileName != "" && that.DelfileName != undefined) {
  832. that.$axios({
  833. method: 'post',
  834. url: "/api/Groups/DelFile",
  835. headers: {
  836. Authorization: 'Bearer ' + that.token
  837. },
  838. data: {
  839. fileName: that.DelfileName,
  840. id: that.id
  841. }
  842. }).then(function (res) {
  843. if (res.data.code == 200) {
  844. }
  845. })
  846. }
  847. that.InvitationOfficialActivities.attachment = that.projectName
  848. that.InvitationOfficialActivities.diId = that.DiIdSelect;
  849. that.InvitationOfficialActivities.createUserId = that.userId;
  850. var url = "/api/Groups/OpInvitationOfficialActivities"
  851. that.$axios({
  852. method: 'post',
  853. url: url,
  854. headers: {
  855. Authorization: 'Bearer ' + that.token
  856. },
  857. data: that.InvitationOfficialActivities
  858. }).then(function (res) {
  859. if (res.data.code == 200) {
  860. that.$message({
  861. message: res.data.msg,
  862. type: 'success'
  863. });
  864. setTimeout(() => {
  865. that.cancelbtn()
  866. }, 500);
  867. } else {
  868. that.$message.error(res.data.msg);
  869. }
  870. })
  871. } else {
  872. if (that.DelfileName != null && that.DelfileName != "" && that.DelfileName != undefined) {
  873. that.$axios({
  874. method: 'post',
  875. url: "/api/Groups/DelFile",
  876. headers: {
  877. Authorization: 'Bearer ' + that.token
  878. },
  879. data: {
  880. fileName: that.DelfileName,
  881. id: that.id
  882. }
  883. }).then(function (res) {
  884. if (res.data.code == 200) {
  885. }
  886. })
  887. }
  888. if (that.projectName != "" && that.projectName != null && that.projectName != undefined) {
  889. that.$refs.upload.submit();//上传文件到服务器
  890. } else {
  891. that.InvitationOfficialActivities.attachment = that.projectName
  892. that.InvitationOfficialActivities.diId = that.DiIdSelect;
  893. that.InvitationOfficialActivities.createUserId = that.userId;
  894. var url = "/api/Groups/OpInvitationOfficialActivities"
  895. that.$axios({
  896. method: 'post',
  897. url: url,
  898. headers: {
  899. Authorization: 'Bearer ' + that.token
  900. },
  901. data: that.InvitationOfficialActivities
  902. }).then(function (res) {
  903. if (res.data.code == 200) {
  904. that.$message({
  905. message: res.data.msg,
  906. type: 'success'
  907. });
  908. setTimeout(() => {
  909. that.cancelbtn();
  910. }, 500);
  911. } else {
  912. that.$message.error(res.data.msg);
  913. }
  914. })
  915. }
  916. }
  917. } else {
  918. this.$message.error('请完善信息在保存!');
  919. return false;
  920. }
  921. })
  922. }
  923. // 此时必填完成,做保存后的业务操作
  924. },
  925. DecreasePaymentsChange(val) {
  926. for (let index = 0; index < this.delegationInfoList.length; index++) {
  927. if (this.delegationInfoList[index].id == parseInt(this.DiIdSelect)) {
  928. this.delegationInfo = this.delegationInfoList[index];
  929. break;
  930. }
  931. }
  932. this.QueryRate();
  933. // this.PostTourClientListByDiId(val);
  934. // setTimeout(function(){
  935. // },200)
  936. },
  937. //上传
  938. // 文件超出限制
  939. exceed(files, fileList) {
  940. this.$message.warning(
  941. `当前限制选择 1个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
  942. } 个文件,请取消要替换的文件`
  943. );
  944. },
  945. //文件上传成功时的钩子
  946. upLoadSuccess(response, file, fileList) {
  947. if (response.code == 200) {
  948. var that = this;
  949. that.$axios({
  950. method: 'post',
  951. url: "/api/Groups/DelFile",
  952. headers: {
  953. Authorization: 'Bearer ' + that.token
  954. },
  955. data: {
  956. fileName: that.DelfileName,
  957. id: that.id
  958. }
  959. }).then(function (res) {
  960. if (res.data.code == 200) {
  961. }
  962. })
  963. that.InvitationOfficialActivities.attachment = response.data
  964. that.InvitationOfficialActivities.diId = that.DiIdSelect;
  965. that.InvitationOfficialActivities.createUserId = that.userId;
  966. var url = "/api/Groups/OpInvitationOfficialActivities"
  967. that.$axios({
  968. method: 'post',
  969. url: url,
  970. headers: {
  971. Authorization: 'Bearer ' + that.token
  972. },
  973. data: that.InvitationOfficialActivities
  974. }).then(function (res) {
  975. if (res.data.code == 200) {
  976. that.$message({
  977. message: res.data.msg,
  978. type: 'success'
  979. });
  980. that.loading = true;
  981. setTimeout(() => {
  982. that.$router.push('/home/InvitationOfficialActivities')
  983. }, 500);
  984. } else {
  985. that.$message.error(res.data.msg);
  986. }
  987. })
  988. console.log("上传成功");
  989. } else {
  990. console.log("保存失败");
  991. }
  992. },
  993. //文件上传失败时的钩子
  994. upLoadError(response, file, fileList) {
  995. console.log("项目添加失败");
  996. },
  997. beforeRemove(file, fileList) {
  998. console.log(file.name)
  999. let id1 = this.uploadFiles.findIndex(item => {
  1000. if (item.name == file.name) {
  1001. return true
  1002. }
  1003. })
  1004. this.uploadFiles.splice(id1, 1)
  1005. this.projectName = ""
  1006. this.DelfileName = file.name
  1007. },
  1008. onChange(file, fileList) {
  1009. this.projectName = file.name
  1010. },
  1011. QueryRate() {
  1012. var url = "/api/Business/PostGroupTeamRateByDiIdAndCTableId"
  1013. var that = this
  1014. this.$axios({
  1015. method: 'post',
  1016. url: url,
  1017. headers: {
  1018. Authorization: 'Bearer ' + that.token
  1019. },
  1020. data: {
  1021. "portType": 1,
  1022. "diId": that.DiIdSelect ? that.DiIdSelect : that.DiId,
  1023. "cTable": 81 //商邀
  1024. }
  1025. }).then(function (res) {
  1026. if (res.data.code == 200) {
  1027. that.rateList = res.data.data.teamRates;
  1028. that.getcostbudgeting()
  1029. }
  1030. })
  1031. },
  1032. back() {
  1033. this.$router.push({
  1034. path: "/home/InvitationOfficialActivities",
  1035. query: {
  1036. DiId: this.DiIdSelect ? this.DiIdSelect : this.DiId,
  1037. }
  1038. })
  1039. },
  1040. },
  1041. mounted() {
  1042. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  1043. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
  1044. this.InvitationOfficialActivityInitBasicData();
  1045. this.AirTicketResSelect();
  1046. this.id = this.$route.query.id
  1047. this.DiId = this.$route.query.DiId
  1048. this.QueryRate();
  1049. }
  1050. }
  1051. </script>
  1052. <style>
  1053. .car_add .communal-title {
  1054. display: flex;
  1055. font-size: 17px;
  1056. font-weight: 600;
  1057. color: #555;
  1058. margin-bottom: 20px;
  1059. justify-content: space-between;
  1060. align-items: center;
  1061. }
  1062. .appraise-box {
  1063. display: flex;
  1064. flex-wrap: wrap;
  1065. justify-content: space-between;
  1066. margin: 50px 0;
  1067. }
  1068. .appraise-box>div {
  1069. width: 30%;
  1070. }
  1071. .communal-box {
  1072. display: flex;
  1073. }
  1074. .communal-box>button {
  1075. margin-left: 10px;
  1076. padding: 8px 20px;
  1077. }
  1078. .car_add {
  1079. background-color: #fff;
  1080. padding: 20px;
  1081. box-shadow: 0 0 5px #0005;
  1082. border-radius: 10px;
  1083. min-height: 810px;
  1084. }
  1085. .haed-yqgw{
  1086. display: flex;
  1087. justify-content: space-between;
  1088. }
  1089. .ExpressPirce .el-input input {
  1090. text-align: left;
  1091. }
  1092. .car_add .el-date-editor.el-input,.car_add .el-input-number,.car_add .el-select{
  1093. width: 100%;
  1094. }
  1095. @media screen and (max-width: 1700px) {
  1096. .appraise-box>div {
  1097. width: 48%;
  1098. }
  1099. .appraise-box>div el-form-item__content {
  1100. width: 260px !important;
  1101. }
  1102. }
  1103. </style>