page3.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. <template>
  2. <div>
  3. <el-form
  4. :model="listData"
  5. :rules="rules"
  6. ref="listData"
  7. label-width="120px"
  8. class="demo-ruleForm"
  9. >
  10. <h5>电脑端广告语</h5>
  11. <el-form-item label="展示:" prop="sloganStatus">
  12. <el-radio-group v-model="listData.sloganStatus">
  13. <el-radio :label="1">启用</el-radio>
  14. <el-radio :label="0">关闭</el-radio>
  15. </el-radio-group></el-form-item
  16. >
  17. <el-form-item
  18. label="标题:"
  19. prop="slogan"
  20. :rules="
  21. listData.sloganStatus == 1 ? rules.slogan : [{ required: false }]
  22. "
  23. >
  24. <el-input
  25. style="width: 300px"
  26. v-model="listData.slogan"
  27. clearable
  28. placeholder="输入如:为什么选择XX云学堂?"
  29. ></el-input>
  30. </el-form-item>
  31. <el-row>
  32. <el-col span="8">
  33. <el-form-item label="展示:" prop="sub1Status">
  34. <el-radio-group v-model="listData.sub1Status">
  35. <el-radio :label="1">启用</el-radio>
  36. <el-radio :label="0">关闭</el-radio>
  37. </el-radio-group></el-form-item
  38. >
  39. <el-form-item
  40. label="副标题一:"
  41. prop="sub1Title"
  42. :rules="
  43. listData.sub1Status == 1 ? rules.sub1Title : [{ required: false }]
  44. "
  45. >
  46. <el-input
  47. style="width: 300px"
  48. v-model="listData.sub1Title"
  49. clearable
  50. placeholder="输入如:人社批准"
  51. ></el-input>
  52. </el-form-item>
  53. <el-form-item
  54. label="副描述一:"
  55. prop="sub1Description"
  56. :rules="
  57. listData.sub1Status == 1
  58. ? rules.sub1Description
  59. : [{ required: false }]
  60. "
  61. >
  62. <el-input
  63. style="width: 300px"
  64. v-model="listData.sub1Description"
  65. clearable
  66. placeholder="输入如:办学许可号:人社民440000315XXXX号"
  67. ></el-input> </el-form-item
  68. ></el-col>
  69. <el-col span="8">
  70. <el-form-item label="展示:" prop="sub2Status">
  71. <el-radio-group v-model="listData.sub2Status">
  72. <el-radio :label="1">启用</el-radio>
  73. <el-radio :label="0">关闭</el-radio>
  74. </el-radio-group></el-form-item
  75. >
  76. <el-form-item
  77. label="副标题二:"
  78. prop="sub2Title"
  79. :rules="
  80. listData.sub2Status == 1 ? rules.sub2Title : [{ required: false }]
  81. "
  82. >
  83. <el-input
  84. style="width: 300px"
  85. v-model="listData.sub2Title"
  86. clearable
  87. placeholder="输入如:十年专注"
  88. ></el-input>
  89. </el-form-item>
  90. <el-form-item
  91. label="副描述二:"
  92. prop="sub2Description"
  93. :rules="
  94. listData.sub2Status == 1
  95. ? rules.sub2Description
  96. : [{ required: false }]
  97. "
  98. >
  99. <el-input
  100. style="width: 300px"
  101. v-model="listData.sub2Description"
  102. clearable
  103. placeholder="输入如:雄厚师资:教授、博士、工程师"
  104. ></el-input> </el-form-item
  105. ></el-col>
  106. <el-col span="8">
  107. <el-form-item label="展示:" prop="sub3Status">
  108. <el-radio-group v-model="listData.sub3Status">
  109. <el-radio :label="1">启用</el-radio>
  110. <el-radio :label="0">关闭</el-radio>
  111. </el-radio-group></el-form-item
  112. >
  113. <el-form-item
  114. label="副标题三:"
  115. prop="sub3Title"
  116. :rules="
  117. listData.sub3Status == 1 ? rules.sub3Title : [{ required: false }]
  118. "
  119. >
  120. <el-input
  121. style="width: 300px"
  122. v-model="listData.sub3Title"
  123. clearable
  124. placeholder="输入如:教学实力"
  125. ></el-input>
  126. </el-form-item>
  127. <el-form-item
  128. label="副描述三:"
  129. prop="sub3Description"
  130. :rules="
  131. listData.sub3Status == 1
  132. ? rules.sub3Description
  133. : [{ required: false }]
  134. "
  135. >
  136. <el-input
  137. style="width: 300px"
  138. v-model="listData.sub3Description"
  139. clearable
  140. placeholder="输入如:服务5000余家企业,近50000余人次"
  141. ></el-input> </el-form-item
  142. ></el-col>
  143. </el-row>
  144. <h5>电脑端文本</h5>
  145. <el-table :data="tableData" style="margin-top: 10px" border
  146. ><el-table-column label="文本内容" align="center">
  147. <template slot-scope="scope">
  148. <el-input
  149. v-model="scope.row['name']"
  150. ></el-input> </template></el-table-column
  151. ><el-table-column label="状态" align="center" width="180px">
  152. <template slot-scope="scope">
  153. <el-switch
  154. :active-value="1"
  155. :inactive-value="0"
  156. style="display: block"
  157. v-model="scope.row['status']"
  158. active-color="#13ce66"
  159. inactive-color="#ff4949"
  160. active-text="开启"
  161. inactive-text="关闭"
  162. >
  163. </el-switch></template
  164. ></el-table-column>
  165. <el-table-column align="center" width="200px">
  166. <template slot="header" slot-scope="scope">
  167. <el-button
  168. size="mini"
  169. type="primary"
  170. @click="tableData.push({ name: '', status: 0 })"
  171. >新增</el-button
  172. >
  173. </template>
  174. <template slot-scope="scope">
  175. <el-button
  176. type="text"
  177. icon="el-icon-upload2"
  178. @click="sort(scope.$index, 1)"
  179. ></el-button>
  180. <el-button
  181. type="text"
  182. icon="el-icon-download"
  183. @click="sort(scope.$index, 2)"
  184. ></el-button>
  185. <el-button type="text" @click="tableData.splice(scope.$index, 1)"
  186. >删除</el-button
  187. >
  188. </template></el-table-column
  189. >
  190. </el-table>
  191. <h5>版权所有</h5>
  192. <el-form-item label="展示:" prop="copyrightStatus">
  193. <el-radio-group v-model="listData.copyrightStatus">
  194. <el-radio :label="1">启用</el-radio>
  195. <el-radio :label="0">关闭</el-radio>
  196. </el-radio-group></el-form-item
  197. >
  198. <el-form-item
  199. label="名称:"
  200. prop="copyright"
  201. :rules="
  202. listData.copyrightStatus == 1
  203. ? rules.copyright
  204. : [{ required: false }]
  205. "
  206. >
  207. <el-input
  208. style="width: 300px"
  209. v-model="listData.copyright"
  210. clearable
  211. placeholder="输入"
  212. ></el-input>
  213. </el-form-item>
  214. <h5>技术支持</h5>
  215. <el-form-item label="展示:" prop="technologyStatus">
  216. <el-radio-group v-model="listData.technologyStatus">
  217. <el-radio :label="1">启用</el-radio>
  218. <el-radio :label="0">关闭</el-radio>
  219. </el-radio-group></el-form-item
  220. >
  221. <el-form-item
  222. label="名称:"
  223. prop="technology"
  224. :rules="
  225. listData.technologyStatus == 1
  226. ? rules.technology
  227. : [{ required: false }]
  228. "
  229. >
  230. <el-input
  231. style="width: 300px"
  232. v-model="listData.technology"
  233. clearable
  234. placeholder="输入"
  235. ></el-input>
  236. </el-form-item>
  237. <h5>ICP备案号</h5>
  238. <el-form-item label="备案号:" prop="icp">
  239. <el-input
  240. style="width: 300px"
  241. v-model="listData.icp"
  242. clearable
  243. placeholder="输入"
  244. ></el-input
  245. ></el-form-item>
  246. <el-form-item label="跳转工信部:" prop="miit">
  247. <el-input
  248. style="width: 300px"
  249. v-model="listData.miit"
  250. clearable
  251. placeholder="输入"
  252. ></el-input>
  253. </el-form-item>
  254. <el-form-item label="其他:" prop="otherHtml">
  255. <el-input
  256. type="textarea"
  257. :rows="4"
  258. v-model="listData.otherHtml"
  259. clearable
  260. placeholder="输入"
  261. ></el-input>
  262. </el-form-item>
  263. </el-form>
  264. <div style="margin-top: 20px">
  265. <el-button type="primary" @click="submit">保存</el-button>
  266. </div>
  267. </div>
  268. </template>
  269. <script>
  270. import { listConfig, updateConfig } from "@/api/system/config";
  271. export default {
  272. data() {
  273. return {
  274. initData: {
  275. configValue: {},
  276. },
  277. listData: {},
  278. tableData: [],
  279. rules: {
  280. sloganStatus: [
  281. { required: true, message: "请选择", trigger: "change" },
  282. ],
  283. slogan: [{ required: true, message: "请输入标题", trigger: "blur" }],
  284. sub1Status: [{ required: true, message: "请选择", trigger: "change" }],
  285. sub1Title: [
  286. { required: true, message: "请输入副标题一", trigger: "blur" },
  287. ],
  288. sub1Description: [
  289. { required: true, message: "请输入副描述一", trigger: "blur" },
  290. ],
  291. sub2Status: [{ required: true, message: "请选择", trigger: "change" }],
  292. sub2Title: [
  293. { required: true, message: "请输入副标题二", trigger: "blur" },
  294. ],
  295. sub2Description: [
  296. { required: true, message: "请输入副描述二", trigger: "blur" },
  297. ],
  298. sub3Status: [{ required: true, message: "请选择", trigger: "change" }],
  299. sub3Title: [
  300. { required: true, message: "请输入副标题三", trigger: "blur" },
  301. ],
  302. sub3Description: [
  303. { required: true, message: "请输入副描述三", trigger: "blur" },
  304. ],
  305. copyrightStatus: [
  306. { required: true, message: "请选择", trigger: "change" },
  307. ],
  308. copyright: [
  309. { required: true, message: "请输入版权所有", trigger: "blur" },
  310. ],
  311. technologyStatus: [
  312. { required: true, message: "请选择", trigger: "change" },
  313. ],
  314. technology: [
  315. { required: true, message: "请输入技术支持", trigger: "blur" },
  316. ],
  317. icp: [{ required: true, message: "请输入备案号", trigger: "blur" }],
  318. miit: [
  319. { required: true, message: "请输入工信部网站", trigger: "blur" },
  320. ],
  321. },
  322. };
  323. },
  324. mounted() {
  325. this.init();
  326. },
  327. methods: {
  328. sort(index, status) {
  329. var goIndex;
  330. const ary = this.tableData[index];
  331. if (status == 1) {
  332. if (index == 0) {
  333. goIndex = this.tableData.length - 1;
  334. } else {
  335. goIndex = index - 1;
  336. }
  337. }
  338. if (status == 2) {
  339. if (index == this.tableData.length - 1) {
  340. goIndex = 0;
  341. } else {
  342. goIndex = index + 1;
  343. }
  344. }
  345. let tableData = JSON.parse(JSON.stringify(this.tableData));
  346. tableData.splice(index, 1);
  347. tableData.splice(goIndex, 0, ary);
  348. this.tableData = tableData;
  349. },
  350. init() {
  351. listConfig({ configKey: "client.config" }).then((res) => {
  352. if (res.rows.length) {
  353. this.initData = res.rows[0];
  354. let configValue = JSON.parse(res.rows[0].configValue) || {};
  355. this.$nextTick(() => {
  356. this.listData = configValue.footer || {};
  357. this.tableData = this.listData.tableData || [];
  358. });
  359. }
  360. });
  361. },
  362. submit() {
  363. this.$refs["listData"].validate((valid) => {
  364. if (valid) {
  365. this.listData.tableData = this.tableData;
  366. let initData = JSON.parse(JSON.stringify(this.initData));
  367. initData.configValue = JSON.parse(initData.configValue);
  368. initData.configValue["footer"] = this.listData;
  369. initData.configValue = JSON.stringify(initData.configValue);
  370. updateConfig(initData).then((res) => {
  371. this.$message.success("保存成功");
  372. this.init();
  373. });
  374. } else {
  375. console.log("error submit!!");
  376. return false;
  377. }
  378. });
  379. },
  380. },
  381. };
  382. </script>
  383. <style lang="scss" scoped>
  384. h5 {
  385. font-weight: bold;
  386. padding-left: 30px;
  387. margin: 10px 0px 16px;
  388. font-size: 14px;
  389. }
  390. </style>