Plat Admin

platUpdate.vue 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. <template>
  2. <div class="app-container">
  3. <div class="box-container">
  4. <div class="contain-title">修改平台信息</div>
  5. </div>
  6. <div class="content-container">
  7. <div class="main-info">
  8. <el-form :model="formObj" ref="formObj" :rules="rulesObj" label-width="80px" class="update-wrapper demo-ruleForm">
  9. <el-row :gutter="25">
  10. <el-col :span="14">
  11. <el-row :gutter="20" class="update-main">
  12. <el-col :span="24">
  13. <el-form-item label="平台名称">{{formObj.name}}</el-form-item>
  14. </el-col>
  15. <el-col :span="item.span||''" v-for="item in formItem" :key="item.index">
  16. <el-form-item :label="item.tit" :prop="item.prop">
  17. <el-input v-if="item.textarea" type="textarea" :rows="8" v-model="formObj[item.prop]" placeholder="请填写一个平台的简单介绍,让大家更好地了解平台" maxlength="5000"></el-input>
  18. <!-- <cityPicker v-else-if="item.city" @paren="toshow" :addrCode='formObj[item.prop]'></cityPicker> -->
  19. <el-input v-else v-model="formObj[item.prop]" :placeholder="`请填写${item.place||''}${item.tit}`" :maxlength="item.num||''"></el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="24">
  23. <el-form-item align="center">
  24. <el-button type="primary" @click="submitForm('formObj')">保存</el-button>
  25. </el-form-item>
  26. </el-col>
  27. </el-row>
  28. </el-col>
  29. <el-col :span="10">
  30. <div class="fileBox" v-on:uploadfun="uploadfun">
  31. <uploadFile :uploadImg=uploadImg></uploadFile>
  32. <p class="teimg">上传封面图片</p>
  33. <p class="tetype">PNG/JPG/JPEG格式,2M以内</p>
  34. </div>
  35. <!-- <div class="update-logo">
  36. <el-upload
  37. class="avatar-uploader"
  38. :action="uploadUrl"
  39. :show-file-list="false"
  40. ref="uploadLogo"
  41. :on-success="handleAvatarSuccess"
  42. :before-upload="beforeAvatarUpload">
  43. <img v-if="imageUrl" :src="imageUrl" class="avatar">
  44. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  45. </el-upload>
  46. <div class="update-tip">PNG/JPG/JPEG格式<br>大小2M以内</div>
  47. </div> -->
  48. </el-col>
  49. <el-col :offset="16">
  50. <el-form-item>
  51. <div style="line-height: 10px;">
  52. <p>最后修改人: {{formObj.modifier}}</p>
  53. <p>最后修改时间: {{formObj.modifyTime}}</p>
  54. </div>
  55. </el-form-item>
  56. </el-col>
  57. </el-row>
  58. </el-form>
  59. </div>
  60. </div>
  61. </div>
  62. </template>
  63. <script>
  64. import {
  65. queryPlat,
  66. updatePlat,
  67. uploadLogo
  68. } from '@/api/platUpdate'
  69. import {
  70. requiredTip,
  71. limitNumTip,
  72. checkEmailV
  73. } from '@/utils/validator'
  74. import { parseTime } from '@/utils'
  75. import queryDict from '@/utils/queryDict'
  76. import queryBase from '@/utils/queryBase'
  77. import cityPicker from '@/components/CityPicker'
  78. import uploadFile from '@/components/uploadFile'
  79. export default {
  80. data() {
  81. return {
  82. uploadImg: {
  83. url: uploadLogo,
  84. width: '280px',
  85. height: '200px',
  86. fun: 'uploadfun'
  87. },
  88. AllCitys: [],
  89. formItem: [
  90. {
  91. span: 24,
  92. prop: 'url',
  93. tit: '平台网址',
  94. required: true
  95. },
  96. {
  97. span: 24,
  98. prop: 'manageOrg',
  99. tit: '管理机构',
  100. required: true
  101. },
  102. {
  103. span: 12,
  104. prop: 'addr',
  105. city: true,
  106. tit: '所在城市',
  107. required: true
  108. },
  109. {
  110. span: 12,
  111. prop: 'zipCode',
  112. tit: '平台邮编',
  113. num: 20
  114. },
  115. {
  116. span: 24,
  117. prop: 'location',
  118. tit: '详细地址',
  119. num: 50,
  120. place: '管理机构'
  121. },
  122. {
  123. span: 12,
  124. prop: 'servicePhone',
  125. tit: '客服电话',
  126. num: 50,
  127. required: true
  128. },
  129. {
  130. span: 12,
  131. prop: 'serviceEmail',
  132. tit: '客服邮箱',
  133. num: 50,
  134. required: true
  135. },
  136. {
  137. span: 24,
  138. prop: 'operateTime',
  139. tit: '工作时间',
  140. num: 50
  141. },
  142. {
  143. span: 12,
  144. prop: 'linkman',
  145. tit: '联系人',
  146. required: true,
  147. place: '平台',
  148. num: 10
  149. },
  150. {
  151. span: 12,
  152. prop: 'job',
  153. tit: '职位',
  154. required: true,
  155. place: '联系人',
  156. num: 20
  157. },
  158. {
  159. span: 24,
  160. prop: 'comp',
  161. tit: '所在机构',
  162. required: true,
  163. place: '联系人',
  164. num: 50
  165. },
  166. {
  167. span: 12,
  168. prop: 'linkphone',
  169. tit: '联系电话',
  170. num: 50,
  171. required: true
  172. },
  173. {
  174. span: 12,
  175. prop: 'linkemail',
  176. tit: '联系邮箱',
  177. num: 50
  178. },
  179. {
  180. span: 24,
  181. prop: 'descp',
  182. tit: '平台简介',
  183. textarea: true,
  184. required: true,
  185. num: 5000
  186. }
  187. ],
  188. formObj: {
  189. name: '',
  190. logo: '',
  191. url: '',
  192. manageOrg: '',
  193. addr: '',
  194. location: '',
  195. zipCode: '',
  196. servicePhone: '',
  197. serviceEmail: '',
  198. operateTime: '',
  199. linkman: '',
  200. job: '',
  201. department: '',
  202. comp: '',
  203. linkphone: '',
  204. linkemail: '',
  205. descp: ''
  206. },
  207. rulesObj: {}
  208. }
  209. },
  210. components: {
  211. cityPicker,
  212. uploadFile
  213. },
  214. computed: {
  215. },
  216. created() {
  217. this.getDictoryData()
  218. this.pushRulesFn()
  219. this.queryPlatInfo()
  220. },
  221. methods: {
  222. getDictoryData() {
  223. const that = this
  224. queryDict.applyDict('XZQH', function(dictData) {
  225. dictData.map(item => {
  226. that.AllCitys[item.code] = item.fullCaption
  227. })
  228. }) // 城市级联
  229. },
  230. pushRulesFn() {
  231. const formItem = this.formItem
  232. const rulesObj = this.rulesObj
  233. for (let i = 0; i < formItem.length; ++i) {
  234. const ru = []
  235. if (formItem[i].required) {
  236. ru.push({ required: true, message: requiredTip(formItem[i].tit), trigger: 'blur' })
  237. }
  238. if (formItem[i].num) {
  239. ru.push({ max: formItem[i].num, message: limitNumTip(formItem[i].tit, formItem[i].num), trigger: 'blur, change' })
  240. }
  241. switch (formItem[i].prop) {
  242. case 'linkemail':
  243. ru.push({ validator: checkEmailV, trigger: 'blur' })
  244. break
  245. case 'serviceEmail':
  246. ru.push({ validator: checkEmailV, trigger: 'blur' })
  247. break
  248. }
  249. rulesObj[formItem[i].prop] = ru
  250. }
  251. },
  252. queryPlatInfo() {
  253. var that = this
  254. this.$http.get(queryPlat, {}, function(res) {
  255. if (res.success) {
  256. const obj = res.data
  257. if (obj.modifyTime) {
  258. obj.modifyTime = parseTime(obj.modifyTime)
  259. }
  260. if (obj.modifier) {
  261. queryBase.getAdminUser(obj.modifier, function(sc, value) {
  262. if (sc) {
  263. obj.modifier = value.name
  264. }
  265. })
  266. }
  267. that.formObj = obj
  268. }
  269. })
  270. },
  271. submitForm(formName) {
  272. this.$refs[formName].validate((valid) => {
  273. if (valid) {
  274. // this.$refs.uploadLogo.submit() // 确认上传图片
  275. // if (this.province) {
  276. // if (!this.city) {
  277. // this.$alert('请您选择所在城市', '提示', {
  278. // confirmButtonText: '确定',
  279. // type: 'warning',
  280. // center: true
  281. // })
  282. // return
  283. // }
  284. // }
  285. const form = this.formObj
  286. this.$http.put(updatePlat, {
  287. name: form.name,
  288. logo: form.logo,
  289. url: form.url,
  290. manageOrg: form.manageOrg,
  291. addr: form.addr,
  292. location: form.location,
  293. zipCode: form.zipCode,
  294. servicePhone: form.servicePhone,
  295. serviceEmail: form.serviceEmail,
  296. operateTime: form.operateTime,
  297. linkman: form.linkman,
  298. job: form.job,
  299. department: form.department,
  300. comp: form.comp,
  301. linkphone: form.linkphone,
  302. linkemail: form.linkemail,
  303. descp: form.descp
  304. }, function(res) {
  305. this.$message({
  306. message: '平台信息修改成功!',
  307. type: 'success'
  308. })
  309. })
  310. } else {
  311. return false
  312. }
  313. })
  314. },
  315. uploadfun(value) {
  316. console.log(value)
  317. },
  318. toshow(value) {
  319. this.formObj.addr = value
  320. }
  321. }
  322. }
  323. </script>
  324. <style rel="stylesheet/scss" lang="scss">
  325. .main-info{
  326. padding: 0 20px;
  327. .update-logo{
  328. width: 280px;
  329. .avatar-uploader{
  330. .el-upload{
  331. /*center-items(280px,187px);*/
  332. border: 1px dashed #d9d9d9;
  333. cursor: pointer;
  334. position: relative;
  335. .el-upload:hover {
  336. border-color: #dadada;
  337. }
  338. .avatar-uploader-icon{
  339. font-size: 40px;
  340. color: #8c939d;
  341. width: 280px;
  342. height: 187px;
  343. line-height: 187px;
  344. text-align: center;
  345. }
  346. }
  347. }
  348. .update-tip{
  349. margin-top:15px;
  350. text-align:center;
  351. font-size:14px;
  352. /*color:$secondaryFont;*/
  353. }
  354. }
  355. .update-main{
  356. .update-title{
  357. font-size:30px;
  358. line-height:54px;
  359. margin-bottom:16px;
  360. padding-left:10px;
  361. }
  362. }
  363. }
  364. </style>