school_config.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <template>
  2. <el-container>
  3. <el-main class="el-main-padding">
  4. <el-form
  5. :model="ruleForm"
  6. :rules="rules"
  7. ref="ruleForm"
  8. label-width="200px"
  9. class="demo-ruleForm"
  10. :inline-message="true"
  11. >
  12. <el-form-item v-if="isSuperAdmin" label="学校">
  13. <el-select
  14. v-model="ruleForm.orgId"
  15. placeholder="请选择"
  16. style="width: 180px"
  17. >
  18. <el-option
  19. v-for="item in rootOrgList"
  20. :label="item.name"
  21. :value="item.id"
  22. :key="item.id"
  23. />
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item
  27. label="使用第三方登录"
  28. prop="STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY"
  29. >
  30. <el-switch
  31. v-model="ruleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY"
  32. on-text="是"
  33. off-text="否"
  34. ></el-switch>
  35. </el-form-item>
  36. <el-form-item
  37. label="第三方登录页地址"
  38. prop="STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL"
  39. >
  40. <el-input
  41. :disabled="!ruleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY"
  42. v-model="ruleForm.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL"
  43. placeholder="请输入第三方登录页地址,以http://或https://开头"
  44. class="input-width"
  45. ></el-input>
  46. </el-form-item>
  47. <el-form-item label="展示我司logo" prop="SHOW_QMTH_LOGO">
  48. <el-switch
  49. v-model="ruleForm.SHOW_QMTH_LOGO"
  50. on-text="是"
  51. off-text="否"
  52. ></el-switch>
  53. </el-form-item>
  54. <el-form-item
  55. label="展示APP下载二维码"
  56. prop="SHOW_STUDENT_CLIENT_APP_QRCODE"
  57. >
  58. <el-switch
  59. v-model="ruleForm.SHOW_STUDENT_CLIENT_APP_QRCODE"
  60. on-text="是"
  61. off-text="否"
  62. ></el-switch>
  63. </el-form-item>
  64. <el-form-item label="开放APP" prop="APP_ENABLED">
  65. <el-switch
  66. v-model="ruleForm.APP_ENABLED"
  67. on-text="是"
  68. off-text="否"
  69. ></el-switch>
  70. </el-form-item>
  71. <el-form-item label="开放微信小程序作答" prop="WEIXIN_ANSWER_ENABLED">
  72. <el-switch
  73. v-model="ruleForm.WEIXIN_ANSWER_ENABLED"
  74. on-text="是"
  75. off-text="否"
  76. ></el-switch>
  77. </el-form-item>
  78. <el-form-item
  79. label="活体检测方案"
  80. prop="IDENTIFICATION_OF_LIVING_BODY_SCHEME"
  81. >
  82. <el-radio-group
  83. v-model="ruleForm.IDENTIFICATION_OF_LIVING_BODY_SCHEME"
  84. class="input"
  85. >
  86. <el-radio label="S1">旧方案</el-radio>
  87. <el-radio label="S2">新方案</el-radio>
  88. </el-radio-group>
  89. </el-form-item>
  90. <el-form-item>
  91. <el-button
  92. :disabled="btnSaveDiabled"
  93. type="primary"
  94. @click="submitForm('ruleForm')"
  95. >保 存
  96. </el-button>
  97. </el-form-item>
  98. </el-form>
  99. </el-main>
  100. </el-container>
  101. </template>
  102. <script>
  103. import { mapState } from "vuex";
  104. import { CORE_API } from "@/constants/constants.js";
  105. export default {
  106. data() {
  107. var validateUrl = (rule, value, callback) => {
  108. var ass = this.ruleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY;
  109. var reg = /^(http:\/\/|https:\/\/){1}.*$/;
  110. if (ass && !value) {
  111. return callback(new Error("请输入第三方登录页地址"));
  112. } else if (ass && !value.match(reg)) {
  113. return callback(new Error("url以http://或https://开头"));
  114. } else {
  115. callback();
  116. }
  117. };
  118. return {
  119. rootOrgList: [],
  120. propertyGroupId: "",
  121. formDataChanged: false,
  122. originalRuleForm: {},
  123. ruleForm: {
  124. relatedPropertyGroupIdList: [],
  125. orgId: null,
  126. STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY: false,
  127. SHOW_STUDENT_CLIENT_APP_QRCODE: false,
  128. STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL: "",
  129. SHOW_QMTH_LOGO: false,
  130. APP_ENABLED: false,
  131. WEIXIN_ANSWER_ENABLED: false,
  132. IDENTIFICATION_OF_LIVING_BODY_SCHEME: "",
  133. properties: {
  134. STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY: false,
  135. SHOW_STUDENT_CLIENT_APP_QRCODE: false,
  136. STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL: "",
  137. SHOW_QMTH_LOGO: false,
  138. APP_ENABLED: false,
  139. WEIXIN_ANSWER_ENABLED: false,
  140. IDENTIFICATION_OF_LIVING_BODY_SCHEME: ""
  141. }
  142. },
  143. rules: {
  144. STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL: [
  145. {
  146. validator: validateUrl,
  147. trigger: "change"
  148. }
  149. ]
  150. }
  151. };
  152. },
  153. methods: {
  154. submitForm(formName) {
  155. this.$refs[formName].validate(valid => {
  156. if (valid) {
  157. this.ruleForm.properties.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY = this.ruleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY;
  158. this.ruleForm.properties.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL = this.ruleForm.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL;
  159. this.ruleForm.properties.SHOW_QMTH_LOGO = this.ruleForm.SHOW_QMTH_LOGO;
  160. this.ruleForm.properties.APP_ENABLED = this.ruleForm.APP_ENABLED;
  161. this.ruleForm.properties.WEIXIN_ANSWER_ENABLED = this.ruleForm.WEIXIN_ANSWER_ENABLED;
  162. this.ruleForm.properties.SHOW_STUDENT_CLIENT_APP_QRCODE = this.ruleForm.SHOW_STUDENT_CLIENT_APP_QRCODE;
  163. this.ruleForm.properties.IDENTIFICATION_OF_LIVING_BODY_SCHEME = this.ruleForm.IDENTIFICATION_OF_LIVING_BODY_SCHEME;
  164. this.$httpWithMsg
  165. .put(CORE_API + "/org/saveOrgProperties", this.ruleForm)
  166. .then(
  167. () => {
  168. this.$notify({
  169. message: "保存成功",
  170. type: "success"
  171. });
  172. this.originalRuleForm = Object.assign({}, this.ruleForm);
  173. this.formDataChanged = false;
  174. },
  175. () => {}
  176. );
  177. } else {
  178. return false;
  179. }
  180. });
  181. },
  182. initForm() {
  183. this.ruleForm.relatedPropertyGroupIdList = ["studentClientConfig"];
  184. var url =
  185. CORE_API +
  186. "/org/getOrgPropertiesByGroupWithoutCache/" +
  187. this.ruleForm.orgId +
  188. "/" +
  189. this.propertyGroupId;
  190. this.$httpWithMsg.get(url).then(response => {
  191. if (response) {
  192. this.ruleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY =
  193. response.data.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY == "true";
  194. this.ruleForm.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL =
  195. response.data.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL;
  196. this.ruleForm.SHOW_QMTH_LOGO = response.data.SHOW_QMTH_LOGO == "true";
  197. this.ruleForm.APP_ENABLED = response.data.APP_ENABLED == "true";
  198. this.ruleForm.WEIXIN_ANSWER_ENABLED =
  199. response.data.WEIXIN_ANSWER_ENABLED == "true";
  200. this.ruleForm.SHOW_STUDENT_CLIENT_APP_QRCODE =
  201. response.data.SHOW_STUDENT_CLIENT_APP_QRCODE == "true";
  202. this.ruleForm.IDENTIFICATION_OF_LIVING_BODY_SCHEME =
  203. response.data.IDENTIFICATION_OF_LIVING_BODY_SCHEME;
  204. this.originalRuleForm = Object.assign({}, this.ruleForm);
  205. } else {
  206. this.$notify({
  207. message: "学校设置信息暂未初始化,请立即初始化",
  208. type: "warning"
  209. });
  210. }
  211. });
  212. }
  213. },
  214. created() {
  215. this.ruleForm.orgId = this.user.rootOrgId;
  216. this.propertyGroupId = "config4Edit1";
  217. if (this.isSuperAdmin) {
  218. this.$httpWithMsg.get(CORE_API + "/org/getRootOrgList").then(response => {
  219. this.rootOrgList = response.data;
  220. });
  221. }
  222. this.initForm();
  223. },
  224. watch: {
  225. "ruleForm.orgId": {
  226. handler: function() {
  227. this.initForm();
  228. }
  229. },
  230. "ruleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY": {
  231. handler: function(val) {
  232. this.$refs["ruleForm"].validate();
  233. if (!val) {
  234. this.ruleForm.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL = "";
  235. }
  236. }
  237. },
  238. ruleForm: {
  239. deep: true,
  240. handler: function(newForm) {
  241. if (Object.keys(this.originalRuleForm).length > 0) {
  242. this.formDataChanged = !(
  243. newForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY ==
  244. this.originalRuleForm.STUDENT_CLIENT_ACCESS_FROM_THIRD_PARTY &&
  245. newForm.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL ==
  246. this.originalRuleForm.STUDENT_CLIENT_THIRD_PARTY_LOGIN_URL &&
  247. newForm.SHOW_QMTH_LOGO == this.originalRuleForm.SHOW_QMTH_LOGO &&
  248. newForm.APP_ENABLED == this.originalRuleForm.APP_ENABLED &&
  249. newForm.WEIXIN_ANSWER_ENABLED ==
  250. this.originalRuleForm.WEIXIN_ANSWER_ENABLED &&
  251. newForm.SHOW_STUDENT_CLIENT_APP_QRCODE ==
  252. this.originalRuleForm.SHOW_STUDENT_CLIENT_APP_QRCODE &&
  253. newForm.IDENTIFICATION_OF_LIVING_BODY_SCHEME ==
  254. this.originalRuleForm.IDENTIFICATION_OF_LIVING_BODY_SCHEME
  255. );
  256. } else {
  257. this.formDataChanged = false;
  258. }
  259. }
  260. }
  261. },
  262. computed: {
  263. ...mapState({ user: state => state.user }),
  264. btnSaveDiabled() {
  265. console.log(this.formDataChanged);
  266. return !this.formDataChanged;
  267. },
  268. isSuperAdmin() {
  269. return this.user.roleList.some(role => role.roleCode == "SUPER_ADMIN");
  270. }
  271. }
  272. };
  273. </script>
  274. <style scoped>
  275. .input-width {
  276. width: 638px;
  277. }
  278. </style>