faf9776c5e0182d79c1e2e915b622970ff4d954d.svn-base 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. <!-- -->
  2. <template>
  3. <div style="width:100%;">
  4. <el-row style="text-align:center;">
  5. <el-col :span="1">
  6. <el-button type="text" icon="el-icon-back" @click="goBack">后退.</el-button>
  7. </el-col>
  8. <el-col :span="22">
  9. </el-col>
  10. <el-col :span="1">
  11. </el-col>
  12. </el-row>
  13. <el-row >
  14. <el-main style="overflow-y: auto;" :style="{'max-height':pageHeight+'px'}">
  15. <el-form ref="form" :model="sizeForm" label-width="130px" size="mini" >
  16. <el-form-item label="会议主题">
  17. <el-input v-model="sizeForm.title"></el-input>
  18. </el-form-item>
  19. <el-form-item label="会议地点">
  20. <el-input v-model="sizeForm.address"></el-input>
  21. </el-form-item>
  22. <el-form-item label="会议内容">
  23. <!-- <el-input type="textarea" v-model="sizeForm.content" :autosize="{ minRows: 2, maxRows: 4}"></!-->
  24. <Editor id="condition" v-model="sizeForm.content" :init="editorInit" ></Editor>
  25. <!-- <quillEditor
  26. ref="myTextEditor"
  27. v-model="sizeForm.content"
  28. :options="editorOption">
  29. </quillEditor> -->
  30. </el-form-item>
  31. <!-- <el-form-item label="会议地点经度">
  32. <el-input v-model="sizeForm.gdX"></el-input>
  33. </el-form-item>
  34. <el-form-item label="会议地点纬度">
  35. <el-input v-model="sizeForm.gdY"></el-input>
  36. </el-form-item> -->
  37. <el-form-item label="会议地点">
  38. <!-- <el-input v-model="sizeForm.gdY" placeholder="输入位置"></el-input> -->
  39. <el-input placeholder="请输入位置" v-model="startText" clearable ></el-input>
  40. </el-form-item>
  41. <div id="poiContainer" class="poiClass" v-if="showPoiList">
  42. <div class="poiListClass" v-for="(item,index) in pois" :key="index" @click="poiListClick(item)">
  43. <span style="color: blue;">{{item.name}}</span>
  44. <!-- <span style="font-size: small;color: #aaaaaa;padding-left: 10px;">{{item.cityname}}{{item.adname}}</span> -->
  45. <span style="font-size: small;color: #aaaaaa;padding-left: 10px;float: right;">{{item.district}}</span>
  46. </div>
  47. </div>
  48. <el-form-item label="是否签退">
  49. <el-radio-group v-model="sizeForm.isOut" size="mini">
  50. <el-radio label="1">是</el-radio>
  51. <el-radio label="2">否</el-radio>
  52. </el-radio-group>
  53. </el-form-item>
  54. <el-form-item label="是否有问卷">
  55. <el-radio-group v-model="sizeForm.isHasQues" size="mini">
  56. <el-radio label="1">是</el-radio>
  57. <el-radio label="2">否</el-radio>
  58. </el-radio-group>
  59. </el-form-item>
  60. <el-form-item label="计划会议时间">
  61. <el-col :span="11">
  62. <el-date-picker
  63. value-format="yyyy-MM-dd HH:mm"
  64. format="yyyy-MM-dd HH:mm"
  65. type="datetime"
  66. placeholder="选择日期"
  67. v-model="sizeForm.stTm"
  68. style="width: 100%;"></el-date-picker>
  69. </el-col>
  70. <el-col class="line" :span="2" style="text-align:center;">-</el-col>
  71. <el-col :span="11">
  72. <el-date-picker
  73. value-format="yyyy-MM-dd HH:mm"
  74. format="yyyy-MM-dd HH:mm"
  75. type="datetime"
  76. placeholder="选择日期"
  77. v-model="sizeForm.enTm"
  78. style="width: 100%;"></el-date-picker>
  79. </el-col>
  80. </el-form-item>
  81. <el-form-item label="实际会议时间" v-if="showRealTime">
  82. <el-col :span="11">
  83. <el-date-picker
  84. value-format="yyyy-MM-dd HH:mm"
  85. format="yyyy-MM-dd HH:mm"
  86. type="datetime"
  87. placeholder="选择日期"
  88. v-model="sizeForm.startTm"
  89. style="width: 100%;"></el-date-picker>
  90. </el-col>
  91. <el-col class="line" :span="2" style="text-align:center;">-</el-col>
  92. <el-col :span="11">
  93. <el-date-picker
  94. value-format="yyyy-MM-dd HH:mm"
  95. format="yyyy-MM-dd HH:mm"
  96. type="datetime"
  97. placeholder="选择日期"
  98. v-model="sizeForm.endTm"
  99. style="width: 100%;"></el-date-picker>
  100. </el-col>
  101. </el-form-item>
  102. </el-form>
  103. </el-main>
  104. <el-footer style="height: 100%;text-align: right;">
  105. <el-button type="primary" @click="onSubmit">立即创建</el-button>
  106. <el-button @click="cancel">取消</el-button>
  107. </el-footer>
  108. </el-row>
  109. </div>
  110. </template>
  111. <script>
  112. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  113. //例如:import 《组件名称》 from '《组件路径》';
  114. import {getMyBiaoJi} from '../../api/zhxxAPI.js'
  115. import axios from 'axios'
  116. import { quillEditor } from 'vue-quill-editor'
  117. import { addMeetingBase } from "../../api/meetingAPI.js";
  118. import tinymce from 'tinymce/tinymce'
  119. import 'tinymce/themes/silver/theme'
  120. import Editor from '@tinymce/tinymce-vue'
  121. import 'tinymce/plugins/image'
  122. import 'tinymce/plugins/link'
  123. import 'tinymce/plugins/code'
  124. import 'tinymce/plugins/table'
  125. import 'tinymce/plugins/lists'
  126. import 'tinymce/plugins/contextmenu'
  127. import 'tinymce/plugins/wordcount'
  128. import 'tinymce/plugins/colorpicker'
  129. import 'tinymce/plugins/textcolor'
  130. import 'quill/dist/quill.core.css'
  131. import 'quill/dist/quill.snow.css'
  132. import 'quill/dist/quill.bubble.css'
  133. export default {
  134. //import引入的组件需要注入到对象中才能使用
  135. components: {
  136. quillEditor,
  137. Editor,
  138. },
  139. props:['meetingInfoRow'],
  140. data() {
  141. //这里存放数据
  142. return {
  143. showPoiList:false,
  144. pois:[],
  145. startText:'',
  146. pageHeight:window.innerHeight - 154,
  147. editorOption: {
  148. modules: {
  149. toolbar: [
  150. ['bold', 'italic', 'underline', 'strike'],
  151. ['blockquote', 'code-block'],
  152. [{ 'header': 1 }, { 'header': 2 }],
  153. [{ 'list': 'ordered' }, { 'list': 'bullet' }],
  154. [{ 'script': 'sub' }, { 'script': 'super' }],
  155. [{ 'indent': '-1' }, { 'indent': '+1' }],
  156. [{ 'direction': 'rtl' }],
  157. [{ 'size': ['small', false, 'large', 'huge'] }],
  158. [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
  159. [{ 'font': [] }],
  160. [{ 'color': [] }, { 'background': [] }],
  161. [{ 'align': [] }],
  162. ['clean'],
  163. ['link', 'image', 'video']
  164. ],
  165. }
  166. },
  167. editorInit: {
  168. selector: 'condition',
  169. language_url: '/static/tinymce/zh_CN.js',
  170. language: 'zh_CN',
  171. skin_url: '/static/tinymce/skins/ui/oxide',
  172. plugins: 'wordcount',
  173. // plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu',
  174. height: 300,
  175. toolbar:
  176. 'bold italic underline strikethrough fontselect fontsizeselect forecolor backcolor | removeformat',
  177. // 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat',
  178. branding: false
  179. },
  180. showRealTime:false,
  181. dialogFormVisible:true,
  182. sizeForm: {
  183. state:"1",
  184. title:"",
  185. address:"",
  186. content:"",
  187. stTm:"",
  188. enTm:"",
  189. startTm:"",
  190. endTm:"",
  191. gdX:"",
  192. gdY:"",
  193. isOut:"",
  194. isHasQues:"",
  195. },
  196. startTm:"",
  197. endTm:"",
  198. tableResultData:[],//标记列表
  199. currentEndLocation:'',//终点经纬度
  200. };
  201. },
  202. //监听属性 类似于data概念
  203. computed: {
  204. userId: function () {
  205. return localStorage.getItem("userid") ?localStorage.getItem("userid") : "1098101939614724096";
  206. },
  207. },
  208. //监控data中的数据变化
  209. watch: {
  210. startText(n,o){
  211. this.inputChange(n,'start')
  212. },
  213. },
  214. //方法集合
  215. methods: {
  216. poiListClick(item){//模糊查询列表 点击
  217. var _self = this;
  218. _self.startText = item.name;
  219. _self.currentEndLocation = item.location ;
  220. _self.sizeForm.gdX = item.location.split(",")[0] ;
  221. _self.sizeForm.gdY = item.location.split(",")[1] ;
  222. _self.showPoiList = false;
  223. },
  224. inputChange(val,type){//input输入内后后 关键字模糊查询
  225. var _self = this;
  226. _self.showPoiList = true;//打开poi
  227. axios.get('https://restapi.amap.com/v3/assistant/inputtips',{
  228. params: {
  229. keywords:val,
  230. output:'json',
  231. offset:20,
  232. page:1,
  233. key:'481d08235e1dc266e0f979db1d86162c',
  234. }
  235. }).then((res)=>{
  236. console.log('succ');
  237. if(res.data.status =='1'){
  238. _self.pois = res.data.tips;
  239. }
  240. })
  241. },
  242. handleSizeChange(val) {
  243. console.log(`每页 ${val} 条`);
  244. },
  245. handleCurrentChange(val) {
  246. console.log(`当前页: ${val}`);
  247. },
  248. goBack(){
  249. this.$emit('geBack',true)
  250. },
  251. closeDialog() {
  252. let _self = this;
  253. this.$confirm("确认退出吗?", "提示", {
  254. confirmButtonText: "确定",
  255. cancelButtonText: "取消",
  256. type: "warning"
  257. }).then(() => {
  258. _self.$emit("cancelHandler");
  259. })
  260. .catch(() => {});
  261. },
  262. //提交会议基本信息
  263. onSubmit(){
  264. var _self = this;
  265. let obj = {
  266. };
  267. if(!_self.sizeForm.hasOwnProperty('id')){
  268. _self.sizeForm.startTm = _self.sizeForm.stTm;
  269. _self.sizeForm.endTm = _self.sizeForm.enTm;
  270. _self.sizeForm.state = '1';
  271. }else{
  272. _self.sizeForm.state = '1';
  273. }
  274. let userid = localStorage.getItem('userid') ? localStorage.getItem('userid') : ''
  275. Object.assign(obj, _self.sizeForm);
  276. // addMeetingBase(obj).then(response => {
  277. // if(response.success == true){
  278. // this.$emit('addSuccessStatus',response);
  279. // this.$emit('geBack',true)
  280. // }
  281. // });
  282. axios.post(`/pdcApi/meet/meeting/info`,obj,{headers: {'Content-Type': 'application/json','persId': userid}})
  283. .then((response) => {
  284. if(response.data.success == true){
  285. this.$emit('addSuccessStatus',response);
  286. this.$emit('geBack',true)
  287. }
  288. })
  289. .catch(function (error) {
  290. console.log(error);
  291. });
  292. },
  293. cancel(){
  294. this.$emit("cancelHandler");
  295. }
  296. },
  297. //生命周期 - 创建完成(可以访问当前this实例)
  298. created() {
  299. },
  300. //生命周期 - 挂载完成(可以访问DOM元素)
  301. mounted() {
  302. this.sizeForm = this.meetingInfoRow;
  303. if(!this.sizeForm.hasOwnProperty('id')){
  304. this.showRealTime = false;
  305. }else{
  306. this.showRealTime = true;
  307. }
  308. },
  309. beforeCreate() {}, //生命周期 - 创建之前
  310. beforeMount() {}, //生命周期 - 挂载之前
  311. beforeUpdate() {}, //生命周期 - 更新之前
  312. updated() {}, //生命周期 - 更新之后
  313. beforeDestroy() {}, //生命周期 - 销毁之前
  314. destroyed() {}, //生命周期 - 销毁完成
  315. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  316. }
  317. </script>
  318. <style>
  319. .poiClass{
  320. background-color: #ffffff;
  321. position: absolute;
  322. top: 65%;
  323. width: 320px;
  324. max-height: 350px;
  325. overflow: auto;
  326. z-index: 2000;
  327. margin-left: 7%;
  328. border: 1px solid #ececec;
  329. }
  330. .poiClass :hover{
  331. background: #ece9e9;
  332. cursor:pointer;
  333. }
  334. .poiListClass{
  335. padding: 5px;
  336. padding-left: 15px;
  337. }
  338. </style>