Browse Source

添加内容管理平台权限

lex 1 year ago
parent
commit
ea7b47c2ff

+ 10 - 10
src/layout/components/Header/UpdatePassword.vue

@@ -161,16 +161,16 @@ export default defineComponent({
 
     const onSendCode = async () => {
       try {
-        state.codeLoading = true
-        await sendSms({
-          mobile: state.forms.phone,
-          type: 'PASSWORD',
-          clientId: 'jmedu-backend'
-        })
-        state.codeLoading = false
-        state.active = true
-        message.success('发送成功')
-        // state.showSmsClass = true
+        // state.codeLoading = true
+        // await sendSms({
+        //   mobile: state.forms.phone,
+        //   type: 'PASSWORD',
+        //   clientId: 'jmedu-backend'
+        // })
+        // state.codeLoading = false
+        // state.active = true
+        // message.success('发送成功')
+        state.showSmsClass = true
       } catch (e) {
         state.codeLoading = false
       }

+ 2 - 2
src/layout/components/smsLogin/api.ts

@@ -5,7 +5,7 @@ import request from '@/utils/request/index'
  */
 export const sendSmsVerify = (params: any) => {
   return request({
-    url: '/edu-app/open/sendSmsVerify',
+    url: '/cbs-app/open/sendSmsVerify',
     method: 'post',
     requestType: 'form',
     data: params
@@ -17,7 +17,7 @@ export const sendSmsVerify = (params: any) => {
  */
 export const sendImgCode = (params: object) => {
   return request({
-    url: '/edu-app/open/sendImgCode',
+    url: '/cbs-app/open/sendImgCode',
     method: 'get',
     params
   } as any)

+ 6 - 1
src/layout/components/smsLogin/index.tsx

@@ -87,7 +87,12 @@ export default defineComponent({
                   }
                 ]}
               >
-                <NInput placeholder="图形验证码" v-model:value={state.code} size="large" />
+                <NInput
+                  placeholder="图形验证码"
+                  v-model:value={state.code}
+                  size="large"
+                  maxlength={6}
+                />
               </NFormItem>
             </NGi>
             <NGi span={9}>

+ 4 - 4
src/utils/oss-file-upload.ts

@@ -35,10 +35,10 @@ export const getUploadSign = async (params: any) => {
   let tempPostData: any = {}
   if (ossType === 'tencent') {
     bucket = tencentBucket
-    file = 'gyt/' + filename
+    file = 'MECMP/' + filename
 
     tempPostData = {
-      key: 'gyt/' + postData.key
+      key: 'MECMP/' + postData.key
     }
   } else {
     tempPostData = postData
@@ -96,7 +96,7 @@ export const onFileUpload = ({ file, action, data, onProgress, onFinish, onError
       .uploadFile({
         Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
         Region: 'ap-nanjing' /* 存储桶所在地域,必须字段 */,
-        Key: `gyt/${data.name}`,
+        Key: `MECMP/${data.name}`,
         /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
         Body: data.file.file, // 上传文件对象
         SliceSize:
@@ -176,7 +176,7 @@ export const onOnlyFileUpload = async (action: string, params: any) => {
       .uploadFile({
         Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
         Region: 'ap-nanjing' /* 存储桶所在地域,必须字段 */,
-        Key: `gyt/${params.name}`,
+        Key: `MECMP/${params.name}`,
         /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
         Body: params.file, // 上传文件对象
         SliceSize:

+ 3 - 3
src/views/login-log/index.tsx

@@ -34,21 +34,21 @@ export default defineComponent({
               <NTabPane
                 name="LoginLog"
                 tab="登录日志"
-                //v-auth="sysUserLoginLog/page1597883965544714242"
+                v-auth="sysUserLoginLog/page1750839899174469633"
               >
                 <LoginLog />
               </NTabPane>
               <NTabPane
                 name="LoginStatistics"
                 tab="登录统计"
-                //v-auth="sysUserLogin/page1597884090153291778"
+                v-auth="sysUserLogin/page1597884090153291778"
               >
                 <LoginStatistics />
               </NTabPane>
               <NTabPane
                 name="LoginDevice"
                 tab="登录设备"
-                //v-auth="sysUserDevice/page1597884219157499905"
+                v-auth="sysUserDevice/page1597884219157499905"
               >
                 <LoginDevice />
               </NTabPane>

+ 4 - 4
src/views/music-library/music-sheet/modal/music-create-img.tsx

@@ -21,8 +21,8 @@ export default defineComponent({
     /** 自动生成图片 */
     const forms = reactive({
       musicImg: '', // 五线谱图片
-      musicSvg: '', //首调图片
-      musicJianSvg: '' // 简谱固定调
+      musicFirstImg: '', //首调图片
+      musicJianImg: '' // 简谱固定调
     })
     const handleAutoProduct = () => {
       if (!props.xmlFileUrl) {
@@ -74,8 +74,8 @@ export default defineComponent({
         imgs[i].url = await api_uploadFile(file, () => {})
       }
       forms.musicImg = imgs[0]?.url || ''
-      forms.musicSvg = imgs[1]?.url || ''
-      forms.musicJianSvg = imgs[2]?.url || ''
+      forms.musicFirstImg = imgs[1]?.url || ''
+      forms.musicJianImg = imgs[2]?.url || ''
       // state.productOpen = false
       imgs = []
 

+ 89 - 89
src/views/music-library/music-sheet/modal/music-operation.tsx

@@ -1,4 +1,4 @@
-import type {SelectOption} from 'naive-ui'
+import type { SelectOption } from 'naive-ui'
 import {
   NAlert,
   NButton,
@@ -20,19 +20,19 @@ import {
   useDialog,
   useMessage
 } from 'naive-ui'
-import {defineComponent, onMounted, PropType, reactive, ref} from 'vue'
-import {musicSheetCategoriesQueryTree, musicSheetDetail, musicSheetSave} from '../../api'
+import { defineComponent, onMounted, PropType, reactive, ref } from 'vue'
+import { musicSheetCategoriesQueryTree, musicSheetDetail, musicSheetSave } from '../../api'
 import UploadFile from '@/components/upload-file'
 import styles from './index.module.less'
 import deepClone from '@/utils/deep.clone'
 import axios from 'axios'
-import {appKey, clientType, musicSheetSourceType, musicSheetType} from '@/utils/constant'
-import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
-import {musicalInstrumentPage} from '@views/system-manage/subject-manage/api'
-import {subjectPage} from '@views/system-manage/api'
+import { appKey, clientType, musicSheetSourceType, musicSheetType } from '@/utils/constant'
+import { getMapValueByKey, getSelectDataFromObj } from '@/utils/objectUtil'
+import { musicalInstrumentPage } from '@views/system-manage/subject-manage/api'
+import { subjectPage } from '@views/system-manage/api'
 import MusicSheetOwnerDialog from '@views/music-library/music-sheet/modal/musicSheetOwnerDialog'
-import {sysApplicationPage} from '@views/menu-manage/api'
-import {filterPointCategory} from '@views/teaching-manage/unit-test'
+import { sysApplicationPage } from '@views/menu-manage/api'
+import { filterPointCategory } from '@views/teaching-manage/unit-test'
 import MusicCreateImg from './music-create-img'
 
 /**
@@ -159,8 +159,8 @@ export function getGradualLengthByXml(xml: string) {
       const measureNotes = Array.from(measure.querySelectorAll('note'))
 
       const noteInMeasureIndex = Array.from(measure.childNodes)
-          .filter((item: any) => item.nodeName === 'note')
-          .findIndex((item) => item === note)
+        .filter((item: any) => item.nodeName === 'note')
+        .findIndex((item) => item === note)
 
       let allDuration = 0
       let leftDuration = 0
@@ -214,9 +214,9 @@ export function getGradualLengthByXml(xml: string) {
       return textContent && ks.includes(textContent)
     })
     if (
-        ele.type === 'metronome' ||
-        (ele.type === 'words' && (textContent.startsWith('a tempo') || isKeyWork)) ||
-        isLastNoteAndNotClosed
+      ele.type === 'metronome' ||
+      (ele.type === 'words' && (textContent.startsWith('a tempo') || isKeyWork)) ||
+      isLastNoteAndNotClosed
     ) {
       const indexOf = gradualNotes.findIndex((item) => item.length === 1)
       if (indexOf > -1 && ele.index > gradualNotes[indexOf]?.[0].start) {
@@ -255,8 +255,7 @@ export default defineComponent({
     },
     data: {
       type: Object as PropType<any>,
-      default: () => {
-      }
+      default: () => {}
     },
     tagList: {
       type: Array as PropType<Array<SelectOption>>,
@@ -265,7 +264,7 @@ export default defineComponent({
     subjectList: {
       type: Array as PropType<Array<SelectOption>>,
       default: () => []
-    },
+    }
     // musicSheetCategories: {
     //   type: Array as PropType<Array<SelectOption>>,
     //   default: () => []
@@ -273,7 +272,7 @@ export default defineComponent({
   },
   emits: ['close', 'getList'],
 
-  setup(props, {slots, attrs, emit}) {
+  setup(props, { slots, attrs, emit }) {
     const forms = reactive({
       graduals: {} as any, // 渐变速度
       playMode: 'MP3', // 播放类型
@@ -299,9 +298,9 @@ export default defineComponent({
       appAuditFlag: 0, // 是否审核版本
       midiFileUrl: null, // 伴奏文件 MIDI文件(保留字段)
       subjectIds: [] as any, // 可用声部
-      musicalInstrumentIdList: [] as any,  //可用乐器
-      musicCategoryId: null,  //曲目分类
-      musicSheetAccompanimentList: [] as any,  //曲目伴奏
+      musicalInstrumentIdList: [] as any, //可用乐器
+      musicCategoryId: null, //曲目分类
+      musicSheetAccompanimentList: [] as any, //曲目伴奏
       audioType: 'HOMEMODE', // 伴奏类型
       isPlayBeat: true, // 是否播放节拍器
       isUseSystemBeat: true, // 是否使用系统节拍器(0:否;1:是)
@@ -310,12 +309,12 @@ export default defineComponent({
       multiTracksSelection: [] as any, // 声轨
       musicSheetExtend: {} as any, //所属人信息
       musicImg: '', // 五线谱图片
-      musicSvg: '', //首调图片
-      musicJianSvg: '' // 简谱固定调
+      musicFirstImg: '', //首调图片
+      musicJianImg: '' // 简谱固定调
     })
     const state = reactive({
       loading: false,
-      previewMode: false,//是否是预览模式
+      previewMode: false, //是否是预览模式
       tagList: [...props.tagList] as any, // 标签列表
       xmlFirstSpeed: null as any, // 第一个音轨速度
       partListNames: [] as any, // 所有音轨声部列表
@@ -442,29 +441,29 @@ export default defineComponent({
       if (!xml) return
       const xmlParse = new DOMParser().parseFromString(xml, 'text/xml')
       // 乐器
-      const instrumentCodeList: any = [];
-      const instrumentEle = xmlParse.getElementsByTagName('virtual-instrument');
+      const instrumentCodeList: any = []
+      const instrumentEle = xmlParse.getElementsByTagName('virtual-instrument')
       for (let index = 0; index < instrumentEle.length; index++) {
         const note = instrumentEle[index]
-        const instrumentCode = note.getElementsByTagName('virtual-name')?.[0]?.textContent || '';
+        const instrumentCode = note.getElementsByTagName('virtual-name')?.[0]?.textContent || ''
         if (instrumentCode && !instrumentCodeList.includes(instrumentCode)) {
-          instrumentCodeList.push(instrumentCode);
+          instrumentCodeList.push(instrumentCode)
         }
       }
-      const codeIdMap = new Map<string, string>();
+      const codeIdMap = new Map<string, string>()
       state.instrumentData.forEach((data: any) => {
-        codeIdMap.set(data.code, data.id + '');
+        codeIdMap.set(data.code, data.id + '')
       })
-      forms.musicalInstrumentIdList = [];
+      forms.musicalInstrumentIdList = []
       instrumentCodeList.forEach((code: string) => {
         if (codeIdMap.has(code)) {
-          forms.musicalInstrumentIdList.push(codeIdMap.get(code));
+          forms.musicalInstrumentIdList.push(codeIdMap.get(code))
         }
       })
 
       // 声部
       if (forms.musicalInstrumentIdList.length > 0) {
-        showBackSubject(forms.musicalInstrumentIdList);
+        showBackSubject(forms.musicalInstrumentIdList)
       }
     }
 
@@ -482,9 +481,7 @@ export default defineComponent({
         }
       })
 
-      partListNames = partListNames.filter(
-          (n: any) => n.value?.toLocaleUpperCase?.() != 'COMMON'
-      )
+      partListNames = partListNames.filter((n: any) => n.value?.toLocaleUpperCase?.() != 'COMMON')
 
       if (partListNames.length > 0) {
         forms.musicSheetSoundList = forms.musicSheetSoundList.slice(0, partListNames.length)
@@ -509,7 +506,9 @@ export default defineComponent({
       // )
       const partListNames = deepClone(state.partListNames) || []
       partListNames.forEach((item: any) => {
-        const index = forms.musicSheetSoundList.findIndex((ground: any) => item.value == ground.track)
+        const index = forms.musicSheetSoundList.findIndex(
+          (ground: any) => item.value == ground.track
+        )
         if (index > -1 && track == item.value) {
           item.disabled = false
         } else {
@@ -705,7 +704,6 @@ export default defineComponent({
             const extConfigJson = data.extConfigJson ? JSON.parse(data.extConfigJson) : {}
             forms.graduals = extConfigJson.gradualTimes || {}
             forms.repeatedBeats = !!extConfigJson.repeatedBeats
-
           } catch (error) {}
           forms.evaluationStandard = data.evaluationStandard
           forms.musicSheetExtend = data.musicSheetExtend
@@ -719,23 +717,21 @@ export default defineComponent({
               state.partListNames = getPartListNames(res?.data as any) as any
 
               // 初始化音轨和原音
-              forms.multiTracksSelection = data.multiTracksSelection?.split(',')||[]
+              forms.multiTracksSelection = data.multiTracksSelection?.split(',') || []
 
-              const existSoundList = data.musicSheetSoundList || [];
+              const existSoundList = data.musicSheetSoundList || []
               state.partListNames.forEach((item: any) => {
-                let audioFileUrl;
+                let audioFileUrl
                 existSoundList.forEach((next: any) => {
-                  if(next.track == item.value){
+                  if (next.track == item.value) {
                     audioFileUrl = next.audioFileUrl
                   }
                 })
                 forms.musicSheetSoundList.push({
                   audioFileUrl: audioFileUrl, // 原音
-                  track: item.value, // 轨道
+                  track: item.value // 轨道
                 })
               })
-
-
             }
           })
         } catch (error) {}
@@ -767,15 +763,15 @@ export default defineComponent({
             </NAlert>
             <NGrid cols={2}>
               <NFormItemGi
-                  label="曲目名称"
-                  path="name"
-                  rule={[
-                    {
-                      required: true,
-                      message: '请输入曲目名称',
-                      trigger: ['input', 'blur']
-                    }
-                  ]}
+                label="曲目名称"
+                path="name"
+                rule={[
+                  {
+                    required: true,
+                    message: '请输入曲目名称',
+                    trigger: ['input', 'blur']
+                  }
+                ]}
               >
                 <NInput
                   v-model:value={forms.name}
@@ -785,15 +781,15 @@ export default defineComponent({
                 />
               </NFormItemGi>
               <NFormItemGi
-                  label="音乐人"
-                  path="composer"
-                  rule={[
-                    {
-                      required: true,
-                      message: '请输入音乐人',
-                      trigger: ['input', 'blur']
-                    }
-                  ]}
+                label="音乐人"
+                path="composer"
+                rule={[
+                  {
+                    required: true,
+                    message: '请输入音乐人',
+                    trigger: ['input', 'blur']
+                  }
+                ]}
               >
                 <NInput
                   v-model:value={forms.composer}
@@ -821,7 +817,7 @@ export default defineComponent({
                   {
                     required: true,
                     message: '请上传曲目封面',
-                    trigger:['input','blur']
+                    trigger: ['input', 'blur']
                   }
                 ]}
               >
@@ -854,7 +850,7 @@ export default defineComponent({
                   {
                     required: true,
                     message: '请选择曲目类型',
-                    trigger:'change'
+                    trigger: 'change'
                   }
                 ]}
               >
@@ -872,7 +868,7 @@ export default defineComponent({
                   {
                     required: true,
                     message: '请选择作者属性',
-                    trigger:'change'
+                    trigger: 'change'
                   }
                 ]}
               >
@@ -901,7 +897,7 @@ export default defineComponent({
                     {
                       required: true,
                       message: '请选择曲目所属人',
-                      trigger:['input','change']
+                      trigger: ['input', 'change']
                     }
                   ]}
                 >
@@ -927,7 +923,7 @@ export default defineComponent({
                     {
                       required: true,
                       message: '请选择曲目所属机构',
-                      trigger:['input','change']
+                      trigger: ['input', 'change']
                     }
                   ]}
                 >
@@ -970,8 +966,8 @@ export default defineComponent({
                   {
                     required: true,
                     message: '请选择审核版本',
-                    trigger:'change',
-                    type:'number'
+                    trigger: 'change',
+                    type: 'number'
                   }
                 ]}
               >
@@ -991,14 +987,16 @@ export default defineComponent({
                   v-model:value={forms.appAuditFlag}
                 />
               </NFormItemGi>
-              <NFormItemGi label="曲目分类" path="musicCategoryId"
-                           rule={[
-                             {
-                               required: true,
-                               message: '请选择曲目分类',
-                               trigger: ['change']
-                             }
-                           ]}
+              <NFormItemGi
+                label="曲目分类"
+                path="musicCategoryId"
+                rule={[
+                  {
+                    required: true,
+                    message: '请选择曲目分类',
+                    trigger: ['change']
+                  }
+                ]}
               >
                 <NCascader
                   valueField="id"
@@ -1012,13 +1010,15 @@ export default defineComponent({
               </NFormItemGi>
             </NGrid>
             <NGrid cols={2}>
-              <NFormItemGi label="重复节拍时长" path="repeatedBeats"
-                           rule={[
-                             {
-                               required: false,
-                               message: '请选择是否重复节拍时长'
-                             }
-                           ]}
+              <NFormItemGi
+                label="重复节拍时长"
+                path="repeatedBeats"
+                rule={[
+                  {
+                    required: false,
+                    message: '请选择是否重复节拍时长'
+                  }
+                ]}
               >
                 <NRadioGroup v-model:value={forms.repeatedBeats}>
                   <NRadio value={true}>是</NRadio>
@@ -1253,8 +1253,8 @@ export default defineComponent({
                       message: `请选择${
                         forms.musicSheetType === 'SINGLE' ? '页面渲染声轨' : '用户可切换声轨'
                       }`,
-                      trigger:'change',
-                      type:'array'
+                      trigger: 'change',
+                      type: 'array'
                     }
                   ]}
                 >
@@ -1449,8 +1449,8 @@ export default defineComponent({
               // 保存
               try {
                 forms.musicImg = item.musicImg
-                forms.musicSvg = item.musicSvg
-                forms.musicJianSvg = item.musicJianSvg
+                forms.musicFirstImg = item.musicFirstImg
+                forms.musicJianImg = item.musicJianImg
                 onSubmit()
               } catch (e: any) {
                 //

+ 2 - 3
src/views/system-manage/employee-manage/employee-tab.tsx

@@ -31,14 +31,13 @@ export default defineComponent({
               v-model:value={state.tabName}
               onUpdate:value={(val: any) => setTabs(val)}
             >
-              <NTabPane name="CityList" tab="员工管理" //v-auth="sysEmployee/page1596444091629301762"
-              >
+              <NTabPane name="CityList" tab="员工管理" v-auth="sysEmployee/page1674714842241478657">
                 <EmployeeManage></EmployeeManage>
               </NTabPane>
               <NTabPane
                 name="SubsidyList"
                 tab="岗位管理"
-                //v-auth="sysPosition/page1596107770146689025"
+                v-auth="sysPosition/page1674714590209945602"
               >
                 <StationManage></StationManage>
               </NTabPane>

+ 33 - 6
src/views/system-manage/employee-manage/index.tsx

@@ -17,10 +17,16 @@ import { resetPassword, sysEmployeePage, sysEmployeeRemove, sysEmployeeStatus }
 import EmployeeOperation from './employee-operation'
 import { filterEmployee } from '@/utils/filters'
 import { employeeArray } from '@/utils/searchArray'
+import { useUserStore } from '@/store/modules/user'
+import { TABS_ROUTES } from '@/store/mutation-types'
+import { useRoute, useRouter } from 'vue-router'
 
 export default defineComponent({
   name: 'subsidy-list',
   setup() {
+    const router = useRouter()
+    const route = useRoute()
+    const userStore = useUserStore()
     const state = reactive({
       loading: false,
       pagination: {
@@ -48,7 +54,8 @@ export default defineComponent({
         },
         {
           title: '姓名',
-          key: 'nickname'
+          key: 'nickname',
+          width: '120px'
         },
         {
           title: '手机号',
@@ -60,6 +67,7 @@ export default defineComponent({
           // ellipsis: {
           //   tooltip: true
           // },
+          width: '300px',
           render(row: any) {
             return (
               <NSpace>
@@ -98,7 +106,7 @@ export default defineComponent({
                   type="primary"
                   size="small"
                   text
-                  //v-auth="sysEmployee/update1597891779411431425"
+                  v-auth="sysEmployee/update1674715360078639106"
                   onClick={() => {
                     state.visiableEmployee = true
                     state.employeeOperation = 'edit'
@@ -111,7 +119,7 @@ export default defineComponent({
                   type="primary"
                   size="small"
                   text
-                  //v-auth="user/resetPassword1597892728867639297"
+                  v-auth="user/resetPassword1674715612475076610"
                   onClick={() => onResetPassword(row)}
                 >
                   重置密码
@@ -122,7 +130,7 @@ export default defineComponent({
                     size="small"
                     text
                     onClick={() => onChangeStatus(row)}
-                    //v-auth="sysEmployee/status1597892902956421121"
+                    v-auth="sysEmployee/status1674715744645984257"
                   >
                     {row.status === 'LOCKED' ? '解冻' : '冻结'}
                   </NButton>
@@ -145,7 +153,7 @@ export default defineComponent({
           try {
             await resetPassword({
               userId: row.id,
-              password: 'gyt' + row.phone.substr(7),
+              password: 'nrpt' + row.phone.substr(7),
               clientType: row.clientType
             })
             message.success('重置成功')
@@ -166,6 +174,25 @@ export default defineComponent({
             await sysEmployeeStatus({ id: row.id })
             getList()
             message.success(statuStr + '成功')
+
+            if (row.status !== 'LOCKED') {
+              const userInfo: any = userStore.getUserInfo || {}
+
+              if (userInfo.phone === row.phone) {
+                userStore.logout().then(() => {
+                  // 移除标签页
+                  localStorage.removeItem(TABS_ROUTES)
+                  router
+                    .replace({
+                      name: 'Login',
+                      query: {
+                        redirect: route.fullPath
+                      }
+                    })
+                    .finally(() => location.reload())
+                })
+              }
+            }
           } catch {}
         }
       })
@@ -240,7 +267,7 @@ export default defineComponent({
           <NSpace style={{ paddingBottom: '12px' }}>
             <NButton
               type="primary"
-              //v-auth="sysEmployee/save1597891616592744449"
+              v-auth="sysEmployee/save1674715276184170497"
               onClick={() => {
                 state.visiableEmployee = true
                 state.employeeOperation = 'add'

+ 3 - 3
src/views/system-manage/menu-manage/index.tsx

@@ -96,7 +96,7 @@ export default defineComponent({
                 type="primary"
                 text
                 size="small"
-                //v-auth="sysMenu/update1597877909171064833"
+                v-auth="sysMenu/update1674673366681837570"
                 onClick={() => {
                   state.visiableMenu = true
                   state.menuType = 'edit'
@@ -109,7 +109,7 @@ export default defineComponent({
                 type="primary"
                 text
                 size="small"
-                //v-auth="sysMenu/remove1597878074728632322"
+                v-auth="sysMenu/remove1674673513016909826"
                 onClick={() => onRmove(row)}
               >
                 删除
@@ -223,7 +223,7 @@ export default defineComponent({
           <NSpace style={{ paddingBottom: '12px' }} justify="space-between">
             <NButton
               type="primary"
-              //v-auth="sysMenu/save1597877997041733633"
+              v-auth="sysMenu/save1597877997041733633"
               onClick={() => {
                 state.menuType = 'add'
                 state.applyData = []

+ 2 - 2
src/views/system-manage/menu-manage/menu-operation.tsx

@@ -51,7 +51,7 @@ export default defineComponent({
     // hidden 是否隐藏
     // linkPath 外链地址
     const forms = reactive({
-      appId: null,
+      appId: '1000001',
       parentId: null,
       type: 0,
       name: null,
@@ -117,7 +117,7 @@ export default defineComponent({
           <NGrid cols={2}>
             <NFormItemGi
               label="应用分类"
-              path="parentId"
+              path="appId"
               rule={[
                 {
                   required: true,

+ 59 - 59
src/views/system-manage/param-settings/component/project-setting.tsx

@@ -1,7 +1,10 @@
-import {NButton, NForm, NFormItemGi, NGrid, NIcon, NInput, NTooltip, useMessage} from 'naive-ui'
-import {defineComponent, onMounted, reactive, ref} from 'vue'
-import {sysParamConfigQueryByParamName, sysParamConfigUpdate} from "@views/system-manage/param-settings/api";
-import {HelpCircleOutline} from "@vicons/ionicons5";
+import { NButton, NForm, NFormItemGi, NGrid, NIcon, NInput, NTooltip, useMessage } from 'naive-ui'
+import { defineComponent, onMounted, reactive, ref } from 'vue'
+import {
+  sysParamConfigQueryByParamName,
+  sysParamConfigUpdate
+} from '@views/system-manage/param-settings/api'
+import { HelpCircleOutline } from '@vicons/ionicons5'
 
 export default defineComponent({
   name: 'project-param-setting',
@@ -15,28 +18,27 @@ export default defineComponent({
     const forms = reactive({
       id: null as any,
       paramValue: null as any,
-      group: null as any,
+      group: null as any
     }) as any
     const formsRef = ref()
     const btnLoading = ref(false)
     const message = useMessage()
 
-    const paramName = (() => {
-      return props.appKey.toLowerCase() + '_frequency' as any
-    })
+    const paramName = () => {
+      return (props.appKey.toLowerCase() + '_frequency') as any
+    }
 
     onMounted(async () => {
-      const {data} = await sysParamConfigQueryByParamName(paramName());
+      const { data } = await sysParamConfigQueryByParamName(paramName())
       if (data) {
         forms.id = data.id
         forms.paramValue = data.paramValue
         forms.group = data.group
       } else {
-        message.error("加载配置参数失败");
+        message.error('加载配置参数失败')
       }
     })
 
-
     const onSubmit = async () => {
       const param = {
         group: forms.group,
@@ -48,62 +50,60 @@ export default defineComponent({
       }
       btnLoading.value = true
       try {
-        const res = await sysParamConfigUpdate(param) as any
+        const res = (await sysParamConfigUpdate(param)) as any
         if (res && res.code == '200') {
           message.success('保存成功')
         }
-      } catch (err) {
-
-      }
+      } catch (err) {}
       btnLoading.value = false
     }
 
     return () => (
-        <>
-          <NForm labelPlacement="left" model={forms} requireMarkPlacement="left" ref={formsRef}>
-            <NGrid cols={1}>
-              <NFormItemGi
-                  label="评测频率"
-                  path="scope_of_attendance"
-                  rule={[
-                    {
-                      required: false,
-                      message: '请输入评测频率',
-                      trigger: ['blur', 'input']
-                    }
-                  ]}
-              >
-                <NInput
-                    v-model:value={forms.paramValue}
-                    placeholder="请输入评测频率"
-                    clearable
-                    style="width:200px"
-                />
-                {/*<NTooltip style={"padding-left: 10px"}>*/}
-                {/*  {{*/}
-                {/*    default: () => '评测频率支持输入多个,输入多个时需要逗号隔开',*/}
-                {/*    trigger: () => (*/}
-                {/*        <span style="overflow: hidden;display: inline-block;max-width: 200px;white-space: nowrap;text-overflow: ellipsis;">*/}
-                {/*      <NIcon size="20">*/}
-                {/*          <HelpCircleOutline/>*/}
-                {/*      </NIcon>*/}
-                {/*    </span>*/}
-                {/*    )*/}
-                {/*  }}*/}
-                {/*</NTooltip>*/}
-              </NFormItemGi>
-            </NGrid>
-          </NForm>
+      <>
+        <NForm labelPlacement="left" model={forms} requireMarkPlacement="left" ref={formsRef}>
+          <NGrid cols={1}>
+            <NFormItemGi
+              label="评测频率"
+              path="scope_of_attendance"
+              rule={[
+                {
+                  required: false,
+                  message: '请输入评测频率',
+                  trigger: ['blur', 'input']
+                }
+              ]}
+            >
+              <NInput
+                v-model:value={forms.paramValue}
+                placeholder="请输入评测频率"
+                clearable
+                style="width:200px"
+              />
+              {/*<NTooltip style={"padding-left: 10px"}>*/}
+              {/*  {{*/}
+              {/*    default: () => '评测频率支持输入多个,输入多个时需要逗号隔开',*/}
+              {/*    trigger: () => (*/}
+              {/*        <span style="overflow: hidden;display: inline-block;max-width: 200px;white-space: nowrap;text-overflow: ellipsis;">*/}
+              {/*      <NIcon size="20">*/}
+              {/*          <HelpCircleOutline/>*/}
+              {/*      </NIcon>*/}
+              {/*    </span>*/}
+              {/*    )*/}
+              {/*  }}*/}
+              {/*</NTooltip>*/}
+            </NFormItemGi>
+          </NGrid>
+        </NForm>
 
-          <NButton
-              type="primary"
-              onClick={onSubmit}
-              loading={btnLoading.value}
-              //v-auth="sysParamConfig/update1597903049401421825"
-          >
-            保存设置
-          </NButton>
-        </>
+        <NButton
+          type="primary"
+          onClick={onSubmit}
+          loading={btnLoading.value}
+          v-auth="sysParamConfig/update1750838255892299777"
+        >
+          保存设置
+        </NButton>
+      </>
     )
   }
 })

+ 34 - 34
src/views/system-manage/param-settings/index.tsx

@@ -1,10 +1,10 @@
-import {NTabPane, NTabs} from 'naive-ui'
-import {defineComponent, h, onMounted, reactive} from 'vue'
-import {useRoute} from 'vue-router'
-import {getTabsCache, setTabsCaches} from '@/hooks/use-async'
-import {appKey} from "@/utils/constant";
-import {sysApplicationPage} from "@views/menu-manage/api";
-import ProjectSetting from "@views/system-manage/param-settings/component/project-setting";
+import { NTabPane, NTabs } from 'naive-ui'
+import { defineComponent, h, onMounted, reactive } from 'vue'
+import { useRoute } from 'vue-router'
+import { getTabsCache, setTabsCaches } from '@/hooks/use-async'
+import { appKey } from '@/utils/constant'
+import { sysApplicationPage } from '@views/menu-manage/api'
+import ProjectSetting from '@views/system-manage/param-settings/component/project-setting'
 
 export default defineComponent({
   name: 'param-settings',
@@ -12,7 +12,7 @@ export default defineComponent({
     const state = reactive({
       tabName: 'KT' as 'KT' | 'GYT' | 'KLX' | 'GYM',
       appKeyList: [] as any,
-      appNameList: [] as any,
+      appNameList: [] as any
     })
     const route = useRoute()
     getTabsCache((val: any) => {
@@ -27,8 +27,8 @@ export default defineComponent({
     onMounted(async () => {
       // 获取应用APP信息
       {
-        const appKeys = Object.keys(appKey);
-        const {data} = await sysApplicationPage({page: 1, rows: 99, parentId: 0})
+        const appKeys = Object.keys(appKey)
+        const { data } = await sysApplicationPage({ page: 1, rows: 99, parentId: 0 })
         const tempList = data.rows || []
         tempList.forEach((next: any) => {
           if (appKeys.includes(next.appKey)) {
@@ -41,31 +41,31 @@ export default defineComponent({
 
     return () => {
       return (
-          <div class="system-menu-container">
-            <div class={['section-container']} style="padding-top: 0">
-              <NTabs
-                  type="line"
-                  size="large"
-                  v-model:value={state.tabName}
-                  onUpdate:value={(val: any) => setTabs(val)}
-              >
-                {state.appKeyList.map((app: any, index: number) => {
-                  return h(
-                      NTabPane,
-                      {
-                        name: app,
-                        tab: state.appNameList[index]
-                      },
-                      {
-                        default: () => {
-                          return h(ProjectSetting, {'appKey': app})
-                        }
-                      }
-                  )
-                })}
-              </NTabs>
-            </div>
+        <div class="system-menu-container">
+          <div class={['section-container']} style="padding-top: 0">
+            <NTabs
+              type="line"
+              size="large"
+              v-model:value={state.tabName}
+              onUpdate:value={(val: any) => setTabs(val)}
+            >
+              {state.appKeyList.map((app: any, index: number) => {
+                return h(
+                  NTabPane,
+                  {
+                    name: app,
+                    tab: state.appNameList[index]
+                  },
+                  {
+                    default: () => {
+                      return h(ProjectSetting, { appKey: app })
+                    }
+                  }
+                )
+              })}
+            </NTabs>
           </div>
+        </div>
       )
     }
   }

+ 3 - 3
src/views/system-manage/role-mange/index.tsx

@@ -79,7 +79,7 @@ export default defineComponent({
                   type="primary"
                   size="small"
                   text
-                  //v-auth="sysRole/update1597890274151223298"
+                  v-auth="sysRole/update1674690192555945985"
                   onClick={() => {
                     state.visiableRole = true
                     state.roleOperation = 'edit'
@@ -93,7 +93,7 @@ export default defineComponent({
                   size="small"
                   text
                   onClick={() => onRemove(row)}
-                  //v-auth="sysRole/remove1597890339439759362"
+                  v-auth="sysRole/remove1674690265977237505"
                 >
                   删除
                 </NButton>
@@ -204,7 +204,7 @@ export default defineComponent({
           <NSpace style={{ paddingBottom: '12px' }}>
             <NButton
               type="primary"
-              //v-auth="sysRole/save1597890178735001601"
+              v-auth="sysRole/save1674690114734829569"
               onClick={() => {
                 state.visiableRole = true
                 state.roleData = {}

+ 3 - 3
src/views/system-manage/station-manage/index.tsx

@@ -60,7 +60,7 @@ export default defineComponent({
                   type="primary"
                   size="small"
                   text
-                  //v-auth="sysPosition/update1597891012130623489"
+                  v-auth="sysPosition/update1674715076040372226"
                   onClick={() => {
                     state.visiableRole = true
                     state.roleOperation = 'edit'
@@ -74,7 +74,7 @@ export default defineComponent({
                   size="small"
                   text
                   onClick={() => onRmove(row)}
-                  //v-auth="sysPosition/remove1597891111267192834"
+                  v-auth="sysPosition/remove1674715154104758274"
                 >
                   删除
                 </NButton>
@@ -124,7 +124,7 @@ export default defineComponent({
           <NSpace style={{ paddingBottom: '12px' }}>
             <NButton
               type="primary"
-              //v-auth="sysPosition/save1597890897835839489"
+              v-auth="sysPosition/save1674714984063479809"
               onClick={() => {
                 state.visiableRole = true
                 state.roleOperation = 'add'

+ 25 - 30
src/views/system-manage/subject-manage/index.tsx

@@ -1,9 +1,9 @@
-import {NTabPane, NTabs} from 'naive-ui'
-import {defineComponent, reactive} from 'vue'
-import {useRoute} from 'vue-router'
-import {getTabsCache, setTabsCaches} from '@/hooks/use-async'
-import SubjectList from "@views/system-manage/subject-manage/subject/subject-list";
-import CategorizeList from "@views/system-manage/subject-manage/subject-categorize/categorize-list";
+import { NTabPane, NTabs } from 'naive-ui'
+import { defineComponent, reactive } from 'vue'
+import { useRoute } from 'vue-router'
+import { getTabsCache, setTabsCaches } from '@/hooks/use-async'
+import SubjectList from '@views/system-manage/subject-manage/subject/subject-list'
+import CategorizeList from '@views/system-manage/subject-manage/subject-categorize/categorize-list'
 
 export default defineComponent({
   name: 'subject-manage',
@@ -21,33 +21,28 @@ export default defineComponent({
       setTabsCaches(val, 'tabName', route)
     }
     return () => {
-      // const Component = resolveDynamicComponent(state.componentName)
       return (
-          <div class="system-menu-container">
-            <div class={['section-container']} style="padding-top: 0">
-              <NTabs
-                  type="line"
-                  size="large"
-                  v-model:value={state.tabName}
-                  onUpdate:value={(val: any) => setTabs(val)}
+        <div class="system-menu-container">
+          <div class={['section-container']} style="padding-top: 0">
+            <NTabs
+              type="line"
+              size="large"
+              v-model:value={state.tabName}
+              onUpdate:value={(val: any) => setTabs(val)}
+            >
+              <NTabPane name="Subject" tab="声部列表" v-auth="subject/page1750841398407462913">
+                <SubjectList />
+              </NTabPane>
+              <NTabPane
+                name="Categorize"
+                tab="声部分类"
+                v-auth="subjectCategory/page1750841511318126593"
               >
-                <NTabPane
-                    name="Subject"
-                    tab="声部列表"
-                    //v-auth="sysUserLoginLog/page1597883965544714242"
-                >
-                  <SubjectList />
-                </NTabPane>
-                <NTabPane
-                    name="Categorize"
-                    tab="声部分类"
-                    //v-auth="sysUserLogin/page1597884090153291778"
-                >
-                  <CategorizeList />
-                </NTabPane>
-              </NTabs>
-            </div>
+                <CategorizeList />
+              </NTabPane>
+            </NTabs>
           </div>
+        </div>
       )
     }
   }

+ 157 - 145
src/views/system-manage/subject-manage/instrument/instrument-list.tsx

@@ -1,13 +1,28 @@
 import Pagination from '@/components/pagination'
-import {NButton, NDataTable, NDatePicker, NFormItem, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
-import {defineComponent, onMounted, reactive, ref} from 'vue'
-import SaveForm from "@components/save-form";
-import {musicalInstrumentPage, musicalInstrumentUpdateStatus} from "@views/system-manage/subject-manage/api";
-import {getMapValueByKey} from "@/utils/filters";
-import {defaultScore} from "@/utils/constant";
-import {getSelectDataFromObj} from "@/utils/objectUtil";
-import InstrumentSave from "@views/system-manage/subject-manage/instrument/modal/instrument-save";
-import {filterTimes} from "@/utils/dateUtil";
+import {
+  NButton,
+  NDataTable,
+  NDatePicker,
+  NFormItem,
+  NInput,
+  NModal,
+  NSelect,
+  NSpace,
+  NTag,
+  useDialog,
+  useMessage
+} from 'naive-ui'
+import { defineComponent, onMounted, reactive, ref } from 'vue'
+import SaveForm from '@components/save-form'
+import {
+  musicalInstrumentPage,
+  musicalInstrumentUpdateStatus
+} from '@views/system-manage/subject-manage/api'
+import { getMapValueByKey } from '@/utils/filters'
+import { defaultScore } from '@/utils/constant'
+import { getSelectDataFromObj } from '@/utils/objectUtil'
+import InstrumentSave from '@views/system-manage/subject-manage/instrument/modal/instrument-save'
+import { filterTimes } from '@/utils/dateUtil'
 
 export default defineComponent({
   name: 'instrument-list',
@@ -28,12 +43,12 @@ export default defineComponent({
         endTime: null,
         defaultScore: null, //默认谱面
         code: null, //编码
-        operatorKeyword: null, //操作人
+        operatorKeyword: null //操作人
       },
       dataList: [] as any,
       showSave: false,
       saveMode: 'add',
-      rowData: {},
+      rowData: {}
     })
 
     const saveForm = ref()
@@ -59,8 +74,7 @@ export default defineComponent({
             })
             getList()
             message.success(`${statusStr}成功`)
-          } catch {
-          }
+          } catch {}
         }
       })
     }
@@ -90,7 +104,7 @@ export default defineComponent({
           title: '默认谱面',
           key: 'defaultScore',
           render(row: any) {
-            return getMapValueByKey(row.defaultScore, new Map(Object.entries(defaultScore)));
+            return getMapValueByKey(row.defaultScore, new Map(Object.entries(defaultScore)))
           }
         },
         {
@@ -98,11 +112,10 @@ export default defineComponent({
           key: 'operator',
           render(row: any) {
             return (
-                <div>
-                  <div>{row.operatorName}</div>
-                  <div>{row.updateTime}</div>
-                </div>
-
+              <div>
+                <div>{row.operatorName}</div>
+                <div>{row.updateTime}</div>
+              </div>
             )
           }
         },
@@ -111,7 +124,9 @@ export default defineComponent({
           key: 'enableFlag',
           render(row: any) {
             return (
-                <NTag type={row.enableFlag ? 'primary' : 'default'}>{row.enableFlag ? '启用' : '停用'}</NTag>
+              <NTag type={row.enableFlag ? 'primary' : 'default'}>
+                {row.enableFlag ? '启用' : '停用'}
+              </NTag>
             )
           }
         },
@@ -120,30 +135,30 @@ export default defineComponent({
           key: 'operation',
           render(row: any) {
             return (
-                <NSpace>
-                  <NButton
-                      type="primary"
-                      size="small"
-                      text
-                      //v-auth="cityFeeSetting/update1597887290159779842"
-                      onClick={() => {
-                        state.rowData = row
-                        state.showSave = true
-                        state.saveMode = 'edit'
-                      }}
-                  >
-                    修改
-                  </NButton>
-                  <NButton
-                      type="primary"
-                      size="small"
-                      text
-                      //v-auth="sysNotice/status1599959101026455553"
-                      onClick={() => onChangeStatus(row)}
-                  >
-                    {row.enableFlag ? '停用' : '启用'}
-                  </NButton>
-                </NSpace>
+              <NSpace>
+                <NButton
+                  type="primary"
+                  size="small"
+                  text
+                  v-auth="musicalInstrument/update1750840718913437697"
+                  onClick={() => {
+                    state.rowData = row
+                    state.showSave = true
+                    state.saveMode = 'edit'
+                  }}
+                >
+                  修改
+                </NButton>
+                <NButton
+                  type="primary"
+                  size="small"
+                  text
+                  v-auth="musicalInstrument/enable1750840534934487042"
+                  onClick={() => onChangeStatus(row)}
+                >
+                  {row.enableFlag ? '停用' : '启用'}
+                </NButton>
+              </NSpace>
             )
           }
         }
@@ -153,10 +168,10 @@ export default defineComponent({
     const getList = async () => {
       try {
         state.loading = true
-        const {data} = await musicalInstrumentPage({
-          ...state.pagination, ...state.searchForm,
-          ...filterTimes(state.searchForm.timer, ['startTime', 'endTime']),
-
+        const { data } = await musicalInstrumentPage({
+          ...state.pagination,
+          ...state.searchForm,
+          ...filterTimes(state.searchForm.timer, ['startTime', 'endTime'])
         })
         state.loading = false
         state.pagination.pageTotal = Number(data.total)
@@ -170,106 +185,103 @@ export default defineComponent({
       getList()
     })
     return () => (
-        <div class="system-menu-container">
-          <div class={['section-container']}>
-            <SaveForm
-                ref={saveForm}
-                model={state.searchForm}
-                onSubmit={onSubmit}
-                onSetModel={(val: any) => Object.assign(state.searchForm, val)}
-                saveKey="instrument-list"
-            >
-
-              <NFormItem path="keyword" label="关键字">
-                <NInput
-                    placeholder="请输入编号/名称"
-                    v-model:value={state.searchForm.keyword}
-                    clearable
-                />
-              </NFormItem>
-              <NFormItem path="defaultScore" label="默认谱面">
-                <NSelect
-                    options={getSelectDataFromObj(defaultScore)}
-                    v-model:value={state.searchForm.defaultScore}
-                    placeholder="请选择默认谱面"
-                    clearable
-                />
-              </NFormItem>
-              <NFormItem path="code" label="乐器编码">
-                <NInput
-                    v-model:value={state.searchForm.code}
-                    placeholder="请输入乐器编码"
-                    clearable
-                />
-              </NFormItem>
-              <NFormItem path="operatorName" label="操作人">
-                <NInput
-                    v-model:value={state.searchForm.operatorKeyword}
-                    placeholder="请输入操作人"
-                    clearable
-                />
-              </NFormItem>
-              <NFormItem path="updateTime" label="操作时间">
-                <NDatePicker v-model:value={state.searchForm.timer} type="daterange" clearable/>
-              </NFormItem>
-
-              <NFormItem>
-                <NSpace>
-                  <NButton type="primary" onClick={onSearch}>
-                    搜索
-                  </NButton>
-                  <NButton type="default" onClick={onBtnReset}>
-                    重置
-                  </NButton>
-                </NSpace>
-              </NFormItem>
-
-            </SaveForm>
-            <NSpace style={{paddingBottom: '12px'}}>
-              <NButton
-                  type="primary"
-                  //v-auth="musicSheetCategories/save1608067543331045378"
-                  onClick={() => {
-                    state.rowData = {}
-                    state.showSave = true
-                    state.saveMode = 'add'
-                  }}
-              >
-                添加
-              </NButton>
-            </NSpace>
+      <div class="system-menu-container">
+        <div class={['section-container']}>
+          <SaveForm
+            ref={saveForm}
+            model={state.searchForm}
+            onSubmit={onSubmit}
+            onSetModel={(val: any) => Object.assign(state.searchForm, val)}
+            saveKey="instrument-list"
+          >
+            <NFormItem path="keyword" label="关键字">
+              <NInput
+                placeholder="请输入编号/名称"
+                v-model:value={state.searchForm.keyword}
+                clearable
+              />
+            </NFormItem>
+            <NFormItem path="defaultScore" label="默认谱面">
+              <NSelect
+                options={getSelectDataFromObj(defaultScore)}
+                v-model:value={state.searchForm.defaultScore}
+                placeholder="请选择默认谱面"
+                clearable
+              />
+            </NFormItem>
+            <NFormItem path="code" label="乐器编码">
+              <NInput
+                v-model:value={state.searchForm.code}
+                placeholder="请输入乐器编码"
+                clearable
+              />
+            </NFormItem>
+            <NFormItem path="operatorName" label="操作人">
+              <NInput
+                v-model:value={state.searchForm.operatorKeyword}
+                placeholder="请输入操作人"
+                clearable
+              />
+            </NFormItem>
+            <NFormItem path="updateTime" label="操作时间">
+              <NDatePicker v-model:value={state.searchForm.timer} type="daterange" clearable />
+            </NFormItem>
 
-            <NDataTable
-                loading={state.loading}
-                columns={columns()}
-                data={state.dataList}
-                rowKey={(row: any) => row.id}
-            ></NDataTable
+            <NFormItem>
+              <NSpace>
+                <NButton type="primary" onClick={onSearch}>
+                  搜索
+                </NButton>
+                <NButton type="default" onClick={onBtnReset}>
+                  重置
+                </NButton>
+              </NSpace>
+            </NFormItem>
+          </SaveForm>
+          <NSpace style={{ paddingBottom: '12px' }}>
+            <NButton
+              type="primary"
+              v-auth="musicalInstrument/save1750840633332858882"
+              onClick={() => {
+                state.rowData = {}
+                state.showSave = true
+                state.saveMode = 'add'
+              }}
             >
-            <Pagination
-                v-model:page={state.pagination.page}
-                v-model:pageSize={state.pagination.rows}
-                v-model:pageTotal={state.pagination.pageTotal}
-                onList={getList}
-                sync
-                saveKey="login-device"
-            ></Pagination>
-          </div>
-          <NModal
-              v-model:show={state.showSave}
-              preset="dialog"
-              showIcon={false}
-              title={state.saveMode === 'add' ? '新增乐器' : '修改乐器'}
-              style={{width: '500px'}}
-          >
-            <InstrumentSave
-                type={state.saveMode}
-                data={state.rowData}
-                onClose={() => (state.showSave = false)}
-                onGetList={getList}
-            />
-          </NModal>
+              添加
+            </NButton>
+          </NSpace>
+
+          <NDataTable
+            loading={state.loading}
+            columns={columns()}
+            data={state.dataList}
+            rowKey={(row: any) => row.id}
+          ></NDataTable>
+          <Pagination
+            v-model:page={state.pagination.page}
+            v-model:pageSize={state.pagination.rows}
+            v-model:pageTotal={state.pagination.pageTotal}
+            onList={getList}
+            sync
+            saveKey="login-device"
+          ></Pagination>
         </div>
+        <NModal
+          v-model:show={state.showSave}
+          preset="dialog"
+          showIcon={false}
+          title={state.saveMode === 'add' ? '新增乐器' : '修改乐器'}
+          style={{ width: '500px' }}
+        >
+          <InstrumentSave
+            type={state.saveMode}
+            data={state.rowData}
+            onClose={() => (state.showSave = false)}
+            onGetList={getList}
+          />
+        </NModal>
+      </div>
     )
   }
 })

+ 80 - 97
src/views/system-manage/subject-manage/subject-categorize/categorize-list.tsx

@@ -1,9 +1,12 @@
-import {NButton, NDataTable, NModal, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
-import {defineComponent, onMounted, reactive} from 'vue'
-import CategorizeSave from "@views/system-manage/subject-manage/subject-categorize/modal/categorize-save";
-import {subjectCategoryPage, subjectCategoryUpdateStatus} from "@views/system-manage/subject-manage/api";
-import {getTimes} from "@/utils/dateUtil";
-import Pagination from "@components/pagination";
+import { NButton, NDataTable, NModal, NSpace, NTag, useDialog, useMessage } from 'naive-ui'
+import { defineComponent, onMounted, reactive } from 'vue'
+import CategorizeSave from '@views/system-manage/subject-manage/subject-categorize/modal/categorize-save'
+import {
+  subjectCategoryPage,
+  subjectCategoryUpdateStatus
+} from '@views/system-manage/subject-manage/api'
+import { getTimes } from '@/utils/dateUtil'
+import Pagination from '@components/pagination'
 
 export default defineComponent({
   name: 'category-list',
@@ -20,7 +23,7 @@ export default defineComponent({
       dataList: [] as any,
       saveMode: 'add',
       showSaveDialog: false,
-      rowData: {},
+      rowData: {}
     })
     const searchForm = reactive({
       keyword: '',
@@ -36,29 +39,20 @@ export default defineComponent({
         },
         {
           title: '分类名称',
-          key: 'name',
+          key: 'name'
         },
         {
           title: '操作人',
           key: 'operator',
           render(row: any) {
             return (
-                <div>
-                  <div>{row.operatorName}</div>
-                  <div>{row.updateTime}</div>
-                </div>
+              <div>
+                <div>{row.operatorName}</div>
+                <div>{row.updateTime}</div>
+              </div>
             )
           }
         },
-        // {
-        //   title: '状态',
-        //   key: 'enableFlag',
-        //   render(row: any) {
-        //     return (
-        //         <NTag type={row.enableFlag ? 'primary' : 'default'}>{row.enableFlag ? '启用' : '停用'}</NTag>
-        //     )
-        //   }
-        // },
         {
           title: '操作',
           key: 'operation',
@@ -66,29 +60,20 @@ export default defineComponent({
           width: 180,
           render(row: any) {
             return (
-                <NSpace>
-                  <NButton
-                      type="primary"
-                      text
-                      //v-auth="materialCategory/update1599962354053140482"
-                      onClick={() => {
-                        state.saveMode = 'edit'
-                        state.showSaveDialog = true
-                        state.rowData = row
-                      }}
-                  >
-                    修改
-                  </NButton>
-                  {/*<NButton*/}
-                  {/*    type="primary"*/}
-                  {/*    size="small"*/}
-                  {/*    text*/}
-                  {/*    //v-auth="sysNotice/status1599959101026455553"*/}
-                  {/*    onClick={() => onChangeStatus(row)}*/}
-                  {/*>*/}
-                  {/*  {row.enableFlag ? '停用' : '启用'}*/}
-                  {/*</NButton>*/}
-                </NSpace>
+              <NSpace>
+                <NButton
+                  type="primary"
+                  text
+                  v-auth="subjectCategory/update1750844787669336066"
+                  onClick={() => {
+                    state.saveMode = 'edit'
+                    state.showSaveDialog = true
+                    state.rowData = row
+                  }}
+                >
+                  修改
+                </NButton>
+              </NSpace>
             )
           }
         }
@@ -98,14 +83,14 @@ export default defineComponent({
     const getList = async () => {
       try {
         state.loading = true
-        const {times, ...reset} = searchForm
+        const { times, ...reset } = searchForm
         const body = {
           ...reset,
           ...getTimes(times, ['startTime', 'endTime']),
           page: state.pagination.page,
           rows: state.pagination.rows
         }
-        const {data} = await subjectCategoryPage(body)
+        const { data } = await subjectCategoryPage(body)
         state.loading = false
         state.pagination.pageTotal = Number(data.total)
         state.dataList = data.rows || []
@@ -128,8 +113,7 @@ export default defineComponent({
             })
             getList()
             message.success(`${statusStr}成功`)
-          } catch {
-          }
+          } catch {}
         }
       })
     }
@@ -139,56 +123,55 @@ export default defineComponent({
     })
 
     return () => (
-        <div class="system-menu-container">
-          <div class={['section-container']}>
-            <NSpace style={{paddingBottom: '12px'}}>
-              <NButton
-                  type="primary"
-                  //v-auth="materialCategory/save1599962104022290433"
-                  onClick={() => {
-                    state.saveMode = 'add'
-                    state.showSaveDialog = true
-                  }}
-                  disabled={state.loading}
-              >
-                添加
-              </NButton>
-            </NSpace>
-            <NDataTable
-                scroll-x="1300"
-                loading={state.loading}
-                columns={columns()}
-                data={state.dataList}
-                children-key="subMaterialCategoryList"
-                default-expand-all={false}
-                row-key={(row: any) => row.id}
-            ></NDataTable>
-            <Pagination
-                v-model:page={state.pagination.page}
-                v-model:pageSize={state.pagination.rows}
-                v-model:pageTotal={state.pagination.pageTotal}
-                onList={getList}
-                sync
-                saveKey="categorize-list"
-            ></Pagination>
-          </div>
-
-          <NModal
-              v-model:show={state.showSaveDialog}
-              preset="dialog"
-              showIcon={false}
-              title={state.saveMode === 'add' ? '新增分类' : '修改分类'}
-              style={{width: '400px'}}
-          >
-            <CategorizeSave
-                type={state.saveMode}
-                data={state.rowData}
-                onClose={() => (state.showSaveDialog = false)}
-                onGetList={getList}
-            />
-
-          </NModal>
+      <div class="system-menu-container">
+        <div class={['section-container']}>
+          <NSpace style={{ paddingBottom: '12px' }}>
+            <NButton
+              type="primary"
+              v-auth="subjectCategory/save1750844729750192130"
+              onClick={() => {
+                state.saveMode = 'add'
+                state.showSaveDialog = true
+              }}
+              disabled={state.loading}
+            >
+              添加
+            </NButton>
+          </NSpace>
+          <NDataTable
+            scroll-x="1300"
+            loading={state.loading}
+            columns={columns()}
+            data={state.dataList}
+            children-key="subMaterialCategoryList"
+            default-expand-all={false}
+            row-key={(row: any) => row.id}
+          ></NDataTable>
+          <Pagination
+            v-model:page={state.pagination.page}
+            v-model:pageSize={state.pagination.rows}
+            v-model:pageTotal={state.pagination.pageTotal}
+            onList={getList}
+            sync
+            saveKey="categorize-list"
+          ></Pagination>
         </div>
+
+        <NModal
+          v-model:show={state.showSaveDialog}
+          preset="dialog"
+          showIcon={false}
+          title={state.saveMode === 'add' ? '新增分类' : '修改分类'}
+          style={{ width: '400px' }}
+        >
+          <CategorizeSave
+            type={state.saveMode}
+            data={state.rowData}
+            onClose={() => (state.showSaveDialog = false)}
+            onGetList={getList}
+          />
+        </NModal>
+      </div>
     )
   }
 })

+ 178 - 165
src/views/system-manage/subject-manage/subject/subject-list.tsx

@@ -1,14 +1,33 @@
 import SaveForm from '@/components/save-form'
-import {DataTableColumn, NButton, NDataTable, NDatePicker, NFormItem, NImage, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
-import {defineComponent, onMounted, reactive, ref} from 'vue'
+import {
+  DataTableColumn,
+  NButton,
+  NDataTable,
+  NDatePicker,
+  NFormItem,
+  NImage,
+  NInput,
+  NModal,
+  NSelect,
+  NSpace,
+  NTag,
+  useDialog,
+  useMessage
+} from 'naive-ui'
+import { defineComponent, onMounted, reactive, ref } from 'vue'
 import styles from '../index.module.less'
-import {musicalInstrumentPage, subjectCategoryPage, subjectPage, subjectUpdateStatus} from "@views/system-manage/subject-manage/api";
-import {filterTimes} from "@/utils/dateUtil";
-import SubjectSave from "@views/system-manage/subject-manage/subject/modal/subject-save";
-import Pagination from "@components/pagination";
-import deepClone from "@/utils/deep.clone";
-import axios from "axios";
-import cleanDeep from "clean-deep";
+import {
+  musicalInstrumentPage,
+  subjectCategoryPage,
+  subjectPage,
+  subjectUpdateStatus
+} from '@views/system-manage/subject-manage/api'
+import { filterTimes } from '@/utils/dateUtil'
+import SubjectSave from '@views/system-manage/subject-manage/subject/modal/subject-save'
+import Pagination from '@components/pagination'
+import deepClone from '@/utils/deep.clone'
+import axios from 'axios'
+import cleanDeep from 'clean-deep'
 
 export default defineComponent({
   name: 'subject-list',
@@ -27,14 +46,14 @@ export default defineComponent({
       showSaveDialog: false,
       rowData: {},
       categorizeList: [] as any,
-      instrumentList: [] as any,
+      instrumentList: [] as any
     })
     const searchForm = reactive({
       keyword: null,
       times: null as any,
       operatorKeyword: null, //创建人
-      categoryId: null,//声部分类
-      musicalInstrumentId: null,//关联乐器
+      categoryId: null, //声部分类
+      musicalInstrumentId: null //关联乐器
     })
 
     const columns = (): DataTableColumn[] => {
@@ -45,7 +64,7 @@ export default defineComponent({
         },
         {
           title: '声部名称',
-          key: 'name',
+          key: 'name'
         },
         {
           title: '声部分类',
@@ -59,7 +78,7 @@ export default defineComponent({
           title: '图片',
           key: 'img',
           render(row: any) {
-            return <NImage width={70} src={row.img}/>
+            return <NImage width={70} src={row.img} />
           }
         },
         {
@@ -71,10 +90,10 @@ export default defineComponent({
           key: 'operator',
           render(row: any) {
             return (
-                <div>
-                  <div>{row.operatorName}</div>
-                  <div>{row.updateTime}</div>
-                </div>
+              <div>
+                <div>{row.operatorName}</div>
+                <div>{row.updateTime}</div>
+              </div>
             )
           }
         },
@@ -83,7 +102,9 @@ export default defineComponent({
           key: 'enableFlag',
           render(row: any) {
             return (
-                <NTag type={row.enableFlag ? 'primary' : 'default'}>{row.enableFlag ? '启用' : '停用'}</NTag>
+              <NTag type={row.enableFlag ? 'primary' : 'default'}>
+                {row.enableFlag ? '启用' : '停用'}
+              </NTag>
             )
           }
         },
@@ -94,29 +115,29 @@ export default defineComponent({
           width: 180,
           render(row: any) {
             return (
-                <NSpace>
-                  <NButton
-                      type="primary"
-                      text
-                      //v-auth="materialCategory/update1599962354053140482"
-                      onClick={() => {
-                        state.saveMode = 'edit'
-                        state.showSaveDialog = true
-                        state.rowData = row
-                      }}
-                  >
-                    修改
-                  </NButton>
-                  <NButton
-                      type="primary"
-                      size="small"
-                      text
-                      //v-auth="sysNotice/status1599959101026455553"
-                      onClick={() => onChangeStatus(row)}
-                  >
-                    {row.enableFlag ? '停用' : '启用'}
-                  </NButton>
-                </NSpace>
+              <NSpace>
+                <NButton
+                  type="primary"
+                  text
+                  v-auth="subject/update1674707240824647681"
+                  onClick={() => {
+                    state.saveMode = 'edit'
+                    state.showSaveDialog = true
+                    state.rowData = row
+                  }}
+                >
+                  修改
+                </NButton>
+                <NButton
+                  type="primary"
+                  size="small"
+                  text
+                  v-auth="subject/enable1750845368043569153"
+                  onClick={() => onChangeStatus(row)}
+                >
+                  {row.enableFlag ? '停用' : '启用'}
+                </NButton>
+              </NSpace>
             )
           }
         }
@@ -143,19 +164,19 @@ export default defineComponent({
           page: 1,
           rows: 9999
         }
-        const {data} = await subjectCategoryPage(body)
+        const { data } = await subjectCategoryPage(body)
         state.loading = false
 
         data.rows.forEach((next: any) => {
           state.categorizeList.push({
             label: next.name,
             value: next.id,
-            enableFlag: next.enableFlag,
+            enableFlag: next.enableFlag
           })
         })
         console.log(state.categorizeList)
       } catch (e) {
-        console.log("err", e);
+        console.log('err', e)
       }
     }
     const initInstrumentList = async () => {
@@ -165,33 +186,30 @@ export default defineComponent({
           page: 1,
           rows: 9999
         }
-        const {data} = await musicalInstrumentPage(body)
+        const { data } = await musicalInstrumentPage(body)
         state.loading = false
 
         data.rows.forEach((next: any) => {
           state.instrumentList.push({
             label: next.name,
             value: next.id + '',
-            enableFlag: next.enableFlag,
+            enableFlag: next.enableFlag
           })
         })
-      } catch (e) {
-
-      }
+      } catch (e) {}
     }
 
     const getList = async () => {
       try {
         state.loading = true
-        const {times, ...reset} = searchForm
+        const { times, ...reset } = searchForm
         const body = {
           ...reset,
           ...filterTimes(times, ['startTime', 'endTime']),
           page: state.pagination.page,
-          rows: state.pagination.rows,
-
+          rows: state.pagination.rows
         }
-        const {data} = await subjectPage(body)
+        const { data } = await subjectPage(body)
         state.loading = false
         state.pagination.pageTotal = Number(data.total)
         state.dataList = data.rows || []
@@ -204,7 +222,7 @@ export default defineComponent({
       const statusStr = row.enableFlag ? '停用' : '启用'
       dialog.warning({
         title: `提示`,
-        content:`是否${statusStr}?${!row.enableFlag ?'':'停用声部不允许业务系统关联'}`,
+        content: `是否${statusStr}?${!row.enableFlag ? '' : '停用声部不允许业务系统关联'}`,
         // content: (() => {
         //   return <div>
         //     <div>
@@ -216,10 +234,10 @@ export default defineComponent({
         negativeText: '取消',
         onPositiveClick: async () => {
           try {
-            const res = await subjectUpdateStatus({
+            const res = (await subjectUpdateStatus({
               id: row.id,
               confirm: true
-            }) as any
+            })) as any
             // if (res.code == '999') {
             //   dialog.warning({
             //     title: '提示',
@@ -237,8 +255,7 @@ export default defineComponent({
             // }
             message.success(`${statusStr}成功`)
             getList()
-          } catch {
-          }
+          } catch {}
         }
       })
     }
@@ -250,114 +267,110 @@ export default defineComponent({
     })
 
     return () => (
-        <div class="system-menu-container">
-          <SaveForm
-              ref={saveForm}
-              model={searchForm}
-              onSubmit={onSubmit}
-              onSetModel={(val: any) => Object.assign(searchForm, val)}
-              saveKey="subject-list"
-          >
-            <NFormItem path="keyword" label="关键字">
-              <NInput
-                  placeholder="请输入编号/名称"
-                  v-model:value={searchForm.keyword}
-                  clearable
-              />
-            </NFormItem>
-            <NFormItem path="categoryId" label="声部分类">
-              <NSelect
-                  placeholder="请选择声部分类"
-                  v-model:value={searchForm.categoryId}
-                  filterable
-                  options={state.categorizeList}
-                  clearable
-              />
-            </NFormItem>
-            <NFormItem path="musicalInstrumentId" label="关联乐器">
-              <NSelect
-                  v-model:value={searchForm.musicalInstrumentId}
-                  placeholder="请选择关联乐器"
-                  filterable
-                  options={state.instrumentList}
-                  clearable
-              />
-            </NFormItem>
-            <NFormItem path="operatorKeyword" label="操作人">
-              <NInput
-                  placeholder="请输入操作人"
-                  v-model:value={searchForm.operatorKeyword}
-                  clearable
-              />
-            </NFormItem>
-            <NFormItem path="times" label="操作时间">
-              <NDatePicker
-                  class={styles.datepicker}
-                  value-format="yyyy.MM.dd"
-                  v-model:value={searchForm.times}
-                  type="daterange"
-                  clearable
-              />
-            </NFormItem>
-            <NFormItem>
-              <NSpace>
-                <NButton type="primary" onClick={onSearch}>
-                  查询
-                </NButton>
-                <NButton type="default" onClick={onBtnReset}>
-                  重置
-                </NButton>
-              </NSpace>
-            </NFormItem>
-          </SaveForm>
+      <div class="system-menu-container">
+        <SaveForm
+          ref={saveForm}
+          model={searchForm}
+          onSubmit={onSubmit}
+          onSetModel={(val: any) => Object.assign(searchForm, val)}
+          saveKey="subject-list"
+        >
+          <NFormItem path="keyword" label="关键字">
+            <NInput placeholder="请输入编号/名称" v-model:value={searchForm.keyword} clearable />
+          </NFormItem>
+          <NFormItem path="categoryId" label="声部分类">
+            <NSelect
+              placeholder="请选择声部分类"
+              v-model:value={searchForm.categoryId}
+              filterable
+              options={state.categorizeList}
+              clearable
+            />
+          </NFormItem>
+          <NFormItem path="musicalInstrumentId" label="关联乐器">
+            <NSelect
+              v-model:value={searchForm.musicalInstrumentId}
+              placeholder="请选择关联乐器"
+              filterable
+              options={state.instrumentList}
+              clearable
+            />
+          </NFormItem>
+          <NFormItem path="operatorKeyword" label="操作人">
+            <NInput
+              placeholder="请输入操作人"
+              v-model:value={searchForm.operatorKeyword}
+              clearable
+            />
+          </NFormItem>
+          <NFormItem path="times" label="操作时间">
+            <NDatePicker
+              class={styles.datepicker}
+              value-format="yyyy.MM.dd"
+              v-model:value={searchForm.times}
+              type="daterange"
+              clearable
+            />
+          </NFormItem>
+          <NFormItem>
+            <NSpace>
+              <NButton type="primary" onClick={onSearch}>
+                查询
+              </NButton>
+              <NButton type="default" onClick={onBtnReset}>
+                重置
+              </NButton>
+            </NSpace>
+          </NFormItem>
+        </SaveForm>
 
-          <NSpace style={{paddingBottom: '12px'}}>
-            <NButton
-                type="primary"
-                //v-auth="materialCategory/save1599962104022290433"
-                onClick={() => {
-                  state.saveMode = 'add'
-                  state.showSaveDialog = true
-                }}
-                disabled={state.loading}
-            >
-              添加
-            </NButton>
-          </NSpace>
-          <NDataTable
-              scroll-x="1300"
-              loading={state.loading}
-              columns={columns()}
-              data={state.dataList}
-              children-key="subMaterialCategoryList"
-              default-expand-all={false}
-              row-key={(row: any) => row.id}
-          ></NDataTable>
-          <Pagination
-              v-model:page={state.pagination.page}
-              v-model:pageSize={state.pagination.rows}
-              v-model:pageTotal={state.pagination.pageTotal}
-              onList={getList}
-              sync
-              saveKey="login-device"
-          ></Pagination>
-          <NModal
-              v-model:show={state.showSaveDialog}
-              preset="dialog"
-              showIcon={false}
-              title={state.saveMode === 'add' ? '添加声部' : '修改声部'}
-              style={{width: '400px'}}
+        <NSpace style={{ paddingBottom: '12px' }}>
+          <NButton
+            type="primary"
+            v-auth="subject/save1674707175963930625"
+            onClick={() => {
+              state.saveMode = 'add'
+              state.showSaveDialog = true
+            }}
+            disabled={state.loading}
           >
-            <SubjectSave
-                type={state.saveMode}
-                data={state.rowData}
-                categoryList={deepClone(state.categorizeList)}
-                instrumentList={deepClone(state.instrumentList)}
-                onClose={() => (state.showSaveDialog = false)}
-                onGetList={getList}
-            />
-          </NModal>
-        </div>
+            添加
+          </NButton>
+        </NSpace>
+        <NDataTable
+          scroll-x="1300"
+          loading={state.loading}
+          columns={columns()}
+          data={state.dataList}
+          children-key="subMaterialCategoryList"
+          default-expand-all={false}
+          row-key={(row: any) => row.id}
+        ></NDataTable>
+        <Pagination
+          v-model:page={state.pagination.page}
+          v-model:pageSize={state.pagination.rows}
+          v-model:pageTotal={state.pagination.pageTotal}
+          onList={getList}
+          sync
+          saveKey="login-device"
+        ></Pagination>
+        <NModal
+          v-model:show={state.showSaveDialog}
+          preset="dialog"
+          showIcon={false}
+          title={state.saveMode === 'add' ? '添加声部' : '修改声部'}
+          style={{ width: '400px' }}
+        >
+          <SubjectSave
+            type={state.saveMode}
+            data={state.rowData}
+            categoryList={deepClone(state.categorizeList)}
+            instrumentList={deepClone(state.instrumentList)}
+            onClose={() => (state.showSaveDialog = false)}
+            onGetList={getList}
+          />
+        </NModal>
+      </div>
     )
   }
 })

+ 3 - 3
src/views/system-manage/system-apply/index.tsx

@@ -79,7 +79,7 @@ export default defineComponent({
                 type="primary"
                 text
                 size="small"
-                //v-auth="sysApplication/update1597882903471443970"
+                v-auth="sysApplication/update1674670570951729154"
                 onClick={() => {
                   state.visiableApply = true
                   state.applyType = 'edit'
@@ -94,7 +94,7 @@ export default defineComponent({
                 text
                 size="small"
                 onClick={() => onRmove(row)}
-                //v-auth="sysApplication/remove1597882985872740353"
+                v-auth="sysApplication/remove1674670676950179841"
               >
                 删除
               </NButton>
@@ -170,7 +170,7 @@ export default defineComponent({
           <NSpace style={{ paddingBottom: '12px' }} justify="space-between">
             <NButton
               type="primary"
-              //v-auth="sysApplication/save1597854675130122242"
+              v-auth="sysApplication/save1674670435916111873"
               onClick={() => {
                 state.applyType = 'add'
                 state.parentId = 0