|  | @@ -16,7 +16,9 @@ import {
 | 
	
		
			
				|  |  |    closeToast,
 | 
	
		
			
				|  |  |    Picker,
 | 
	
		
			
				|  |  |    Popup,
 | 
	
		
			
				|  |  | -  CountDown
 | 
	
		
			
				|  |  | +  CountDown,
 | 
	
		
			
				|  |  | +  CheckboxGroup,
 | 
	
		
			
				|  |  | +  Sticky
 | 
	
		
			
				|  |  |  } from 'vant'
 | 
	
		
			
				|  |  |  import { defineComponent, onMounted, reactive, ref } from 'vue'
 | 
	
		
			
				|  |  |  import { useRoute } from 'vue-router'
 | 
	
	
		
			
				|  | @@ -51,6 +53,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        pattern: /^1(3|4|5|6|7|8|9)\d{9}$/,
 | 
	
		
			
				|  |  |        columns: [] as any,
 | 
	
		
			
				|  |  |        pickerType: null, // 下拉类型
 | 
	
		
			
				|  |  | +      popupSelectSubjects: [] as any,
 | 
	
		
			
				|  |  |        selectSubjects: [] as any, // 选中的声部
 | 
	
		
			
				|  |  |        forms: {
 | 
	
		
			
				|  |  |          realName: '',
 | 
	
	
		
			
				|  | @@ -123,6 +126,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const onSubjectRemove = (item: any, index: any) => {
 | 
	
		
			
				|  |  | +      console.log(item)
 | 
	
		
			
				|  |  |        showDialog({
 | 
	
		
			
				|  |  |          title: '提示',
 | 
	
		
			
				|  |  |          message: '您是否删除选中的声部',
 | 
	
	
		
			
				|  | @@ -130,36 +134,31 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          showCancelButton: true
 | 
	
		
			
				|  |  |        }).then(() => {
 | 
	
		
			
				|  |  |          state.selectSubjects.splice(index, 1)
 | 
	
		
			
				|  |  | -        const tempSubjectIds: any = []
 | 
	
		
			
				|  |  | -        state.selectSubjects.forEach((subject: any) => {
 | 
	
		
			
				|  |  | -          tempSubjectIds.push(subject.value)
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -        state.forms.subjectIds = tempSubjectIds
 | 
	
		
			
				|  |  | -        state.forms.showSubjectIds = tempSubjectIds.join(',')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const tIndex = state.popupSelectSubjects.findIndex((s: any) => s === item.value)
 | 
	
		
			
				|  |  | +        state.popupSelectSubjects.splice(tIndex, 1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // const tempSubjectIds: any = []
 | 
	
		
			
				|  |  | +        // state.selectSubjects.forEach((subject: any) => {
 | 
	
		
			
				|  |  | +        //   tempSubjectIds.push(subject.value)
 | 
	
		
			
				|  |  | +        // })
 | 
	
		
			
				|  |  | +        state.forms.subjectIds = state.popupSelectSubjects
 | 
	
		
			
				|  |  | +        state.forms.showSubjectIds = state.popupSelectSubjects.join(',')
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // 选择声部
 | 
	
		
			
				|  |  | -    const onConfirmSubject = (val: any) => {
 | 
	
		
			
				|  |  | -      const selected = val.selectedOptions[0]
 | 
	
		
			
				|  |  | -      let isCheck = false
 | 
	
		
			
				|  |  | -      state.selectSubjects.forEach((subject: any) => {
 | 
	
		
			
				|  |  | -        if (subject.value === selected.value) {
 | 
	
		
			
				|  |  | -          isCheck = true
 | 
	
		
			
				|  |  | +    const onConfirmSubject = () => {
 | 
	
		
			
				|  |  | +      const tempSubjects: any = []
 | 
	
		
			
				|  |  | +      state.columnSubject.forEach((item: any) => {
 | 
	
		
			
				|  |  | +        if (state.popupSelectSubjects.includes(item.value)) {
 | 
	
		
			
				|  |  | +          tempSubjects.push(item)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  | -      // 判断是否有选择一样的数据
 | 
	
		
			
				|  |  | -      if (isCheck) {
 | 
	
		
			
				|  |  | -        state.showSubject = false
 | 
	
		
			
				|  |  | -        return
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      state.selectSubjects.push(val.selectedOptions[0])
 | 
	
		
			
				|  |  | -      const tempSubjectIds: any = []
 | 
	
		
			
				|  |  | -      state.selectSubjects.forEach((subject: any) => {
 | 
	
		
			
				|  |  | -        tempSubjectIds.push(subject.value)
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -      state.forms.subjectIds = tempSubjectIds
 | 
	
		
			
				|  |  | -      state.forms.showSubjectIds = tempSubjectIds.join(',')
 | 
	
		
			
				|  |  | +      state.selectSubjects = tempSubjects
 | 
	
		
			
				|  |  | +      state.forms.subjectIds = state.popupSelectSubjects || []
 | 
	
		
			
				|  |  | +      state.forms.showSubjectIds = state.popupSelectSubjects.join(',')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        state.showSubject = false
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -363,6 +362,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          const subjects = data.subjectId
 | 
	
		
			
				|  |  |            ? data.subjectId.split(',').map((subject: any) => Number(subject))
 | 
	
		
			
				|  |  |            : []
 | 
	
		
			
				|  |  | +        state.popupSelectSubjects = subjects || []
 | 
	
		
			
				|  |  |          // 显示声部
 | 
	
		
			
				|  |  |          subjects.forEach((subject: any) => {
 | 
	
		
			
				|  |  |            const item = state.columnSubject.find((item: any) => item.value === subject)
 | 
	
	
		
			
				|  | @@ -700,13 +700,50 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              columnsFieldNames={{ text: 'name', value: 'code', children: 'areas' }}
 | 
	
		
			
				|  |  |            />
 | 
	
		
			
				|  |  |          </Popup>
 | 
	
		
			
				|  |  | -        <Popup v-model:show={state.showSubject} position="bottom" round>
 | 
	
		
			
				|  |  | -          <Picker
 | 
	
		
			
				|  |  | +        <Popup
 | 
	
		
			
				|  |  | +          v-model:show={state.showSubject}
 | 
	
		
			
				|  |  | +          position="bottom"
 | 
	
		
			
				|  |  | +          round
 | 
	
		
			
				|  |  | +          safeAreaInsetBottom
 | 
	
		
			
				|  |  | +          closeable
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          {/* <Picker
 | 
	
		
			
				|  |  |              showToolbar
 | 
	
		
			
				|  |  |              columns={state.columnSubject}
 | 
	
		
			
				|  |  |              onCancel={() => (state.showSubject = false)}
 | 
	
		
			
				|  |  |              onConfirm={onConfirmSubject}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | +          /> */}
 | 
	
		
			
				|  |  | +          <div class={styles.filterTitle}>全部声部</div>
 | 
	
		
			
				|  |  | +          <div class={styles.searchResult} style={{ maxHeight: '45vh', overflowY: 'auto' }}>
 | 
	
		
			
				|  |  | +            <CheckboxGroup
 | 
	
		
			
				|  |  | +              class={[styles.childContent, styles['radio-group']]}
 | 
	
		
			
				|  |  | +              modelValue={state.popupSelectSubjects}
 | 
	
		
			
				|  |  | +              onUpdate:modelValue={(val) => {
 | 
	
		
			
				|  |  | +                console.log(val)
 | 
	
		
			
				|  |  | +                state.popupSelectSubjects = val
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              {state.columnSubject.map((item: any) => (
 | 
	
		
			
				|  |  | +                <Checkbox key={item.value} name={item.value} class={styles.radio}>
 | 
	
		
			
				|  |  | +                  <Tag
 | 
	
		
			
				|  |  | +                    class={[styles.item, 'van-ellipsis']}
 | 
	
		
			
				|  |  | +                    plain={state.popupSelectSubjects.includes(item.value)}
 | 
	
		
			
				|  |  | +                    type="primary"
 | 
	
		
			
				|  |  | +                    size="large"
 | 
	
		
			
				|  |  | +                  >
 | 
	
		
			
				|  |  | +                    {item.text}
 | 
	
		
			
				|  |  | +                  </Tag>
 | 
	
		
			
				|  |  | +                </Checkbox>
 | 
	
		
			
				|  |  | +              ))}
 | 
	
		
			
				|  |  | +            </CheckboxGroup>
 | 
	
		
			
				|  |  | +            <Sticky position="bottom" offsetBottom={0}>
 | 
	
		
			
				|  |  | +              <div class={['btnGroup']}>
 | 
	
		
			
				|  |  | +                <Button type="primary" round block onClick={onConfirmSubject}>
 | 
	
		
			
				|  |  | +                  确 认
 | 
	
		
			
				|  |  | +                </Button>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </Sticky>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  |          </Popup>
 | 
	
		
			
				|  |  |          {/* 学历 */}
 | 
	
		
			
				|  |  |          {/* 学历分为专科、本科、硕士、博士、其他 */}
 |