addMusic.tsx 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import {defineComponent, onMounted, reactive, ref} from "vue";
  2. import SaveForm from "@components/save-form";
  3. import {NButton, NDataTable, NDatePicker, NDescriptions, NDescriptionsItem, NFormItem, NImage, NInput, NModal, NSelect, NSpace, NStep, NSteps} from "naive-ui";
  4. import Pagination from "@components/pagination";
  5. import TheTooltip from "@components/TheTooltip";
  6. export default defineComponent({
  7. name: 'project-music-sheet-mec',
  8. setup(props, {slots, attrs, emit}) {
  9. const state = reactive({
  10. loading: false,
  11. pagination: {
  12. page: 1,
  13. rows: 10,
  14. pageTotal: 0
  15. },
  16. searchForm: {
  17. keyword: null,
  18. subjectType: null,
  19. musicSubject: null,
  20. status: null
  21. },
  22. subjectList: [],
  23. showAdd: false,
  24. currentStep: 1,
  25. dataList: []
  26. })
  27. onMounted(() => {
  28. })
  29. const saveForm = ref()
  30. const onSearch = () => {
  31. saveForm.value?.submit()
  32. }
  33. const onBtnReset = () => {
  34. saveForm.value?.reset()
  35. }
  36. const onSubmit = () => {
  37. }
  38. const columns = (): any => {
  39. return [
  40. {
  41. title: '曲目信息',
  42. key: 'id',
  43. render: (row: any) => (
  44. <>
  45. <NDescriptions labelPlacement="left" column={1}>
  46. <NDescriptionsItem label="曲目名称">
  47. <TheTooltip content={row.musicSheetName}/>{' '}
  48. </NDescriptionsItem>
  49. <NDescriptionsItem label="曲目编号">{row.id}</NDescriptionsItem>
  50. </NDescriptions>
  51. </>
  52. )
  53. },
  54. {
  55. title: '封面图',
  56. key: 'titleImg',
  57. render(row: any) {
  58. return <NImage width={60} height={60} src={row.titleImg}/>
  59. }
  60. },
  61. {
  62. title: '声部',
  63. key: 'titleImg',
  64. },
  65. {
  66. title: '曲目名称',
  67. key: 'titleImg',
  68. },
  69. {
  70. title: '音乐人',
  71. key: 'titleImg',
  72. },
  73. {
  74. title: '曲目类型',
  75. key: 'titleImg',
  76. },
  77. {
  78. title: '作者属性',
  79. key: 'titleImg',
  80. },
  81. {
  82. title: '所属人',
  83. key: 'titleImg',
  84. },
  85. {
  86. title: '操作',
  87. key: 'operation',
  88. fixed: 'right',
  89. render(row: any) {
  90. return (
  91. <NSpace>
  92. <NButton
  93. type="primary"
  94. size="small"
  95. text
  96. //v-auth="musicSheet/status1612431726029942786"
  97. // onClick={() => onChangeStatus(row)}
  98. >
  99. {row.status ? '停用' : '启用'}
  100. </NButton>
  101. <NButton
  102. type="primary"
  103. size="small"
  104. text
  105. //v-auth="musicSheet/update1602302618558099458"
  106. onClick={() => {
  107. // state.visiableMusic = true
  108. // state.musicOperation = 'edit'
  109. // state.musicData = row
  110. }}
  111. >
  112. 修改
  113. </NButton>
  114. </NSpace>
  115. )
  116. }
  117. }
  118. ]
  119. }
  120. const updateCurrent = (val: any) => {
  121. state.currentStep = val
  122. }
  123. return () => {
  124. return (
  125. <div class="system-menu-container">
  126. <NSpace vertical size="medium">
  127. <NSteps current={state.currentStep} onUpdateCurrent={updateCurrent} style={"margin-bottom: 20px;"}>
  128. <NStep
  129. title="选择分类"
  130. description=""
  131. >
  132. </NStep>
  133. <NStep
  134. title="选择分类下曲目"
  135. description=""
  136. >
  137. </NStep>
  138. <NStep
  139. title="设置曲目信息"
  140. description=""
  141. >
  142. </NStep>
  143. </NSteps>
  144. </NSpace>
  145. {state.currentStep === 1 && (
  146. <SaveForm>
  147. <NFormItem label="关键词" path="keyword">
  148. <NSelect></NSelect>
  149. </NFormItem>
  150. </SaveForm>
  151. )}
  152. {state.currentStep === 2 && (
  153. <div class="system-menu-container">
  154. <SaveForm>
  155. <NFormItem label="关键词" path="keyword">
  156. <NSelect></NSelect>
  157. </NFormItem>
  158. <NFormItem label="曲目类型" path="keyword">
  159. <NSelect></NSelect>
  160. </NFormItem>
  161. <NFormItem label="声部" path="keyword">
  162. <NSelect></NSelect>
  163. </NFormItem>
  164. <NFormItem label="曲目来源" path="keyword">
  165. <NSelect></NSelect>
  166. </NFormItem>
  167. <NFormItem>
  168. <NSpace>
  169. <NButton type="primary" onClick={onSearch}>
  170. 搜索
  171. </NButton>
  172. <NButton type="default" onClick={onBtnReset}>
  173. 重置
  174. </NButton>
  175. </NSpace>
  176. </NFormItem>
  177. </SaveForm>
  178. <NDataTable
  179. loading={state.loading}
  180. columns={columns()}
  181. data={state.dataList}
  182. ></NDataTable>
  183. <Pagination
  184. v-model:page={state.pagination.page}
  185. v-model:pageSize={state.pagination.rows}
  186. v-model:pageTotal={state.pagination.pageTotal}
  187. // onList={getList}
  188. sync
  189. saveKey="music-list"
  190. ></Pagination>
  191. </div>
  192. )}
  193. {state.currentStep === 3 && (
  194. <div class="system-menu-container" style={"margin-top: 15px;"}>
  195. <NDataTable
  196. loading={state.loading}
  197. columns={columns()}
  198. data={state.dataList}
  199. ></NDataTable>
  200. </div>
  201. )}
  202. <NSpace justify="end">
  203. <NButton type="default" onClick={() => {
  204. if (state.currentStep > 1) {
  205. state.currentStep = state.currentStep - 1;
  206. } else {
  207. emit('close')
  208. }
  209. }}>
  210. {state.currentStep === 1 ? '取消' : '上一步'}
  211. </NButton>
  212. <NButton
  213. type="primary"
  214. onClick={() => {
  215. if (state.currentStep < 3) {
  216. state.currentStep = state.currentStep + 1;
  217. } else {
  218. onSubmit()
  219. }
  220. }}
  221. // loading={btnLoading.value}
  222. // disabled={btnLoading.value}
  223. >
  224. {state.currentStep === 3 ? '确定' : '下一步'}
  225. </NButton>
  226. </NSpace>
  227. </div>
  228. )
  229. }
  230. }
  231. })