visaform.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. <template>
  2. <div class="visa-box">
  3. <div class="search-ul">
  4. <div class="search-li">
  5. <el-select @change="changeOption()" v-model="gnamevalue" filterable placeholder="请输入团组名称">
  6. <el-option
  7. v-for="item in gnameoption"
  8. :key="item.id"
  9. :label="item.groupName"
  10. :value="item.id">
  11. </el-option>
  12. </el-select>
  13. </div>
  14. <div class="search-li">
  15. <div class="country-box">
  16. <label>签证表国别: </label>
  17. <el-select v-model="groupvalues" filterable placeholder="请选择">
  18. <el-option
  19. v-for="item in optionsgroup"
  20. :key="item.id"
  21. :label="item.name"
  22. :value="item.id">
  23. </el-option>
  24. </el-select>
  25. </div>
  26. <div class="interpret-box">
  27. <label>翻译语种: </label>
  28. <el-select v-model="value" filterable placeholder="请选择">
  29. <el-option
  30. v-for="item in options"
  31. :key="item.value"
  32. :label="item.label"
  33. :value="item.value">
  34. </el-option>
  35. </el-select>
  36. </div>
  37. <el-button type="primary">新增数据</el-button>
  38. <el-button type="primary">新增简单数据</el-button>
  39. </div>
  40. </div>
  41. <el-row>
  42. <el-button type="primary">一键导出签证</el-button>
  43. <el-button type="primary">一键导省外办</el-button>
  44. <el-button type="primary">一键导市外办</el-button>
  45. <el-button type="primary">签证事项表</el-button>
  46. <el-button type="primary">照 会</el-button>
  47. <el-button type="primary">印度名单表</el-button>
  48. <el-button type="primary">马来西亚名单表</el-button>
  49. </el-row>
  50. <div class="form-box">
  51. <template>
  52. <el-table
  53. :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
  54. border
  55. style="width: 100%">
  56. <el-table-column
  57. label="序 号"
  58. width="55">
  59. <template slot-scope="scope">
  60. {{(currentPage - 1) * pageSize + scope.$index + 1}}
  61. </template>
  62. </el-table-column>
  63. <el-table-column
  64. prop="clientName"
  65. width="200"
  66. label="姓 名">
  67. </el-table-column>
  68. <el-table-column
  69. prop="tel"
  70. label="手 机"
  71. width="220">
  72. </el-table-column>
  73. <el-table-column
  74. prop="cerdNo"
  75. label="身份证"
  76. width="200">
  77. </el-table-column>
  78. <el-table-column
  79. prop="ext"
  80. label="签证表"
  81. width="100">
  82. <el-link type="primary">导 出</el-link>
  83. </el-table-column>
  84. <el-table-column
  85. prop="phone"
  86. label="派遣函"
  87. width="200">
  88. <el-link type="primary">市外办</el-link>
  89. <el-link type="primary">省外办</el-link>
  90. </el-table-column>
  91. <el-table-column
  92. prop="urgentPhone"
  93. label="操 作">
  94. <el-link type="primary">检索资料</el-link>
  95. <el-link type="primary">美加表</el-link>
  96. <el-link type="primary">非美加表</el-link>
  97. <el-link type="danger">删除</el-link>
  98. </el-table-column>
  99. </el-table>
  100. </template>
  101. <div class="block">
  102. <el-pagination align='center'
  103. @size-change="handleSizeChange"
  104. @current-change="handleCurrentChange"
  105. :current-page="currentPage"
  106. :page-sizes="[5,10,15,20]"
  107. :page-size="pageSize"
  108. layout="total, sizes, prev, pager, next"
  109. :total="tableData.length">
  110. </el-pagination>
  111. </div>
  112. </div>
  113. <div class="form-box">
  114. <div class="visas-title">
  115. <div>历史用户信息处</div>
  116. <div class="visas-box">
  117. <el-input
  118. @input="clickUsers()"
  119. placeholder="请输入内容"
  120. v-model="input"
  121. clearable>
  122. </el-input>
  123. <el-button @click="Inquireclick()" type="primary">勾选项入团</el-button>
  124. </div>
  125. </div>
  126. <template>
  127. <el-table
  128. :data="externalDatas.slice((currentPageUser-1)*pageSizeUser,currentPageUser*pageSizeUser)"
  129. border
  130. tooltip-effect="dark"
  131. ref="multipleTable"
  132. :row-key="getRowKeys"
  133. @selection-change="handleSelectionChange"
  134. style="width: 100%">
  135. <el-table-column
  136. :reserve-selection="true"
  137. type="selection"
  138. width="55">
  139. </el-table-column>
  140. <el-table-column
  141. label="序 号"
  142. width="55">
  143. <template slot-scope="scope">
  144. {{(currentPage - 1) * pageSize + scope.$index + 1}}
  145. </template>
  146. </el-table-column>
  147. <el-table-column
  148. width="100"
  149. prop="clientName"
  150. label="姓 名">
  151. </el-table-column>
  152. <el-table-column
  153. prop="landlinePhone"
  154. label="手 机"
  155. width="180">
  156. </el-table-column>
  157. <!-- <el-table-column
  158. prop="companyName"
  159. label="地 址"
  160. width="180">
  161. </el-table-column> -->
  162. <el-table-column
  163. prop="idNo"
  164. label="身份证"
  165. width="250">
  166. </el-table-column>
  167. <el-table-column
  168. prop="urgentPhone"
  169. label="操 作">
  170. <el-link type="primary">增加入此团</el-link>
  171. <el-link type="danger">删除</el-link>
  172. </el-table-column>
  173. </el-table>
  174. </template>
  175. <div class="block">
  176. <el-pagination align='center'
  177. @size-change="handleSizeChanges"
  178. @current-change="handleCurrentChanges"
  179. :current-page="currentPageUser"
  180. :page-sizes="[5,10,15,20]"
  181. :page-size="pageSizeUser"
  182. layout="total, sizes, prev, pager, next"
  183. :total="externalDatas.length">
  184. </el-pagination>
  185. </div>
  186. </div>
  187. </div>
  188. </template>
  189. <script>
  190. export default {
  191. data() {
  192. return {
  193. input: '',
  194. gnameoption:[],
  195. gnamevalue:'',
  196. externalData:[],
  197. externalDatas:[],
  198. optionsgroup:[],
  199. options: [
  200. {
  201. value: '0',
  202. label: '中文'
  203. },
  204. {
  205. value: '1',
  206. label: '英语'
  207. }
  208. ],
  209. groupvalues:'',
  210. value: '0',
  211. tableData: [],
  212. currentPage: 1, // 当前页码
  213. pageSize: 5 ,// 每页的数据条数
  214. currentPageUser: 1, // 当前页码
  215. pageSizeUser: 5 ,// 每页的数据条数
  216. multipleTable:[],
  217. token:''
  218. }
  219. },
  220. methods:{
  221. //每页条数改变时触发 选择一页显示多少行
  222. handleSizeChange(val) {
  223. this.currentPage = 1;
  224. this.pageSize = val;
  225. },
  226. //当前页改变时触发 跳转其他页
  227. handleCurrentChange(val) {
  228. this.currentPage = val;
  229. },
  230. //每页条数改变时触发 选择一页显示多少行
  231. handleSizeChanges(val) {
  232. this.currentPageUser = 1;
  233. this.pageSizeUser = val;
  234. },
  235. //当前页改变时触发 跳转其他页
  236. handleCurrentChanges(val) {
  237. this.currentPageUser = val;
  238. },
  239. handleSelectionChange(val) {
  240. this.multipleSelection = val;
  241. console.log(this.multipleSelection)
  242. },
  243. getRowKeys(row) {
  244. return row.num
  245. },
  246. getgroupsname(){
  247. var url="/api/Groups/GetGroupNameAndVisaNationality"
  248. var that=this
  249. this.$axios({
  250. method: 'post',
  251. url:url,
  252. headers:{
  253. Authorization:'Bearer '+this.token
  254. },
  255. data:{
  256. portType: 1,
  257. }
  258. }).then(function(res){
  259. console.log(res)
  260. if(res.data.code==200){
  261. that.gnameoption=res.data.data.groupNameData;
  262. that.gnamevalue=that.gnameoption[0].id;
  263. that.optionsgroup=res.data.data.visaNationalityData;
  264. that.groupvalues=that.optionsgroup[0].id;
  265. }
  266. that.getCrm()
  267. })
  268. },
  269. getCrm(){
  270. this.tableData=[];
  271. var url="/api/Groups/GetCrmByGroupId"
  272. var that=this
  273. this.$axios({
  274. method: 'post',
  275. url:url,
  276. headers:{
  277. Authorization:'Bearer '+this.token
  278. },
  279. data:{
  280. portType: 1,
  281. groupId:that.gnamevalue
  282. }
  283. }).then(function(res){
  284. console.log(res)
  285. if(res.data.code==200){
  286. that.tableData=res.data.data;
  287. }
  288. })
  289. },
  290. changeOption(){
  291. console.log(this.gnamevalue)
  292. this.getCrm()
  293. },
  294. getExternalusers(){
  295. var url="/api/CRM/GetClientList"
  296. var that=this
  297. this.$axios({
  298. method: 'post',
  299. url:url,
  300. headers:{
  301. Authorization:'Bearer '+this.token
  302. },
  303. data:{
  304. portType: 1,
  305. }
  306. }).then(function(res){
  307. console.log(res)
  308. if(res.data.code==200){
  309. that.externalData=res.data.data;
  310. that.externalDatas = that.externalData;
  311. }
  312. })
  313. },
  314. clickUsers() {
  315. var newarr = [];
  316. if (this.input == "") {
  317. newarr = this.externalData;
  318. } else {
  319. for (var i = 0; i < this.externalData.length; i++) {
  320. if (this.externalData[i].clientName.indexOf(this.input) != -1) {
  321. newarr.push(this.externalData[i]);
  322. }
  323. else if (this.externalData[i].idNo.indexOf(this.input) != -1) {
  324. newarr.push(this.externalData[i]);
  325. }
  326. else if (this.externalData[i].landlinePhone.indexOf(this.input) != -1) {
  327. newarr.push(this.externalData[i]);
  328. }
  329. // else if (this.externalData[i].companyName.indexOf(this.input) != -1) {
  330. // newarr.push(this.externalData[i]);
  331. // }
  332. }
  333. }
  334. this.externalDatas = newarr;
  335. this.currentPageUser = 1;
  336. },
  337. },
  338. mounted(){
  339. this.token=JSON.parse(localStorage.getItem('userinif')).token;
  340. this.getgroupsname();
  341. this.getExternalusers();
  342. }
  343. }
  344. </script>
  345. <style>
  346. .visa-box{
  347. background-color: #fff;
  348. padding: 10px;
  349. box-shadow: 0 0 5px #0005;
  350. border-radius: 10px;
  351. }
  352. .search-li:nth-child(1){
  353. width: 20%;
  354. }
  355. .search-li:nth-child(1) .el-select{
  356. width: 100%;
  357. margin: 0;
  358. }
  359. .search-li:nth-child(2){
  360. width: 80%;
  361. justify-content: end;
  362. }
  363. .search-ul{
  364. display: flex;
  365. justify-content: space-between;
  366. margin-bottom: 10px;
  367. }
  368. .search-li label{
  369. color: #606266;
  370. }
  371. .search-li{
  372. display: flex;
  373. }
  374. .search-li>div{
  375. margin-right: 10px;
  376. }
  377. .form-box .el-table th.el-table__cell>.cell{
  378. text-align: center;
  379. }
  380. .form-box .el-table td.el-table__cell div{
  381. text-align: center;
  382. }
  383. .form-box .block{
  384. margin-top: 10px;
  385. }
  386. .visa-box .el-row{
  387. text-align: right;
  388. margin-bottom: 5px;
  389. }
  390. .visas-list{
  391. background-color: #fff;
  392. padding: 10px;
  393. box-shadow: 0 0 5px #0005;
  394. border-radius: 10px;
  395. }
  396. .visas-title{
  397. display: flex;
  398. font-size: 17px;
  399. font-weight:600 ;
  400. color: #555;
  401. margin-top: 8px;
  402. margin-bottom: 2px;
  403. justify-content: space-between;
  404. align-items: center;
  405. }
  406. .visas-box{
  407. display: flex;
  408. }
  409. .visas-box>button{
  410. margin-left: 10px;
  411. padding: 8px 20px;
  412. }
  413. .country-box{
  414. display: flex;
  415. justify-content: space-between;
  416. align-items: center;
  417. }
  418. .interpret-box{
  419. display: flex;
  420. justify-content: space-between;
  421. align-items: center;
  422. }
  423. </style>