Commit 248d518edaaef5c140ce422a0ed5ab19a08c3771
1 parent
e9060230
新增考题选择
Showing
13 changed files
with
474 additions
and
4 deletions
src/main/java/com/bsth/controller/subject/SubjectController.java
| ... | ... | @@ -3,15 +3,51 @@ package com.bsth.controller.subject; |
| 3 | 3 | import com.bsth.controller.BaseController; |
| 4 | 4 | import com.bsth.entity.subject.Subject; |
| 5 | 5 | import com.bsth.service.subject.SubjectService; |
| 6 | +import com.bsth.service.subject.SubjectUserService; | |
| 7 | +import org.slf4j.Logger; | |
| 8 | +import org.slf4j.LoggerFactory; | |
| 6 | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 7 | 10 | import org.springframework.web.bind.annotation.RequestMapping; |
| 11 | +import org.springframework.web.bind.annotation.RequestParam; | |
| 8 | 12 | import org.springframework.web.bind.annotation.RestController; |
| 9 | 13 | |
| 14 | +import java.util.HashMap; | |
| 15 | +import java.util.List; | |
| 16 | +import java.util.Map; | |
| 17 | + | |
| 10 | 18 | @RestController |
| 11 | 19 | @RequestMapping("subject") |
| 12 | 20 | public class SubjectController extends BaseController<Subject, Integer> { |
| 13 | 21 | |
| 22 | + private static final Logger LOGGER = LoggerFactory.getLogger(SubjectController.class); | |
| 23 | + | |
| 14 | 24 | @Autowired |
| 15 | 25 | SubjectService subjectService; |
| 16 | 26 | |
| 27 | + @Autowired | |
| 28 | + SubjectUserService subjectUserService; | |
| 29 | + | |
| 30 | + @RequestMapping("/subjectList") | |
| 31 | + public List<Subject> subjectList(){ | |
| 32 | + List<Subject> r=subjectService.subjectAll(); | |
| 33 | + return r; | |
| 34 | + } | |
| 35 | + | |
| 36 | + @RequestMapping("/selectSubject") | |
| 37 | + public Map<String,String> selectSubject(@RequestParam() Map<String, Object> map){ | |
| 38 | + Map<String,String> result=new HashMap<>(); | |
| 39 | + try { | |
| 40 | + String[] arr=map.get("ids").toString().split(","); | |
| 41 | + subjectUserService.selectSubject(arr); | |
| 42 | + result.put("result","成功"); | |
| 43 | + return result; | |
| 44 | + } catch (Exception e) { | |
| 45 | + LOGGER.error("",e); | |
| 46 | + // TODO: handle exception | |
| 47 | + result.put("result","失败"); | |
| 48 | + return result; | |
| 49 | + } | |
| 50 | + } | |
| 51 | + | |
| 52 | + | |
| 17 | 53 | } | ... | ... |
src/main/java/com/bsth/entity/subject/Subject.java
| ... | ... | @@ -22,6 +22,14 @@ public class Subject { |
| 22 | 22 | //应对答案 |
| 23 | 23 | private String answer; |
| 24 | 24 | |
| 25 | + public Integer getId() { | |
| 26 | + return id; | |
| 27 | + } | |
| 28 | + | |
| 29 | + public void setId(Integer id) { | |
| 30 | + this.id = id; | |
| 31 | + } | |
| 32 | + | |
| 25 | 33 | public String getSubjectText() { |
| 26 | 34 | return subjectText; |
| 27 | 35 | } | ... | ... |
src/main/java/com/bsth/entity/subject/SubjectUser.java
| ... | ... | @@ -21,6 +21,10 @@ public class SubjectUser { |
| 21 | 21 | @ManyToOne |
| 22 | 22 | private Subject subjectId; |
| 23 | 23 | |
| 24 | + //用户Id | |
| 25 | + private Integer createBy; | |
| 26 | + | |
| 27 | + | |
| 24 | 28 | public Integer getId() { |
| 25 | 29 | return id; |
| 26 | 30 | } |
| ... | ... | @@ -61,5 +65,11 @@ public class SubjectUser { |
| 61 | 65 | this.result = result; |
| 62 | 66 | } |
| 63 | 67 | |
| 64 | - | |
| 68 | + public Integer getCreateBy() { | |
| 69 | + return createBy; | |
| 70 | + } | |
| 71 | + | |
| 72 | + public void setCreateBy(Integer createBy) { | |
| 73 | + this.createBy = createBy; | |
| 74 | + } | |
| 65 | 75 | } | ... | ... |
src/main/java/com/bsth/repository/subject/SubjectRepository.java
| ... | ... | @@ -2,7 +2,13 @@ package com.bsth.repository.subject; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.entity.subject.Subject; |
| 4 | 4 | import com.bsth.repository.BaseRepository; |
| 5 | +import org.springframework.data.jpa.repository.Query; | |
| 6 | + | |
| 7 | +import java.util.List; | |
| 5 | 8 | |
| 6 | 9 | public interface SubjectRepository extends BaseRepository<Subject, Integer> { |
| 10 | + | |
| 11 | + @Query(value = "SELECT s FROM Subject s ") | |
| 12 | + List<Subject> subjectAll(); | |
| 7 | 13 | |
| 8 | 14 | } | ... | ... |
src/main/java/com/bsth/repository/subject/SubjectUserRepository.java
| ... | ... | @@ -29,4 +29,7 @@ public interface SubjectUserRepository extends BaseRepository<SubjectUser, Integ |
| 29 | 29 | + " order by su.user_id",nativeQuery=true) |
| 30 | 30 | List<Object[]> searchSubjectUserDetail(String rq, String userId); |
| 31 | 31 | |
| 32 | + @Modifying | |
| 33 | + @Query(value = "delete from SubjectUser s where s.rq=?1 and s.userId in ( ?2 )") | |
| 34 | + void deleteSubjectUserByUserIds(String date, List<Integer> userIds); | |
| 32 | 35 | } | ... | ... |
src/main/java/com/bsth/service/subject/SubjectService.java
| ... | ... | @@ -3,5 +3,9 @@ package com.bsth.service.subject; |
| 3 | 3 | import com.bsth.entity.subject.Subject; |
| 4 | 4 | import com.bsth.service.BaseService; |
| 5 | 5 | |
| 6 | +import java.util.List; | |
| 7 | + | |
| 6 | 8 | public interface SubjectService extends BaseService<Subject, Integer> { |
| 9 | + | |
| 10 | + List<Subject> subjectAll(); | |
| 7 | 11 | } | ... | ... |
src/main/java/com/bsth/service/subject/SubjectUserService.java
| ... | ... | @@ -16,4 +16,6 @@ public interface SubjectUserService extends BaseService<SubjectUser, Integer> { |
| 16 | 16 | List<Map<String,Object>> subjectUserList(Map<String, Object> map); |
| 17 | 17 | |
| 18 | 18 | List<Map<String,Object>> subjectUserDetail(Map<String, Object> map); |
| 19 | + | |
| 20 | + void selectSubject(String[] arr) throws Exception; | |
| 19 | 21 | } | ... | ... |
src/main/java/com/bsth/service/subject/impl/SubjectServiceImpl.java
| 1 | 1 | package com.bsth.service.subject.impl; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.entity.subject.Subject; |
| 4 | +import com.bsth.repository.subject.SubjectRepository; | |
| 4 | 5 | import com.bsth.service.impl.BaseServiceImpl; |
| 5 | 6 | import com.bsth.service.subject.SubjectService; |
| 7 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 6 | 8 | import org.springframework.stereotype.Service; |
| 7 | 9 | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 8 | 12 | @Service |
| 9 | 13 | public class SubjectServiceImpl extends BaseServiceImpl<Subject, Integer> implements SubjectService { |
| 14 | + | |
| 15 | + @Autowired | |
| 16 | + SubjectRepository subjectRepository; | |
| 17 | + | |
| 18 | + @Override | |
| 19 | + public List<Subject> subjectAll() { | |
| 20 | + return subjectRepository.subjectAll(); | |
| 21 | + } | |
| 22 | + | |
| 10 | 23 | } | ... | ... |
src/main/java/com/bsth/service/subject/impl/SubjectUserServiceImpl.java
| ... | ... | @@ -3,6 +3,7 @@ package com.bsth.service.subject.impl; |
| 3 | 3 | import com.bsth.data.schedule.DayOfSchedule; |
| 4 | 4 | import com.bsth.entity.Line; |
| 5 | 5 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 6 | +import com.bsth.entity.subject.Subject; | |
| 6 | 7 | import com.bsth.entity.subject.SubjectUser; |
| 7 | 8 | import com.bsth.entity.sys.SysUser; |
| 8 | 9 | import com.bsth.repository.LineRepository; |
| ... | ... | @@ -16,8 +17,11 @@ import org.slf4j.Logger; |
| 16 | 17 | import org.slf4j.LoggerFactory; |
| 17 | 18 | import org.springframework.beans.factory.annotation.Autowired; |
| 18 | 19 | import org.springframework.stereotype.Service; |
| 20 | +import org.springframework.transaction.annotation.Transactional; | |
| 19 | 21 | |
| 20 | 22 | import java.text.SimpleDateFormat; |
| 23 | +import java.time.LocalDate; | |
| 24 | +import java.time.format.DateTimeFormatter; | |
| 21 | 25 | import java.util.*; |
| 22 | 26 | import java.util.stream.Collectors; |
| 23 | 27 | |
| ... | ... | @@ -186,6 +190,31 @@ public class SubjectUserServiceImpl extends BaseServiceImpl<SubjectUser, Integer |
| 186 | 190 | } |
| 187 | 191 | return results; |
| 188 | 192 | } |
| 189 | - | |
| 190 | - | |
| 193 | + | |
| 194 | + @Override | |
| 195 | + @Transactional | |
| 196 | + public void selectSubject(String[] arr) throws Exception{ | |
| 197 | + SysUser loginUser = SecurityUtils.getCurrentUser(); | |
| 198 | + List<SysUser> userList= sysUserRepository.findByParentID(String.valueOf(loginUser.getId())); | |
| 199 | + DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd"); | |
| 200 | + LocalDate localDate=LocalDate.now(); | |
| 201 | + String rq=localDate.format(dateTimeFormatter); | |
| 202 | + List<Integer> userIds=new ArrayList<>(); | |
| 203 | + for (SysUser user : userList) { | |
| 204 | + userIds.add(user.getId()); | |
| 205 | + } | |
| 206 | + subjectUserRepository.deleteSubjectUserByUserIds(rq,userIds); | |
| 207 | + for (SysUser user : userList) { | |
| 208 | + for (String s : arr) { | |
| 209 | + SubjectUser subjectUser=new SubjectUser(); | |
| 210 | + subjectUser.setUserId(user.getId()); | |
| 211 | + subjectUser.setRq(rq); | |
| 212 | + subjectUser.setCreateBy(loginUser.getId()); | |
| 213 | + Subject subject=new Subject(); | |
| 214 | + subject.setId(Integer.parseInt(s)); | |
| 215 | + subjectUser.setSubjectId(subject); | |
| 216 | + subjectUserRepository.save(subjectUser); | |
| 217 | + } | |
| 218 | + } | |
| 219 | + } | |
| 191 | 220 | } | ... | ... |
src/main/resources/static/assets/css/MSFmultiSelect.css
0 → 100644
| 1 | +.msf_multiselect_container .msf_multiselect { | |
| 2 | + border: 1px solid #e4e4e4; | |
| 3 | + list-style-type:none; | |
| 4 | + margin: 0; | |
| 5 | + padding: 0; | |
| 6 | + position: absolute; | |
| 7 | + z-index: 240; | |
| 8 | +} | |
| 9 | +.msf_multiselect li:hover, .sb_multiselect li:active, .sb_multiselect li:focus{ | |
| 10 | + background-color: #e5e5e5; | |
| 11 | +} | |
| 12 | +.msf_multiselect li.active{ | |
| 13 | + background-color: #e5e5e5; | |
| 14 | +} | |
| 15 | +.msf_multiselect li{ | |
| 16 | + padding-left: 4px; | |
| 17 | + background-color: #ffffff; | |
| 18 | + cursor: pointer; | |
| 19 | +} | |
| 20 | +.msf_multiselect_container textarea{ | |
| 21 | + resize: none; | |
| 22 | + padding-left: 2px; | |
| 23 | + padding-top: 2px; | |
| 24 | + overflow: auto; | |
| 25 | +} | |
| 26 | +.msf_multiselect_container .msf_multiselect{ | |
| 27 | + height: 200px; | |
| 28 | + overflow: auto; | |
| 29 | + background-color: white; | |
| 30 | + display: grid; | |
| 31 | + text-align: left; | |
| 32 | +} | |
| 33 | +.msf_multiselect label{ | |
| 34 | + display: block; | |
| 35 | + margin-bottom: 1px; | |
| 36 | +} | ... | ... |
src/main/resources/static/assets/js/MSFmultiSelect.js
0 → 100644
| 1 | +/* MSFmultiSelect v1.00 | |
| 2 | + * Developed by Jagadeesan S | |
| 3 | + * jagadeesanjd11@gamil.coms | |
| 4 | + * https://minisuperfiles.blogspot.com | |
| 5 | + */ | |
| 6 | +class MSFmultiSelect{ | |
| 7 | + constructor(select, settings={}) { | |
| 8 | + this.select = select; | |
| 9 | + this.settings = settings; | |
| 10 | + this.defultSettings={ | |
| 11 | + width:350, | |
| 12 | + height:30, | |
| 13 | + appendTo:'body', | |
| 14 | + className:'' | |
| 15 | + } | |
| 16 | + this.select.multiple=true; | |
| 17 | + this.select.style.display='none'; | |
| 18 | + this.create(); | |
| 19 | + } | |
| 20 | + create(){ | |
| 21 | + var div=document.createElement('DIV'); | |
| 22 | + div.className='msf_multiselect_container'; | |
| 23 | + this.id='msf_multiselect_'+(document.querySelectorAll('.msf_multiselect_container').length+1); | |
| 24 | + div.id=this.id; | |
| 25 | + var ul=document.createElement('UL'); | |
| 26 | + ul.className='msf_multiselect'; | |
| 27 | + var textarea=document.createElement('textarea'); textarea.readOnly=true; | |
| 28 | + textarea.style.height=(this.settings.height) ? this.settings.height+'px' : this.defultSettings.height+'px'; | |
| 29 | + textarea.style.width=(this.settings.width) ? this.settings.width+'px' : this.defultSettings.width+'px'; | |
| 30 | + textarea.className=(this.settings.className) ? this.settings.className : this.defultSettings.className; | |
| 31 | + var self=this,display=""; | |
| 32 | + if(this.settings.selectAll){ | |
| 33 | + var label=document.createElement('label'); | |
| 34 | + var li=document.createElement('LI'); | |
| 35 | + var input=document.createElement('input'); | |
| 36 | + input.type='checkbox'; | |
| 37 | + input.disabled=(this.settings.readOnly) ? true: false; | |
| 38 | + input.addEventListener('click',function(){ | |
| 39 | + this.parentElement.className=(this.checked) ? 'active' : ''; | |
| 40 | + self.selectAll(this.checked); | |
| 41 | + }); | |
| 42 | + var caption=document.createTextNode('<Select all>'); | |
| 43 | + li.appendChild(input); | |
| 44 | + li.appendChild(caption); | |
| 45 | + label.appendChild(li); | |
| 46 | + ul.appendChild(label); | |
| 47 | + } | |
| 48 | + for(var i=0,len=this.select.children.length; i<len; i++){ | |
| 49 | + var label=document.createElement('label'); | |
| 50 | + var li=document.createElement('LI'); | |
| 51 | + var input=document.createElement('input'); | |
| 52 | + input.type='checkbox'; | |
| 53 | + input.disabled=(this.settings.readOnly) ? true: false; | |
| 54 | + input.value=this.select.children[i].value; | |
| 55 | + var caption=document.createTextNode(this.select.children[i].innerText); | |
| 56 | + input.addEventListener('click',function(){ | |
| 57 | + if(this.checked){ | |
| 58 | + self.setValue([this.value]); | |
| 59 | + }else{ | |
| 60 | + self.removeValue([this.value]); | |
| 61 | + } | |
| 62 | + if(typeof self.settings.onChange=='function'){ | |
| 63 | + self.settings.onChange(this.checked,this.value,self); | |
| 64 | + } | |
| 65 | + }); | |
| 66 | + li.appendChild(input); | |
| 67 | + li.appendChild(caption); | |
| 68 | + if(this.select.children[i].selected){ | |
| 69 | + li.className='active'; | |
| 70 | + input.checked=true; | |
| 71 | + display+=(display) ? ", "+this.select.children[i].innerText : this.select.children[i].innerText; | |
| 72 | + }else{ | |
| 73 | + li.className=''; | |
| 74 | + input.checked=false; | |
| 75 | + } | |
| 76 | + label.appendChild(li); | |
| 77 | + ul.appendChild(label); | |
| 78 | + } | |
| 79 | + textarea.value=display; | |
| 80 | + this.logger=textarea; | |
| 81 | + div.appendChild(textarea); | |
| 82 | + var addTarget; | |
| 83 | + if(this.settings.appendTo){ | |
| 84 | + addTarget=document.querySelector(this.settings.appendTo); | |
| 85 | + }else{ | |
| 86 | + addTarget=document.querySelector(this.defultSettings.appendTo); | |
| 87 | + } | |
| 88 | + //set width | |
| 89 | + ul.style.width=(this.settings.width) ? this.settings.width+2+'px' : this.defultSettings.width+2+'px'; | |
| 90 | + ul.style.display='none'; | |
| 91 | + div.appendChild(ul); | |
| 92 | + this.list=ul; | |
| 93 | + this.container=div; | |
| 94 | + addTarget.appendChild(div); | |
| 95 | + // add event | |
| 96 | + document.addEventListener('click',function(event){ | |
| 97 | + var isClickInside=self.container.contains(event.target); | |
| 98 | + if(!isClickInside){ | |
| 99 | + self.list.style.display='none'; | |
| 100 | + } | |
| 101 | + }); | |
| 102 | + this.logger.addEventListener('click',function(){ | |
| 103 | + if(self.list.style.display=='none'){ | |
| 104 | + self.list.style.display=''; | |
| 105 | + }else{ | |
| 106 | + self.list.style.display='none'; | |
| 107 | + } | |
| 108 | + }); | |
| 109 | + } | |
| 110 | + setValue(selected=[]){ | |
| 111 | + if(selected.length){ | |
| 112 | + for(var i=0; i<this.select.children.length; i++){ | |
| 113 | + for(var j=0; j<selected.length; j++){ | |
| 114 | + if(this.select.children[i].value==selected[j]){ | |
| 115 | + this.select.children[i].selected=true; | |
| 116 | + var sync=(this.settings.selectAll) ? (i+1) : i; | |
| 117 | + this.list.children[sync].children[0].children[0].checked=true; | |
| 118 | + this.list.children[sync].children[0].className='active'; //need to change; | |
| 119 | + break; | |
| 120 | + } | |
| 121 | + } | |
| 122 | + } | |
| 123 | + this.log(); | |
| 124 | + } | |
| 125 | + } | |
| 126 | + removeValue(selected=[]){ | |
| 127 | + if(selected.length){ | |
| 128 | + for(var i=0; i<this.select.children.length; i++){ | |
| 129 | + for(var j=0; j<selected.length; j++){ | |
| 130 | + if(this.select.children[i].value==selected[j]){ | |
| 131 | + this.select.children[i].selected=false; | |
| 132 | + var sync=(this.settings.selectAll) ? (i+1) : i; | |
| 133 | + this.list.children[sync].children[0].children[0].checked=false; | |
| 134 | + this.list.children[sync].children[0].className=''; //need to change; | |
| 135 | + break; | |
| 136 | + } | |
| 137 | + } | |
| 138 | + } | |
| 139 | + this.log(); | |
| 140 | + } | |
| 141 | + } | |
| 142 | + log(){ | |
| 143 | + var display=""; | |
| 144 | + for(var i=0; i<this.select.children.length; i++){ | |
| 145 | + if(this.select.children[i].selected){ | |
| 146 | + display+=(display) ? ", "+this.select.children[i].innerText : this.select.children[i].innerText; | |
| 147 | + } | |
| 148 | + } | |
| 149 | + this.logger.value=display; | |
| 150 | + } | |
| 151 | + getData(){ | |
| 152 | + var data=[]; | |
| 153 | + for(var i=0; i<this.select.children.length; i++){ | |
| 154 | + if(this.select.children[i].selected){ | |
| 155 | + data.push(this.select.children[i].value); | |
| 156 | + } | |
| 157 | + } | |
| 158 | + return data; | |
| 159 | + } | |
| 160 | + selectAll(is=false){ | |
| 161 | + var data=[]; | |
| 162 | + for(var i=0; i<this.select.children.length; i++){ | |
| 163 | + data.push(this.select.children[i].value); | |
| 164 | + } | |
| 165 | + if(is){ | |
| 166 | + this.setValue(data); | |
| 167 | + }else{ | |
| 168 | + this.removeValue(data); | |
| 169 | + } | |
| 170 | + } | |
| 171 | + loadSource(data=[]){ | |
| 172 | + if(data.length!=0){ | |
| 173 | + this.select.innerHTML=''; | |
| 174 | + for(var i=0; i<data.length; i++){ | |
| 175 | + var option=document.createElement('OPTION'); | |
| 176 | + option.value=data[i].value; | |
| 177 | + option.innerHTML=data[i].caption; | |
| 178 | + option.selected=data[i].selected; | |
| 179 | + this.select.appendChild(option); | |
| 180 | + } | |
| 181 | + this.reload(); | |
| 182 | + } | |
| 183 | + } | |
| 184 | + getSource(){ | |
| 185 | + var data=[]; | |
| 186 | + for(var i=0; i<this.select.children.length; i++){ | |
| 187 | + data.push({value:this.select.children[i].value,caption:this.select.children[i].innerText,selected:this.select.children[i].selected}); | |
| 188 | + } | |
| 189 | + return data; | |
| 190 | + } | |
| 191 | + reload(){ | |
| 192 | + this.container.remove(); | |
| 193 | + this.create(); | |
| 194 | + } | |
| 195 | +} | |
| 196 | + | ... | ... |
src/main/resources/static/index.html
| ... | ... | @@ -85,7 +85,8 @@ |
| 85 | 85 | <link |
| 86 | 86 | href="/metronic_v4.5.4/plugins/tipso/css/tipso.css" |
| 87 | 87 | rel="stylesheet" type="text/css" /> |
| 88 | - | |
| 88 | + <link href="/assets/css/MSFmultiSelect.css" rel="stylesheet" type="text/css" /> | |
| 89 | + <script src="/assets/js/MSFmultiSelect.js"></script> | |
| 89 | 90 | <style type="text/css"> |
| 90 | 91 | .searchForm { |
| 91 | 92 | ... | ... |
src/main/resources/static/pages/subjectUser/selectSubject.html
0 → 100644
| 1 | +<style type="text/css"> | |
| 2 | + .table-bordered { | |
| 3 | + border: 1px solid; } | |
| 4 | + .table-bordered > thead > tr > th, | |
| 5 | + .table-bordered > thead > tr > td, | |
| 6 | + .table-bordered > tbody > tr > th, | |
| 7 | + .table-bordered > tbody > tr > td, | |
| 8 | + .table-bordered > tfoot > tr > th, | |
| 9 | + .table-bordered > tfoot > tr > td { | |
| 10 | + border: 1px solid; } | |
| 11 | + .table-bordered > thead > tr > th, | |
| 12 | + .table-bordered > thead > tr > td { | |
| 13 | + border-bottom-width: 2px; } | |
| 14 | + | |
| 15 | + .table > tbody + tbody { | |
| 16 | + border-top: 1px solid; } | |
| 17 | +</style> | |
| 18 | +<div class="page-head"> | |
| 19 | + <div class="page-title"> | |
| 20 | + <h1>考题选择</h1> | |
| 21 | + </div> | |
| 22 | +</div> | |
| 23 | +<body> | |
| 24 | + | |
| 25 | +</body> | |
| 26 | +<div class="row"> | |
| 27 | + <div class="col-md-12"> | |
| 28 | + <div class="portlet light porttlet-fit bordered"> | |
| 29 | + <div class="portlet-title"> | |
| 30 | + <form class="form-inline" action=""> | |
| 31 | + <div style="display: inline-block;"> | |
| 32 | + <span class="item-label" style="width: 80px;margin-left: 6px;">选题: </span> | |
| 33 | + <div id="myselect"> | |
| 34 | + <select id="multiselect" style="width: 350px;" class="form-control" name="countries[]" multiple="multiple"> | |
| 35 | + </select> | |
| 36 | + </div> | |
| 37 | + </div> | |
| 38 | + <div class="form-group"> | |
| 39 | + <input class="btn btn-default" type="button" onclick="selectSubject()" value="提交" style="margin-left: 2px;margin-top: -24px;"/> | |
| 40 | + </div> | |
| 41 | + </form> | |
| 42 | + </div> | |
| 43 | + <div class="portlet-body"> | |
| 44 | + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 45 | + <form role="form"> | |
| 46 | + <div class="form-group"> | |
| 47 | + <span class="item-label" style="width: 80px;margin-left: 6px;">题目: </span> | |
| 48 | + <textarea class="form-control" rows="12" id="subjectText"></textarea> | |
| 49 | + </div> | |
| 50 | + </form> | |
| 51 | + <form role="form"> | |
| 52 | + <div class="form-group"> | |
| 53 | + <span class="item-label" style="width: 80px;margin-left: 6px;">操作: </span> | |
| 54 | + <textarea class="form-control" rows="12" id="operateTest"></textarea> | |
| 55 | + </div> | |
| 56 | + </form> | |
| 57 | + </div> | |
| 58 | + </div> | |
| 59 | + </div> | |
| 60 | + </div> | |
| 61 | +</div> | |
| 62 | +<script> | |
| 63 | + var select=new MSFmultiSelect( | |
| 64 | + document.querySelector('#multiselect'), | |
| 65 | + { | |
| 66 | + onChange:function(checked,value,instance){ | |
| 67 | + var subjectTextStr=''; | |
| 68 | + var operateTestStr=''; | |
| 69 | + var arr=select.getData(); | |
| 70 | + for (let i of arr) { | |
| 71 | + let index=1; | |
| 72 | + for (let s of subjectList) { | |
| 73 | + if(s.id==i){ | |
| 74 | + subjectTextStr+='题'+index+':'+s.subjectText+'\n'; | |
| 75 | + operateTestStr+='题'+index+':'+s.operateTest+'\n'; | |
| 76 | + } | |
| 77 | + index++; | |
| 78 | + } | |
| 79 | + } | |
| 80 | + $("#subjectText").val(subjectTextStr); | |
| 81 | + $("#operateTest").val(operateTestStr); | |
| 82 | + }, | |
| 83 | + appendTo:'#myselect', | |
| 84 | + } | |
| 85 | + ); | |
| 86 | + var subjectList; | |
| 87 | + $(function(){ | |
| 88 | + $get('/subject/subjectList',{type:'query'},function(result){ | |
| 89 | + subjectList=result; | |
| 90 | + var datas=[]; | |
| 91 | + let i=1; | |
| 92 | + for (let r of result) { | |
| 93 | + var d=new Object(); | |
| 94 | + d.value=r.id; | |
| 95 | + d.caption="题"+i; | |
| 96 | + datas[i-1]=d; | |
| 97 | + i++; | |
| 98 | + } | |
| 99 | + select.loadSource(datas); | |
| 100 | + }); | |
| 101 | + }); | |
| 102 | + function selectSubject(){ | |
| 103 | + var arr=select.getData(); | |
| 104 | + if(arr.length!=10){ | |
| 105 | + layer.alert("请选择10道题"); | |
| 106 | + return; | |
| 107 | + } | |
| 108 | + layer.confirm('提交后会覆盖当天选题是否确认', { | |
| 109 | + btn: ['确认', '取消'],isOutAnim: false,//可以无限个按钮 | |
| 110 | + }, function(index, layero){ | |
| 111 | + layer.close(index) | |
| 112 | + var ids=''; | |
| 113 | + for (let id of arr) { | |
| 114 | + ids+=id+','; | |
| 115 | + } | |
| 116 | + $get('/subject/selectSubject',{ids:ids},function(result){ | |
| 117 | + layer.alert(result.result); | |
| 118 | + }); | |
| 119 | + }); | |
| 120 | + } | |
| 121 | +</script> | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | ... | ... |