index.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <!--违规设置-->
  2. <template>
  3. <div class="app-container violation-site">
  4. <p class="title-p">违规设置</p>
  5. <el-form class="form-content scrollbar-box" ref="form" :model="form" label-width="100px" :rules="rules">
  6. <!--<el-form-item label="处理方式设置:" label-width="240px" style="margin-top: 22px;">-->
  7. <!--<div style="display: flex">-->
  8. <!--<el-input-->
  9. <!--v-model="violationVal"-->
  10. <!--placeholder="请输入处理方式名称"-->
  11. <!--maxLength="10"-->
  12. <!--clearable-->
  13. <!--size="small"-->
  14. <!--/>-->
  15. <!--<p class="add-button-two-90"-->
  16. <!--style="margin-left:20px;width:140px;"-->
  17. <!--@click="addViolationVal"-->
  18. <!--&gt;<i class="el-icon-plus"></i>添加处理方式</p>-->
  19. <!--</div>-->
  20. <!--</el-form-item>-->
  21. <!--<div class="violationType-for-max-box">-->
  22. <!--<div class="violationType-for-min-box" v-for="(item,index) in violationTypeList">-->
  23. <!--<div>-->
  24. <!--<p>{{item.violationVal}}</p>-->
  25. <!--</div>-->
  26. <!--</div>-->
  27. <!--<div class="violationType-for-min-box" v-for="(item,index) in form.violationType">-->
  28. <!--<div>-->
  29. <!--<p>{{item.violationVal}}</p>-->
  30. <!--<i class="el-icon-circle-close" @click="delViolationVal(index)"></i>-->
  31. <!--</div>-->
  32. <!--</div>-->
  33. <!--</div>-->
  34. <el-form-item label="负面清单次数设置:" prop="remake" label-width="240px">
  35. <el-input
  36. v-model="form.remake"
  37. placeholder="请输入负面清单次数"
  38. maxLength="5"
  39. clearable
  40. size="small">
  41. <template slot="append">次</template>
  42. </el-input>
  43. </el-form-item>
  44. <el-form-item label="违规项设置:" label-width="240px">
  45. <div style="display: flex">
  46. <el-input
  47. v-model="violationName"
  48. placeholder="请输入违规项名称"
  49. clearable
  50. maxLength="14"
  51. size="small"
  52. />
  53. <p class="add-button-two-90"
  54. style="margin-left:20px;width:140px;"
  55. @click="addViolationMeth"
  56. ><i class="el-icon-plus"></i>添加违规项</p>
  57. </div>
  58. </el-form-item>
  59. <div v-for="(item,index) in form.violationMeth">
  60. <el-form-item :label="item.violationName+':'" :rules="rules.violationVal" :prop="'violationMeth.'+ index +'.violationVal'" label-width="240px">
  61. <div class="violationMeth-for-box">
  62. <el-input
  63. v-model="item.violationVal"
  64. placeholder="请输入扣分值"
  65. clearable
  66. maxLength="5"
  67. size="small">
  68. <template slot="append">分</template>
  69. </el-input>
  70. <i class="el-icon-circle-close" @click="delViolationMeth(index)"></i>
  71. </div>
  72. </el-form-item>
  73. </div>
  74. </el-form>
  75. <div class="form-bottom-button-box" v-hasPermi="['laboratory:site:add']">
  76. <p class="null-p-button"></p>
  77. <el-button @click="getList">重 置</el-button>
  78. <el-button type="primary" @click="submitForm">保 存</el-button>
  79. <p class="null-p-button"></p>
  80. </div>
  81. </div>
  82. </template>
  83. <script>
  84. import { listSite, violationSite } from "@/api/laboratory/violationSite";
  85. export default {
  86. name: "Site",
  87. data() {
  88. return {
  89. //数据
  90. violationTypeList:[
  91. {violationVal:"警告"},{violationVal:"约谈"},{violationVal:"考试"},{violationVal:"学习"},{violationVal:"做题"}
  92. ],
  93. form:{
  94. violationType:[],
  95. remake:"",
  96. violationMeth:[
  97. {
  98. violationName:"",
  99. violationVal:"",
  100. }
  101. ],
  102. },
  103. violationVal:"",
  104. violationName:"",
  105. // 表单校验
  106. rules: {
  107. remake: [
  108. { required: true, message: "请输入负面清单次数", trigger: "blur" },
  109. { required: true, message: "请输入负面清单次数", validator: this.spaceJudgment, trigger: "blur" },
  110. { required: true, message: "只能输入数字", validator: this.isNum, trigger: "blur" },
  111. ],
  112. violationVal: [
  113. { required: true, message: "请输入扣分值", trigger: "blur" },
  114. { required: true, message: "请输入扣分值", validator: this.spaceJudgment, trigger: "blur" },
  115. { required: true, message: "只能输入数字", validator: this.isNum, trigger: "blur" },
  116. ],
  117. }
  118. };
  119. },
  120. created() {
  121. this.getList();
  122. },
  123. methods: {
  124. //添加处理方式
  125. addViolationVal(){
  126. let self = this;
  127. if(!this.violationVal){
  128. this.msgError("请先输入处理方式名称")
  129. return
  130. }
  131. for(let i=0;i<self.form.violationType.length;i++){
  132. if(self.violationVal == self.form.violationType[i].violationVal){
  133. self.msgError("已存在相同名称的处理方式");
  134. return
  135. }
  136. }
  137. let obj = {
  138. violationVal:this.violationVal,
  139. };
  140. this.form.violationType.push(obj);
  141. this.violationVal = "";
  142. },
  143. //删除处理方式
  144. delViolationVal(index){
  145. this.form.violationType.splice(index,1);
  146. },
  147. //添加违规项
  148. addViolationMeth(){
  149. let self = this;
  150. if(!this.violationName){
  151. this.msgError("请先输入违规项名称");
  152. return
  153. }
  154. for(let i=0;i<self.form.violationMeth.length;i++){
  155. if(self.violationName == self.form.violationMeth[i].violationName){
  156. self.msgError("已存在相同名称的违规项");
  157. return
  158. }
  159. }
  160. let obj = {
  161. violationName:this.violationName,
  162. violationVal:"",
  163. };
  164. this.form.violationMeth.push(obj);
  165. this.violationName = "";
  166. },
  167. //删除违规项
  168. delViolationMeth(index){
  169. this.form.violationMeth.splice(index,1);
  170. },
  171. /** 查询数据 */
  172. getList() {
  173. listSite({}).then( response => {
  174. this.$set(this,'form',response.data)
  175. });
  176. },
  177. /** 提交按钮 */
  178. submitForm() {
  179. this.$refs["form"].validate(valid => {
  180. if (valid) {
  181. violationSite(this.form).then( response => {
  182. this.getList();
  183. this.msgSuccess("保存成功")
  184. });
  185. }
  186. });
  187. },
  188. }
  189. };
  190. </script>
  191. <style scoped lang="scss">
  192. .violation-site {
  193. display: flex!important;
  194. flex-direction: column;
  195. box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
  196. .title-p{
  197. margin:0;
  198. line-height:80px;
  199. font-size:18px;
  200. color:#0045AF;
  201. border-bottom:2px solid #E0E0E0;
  202. padding:0 20px;
  203. }
  204. .form-content{
  205. overflow-y: scroll;
  206. padding:20px 20px 0;
  207. flex:1;
  208. .violationType-for-max-box{
  209. padding:0 240px;
  210. margin-bottom:2px;
  211. .violationType-for-min-box{
  212. display: inline-block;
  213. margin:0 20px 20px 0;
  214. div{
  215. display: flex;
  216. /*border:1px solid #dedede;*/
  217. background: #CCE6FE;
  218. border-radius:4px;
  219. color:#0183FA;
  220. padding:6px 10px;
  221. min-width:100px;
  222. *{
  223. margin:0;
  224. padding:0;
  225. }
  226. p{
  227. font-size:14px;
  228. flex:1;
  229. line-height:20px;
  230. text-align: center;
  231. font-weight:500;
  232. }
  233. i{
  234. margin-left:10px;
  235. cursor:pointer;
  236. line-height:20px;
  237. font-size:16px;
  238. }
  239. i:hover{
  240. color:#E65D6E;
  241. }
  242. }
  243. }
  244. }
  245. .violationMeth-for-box{
  246. display: flex;
  247. i{
  248. color:#666;
  249. margin-left:20px;
  250. cursor:pointer;
  251. line-height:40px;
  252. font-size:20px;
  253. }
  254. i:hover{
  255. color:#E65D6E;
  256. }
  257. }
  258. .annotation-span{
  259. margin-left:20px;
  260. font-size:14px;
  261. font-weight:500;
  262. color:#999999;
  263. }
  264. }
  265. .form-bottom-button-box{
  266. height:80px;
  267. padding:20px;
  268. display: flex;
  269. .null-p-button{
  270. flex:1;
  271. }
  272. }
  273. }
  274. </style>