数字化园区前端项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <!-- 其他信息 -->
  2. <template>
  3. <div class="basic_info_box">
  4. <div class="title">
  5. 其他信息:
  6. </div>
  7. <table class="table_box" cellspacing="0">
  8. <tr>
  9. <td class="table_title">企业优势:</td>
  10. <td class="content">
  11. <el-input
  12. v-if="companyInfo.enterpriseAdvantage"
  13. :disabled="!isEditing"
  14. :resize="isEditing ? 'vertical' : ' none'"
  15. type="textarea"
  16. maxlength="200"
  17. v-model="companyInfo.enterpriseAdvantage"
  18. ></el-input>
  19. <span v-else>--</span>
  20. </td>
  21. </tr>
  22. <tr>
  23. <td class="table_title">企业文化:</td>
  24. <td class="content">
  25. <el-input
  26. v-if="companyInfo.enterpriseCulture"
  27. :disabled="!isEditing"
  28. :resize="isEditing ? 'vertical' : ' none'"
  29. type="textarea"
  30. maxlength="200"
  31. v-model="companyInfo.enterpriseCulture"
  32. ></el-input>
  33. <span v-else>--</span>
  34. </td>
  35. </tr>
  36. <tr>
  37. <td class="table_title">企业风采:</td>
  38. <td class="content">
  39. <div style="display:flex" v-if="!isEditing">
  40. <template v-if="uploadFileList.length > 0">
  41. <img
  42. v-for="(item, index) in uploadFileList"
  43. :key="index"
  44. class="company_img"
  45. :src="formatImg(item)"
  46. alt="企业风采"
  47. />
  48. </template>
  49. <span v-else>--</span>
  50. </div>
  51. <div v-else class="img_box">
  52. <el-upload
  53. :limit="5"
  54. class="avatar-uploader"
  55. :file-list="fileList"
  56. action="#"
  57. list-type="picture-card"
  58. accept=".jpg,.png,.jpeg"
  59. :http-request="
  60. file => {
  61. afterReadUrl(file);
  62. }
  63. "
  64. :before-remove="handleBeforeRemove"
  65. >
  66. <div slot="default" class="upload_text">
  67. <img
  68. class="company_img"
  69. src="@assets/image/company/bg_upload.png"
  70. alt=""
  71. />
  72. </div>
  73. </el-upload>
  74. </div>
  75. </td>
  76. </tr>
  77. <tr>
  78. <td class="table_title">其他信息:</td>
  79. <td class="content">
  80. <div>
  81. <el-input
  82. v-if="companyInfo.otherInfo"
  83. :disabled="!isEditing"
  84. :resize="isEditing ? 'vertical' : ' none'"
  85. type="textarea"
  86. v-model="companyInfo.otherInfo"
  87. maxlength="200"
  88. ></el-input>
  89. <span v-else>--</span>
  90. </div>
  91. </td>
  92. </tr>
  93. </table>
  94. <el-dialog :visible.sync="dialogVisible">
  95. <img width="100%" :src="dialogImageUrl" alt="" />
  96. </el-dialog>
  97. </div>
  98. </template>
  99. <script>
  100. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  101. //例如:import 《组件名称》 from '《组件路径》';
  102. import { uploadFile } from "@mixin/uploadFile";
  103. import { formatImg } from "@/utils/common.js";
  104. export default {
  105. props: {
  106. companyInfo: {
  107. type: Object,
  108. default: () => {},
  109. },
  110. isEditing: {
  111. type: Boolean,
  112. default: false,
  113. },
  114. },
  115. //import引入的组件需要注入到对象中才能使用
  116. components: {},
  117. mixins: [uploadFile],
  118. data() {
  119. //这里存放数据
  120. return {
  121. fileList: [],
  122. uploadFileList: [], // 上传的图片数组
  123. dialogImageUrl: "",
  124. dialogVisible: false,
  125. };
  126. },
  127. //监听属性 类似于data概念
  128. computed: {},
  129. //监控data中的数据变化
  130. watch: {},
  131. //方法集合
  132. methods: {
  133. formatImg,
  134. // 删除图片
  135. handleBeforeRemove(file, fileList) {
  136. console.log(fileList);
  137. const index = fileList.findIndex(e => e.uid === file.uid);
  138. this.uploadFileList.splice(index, 1);
  139. },
  140. handlePictureCardPreview(file) {
  141. this.dialogImageUrl = file.url;
  142. this.dialogVisible = true;
  143. },
  144. async afterReadUrl(file) {
  145. let photo2Url = await this.uploadFile(file, null);
  146. this.uploadFileList.push(photo2Url);
  147. // console.log(this.uploadFileList);
  148. },
  149. },
  150. //生命周期 - 创建完成(可以访问当前this实例)
  151. created() {
  152. this.uploadFileList = this.companyInfo.enterpriseFeatures
  153. ? JSON.parse(this.companyInfo.enterpriseFeatures)
  154. : [];
  155. if (this.companyInfo.enterpriseFeatures) {
  156. this.uploadFileList.forEach(item => {
  157. this.fileList.push({
  158. url: this.formatImg(item),
  159. });
  160. });
  161. }
  162. },
  163. //生命周期 - 挂载完成(可以访问DOM元素)
  164. mounted() {},
  165. };
  166. </script>
  167. <style lang="scss" scoped>
  168. //@import url(); 引入公共css类
  169. .basic_info_box {
  170. width: 100%;
  171. .title {
  172. @include font(16px, #334a5f);
  173. font-weight: 600;
  174. padding: 20px 0;
  175. @include border-box;
  176. }
  177. .table_box {
  178. width: 100%;
  179. border: 1px solid #bcd8e9;
  180. tr {
  181. height: 48px;
  182. td {
  183. @include font(14px, #334a5f);
  184. padding: 10px;
  185. @include border-box;
  186. }
  187. > td + td {
  188. border-left: 1px solid #bcd8e9;
  189. }
  190. }
  191. > tr + tr {
  192. td {
  193. border-top: 1px solid #bcd8e9;
  194. }
  195. }
  196. .table_title {
  197. height: 48px;
  198. @include font(14px, #637485);
  199. @include size(110px, auto);
  200. background: #f2f7fb;
  201. text-align: center;
  202. }
  203. .content {
  204. padding: 20px;
  205. @include border-box;
  206. .avatar-uploader {
  207. // @include size(120px, 96px);
  208. @include flex(row, flex-start, center, wrap);
  209. .upload_text {
  210. @include border-box;
  211. @include size(120px, 96px);
  212. }
  213. ::v-deep .el-upload {
  214. @include size(120px, 96px);
  215. cursor: pointer;
  216. position: relative;
  217. overflow: hidden;
  218. margin-bottom: 8px;
  219. }
  220. }
  221. ::v-deep .el-upload-list--picture-card {
  222. display: inline-flex;
  223. }
  224. ::v-deep .el-upload-list--picture-card .el-upload-list__item {
  225. @include size(120px, 96px);
  226. border: none;
  227. border-radius: 0px;
  228. margin-right: 25px;
  229. > div {
  230. width: 100%;
  231. height: 100%;
  232. }
  233. }
  234. ::v-deep .el-upload--picture-card {
  235. border: none;
  236. }
  237. .company_img {
  238. @include size(120px, 96px);
  239. margin-right: 25px;
  240. }
  241. }
  242. ::v-deep .el-textarea.is-disabled .el-textarea__inner {
  243. background: #fff;
  244. border: none;
  245. padding: 5px 0;
  246. @include font(14px, #334a5f);
  247. }
  248. }
  249. }
  250. </style>