OpOfficialActivities.vue 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054
  1. <template>
  2. <div class="car_add visit-box">
  3. <div>
  4. <div class="communal-title">
  5. <div>{{ title }}</div>
  6. </div>
  7. <div class="ps-title">PS:"请规范录入,未规范录入,造成公司损失或影响提成计算,需承担责任"</div>
  8. </div>
  9. <hr style='background-color:#5555; height:1px; border:none;' />
  10. <div>
  11. <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
  12. <div style="display: flex;flex-wrap: wrap;">
  13. <div style="width: 385px;">
  14. <el-form-item label="团组名称:" label-width="160px">
  15. <el-select v-model="DiId" clearable filterable placeholder="团组选择" @change="DiIdChang"
  16. :disabled="isShow">
  17. <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
  18. :value="item.id">
  19. </el-option>
  20. </el-select>
  21. </el-form-item>
  22. </div>
  23. <div style="width: 385px;">
  24. <el-form-item label="团 号:" prop="tourCode" label-width="160px">
  25. <el-input placeholder="团号" v-model="delegationInfo.tourCode" :disabled="true">
  26. </el-input>
  27. </el-form-item>
  28. </div>
  29. <div style="width: 385px;">
  30. <el-form-item label="客户:" prop="clientName" label-width="160px">
  31. <el-input placeholder="客户" v-model="delegationInfo.clientName" :disabled="true">
  32. </el-input>
  33. </el-form-item>
  34. </div>
  35. <div style="width: 385px;">
  36. <el-form-item label="出访国家:" prop="visitCountry" label-width="160px">
  37. <el-input placeholder="出访国家" v-model="delegationInfo.visitCountry" :disabled="true">
  38. </el-input>
  39. </el-form-item>
  40. </div>
  41. </div>
  42. </el-form>
  43. <el-form :model="OpOfficialActivitiesDto" ref="OpOfficialActivitiesDto" :rules="OpOfficialActivitiesRules"
  44. label-width="100px" class="demo-ruleForm">
  45. <div style="display: flex;flex-wrap: wrap;">
  46. <div style="width: 385px;">
  47. <el-form-item label="国家:" prop="country" label-width="160px">
  48. <el-input clearable placeholder="国家" v-model="OpOfficialActivitiesDto.country">
  49. </el-input>
  50. </el-form-item>
  51. </div>
  52. <div style="width: 385px;">
  53. <el-form-item label="地区:" prop="area" label-width="160px">
  54. <el-input clearable placeholder="地区" v-model="OpOfficialActivitiesDto.area">
  55. </el-input>
  56. </el-form-item>
  57. </div>
  58. <div style="width: 385px;">
  59. <el-form-item label="公务单位:" prop="client" label-width="160px">
  60. <el-input clearable placeholder="公务单位" v-model="OpOfficialActivitiesDto.client">
  61. </el-input>
  62. </el-form-item>
  63. </div>
  64. <div style="width: 385px;">
  65. <el-form-item label="公务日期:" prop="date" label-width="160px">
  66. <el-date-picker v-model="OpOfficialActivitiesDto.date" type="date" placeholder="选择公务日期">
  67. </el-date-picker>
  68. </el-form-item>
  69. </div>
  70. <div style="width: 385px;">
  71. <el-form-item label="公务时刻:" prop="time" label-width="160px">
  72. <el-time-picker v-model="OpOfficialActivitiesDto.time" format='HH:mm' value-format="HH:mm"
  73. placeholder="公务时刻">
  74. </el-time-picker>
  75. </el-form-item>
  76. </div>
  77. <div style="width: 385px;">
  78. <el-form-item label="邀请方:" prop="type" label-width="160px">
  79. <el-select v-model="OpOfficialActivitiesDto.type" clearable filterable placeholder="邀请方选择">
  80. <el-option v-for="item in yqfarr" :key="item.id" :label="item.name"
  81. :value="item.id">
  82. </el-option>
  83. </el-select>
  84. <!-- <el-radio-group v-model="OpOfficialActivitiesDto.type">
  85. <el-radio :label=1>是</el-radio>
  86. <el-radio :label=0>否</el-radio>
  87. </el-radio-group> -->
  88. </el-form-item>
  89. </div>
  90. <!-- </div>
  91. <div style="display: flex;flex-wrap: wrap;"> -->
  92. <div style="width: 385px;">
  93. <el-form-item label="公务方联系人职务:" prop="job" label-width="160px">
  94. <el-input clearable placeholder="公务方联系人职务" v-model="OpOfficialActivitiesDto.job">
  95. </el-input>
  96. </el-form-item>
  97. </div>
  98. <div style="width: 385px;">
  99. <el-form-item label="公务方联系人:" prop="contact" label-width="160px">
  100. <el-input clearable placeholder="公务方联系人" v-model="OpOfficialActivitiesDto.contact">
  101. </el-input>
  102. </el-form-item>
  103. </div>
  104. <div style="width: 385px;">
  105. <el-form-item label="电话:" prop="tel" label-width="160px">
  106. <el-input clearable placeholder="电话" v-model="OpOfficialActivitiesDto.tel">
  107. </el-input>
  108. </el-form-item>
  109. </div>
  110. <div style="width: 385px;">
  111. <el-form-item label="公务形式:" prop="officialForm" label-width="160px">
  112. <el-select v-model="OpOfficialActivitiesDto.officialForm" clearable filterable placeholder="公务形式">
  113. <el-option v-for="item in OfficialFormList" :key="item.id" :label="item.name" :value="item.id">
  114. </el-option>
  115. </el-select>
  116. </el-form-item>
  117. </div>
  118. <!-- </div>
  119. <div style="display: flex;flex-wrap: wrap;"> -->
  120. <div style="width: 385px;">
  121. <el-form-item label="着装要求:" prop="dresscode" label-width="160px">
  122. <el-input clearable placeholder="着装要求" v-model="OpOfficialActivitiesDto.dresscode">
  123. </el-input>
  124. </el-form-item>
  125. </div>
  126. <div style="width: 385px;">
  127. <el-form-item label="涉及领域:" prop="field" label-width="160px">
  128. <el-input clearable placeholder="涉及领域" v-model="OpOfficialActivitiesDto.field">
  129. </el-input>
  130. </el-form-item>
  131. </div>
  132. <div style="width: 385px;">
  133. <el-form-item label="需要翻译:" prop="isNeedTrans" label-width="160px">
  134. <el-radio-group v-model="OpOfficialActivitiesDto.isNeedTrans">
  135. <el-radio :label=1>是</el-radio>
  136. <el-radio :label=0>否</el-radio>
  137. </el-radio-group>
  138. </el-form-item>
  139. </div>
  140. <div style="width: 385px;">
  141. <el-form-item label="翻译人员:" prop="translators" label-width="160px">
  142. <el-input clearable placeholder="翻译人员" v-model="OpOfficialActivitiesDto.translators">
  143. </el-input>
  144. </el-form-item>
  145. </div>
  146. <div style="width: 385px;">
  147. <el-form-item label="翻译语种:" prop="language" label-width="160px">
  148. <el-input clearable placeholder="翻译语种" v-model="OpOfficialActivitiesDto.language">
  149. </el-input>
  150. </el-form-item>
  151. </div>
  152. <div style="width: 385px;">
  153. <el-form-item label="是否付费:" prop="type" label-width="160px">
  154. <el-radio-group v-model="OpOfficialActivitiesDto.isPay">
  155. <el-radio :label=1>是</el-radio>
  156. <el-radio :label=0>否</el-radio>
  157. </el-radio-group>
  158. </el-form-item>
  159. </div>
  160. <div style="width: 385px;">
  161. <el-form-item label="是否报批:" prop="type" label-width="160px">
  162. <el-radio-group v-model="OpOfficialActivitiesDto.isSubmitApproval">
  163. <el-radio :label=1>是</el-radio>
  164. <el-radio :label=0>否</el-radio>
  165. </el-radio-group>
  166. </el-form-item>
  167. </div>
  168. </div>
  169. <div style="display: flex; flex-wrap: wrap;">
  170. <div style="width: 770px;">
  171. <el-form-item label="公务地址:" prop="address" label-width="160px">
  172. <el-input type="textarea" :rows="3" placeholder="公务地址"
  173. v-model="OpOfficialActivitiesDto.address"></el-input>
  174. </el-form-item>
  175. </div>
  176. <div style="width: 770px;">
  177. <el-form-item label="公务方背景:" prop="setting" label-width="160px">
  178. <el-input
  179. type="textarea"
  180. :rows="3"
  181. placeholder="公务方背景"
  182. v-model="OpOfficialActivitiesDto.setting">
  183. </el-input>
  184. </el-form-item>
  185. </div>
  186. <div style="width: 770px;">
  187. <el-form-item style="position: relative;" label="公务请示范例:" label-width="160px">
  188. <el-input @blur="reqSampleblur" @focus="PostOfficialActivitiesReqReqSampleTips" type="textarea" :rows="3" placeholder="公务请示范例" v-model="OpOfficialActivitiesDto.reqSample">
  189. </el-input>
  190. <div v-show="reqSampleArrpd" class="reqSampleArr-ul">
  191. <div @click="reqSampleArrli(item)" class="reqSampleArr-li" v-for="(item,index) in reqSampleArr" :key="index">
  192. {{'['+item.teamName+']('+item.client+') '+item.reqSample}}
  193. </div>
  194. </div>
  195. </el-form-item>
  196. </div>
  197. <!-- </div>
  198. <div style="display: flex;"> -->
  199. <div style="width: 770px;">
  200. <el-form-item label="暂定议程:" prop="trip" label-width="160px">
  201. <el-input type="textarea" :rows="3" placeholder="暂定议程"
  202. v-model="OpOfficialActivitiesDto.trip"></el-input>
  203. </el-form-item>
  204. </div>
  205. <div style="width:770px;">
  206. <el-form-item label="参会人员:" prop="attendees" label-width="160px">
  207. <el-input type="textarea" :rows="3" placeholder="参会人员"
  208. v-model="OpOfficialActivitiesDto.attendees"></el-input>
  209. </el-form-item>
  210. </div>
  211. <div style="width:770px;">
  212. <el-form-item label="邮件截图:" prop="attendees" label-width="160px">
  213. <!-- <el-upload
  214. ref="Emailscreenshotref"
  215. :action="Emailscreenshoturl"
  216. :data="Emailscreenshotdata"
  217. :show-file-list="true"
  218. :auto-upload="false"
  219. :file-list="Emailscreenshot"
  220. :on-change="Emailscreenshotchange"
  221. :multiple="true"
  222. name="files">
  223. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  224. <el-button style="margin-left: 10px;" size="small" type="success"
  225. @click="UploadEmailscreenshot">上传</el-button>
  226. </el-upload> -->
  227. <el-upload
  228. accept="image/jpeg,image/png"
  229. class="pop-upload"
  230. ref="upload"
  231. action=""
  232. :file-list="fileList"
  233. :auto-upload="false"
  234. :multiple="true"
  235. :on-change="handleChange"
  236. :on-remove="handleRemove"
  237. :on-preview="handlePreview"
  238. name="files"
  239. >
  240. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  241. <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
  242. </el-upload>
  243. </el-form-item>
  244. </div>
  245. </div>
  246. <!-- <div>
  247. <div>
  248. <div class="communal-title">
  249. <div>公务文件</div>
  250. </div>
  251. </div>
  252. <span style="color: red;">上传、删除文件时请谨慎!!!</span>
  253. <hr style='background-color:#5555; height:1px; border:none;' />
  254. <div style="display: flex;">
  255. <div style="width: 33%;">
  256. 公务方简介:
  257. <el-upload :file-list="uploadFiles1" ref="upload1" :on-success="upLoadSuccess1" :on-error="upLoadError1"
  258. :before-remove="beforeRemove1" :on-change="onChange1" :limit="1" :on-exceed="exceed1"
  259. :action="uploadURL" :headers="headers1" :auto-upload="false" :on-preview="onPreview1">
  260. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  261. <el-button style="margin-left: 10px;" size="small" type="success"
  262. @click="submitUpload1">上传</el-button>
  263. </el-upload>
  264. </div>
  265. <div style="width: 33%;">
  266. 公务活动图片:
  267. <el-upload :file-list="uploadFiles2" ref="upload2" :on-success="upLoadSuccess2" :on-error="upLoadError2"
  268. :before-remove="beforeRemove2" :on-change="onChange2" :limit="1" :on-exceed="exceed2"
  269. :action="uploadURL" :headers="headers2" :auto-upload="false" :on-preview="onPreview2">
  270. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  271. <el-button style="margin-left: 10px;" size="small" type="success"
  272. @click="submitUpload2">上传</el-button>
  273. </el-upload>
  274. </div>
  275. <div style="width: 33%;">
  276. 发票:
  277. <el-upload :file-list="uploadFiles3" ref="upload3" :on-success="upLoadSuccess3" :on-error="upLoadError3"
  278. :before-remove="beforeRemove3" :on-change="onChange3" :limit="1" :on-exceed="exceed3"
  279. :action="uploadURL" :headers="headers3" :auto-upload="false" :on-preview="onPreview3">
  280. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  281. <el-button style="margin-left: 10px;" size="small" type="success"
  282. @click="submitUpload3">上传</el-button>
  283. </el-upload>
  284. </div>
  285. </div>
  286. </div> -->
  287. <el-form-item>
  288. <div style="text-align: right;">
  289. <el-button type="primary" @click="addBtn">保存</el-button>
  290. <el-button v-if="btnPermissions" type="primary">确认</el-button>
  291. <el-button @click="returnbtn">取消</el-button>
  292. </div>
  293. </el-form-item>
  294. </el-form>
  295. </div>
  296. </div>
  297. </template>
  298. <script>
  299. export default {
  300. data() {
  301. return {
  302. title: "新增公务出访客户资料",
  303. token: '',
  304. userId: 0,
  305. id: '',
  306. DiId: '',
  307. isShow: false,
  308. delegationInfo: {},
  309. delegationInfoList: [],//团组下拉框
  310. OfficialFormList: [],//公务形式下拉框
  311. deleFile: [],//文件数据
  312. headers: {
  313. Authorization: JSON.parse(localStorage.getItem('userinif')).token,
  314. TypeName: "A"
  315. },
  316. OpOfficialActivitiesDto: {
  317. status: 0,
  318. id: 0,
  319. diId: "",
  320. type: "",
  321. client: "",
  322. date: "",
  323. time: "",
  324. address: "",
  325. contact: "",
  326. job: "",
  327. tel: "",
  328. officialForm: "",
  329. setting: "",
  330. dresscode: "",
  331. attendees: "",
  332. isNeedTrans: 0,
  333. translators: "",
  334. language: "",
  335. trip: "",
  336. createUserId: 0,
  337. isPay:0,
  338. isSubmitApproval:0,
  339. remark: "",
  340. country: "",
  341. area: "",
  342. field: "",
  343. reqSample: "",
  344. },
  345. reqSampleArr:[],
  346. reqSampleArrpd:false,
  347. OpOfficialActivitiesRules: {
  348. officialForm: [
  349. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  350. { required: true, message: '该信息为必填信息', trigger: 'change' },
  351. ],
  352. country: [
  353. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  354. ],
  355. area: [
  356. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  357. ],
  358. inviteCosts: [
  359. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  360. { required: true, message: '该信息为必填信息', trigger: 'change' },
  361. ],
  362. client: [
  363. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  364. { required: true, message: '该信息为必填信息', trigger: 'change' },
  365. ],
  366. date: [
  367. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  368. { required: true, message: '该信息为必填信息', trigger: 'change' },
  369. ],
  370. time: [
  371. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  372. { required: true, message: '该信息为必填信息', trigger: 'change' },
  373. ],
  374. address: [
  375. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  376. { required: true, message: '该信息为必填信息', trigger: 'change' },
  377. ],
  378. contact: [
  379. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  380. { required: true, message: '该信息为必填信息', trigger: 'change' },
  381. ],
  382. job: [
  383. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  384. { required: true, message: '该信息为必填信息', trigger: 'change' },
  385. ],
  386. tel: [
  387. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  388. { required: true, message: '该信息为必填信息', trigger: 'change' },
  389. ],
  390. dresscode: [
  391. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  392. { required: true, message: '该信息为必填信息', trigger: 'change' },
  393. ],
  394. field: [
  395. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  396. { required: true, message: '该信息为必填信息', trigger: 'change' },
  397. ],
  398. language: [
  399. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  400. { required: true, message: '该信息为必填信息', trigger: 'change' },
  401. ],
  402. setting: [
  403. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  404. { required: true, message: '该信息为必填信息', trigger: 'change' },
  405. ],
  406. type: [
  407. { required: true, message: '该信息为必填信息', trigger: 'blur' },
  408. { required: true, message: '该信息为必填信息', trigger: 'change' },
  409. ],
  410. },
  411. uploadURL: "http://localhost:5256/api/Resource/UploadOfficialActivities",
  412. uploadFiles1: [],
  413. uploadFiles2: [],
  414. uploadFiles3: [],
  415. Emailscreenshot:[],
  416. Emailscreenshoturl:'http://132.232.92.186:8888/api/Resource/OfficialActivitiesUploadFiles',
  417. Emailscreenshotdata:{
  418. id:0,
  419. diId:0,
  420. currUserId:0,
  421. },
  422. Emailscreenshotheaders:{
  423. Authorization:"Content-Type:multipart/form-data"
  424. },
  425. headers1: {
  426. Authorization: JSON.parse(localStorage.getItem('userinif')).token,
  427. Type: "1",
  428. DiId: 0,
  429. CreateUserId: 0,
  430. },
  431. headers2: {
  432. Authorization: JSON.parse(localStorage.getItem('userinif')).token,
  433. Type: "2",
  434. DiId: 0,
  435. CreateUserId: 0,
  436. },
  437. headers3: {
  438. Authorization: JSON.parse(localStorage.getItem('userinif')).token,
  439. Type: "3",
  440. DiId: 0,
  441. CreateUserId: 0,
  442. },
  443. yqfarr:[],
  444. gwcfPermissions:[],
  445. btnPermissions:false,
  446. fileList:[],
  447. }
  448. },
  449. methods: {
  450. //团组下拉框
  451. GetGroupAllList() {
  452. var url = "/api/Resource/GetGroupAllList"
  453. var that = this
  454. this.$axios({
  455. method: 'post',
  456. url: url,
  457. headers: {
  458. Authorization: 'Bearer ' + this.token
  459. },
  460. data: {
  461. diid: that.DiId
  462. }
  463. }).then(function (res) {
  464. if (res.data.code == 200) {
  465. that.deleFile = res.data.data.deleFile;
  466. that.deleFile.forEach(function (item) {
  467. if (item.kind == 1) {
  468. that.uploadFiles1.push({
  469. name: item.fileName,
  470. url: 'http://localhost:5256/Office/GrpFile/商邀相关文件/',
  471. id: item.id
  472. });
  473. } else if (item.kind == 2) {
  474. that.uploadFiles2.push({
  475. name: item.fileName,
  476. url: 'http://localhost:5256/Office/GrpFile/商邀相关文件/',
  477. id: item.id
  478. });
  479. }
  480. else if (item.kind == 3) {
  481. that.uploadFiles3.push({
  482. name: item.fileName,
  483. url: 'http://localhost:5256/Office/GrpFile/商邀相关文件/',
  484. id: item.id
  485. });
  486. }
  487. });
  488. console.log(that.uploadFiles1)
  489. console.log(that.uploadFiles2)
  490. console.log(that.uploadFiles3)
  491. that.delegationInfoList = res.data.data.delegation;
  492. that.OfficialFormList = res.data.data.setData;
  493. if (that.OfficialFormList.length != 0) {
  494. if(that.id!=that.id){
  495. that.OpOfficialActivitiesDto.officialForm = that.OfficialFormList[0].id
  496. }
  497. }
  498. for (let index = 0; index < that.delegationInfoList.length; index++) {
  499. if (that.delegationInfoList[index].id == parseInt(that.DiId)) {
  500. that.delegationInfo = that.delegationInfoList[index];
  501. break;
  502. }
  503. }
  504. }
  505. }).catch(function (error) {
  506. // that.$message.error("网络错误,请稍后重试");
  507. });
  508. },
  509. //UploadEmailscreenshot
  510. UploadEmailscreenshot(){
  511. console.log(file, fileList);
  512. this.Emailscreenshotdata.diId=this.DiId;
  513. this.Emailscreenshotdata.currUserId=this.userId;
  514. this.submitUpload()
  515. },
  516. //获取邀请方
  517. QuerySetData(){
  518. var that = this;
  519. var url = "/api/System/QuerySetData"
  520. this.$axios({
  521. method: 'post',
  522. url: url,
  523. headers: {
  524. Authorization: 'Bearer ' + that.token
  525. },
  526. data: {
  527. dataType:85
  528. }
  529. }).then(function (res) {
  530. if (res.data.code == 200) {
  531. that.yqfarr=res.data.data;
  532. console.log(that.yqfarr);
  533. } else {
  534. that.$message.error(res.data.msg);
  535. }
  536. })
  537. },
  538. Emailscreenshotchange(file, fileList){
  539. console.log(file, fileList);
  540. },
  541. //获取公务请示范例提示
  542. PostOfficialActivitiesReqReqSampleTips(){
  543. var that = this;
  544. var url = "/api/Resource/PostOfficialActivitiesReqReqSampleTips"
  545. this.$axios({
  546. method: 'post',
  547. url: url,
  548. headers: {
  549. Authorization: 'Bearer ' + that.token
  550. },
  551. data: {
  552. country:that.OpOfficialActivitiesDto.country,
  553. area: that.OpOfficialActivitiesDto.area,
  554. client: that.OpOfficialActivitiesDto.client
  555. }
  556. }).then(function (res) {
  557. if (res.data.code == 200) {
  558. console.log(res)
  559. that.reqSampleArrpd=true
  560. that.reqSampleArr=res.data.data;
  561. // that.$message({
  562. // message: res.data.msg,
  563. // type: 'success'
  564. // });
  565. } else {
  566. that.$message.error(res.data.msg);
  567. }
  568. })
  569. },
  570. reqSampleblur(){
  571. // setTimeout(this.reqSampleArrpd=false,2000)
  572. setTimeout(() => {
  573. this.reqSampleArrpd=false
  574. }, 150);
  575. },
  576. DiIdChang() {
  577. for (let index = 0; index < this.delegationInfoList.length; index++) {
  578. if (this.delegationInfoList[index].id == parseInt(this.DiId)) {
  579. this.delegationInfo = this.delegationInfoList[index];
  580. break;
  581. }
  582. }
  583. },
  584. reqSampleArrli(val){
  585. console.log(val);
  586. this.OpOfficialActivitiesDto.reqSample=val.reqSample;
  587. this.reqSampleArrpd=false;
  588. },
  589. QueryOfficialActivitiesById() {
  590. var url = "/api/Resource/QueryOfficialActivitiesById"
  591. var that = this
  592. this.$axios({
  593. method: 'post',
  594. url: url,
  595. headers: {
  596. Authorization: 'Bearer ' + this.token
  597. },
  598. data: {
  599. Id: that.id,
  600. DiId: that.DiId,
  601. }
  602. }).then(function (res) {
  603. if (res.data.code == 200) {
  604. var dataList = res.data.data;
  605. that.OpOfficialActivitiesDto.id = dataList.id;
  606. that.OpOfficialActivitiesDto.diId = dataList.diId;
  607. that.OpOfficialActivitiesDto.type = dataList.type;
  608. that.OpOfficialActivitiesDto.client = dataList.client;
  609. that.OpOfficialActivitiesDto.date = dataList.date;
  610. that.OpOfficialActivitiesDto.time = dataList.time;;
  611. that.OpOfficialActivitiesDto.address = dataList.address;
  612. that.OpOfficialActivitiesDto.contact = dataList.contact;
  613. that.OpOfficialActivitiesDto.job = dataList.job;
  614. that.OpOfficialActivitiesDto.tel = dataList.tel;
  615. that.OpOfficialActivitiesDto.officialForm = dataList.officialForm;
  616. that.OpOfficialActivitiesDto.setting = dataList.setting;
  617. that.OpOfficialActivitiesDto.dresscode = dataList.dresscode;
  618. that.OpOfficialActivitiesDto.attendees = dataList.attendees;
  619. that.OpOfficialActivitiesDto.isNeedTrans = dataList.isNeedTrans;
  620. that.OpOfficialActivitiesDto.translators = dataList.translators;
  621. that.OpOfficialActivitiesDto.language = dataList.language;
  622. that.OpOfficialActivitiesDto.trip = dataList.trip;
  623. that.OpOfficialActivitiesDto.createUserId = dataList.createUserId;
  624. that.OpOfficialActivitiesDto.remark = dataList.remark;
  625. that.OpOfficialActivitiesDto.isSubmitApproval = dataList.isSubmitApproval;
  626. that.OpOfficialActivitiesDto.isPay = dataList.isPay;
  627. that.OpOfficialActivitiesDto.country = dataList.country;
  628. that.OpOfficialActivitiesDto.area = dataList.area;
  629. that.OpOfficialActivitiesDto.field = dataList.field;
  630. that.OpOfficialActivitiesDto.reqSample = dataList.reqSample;
  631. // that.fileList
  632. for(let i=0;i<dataList.screenshotOfMailUrls.length;i++){
  633. that.fileList.push({'name':dataList.screenshotOfMailUrls[i].split('/')[7],'url':dataList.screenshotOfMailUrls[i]})
  634. }
  635. console.log(that.fileList);
  636. }
  637. })
  638. },
  639. addBtn() {
  640. if (this.DiId == null && this.DiId == undefined && this.DiId == "") {
  641. this.$message.error("请选择团组名称");
  642. return;
  643. }
  644. const that = this;
  645. that.OpOfficialActivitiesDto.createUserId = that.userId
  646. that.OpOfficialActivitiesDto.diId = that.DiId
  647. that.$refs.OpOfficialActivitiesDto.validate((valid) => {
  648. if (valid) {
  649. var url = "/api/Resource/OpOfficialActivities"
  650. that.$axios({
  651. method: 'post',
  652. url: url,
  653. headers: {
  654. Authorization: 'Bearer ' + that.token
  655. },
  656. data: that.OpOfficialActivitiesDto
  657. }).then(function (res) {
  658. if (res.data.code == 200) {
  659. that.$message({
  660. message: res.data.msg,
  661. type: 'success'
  662. });
  663. that.returnbtn();
  664. that.loading = true;
  665. } else {
  666. that.$message.error(res.data.msg);
  667. }
  668. })
  669. } else {
  670. this.$message.error('请完善信息在保存!');
  671. return false;
  672. }
  673. })
  674. },
  675. //上传1
  676. //上传到服务器
  677. submitUpload1() {
  678. this.$refs.upload1.submit();
  679. },
  680. // 文件超出限制
  681. exceed1(files, fileList) {
  682. this.$message.warning(
  683. `当前限制选择 1个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
  684. } 个文件,请取消要替换的文件`
  685. );
  686. },
  687. //文件上传成功时的钩子
  688. upLoadSuccess1(response, file, fileList) {
  689. this.$message({
  690. message: response.msg,
  691. type: 'success'
  692. });
  693. },
  694. //文件上传失败时的钩子
  695. upLoadError1(response, file, fileList) {
  696. console.log("项目添加失败");
  697. },
  698. //取消文件时的钩子
  699. beforeRemove1(file, fileList) {
  700. const that = this;
  701. var url = "/api/Resource/DelloadOfficialActivities"
  702. this.$axios({
  703. method: 'post',
  704. url: url,
  705. headers: {
  706. Authorization: 'Bearer ' + that.token
  707. },
  708. data: {
  709. Id: file.id,
  710. DeleteUserId: that.userId
  711. }
  712. }).then(function (res) {
  713. if (res.data.code == 200) {
  714. that.$message({
  715. message: res.data.msg,
  716. type: 'success'
  717. });
  718. } else {
  719. that.$message.error(res.data.msg);
  720. }
  721. })
  722. },
  723. //文件状态改变时的钩子
  724. onChange1(file, fileList) {
  725. },
  726. //点击文件的钩子
  727. onPreview1(file) {
  728. window.location.href = "http://132.232.92.186:24/Office/GrpFile/商邀相关文件/" + file.name
  729. },
  730. //上传2
  731. //上传到服务器
  732. submitUpload2() {
  733. this.$refs.upload2.submit();
  734. },
  735. // 文件超出限制
  736. exceed2(files, fileList) {
  737. this.$message.warning(
  738. `当前限制选择 1个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
  739. } 个文件,请取消要替换的文件`
  740. );
  741. },
  742. //文件上传成功时的钩子
  743. upLoadSuccess2(response, file, fileList) {
  744. this.$message({
  745. message: response.msg,
  746. type: 'success'
  747. });
  748. },
  749. //文件上传失败时的钩子
  750. upLoadError2(response, file, fileList) {
  751. console.log("项目添加失败");
  752. },
  753. //删除文件时出发的事件
  754. beforeRemove2(file, fileList) {
  755. const that = this;
  756. var url = "/api/Resource/DelloadOfficialActivities"
  757. this.$axios({
  758. method: 'post',
  759. url: url,
  760. headers: {
  761. Authorization: 'Bearer ' + that.token
  762. },
  763. data: {
  764. Id: file.id,
  765. DeleteUserId: that.userId
  766. }
  767. }).then(function (res) {
  768. if (res.data.code == 200) {
  769. that.$message({
  770. message: res.data.msg,
  771. type: 'success'
  772. });
  773. } else {
  774. that.$message.error(res.data.msg);
  775. }
  776. })
  777. },
  778. //文件状态改变时的钩子
  779. onChange2(file, fileList) {
  780. },
  781. //点击文件的钩子
  782. onPreview2(file) {
  783. window.location.href = "http://132.232.92.186:24/Office/GrpFile/商邀相关文件/" + file.name
  784. },
  785. //上传3
  786. //上传到服务器
  787. submitUpload3() {
  788. this.$refs.upload3.submit();
  789. },
  790. // 文件超出限制
  791. exceed3(files, fileList) {
  792. this.$message.warning(
  793. `当前限制选择 1个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
  794. } 个文件,请取消要替换的文件`
  795. );
  796. },
  797. //文件上传成功时的钩子
  798. upLoadSuccess3(response, file, fileList) {
  799. this.$message({
  800. message: response.msg,
  801. type: 'success'
  802. });
  803. },
  804. //文件上传失败时的钩子
  805. upLoadError3(response, file, fileList) {
  806. console.log("项目添加失败");
  807. },
  808. //删除文件时出发的事件
  809. beforeRemove3(file, fileList) {
  810. const that = this;
  811. var url = "/api/Resource/DelloadOfficialActivities"
  812. this.$axios({
  813. method: 'post',
  814. url: url,
  815. headers: {
  816. Authorization: 'Bearer ' + that.token
  817. },
  818. data: {
  819. Id: file.id,
  820. DeleteUserId: that.userId
  821. }
  822. }).then(function (res) {
  823. if (res.data.code == 200) {
  824. that.$message({
  825. message: res.data.msg,
  826. type: 'success'
  827. });
  828. setTimeout(() => {
  829. that.$router.push('/home/OfficialActivities')
  830. }, 3000);
  831. } else {
  832. that.$message.error(res.data.msg);
  833. }
  834. })
  835. },
  836. //文件状态改变时的钩子
  837. onChange3(file, fileList) {
  838. },
  839. //点击文件的钩子
  840. onPreview3(file) {
  841. let href = "http://132.232.92.186:24/Office/GrpFile/商邀相关文件/" + file.name
  842. var a = document.createElement("a");
  843. a.href = href;
  844. a.download = file.name;
  845. a.style.display = "none";
  846. document.body.appendChild(a);
  847. a.click();
  848. a.remove();
  849. //window.location.href = "http://132.232.92.186:24/Office/GrpFile/商邀相关文件/" + file.name
  850. },
  851. //返回
  852. returnbtn(){
  853. this.$router.push({
  854. path: "/home/OfficialActivities",
  855. query: {
  856. DiId: this.DiId,
  857. }
  858. })
  859. },
  860. // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用,function(file, fileList)
  861. handleChange(file, fileList) {
  862. console.log(file);
  863. console.log(fileList);
  864. this.fileList = fileList
  865. },
  866. // 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。function(file, fileList)
  867. handleRemove(file, fileList) {
  868. this.fileList = fileList
  869. },
  870. //点击文件列表中已上传的文件
  871. handlePreview(file){
  872. console.log(file);
  873. window.open(file.url);
  874. },
  875. //上传服务器
  876. submitUpload() {
  877. // console.log(this.id);
  878. if(this.id==undefined){
  879. this.id==0
  880. }
  881. this.Emailscreenshotdata.id=this.id;
  882. this.Emailscreenshotdata.diId=this.DiId;
  883. this.Emailscreenshotdata.currUserId=this.userId;
  884. //判断是否有文件再上传
  885. if (this.fileList.length === 0) {
  886. return this.$message.warning('请选取文件后再上传');
  887. }
  888. // 下面的代码将创建一个空的FormData对象:
  889. const formData = new FormData()
  890. // 你可以使用FormData.append来添加键/值对到表单里面;
  891. this.fileList.forEach((file) => {
  892. formData.append('files', file.raw);
  893. })
  894. formData.append('id', this.Emailscreenshotdata.id);
  895. formData.append('diId', this.Emailscreenshotdata.diId);
  896. formData.append('currUserId', this.Emailscreenshotdata.currUserId);
  897. var that = this;
  898. var url = "/api/Resource/OfficialActivitiesUploadFiles"
  899. this.$axios({
  900. method: 'post',
  901. url: url,
  902. headers: {
  903. Authorization: 'Bearer ' + that.token
  904. },
  905. data:formData
  906. }).then(function (res) {
  907. if (res.data.code == 200) {
  908. that.$message.success(res.data.msg);
  909. that.fileList = []
  910. } else {
  911. that.$message.error(res.data.msg);
  912. }
  913. })
  914. },
  915. },
  916. mounted() {
  917. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  918. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  919. this.gwcfPermissions=JSON.parse(localStorage.getItem('Permissions'));
  920. this.DiId = parseInt(this.$route.query.DiId)
  921. console.log(this.gwcfPermissions);
  922. for(let k=0;k<this.gwcfPermissions.length;k++){
  923. if(this.gwcfPermissions[k].funid==12){
  924. this.btnPermissions=true;
  925. }
  926. }
  927. this.QuerySetData();
  928. this.id = this.$route.query.id
  929. this.headers1.DiId = this.DiId
  930. this.headers1.CreateUserId = this.userId
  931. this.headers2.DiId = this.DiId
  932. this.headers2.CreateUserId = this.userId
  933. this.headers3.DiId = this.DiId
  934. this.headers3.CreateUserId = this.userId
  935. this.GetGroupAllList();
  936. if (this.DiId == null && this.DiId == undefined && this.DiId == 0) {
  937. this.DiId = '';
  938. }
  939. if (this.id != null && this.id != undefined && this.id != 0) {
  940. this.QueryOfficialActivitiesById();
  941. this.title = "修改公务出访客户资料";
  942. this.OpOfficialActivitiesDto.status = 2
  943. this.isShow = true
  944. } else {
  945. this.OpOfficialActivitiesDto.status = 1
  946. this.title = "新增公务出访客户资料"
  947. this.isShow = false
  948. }
  949. }
  950. }
  951. </script>
  952. <style>
  953. .car_add .communal-title {
  954. display: flex;
  955. font-size: 17px;
  956. font-weight: 600;
  957. color: #555;
  958. margin-bottom: 20px;
  959. justify-content: space-between;
  960. align-items: center;
  961. }
  962. .appraise-box {
  963. display: flex;
  964. flex-wrap: wrap;
  965. justify-content: space-between;
  966. margin: 50px 0;
  967. }
  968. .appraise-box>div {
  969. width: 30%;
  970. }
  971. .communal-box {
  972. display: flex;
  973. }
  974. .communal-box>button {
  975. margin-left: 10px;
  976. padding: 8px 20px;
  977. }
  978. .car_add {
  979. background-color: #fff;
  980. padding: 20px;
  981. box-shadow: 0 0 5px #0005;
  982. border-radius: 10px;
  983. min-height: 810px;
  984. }
  985. .visit-box .el-date-editor.el-input, .el-date-editor.el-input__inner{
  986. width: 100%;
  987. }
  988. .visit-box .el-select{
  989. width: 100%;
  990. }
  991. .reqSampleArr-ul{
  992. position:absolute;
  993. z-index:1;
  994. background-color: #FFFFFF;
  995. box-shadow: #5555 0 0 10px;
  996. border-radius:5px ;
  997. max-height: 400px;
  998. overflow: auto;
  999. }
  1000. .reqSampleArr-li:hover{
  1001. background-color: #5551;
  1002. }
  1003. .reqSampleArr-li{
  1004. line-height: 20px;
  1005. padding: 10px;
  1006. cursor: pointer;
  1007. }
  1008. .ps-title{
  1009. color: red;
  1010. font-size: 12px;
  1011. }
  1012. @media screen and (max-width: 1700px) {
  1013. .appraise-box>div {
  1014. width: 48%;
  1015. }
  1016. .appraise-box>div el-form-item__content {
  1017. width: 260px !important;
  1018. }
  1019. }
  1020. </style>