Add.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <style lang="scss">
  2. .add_form{
  3. display: flex;
  4. justify-content: space-between;
  5. .req{
  6. position: relative;
  7. &::after{
  8. content: '*';
  9. color: red;
  10. position: absolute;
  11. right: -15px;
  12. top: 8px;
  13. }
  14. }
  15. .div_left{
  16. width: 33%;
  17. .el-select{
  18. width: 100%;
  19. }
  20. }
  21. .div_right{
  22. width: 65%;
  23. .map{
  24. width: 100%;
  25. height: 300px;
  26. }
  27. .btn_div{
  28. text-align: right;
  29. button{
  30. width: 200px;
  31. }
  32. }
  33. }
  34. }
  35. </style>
  36. <template>
  37. <section>
  38. <p>公司管理 > 新增企业</p>
  39. <div class="content">
  40. <el-form class="add_form" label-width="100px" size="small" label-position="right">
  41. <div class="div_left">
  42. <el-form-item label="企业名称" class="req">
  43. <el-input clearable placeholder="请输入企业名称" v-model="form.name"></el-input>
  44. </el-form-item>
  45. <el-form-item label="账号" class="req">
  46. <el-input clearable placeholder="请输入账号" v-model="form.username"></el-input>
  47. </el-form-item>
  48. <el-form-item label="密码" class="req">
  49. <el-input clearable placeholder="请输入密码" type="password" v-model="form.password"></el-input>
  50. </el-form-item>
  51. <el-form-item label="公司类型">
  52. <el-select clearable v-model="form.category" placeholder="请选择">
  53. <el-option v-for="(item,index) in category" :key="index" :label="item" :value="item"></el-option>
  54. </el-select>
  55. </el-form-item>
  56. <el-form-item label="上级公司">
  57. <el-select clearable v-model="form.parent_id" placeholder="请选择">
  58. <el-option v-for="(item,index) in company" :key="index" :label="item.name" :value="item.id"></el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item label="企业区域" >
  62. <el-select v-model="form.area" clearable placeholder="请选择">
  63. <el-option v-for="(item,index) in area" :key="index" :label="item" :value="item"></el-option>
  64. </el-select>
  65. </el-form-item>
  66. <!-- <el-form-item label="上级政府" class="req">
  67. <el-select v-model="form.parent_id" placeholder="请选择">
  68. <el-option label="区域一" value="shanghai"></el-option>
  69. <el-option label="区域二" value="beijing"></el-option>
  70. </el-select>
  71. </el-form-item> -->
  72. <el-form-item label="企业法人" class="req">
  73. <el-input clearable placeholder="请输入企业法人" v-model="form.legalperson"></el-input>
  74. </el-form-item>
  75. <el-form-item label="法人手机号" class="req">
  76. <el-input clearable placeholder="请输入法人手机号" v-model="form.legalperson_phone"></el-input>
  77. </el-form-item>
  78. <el-form-item label="企业负责人">
  79. <el-input clearable placeholder="请输入企业负责人" v-model="form.principal"></el-input>
  80. </el-form-item>
  81. <el-form-item label="负责人手机号">
  82. <el-input clearable placeholder="请输入负责人手机号" v-model="form.principal_phone"></el-input>
  83. </el-form-item>
  84. <el-form-item label="经营范围">
  85. <el-input type="textarea" v-model="form.busscope"></el-input>
  86. </el-form-item>
  87. </div>
  88. <div class="div_right">
  89. <el-form-item label="封面图">
  90. <div class="upload_div">
  91. <i class="el-icon-upload"></i>
  92. <img v-if="form.faceimg" width="100%" height="100%" :src="form.faceimg" alt="">
  93. <input @change="upload('faceimg')" id='faceimg' type="file">
  94. </div>
  95. </el-form-item>
  96. <el-form-item label="四色分布图">
  97. <div class="upload_div">
  98. <i class="el-icon-upload"></i>
  99. <img v-if="form.safecolor_img" width="100%" height="100%" :src="form.safecolor_img" alt="">
  100. <input @change="upload('safecolor_img')" id='safecolor_img' type="file">
  101. </div>
  102. </el-form-item>
  103. <el-form-item label="企业地址">
  104. <div>
  105. <el-input style="width:100%" v-model="keyword" placeholder="请输入关键词搜索"></el-input>
  106. <p>当前位置:</p>
  107. </div>
  108. <baidu-map @click="getClickInfo" @ready="onBaiduMapReady" class="map bm-view" :center="point.lng||point.lat?point:'成都'" :zoom="15" :scroll-wheel-zoom="true">
  109. <bm-view style="width: 100%; height:300px;"></bm-view>
  110. <bm-marker :position="point" :dragging="true" animation="BMAP_ANIMATION_BOUNCE">
  111. </bm-marker>
  112. <bm-local-search style="max-height:200px;overflow:auto;border:1px solid #d9d9d9;" :keyword="keyword" :auto-viewport="true"></bm-local-search>
  113. </baidu-map>
  114. </el-form-item>
  115. <el-form-item class="btn_div">
  116. <el-button @click="$router.push({path:'/company/add'})" type="info">重置</el-button>
  117. <el-button @click="save" type="primary">保存</el-button>
  118. </el-form-item>
  119. </div>
  120. </el-form>
  121. </div>
  122. </section>
  123. </template>
  124. <script>
  125. import Page from '../../components/Page';
  126. export default {
  127. components:{
  128. Page
  129. },
  130. data(){
  131. return{
  132. id:'',
  133. form:{name:'',is_active:true},
  134. BMap:null,
  135. keyword:'',
  136. point:{
  137. lng:'',
  138. lat:''
  139. },
  140. category:[],
  141. area:[],
  142. company:[]
  143. }
  144. },
  145. methods:{
  146. onBaiduMapReady(e) {
  147. const that = this
  148. this.BMap = e.BMap
  149. },
  150. getClickInfo(e) {
  151. // 调整地图中心位置
  152. this.point=e.point
  153. // 此时已经可以获取到BMap类
  154. if (this.BMap) {
  155. const that = this
  156. // Geocoder() 类进行地址解析
  157. // 创建地址解析器的实例
  158. const geoCoder = new this.BMap.Geocoder()
  159. // getLocation() 类--利用坐标获取地址的详细信息
  160. // getPoint() 类--获取位置对应的坐标
  161. geoCoder.getLocation(e.point, function(res) {
  162. const addrComponent = res.addressComponents
  163. const surroundingPois = res.surroundingPois
  164. const province = addrComponent.province
  165. const city = addrComponent.city
  166. const district = addrComponent.district
  167. let addr = addrComponent.street
  168. if (surroundingPois.length > 0 && surroundingPois[0].title) {
  169. if (addr) {
  170. addr += `-${surroundingPois[0].title}`
  171. } else {
  172. addr += `${surroundingPois[0].title}`
  173. }
  174. } else {
  175. addr += addrComponent.streetNumber
  176. }
  177. that.form.address=province+city+district+addr
  178. })
  179. }
  180. },
  181. upload(type){
  182. var file=document.getElementById(type).files;
  183. var data=new FormData();
  184. data.append("file",file[0])
  185. this.$api.uploadFile(data).then(res=>{
  186. if(res.data.code==0){
  187. let form=this.form;
  188. this.$set(form,type,res.data.data.url)
  189. this.$message({message: '上传成功!',type: 'success'});
  190. }else{
  191. this.$message.error(res.data.message);
  192. }
  193. })
  194. },
  195. getData(){
  196. if(this.id){
  197. this.$api.getEnterprise({id:this.id}).then(res=>{
  198. this.form=res.data.data
  199. })
  200. }
  201. this.$api.getEnterpriseAll().then(res=>{
  202. this.company=res.data.data;
  203. this.area=this.store.area;
  204. this.category=this.store.categorys;
  205. })
  206. },
  207. save(){
  208. var parm=this.form;
  209. if(parm.id){
  210. this.$api.updateEnterprise(parm).then(res=>{
  211. if(res.data.code==0){
  212. this.$message({message: '修改成功!',type: 'success'});
  213. this.$router.push({path:'/company'})
  214. }else{
  215. this.$message.error(res.data.message);
  216. }
  217. })
  218. }else{
  219. this.$api.saveEnterprise(parm).then(res=>{
  220. if(res.data.code==0){
  221. this.$message({message: '添加成功!',type: 'success'});
  222. this.$router.push({path:'/company'})
  223. }else{
  224. this.$message.error(res.data.message);
  225. }
  226. })
  227. }
  228. },
  229. },
  230. created(){
  231. if(this.$route.query.id){
  232. this.id=this.$route.query.id
  233. }
  234. this.getData()
  235. }
  236. }
  237. </script>