page2.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. <template>
  2. <div id="">
  3. <ul style="margin-left: 20px" v-if="false">
  4. <li class="liSty">
  5. <span>模板启用</span>
  6. <div>
  7. <el-radio-group v-model="listData.templateStatus">
  8. <el-radio :label="1">模板一</el-radio>
  9. <el-radio :label="2">模板二</el-radio>
  10. </el-radio-group>
  11. </div>
  12. </li>
  13. <li class="liSty">
  14. <span style="align-self: flex-start">LOGO图片</span>
  15. <div>
  16. <div
  17. style="
  18. width: 216px;
  19. height: 46px;
  20. border: 1px dashed #999;
  21. border-radius: 28px;
  22. line-height: 46px;
  23. text-align: center;
  24. "
  25. v-if="!listData.companyLogo"
  26. >
  27. <label for="uplose">
  28. <i class="el-icon-circle-plus-outline iconStsz"></i
  29. ></label>
  30. <input
  31. ref="file"
  32. type="file"
  33. style="display: none"
  34. id="uplose"
  35. @change="getImgFile"
  36. />
  37. </div>
  38. <div v-else class="flex_sty">
  39. <el-image
  40. style="width: 216px; height: 46px"
  41. :src="$methodsTools.splitImgHost(listData.companyLogo)"
  42. :preview-src-list="[
  43. $methodsTools.splitImgHost(listData.companyLogo),
  44. ]"
  45. >
  46. </el-image>
  47. <el-button
  48. @click="listData.companyLogo = ''"
  49. style="margin-left: 16px"
  50. type="danger"
  51. icon="el-icon-delete"
  52. circle
  53. size="mini"
  54. ></el-button>
  55. </div>
  56. <p style="font-size: 12px; color: #999">
  57. 注:建议上传logo图片是透明底色的png格式,尺寸为216px * 46px
  58. </p>
  59. </div>
  60. </li>
  61. <li class="liSty">
  62. <span style="align-self: flex-start">LOGO图片-浅色</span>
  63. <div>
  64. <div
  65. style="
  66. width: 216px;
  67. height: 46px;
  68. border: 1px dashed #999;
  69. border-radius: 28px;
  70. line-height: 46px;
  71. text-align: center;
  72. "
  73. v-if="!listData.undertone"
  74. >
  75. <label for="uplose1">
  76. <i class="el-icon-circle-plus-outline iconStsz"></i
  77. ></label>
  78. <input
  79. ref="file1"
  80. type="file"
  81. style="display: none"
  82. id="uplose1"
  83. @change="getImgFile1"
  84. />
  85. </div>
  86. <div v-else class="flex_sty" style="background-color: #eee">
  87. <el-image
  88. style="width: 216px; height: 46px"
  89. :src="$methodsTools.splitImgHost(listData.undertone)"
  90. :preview-src-list="[
  91. $methodsTools.splitImgHost(listData.undertone),
  92. ]"
  93. >
  94. </el-image>
  95. <el-button
  96. @click="listData.undertone = ''"
  97. style="margin-left: 16px"
  98. type="danger"
  99. icon="el-icon-delete"
  100. circle
  101. size="mini"
  102. ></el-button>
  103. </div>
  104. <p style="font-size: 12px; color: #999">
  105. 注:建议上传logo图片是透明底色的png格式,尺寸为216px * 46px
  106. </p>
  107. </div>
  108. </li>
  109. </ul>
  110. <div>
  111. <h4>页头设置</h4>
  112. <el-form
  113. :model="listData"
  114. :rules="rules"
  115. ref="listData"
  116. label-width="120px"
  117. class="demo-ruleForm"
  118. >
  119. <h5>电脑端</h5>
  120. <el-form-item label="模板启用:" prop="templateStatus">
  121. <el-radio-group v-model="listData.templateStatus">
  122. <el-radio :label="1">模板一</el-radio>
  123. <el-radio :label="2">模板二</el-radio>
  124. </el-radio-group></el-form-item
  125. ><el-form-item label="logo(常规):" prop="routinelogo">
  126. <div class="photoBox">
  127. <el-button
  128. type="text"
  129. v-if="!listData.routinelogo"
  130. @click="upload('routinelogo')"
  131. >+点击上传</el-button
  132. >
  133. <el-image
  134. v-else
  135. style="width: 100%; height: 100%"
  136. :src="$methodsTools.splitImgHost(listData.routinelogo)"
  137. :preview-src-list="[
  138. $methodsTools.splitImgHost(listData.routinelogo),
  139. ]"
  140. >
  141. </el-image>
  142. <i
  143. v-if="listData.routinelogo"
  144. class="el-icon-error err_icon"
  145. @click="clear('routinelogo')"
  146. ></i>
  147. </div>
  148. <p class="photo_text">
  149. 注:建议上传logo图片是透明底色的png格式,尺寸为216px * 46px
  150. </p> </el-form-item
  151. ><el-form-item label="logo(白色):" prop="whitelogo">
  152. <div class="photoBox">
  153. <el-button
  154. type="text"
  155. v-if="!listData.whitelogo"
  156. @click="upload('whitelogo')"
  157. >+点击上传</el-button
  158. >
  159. <el-image
  160. v-else
  161. style="width: 100%; height: 100%"
  162. :src="$methodsTools.splitImgHost(listData.whitelogo)"
  163. :preview-src-list="[
  164. $methodsTools.splitImgHost(listData.whitelogo),
  165. ]"
  166. >
  167. </el-image>
  168. <i
  169. v-if="listData.whitelogo"
  170. class="el-icon-error err_icon"
  171. @click="clear('whitelogo')"
  172. ></i>
  173. </div>
  174. <p class="photo_text">
  175. 注:建议上传logo图片是透明底色的png格式,尺寸为216px * 46px
  176. </p>
  177. </el-form-item>
  178. <h5>移动端</h5>
  179. <el-form-item label="logo(H5):" prop="h5logo">
  180. <div class="photoBox">
  181. <el-button
  182. type="text"
  183. v-if="!listData.h5logo"
  184. @click="upload('h5logo')"
  185. >+点击上传</el-button
  186. >
  187. <el-image
  188. v-else
  189. style="width: 100%; height: 100%"
  190. :src="$methodsTools.splitImgHost(listData.h5logo)"
  191. :preview-src-list="[$methodsTools.splitImgHost(listData.h5logo)]"
  192. >
  193. </el-image>
  194. <i
  195. v-if="listData.h5logo"
  196. class="el-icon-error err_icon"
  197. @click="clear('h5logo')"
  198. ></i>
  199. </div>
  200. <p class="photo_text">
  201. 注:建议上传logo图片是透明底色的png格式,尺寸为216px * 46px
  202. </p> </el-form-item
  203. ><el-form-item label="logo(小程序):" prop="wxlogo">
  204. <div class="photoBox">
  205. <el-button
  206. type="text"
  207. v-if="!listData.wxlogo"
  208. @click="upload('wxlogo')"
  209. >+点击上传</el-button
  210. >
  211. <el-image
  212. v-else
  213. style="width: 100%; height: 100%"
  214. :src="$methodsTools.splitImgHost(listData.wxlogo)"
  215. :preview-src-list="[$methodsTools.splitImgHost(listData.wxlogo)]"
  216. >
  217. </el-image>
  218. <i
  219. v-if="listData.wxlogo"
  220. class="el-icon-error err_icon"
  221. @click="clear('wxlogo')"
  222. ></i>
  223. </div>
  224. <p class="photo_text">
  225. 注:建议上传logo图片是透明底色的png格式,尺寸为216px * 46px
  226. </p>
  227. </el-form-item></el-form
  228. >
  229. <input
  230. ref="file"
  231. type="file"
  232. style="display: none"
  233. @change="getImgFile"
  234. />
  235. </div>
  236. <div style="text-align: center; margin-top: 20px">
  237. <el-button type="primary" @click="submit">保存</el-button>
  238. </div>
  239. </div>
  240. </template>
  241. <script>
  242. import { listConfig, updateConfig } from "@/api/system/config";
  243. export default {
  244. data() {
  245. return {
  246. initData: {
  247. configValue: {},
  248. },
  249. listData: {},
  250. rules: {
  251. templateStatus: [
  252. { required: true, message: "请选择模板启用", trigger: "change" },
  253. ],
  254. routinelogo: [
  255. { required: true, message: "请上传图片", trigger: "change" },
  256. ],
  257. whitelogo: [
  258. { required: true, message: "请上传图片", trigger: "change" },
  259. ],
  260. h5logo: [{ required: true, message: "请上传图片", trigger: "change" }],
  261. wxlogo: [{ required: true, message: "请上传图片", trigger: "change" }],
  262. },
  263. uploadProp: "",
  264. };
  265. },
  266. mounted() {
  267. this.init();
  268. },
  269. methods: {
  270. init() {
  271. listConfig({ configKey: "home.header" }).then((res) => {
  272. if (res.rows.length) {
  273. this.initData = res.rows[0];
  274. this.listData = JSON.parse(res.rows[0].configValue);
  275. }
  276. });
  277. },
  278. upload(prop) {
  279. this.uploadProp = prop;
  280. this.$refs.file.click();
  281. },
  282. getImgFile(e) {
  283. var file = e.target.files[0];
  284. if (file === undefined) {
  285. e.target.value = "";
  286. return;
  287. }
  288. if (file.size > 0.3 * 1024 * 1024) {
  289. this.$message.error("图片不得大于300kb");
  290. e.target.value = "";
  291. return;
  292. }
  293. var type = file.name.toLowerCase().split(".").splice(-1);
  294. if (type[0] != "jpg" && type[0] != "png" && type[0] != "jpeg") {
  295. this.$message.error("上传格式需为:.jpg/.png/.jpeg");
  296. e.target.value = "";
  297. return;
  298. }
  299. this.$upload
  300. .upload(file, 0)
  301. .then((res) => {
  302. this.$set(this.listData, this.uploadProp, res);
  303. })
  304. .finally(() => {
  305. e.target.value = "";
  306. this.$refs.listData.validateField(this.uploadProp);
  307. });
  308. },
  309. clear(prop) {
  310. this.listData[prop] = "";
  311. this.$refs.listData.validateField(prop);
  312. },
  313. submit() {
  314. this.$refs["listData"].validate((valid) => {
  315. if (valid) {
  316. alert("submit!",this.listData);
  317. } else {
  318. console.log("error submit!!");
  319. return false;
  320. }
  321. });
  322. // updateConfig().then((res) => {
  323. // this.$message.success("保存成功");
  324. // });
  325. },
  326. },
  327. };
  328. </script>
  329. <style lang="scss" scoped>
  330. .photoBox {
  331. width: 216px;
  332. height: 46px;
  333. text-align: center;
  334. line-height: 46px;
  335. border: 1px dashed #bdbdbd;
  336. position: relative;
  337. & > .err_icon {
  338. position: absolute;
  339. top: 4px;
  340. right: 4px;
  341. color: red;
  342. font-size: 16px;
  343. cursor: pointer;
  344. user-select: none;
  345. }
  346. }
  347. h5 {
  348. font-weight: bold;
  349. padding-left: 30px;
  350. margin: 10px 0px 16px;
  351. font-size: 14px;
  352. }
  353. .photo_text {
  354. font-size: 12px;
  355. color: #aaa;
  356. height: 20px;
  357. line-height: 20px;
  358. }
  359. </style>