details.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <template>
  2. <div>
  3. <div style="overflow-x:hidden">
  4. <el-row :gutter="16">
  5. <el-col :span="12">
  6. <!-- 表单 -->
  7. <div class="container normal-panel normal-margin">
  8. <div class="normal-title container" style="padding-top:0;display:flex;justify-content:space-between">
  9. <p>课程详情</p>
  10. <div>
  11. <el-button size="mini" @click="editBtn" style="margin-right:10px" :disabled="form.status == '发布'">编 辑</el-button>
  12. <release :data="form" @onSuccess="selectDetail"></release>
  13. <on-del v-if="tool.checkAuth($route.name,'delete') && form.status != '发布'" :data="form" @onSuccess="$store.dispatch('DrawerShowChange',false),$router.push('/archives_scmag')"></on-del>
  14. </div>
  15. </div>
  16. <el-row :gutter="20">
  17. <el-form :model="form" :disabled="edit" :rules="rules" ref="form" size="small" status-icon label-position="right" label-width="100px" class="demo-ruleForm">
  18. <el-col :span="24">
  19. <el-form-item label="标题" prop="title">
  20. <el-input v-model="form.title" placeholder="请输入标题"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="12">
  24. <el-form-item label="开始时间" prop="begdate">
  25. <el-date-picker
  26. style="width:100%"
  27. v-model="form.begdate"
  28. value-format="yyyy-MM-dd"
  29. type="date"
  30. placeholder="开始日期">
  31. </el-date-picker>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="12">
  35. <el-form-item label="下架时间" prop="enddate">
  36. <el-date-picker
  37. style="width:100%"
  38. v-model="form.enddate"
  39. value-format="yyyy-MM-dd"
  40. type="date"
  41. placeholder="下架日期">
  42. </el-date-picker>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="12">
  46. <el-form-item label="一级分类" prop="sat_courseware_classid_1">
  47. <el-select style="width:100%;margin-right:16px" size="small" v-if="options1" v-model="form.sat_courseware_classid_1" clearable>
  48. <el-option v-for="item in options1" :key="item.index" :value="item.sat_courseware_classid" :label="item.classname" @click.native="handelSelectClick(item)"></el-option>
  49. </el-select>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="12">
  53. <el-form-item label="二级分类" prop="sat_courseware_classid_2">
  54. <el-select style="width:100%;margin-right:16px" size="small" v-model="form.sat_courseware_classid_2" clearable>
  55. <el-option v-for="item in options2" :key="item.index" :value="item.sat_courseware_classid" :label="item.classname"></el-option>
  56. </el-select>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="24">
  60. <el-form-item label="备注">
  61. <el-input v-model="form.notes" placeholder="请输入标备注"></el-input>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="24">
  65. <el-form-item label="封面" prop="cover">
  66. <previewImage v-if="form.cover" style="width:386px" :image="image" :deletebtn="true"
  67. @onSuccess="clearCover"></previewImage>
  68. <upload v-else btntype="limage" :folderid="folderid" accept=".JPG,.PNG" :bindData="{ownertable:'SAT_COURSEWARE',ownerid:form.sat_coursewareid,usetype:'cover'}" @onSuccess="onCoverSubmit"></upload>
  69. <p class="info">注:建议上传图片大小210*120px像素,大小不超过2M,格式为JPG/PNG</p>
  70. </el-form-item>
  71. </el-col>
  72. </el-form>
  73. </el-row>
  74. </div>
  75. <!-- 附件列表 -->
  76. <div class="container normal-panel">
  77. <attachmentList :attinfos="form.attinfos" @onSuccess="selectDetail" :onlyread="true">
  78. <!-- <upload slot="upload" :folderid="folderid" :bindData="{ownertable:'SAT_COURSEWARE',ownerid:form.sat_coursewareid,usetype:'default'}" @onSuccess="onSubmit"></upload> -->
  79. </attachmentList>
  80. </div>
  81. </el-col>
  82. <el-col :span="12">
  83. <scopeOfauth :onlyread="true" :defaultData="defaultData" appidname="sat_coursewareid" obiectName="sat_courseware" :dataid="$route.query.id"
  84. @onChecked="onChecked"></scopeOfauth>
  85. </el-col>
  86. </el-row>
  87. </div>
  88. </div>
  89. </template>
  90. <script>
  91. import upload from '@/components/upload/hw_obs_upload.vue'
  92. import previewImage from '@/components/previewImage/index.vue'
  93. import attachmentList from '@/components/attachment_list/index.vue'
  94. import scopeOfauth from '@/components/scopeOfAuthority/index.vue'
  95. import onDel from "./delete"
  96. import release from "./release"
  97. import store from '@/store'
  98. export default {
  99. components:{
  100. upload,
  101. previewImage,
  102. attachmentList,
  103. scopeOfauth,
  104. onDel,
  105. release
  106. },
  107. data () {
  108. return {
  109. rules:{
  110. title: [
  111. { required: true, message: '请输入课程名称', trigger: 'blur' },
  112. ],
  113. begdate: [
  114. { required: true, message: '请选择开始日期', trigger: 'change' }
  115. ],
  116. enddate: [
  117. { required: true, message: '请选择下架时间', trigger: 'change' }
  118. ],
  119. sat_courseware_classid_1: [
  120. { required: true, message: '请选择一级分类', trigger: 'change' }
  121. ],
  122. sat_courseware_classid_2: [
  123. { required: true, message: '请选择二级分类', trigger: 'change' }
  124. ],
  125. cover:[
  126. { required: true, message: '请上传封面', trigger: 'blur' },
  127. ],
  128. },
  129. options1:[],
  130. options2:[],
  131. form:{},
  132. image:{},
  133. authData:{},
  134. defaultData:{},
  135. folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
  136. edit:true,
  137. detailData:''
  138. }
  139. },
  140. methods:{
  141. editBtn () {
  142. window.sessionStorage.setItem('newMaterial', JSON.stringify(this.detailData))
  143. this.$router.push({path:'/archives_scedit',query:{id:this.$route.query.id}})
  144. },
  145. onSubmit () {
  146. this.form.sat_courseware_classid = this.form.sat_courseware_classid_2
  147. this.$refs['form'].validate(async (valid) => {
  148. if (!valid) return false;
  149. const res = await this.$api.requested({
  150. "classname": "webmanage.saletool.courseware.courseware",
  151. "method": "insertOrUpdate",
  152. "content": this.form
  153. })
  154. this.tool.showMessage(res)
  155. this.selectDetail()
  156. this.insertCoursewareauth()
  157. });
  158. },
  159. async selectDetail () {
  160. const res = await this.$api.requested({
  161. "classname": "webmanage.saletool.courseware.courseware",
  162. "method": "selectDetail",
  163. "content": {
  164. "sat_coursewareid":this.$route.query.id
  165. }
  166. })
  167. this.detailData = res.data
  168. this.form = Object.assign({},this.form,res.data)
  169. console.log(this.options1);
  170. this.options1.forEach(e=>{
  171. e.sat_courseware_classid === res.data.sat_courseware_classid_1?this.options2 = e.children:''
  172. })
  173. this.queryFileLink()
  174. },
  175. // 分类查询
  176. async coursewareclass () {
  177. const res = await this.$api.requested({
  178. "id":20221102143302,
  179. "content": {
  180. "parentid": 0
  181. }
  182. })
  183. this.options1 = res.data
  184. },
  185. handelSelectClick (val) {
  186. this.options2 = val.children
  187. this.form.sat_courseware_classid_2 = ''
  188. },
  189. // 获取附件信息
  190. async queryFileLink () {
  191. console.log('eeeeeeeeeeeeeeeee');
  192. this.dialogEditVisible = true
  193. const res = await this.$api.requested({
  194. "classname": "system.attachment.Attachment",
  195. "method": "queryFileLink",
  196. "content": {
  197. "ownertable": 'SAT_COURSEWARE',
  198. "ownerid": this.form.sat_coursewareid,
  199. "usetype":'cover'//传空返回有所
  200. }
  201. })
  202. console.log(res.data,'eeeeeeeeeeeeeeeeeeeee');
  203. res.data[0]?this.image = res.data[0]:this.image = {url:''}
  204. },
  205. onCoverSubmit (res) {
  206. this.form.cover = JSON.parse(res.attinfos).data[0].url
  207. this.image = JSON.parse(res.attinfos).data[0]
  208. },
  209. // 删除封面
  210. clearCover () {
  211. this.form.cover = null
  212. this.image = {}
  213. },
  214. // 获取保存授权范围数据
  215. onChecked (param) {
  216. this.authData = param
  217. },
  218. // 新增授权范围
  219. async insertCoursewareauth () {
  220. const res = await this.$api.requested({
  221. "classname": "webmanage.saletool.courseware.coursewareauth",
  222. "method": "insert",
  223. "content": this.authData
  224. })
  225. res.code === 0?this.$notify({
  226. title:'失败',
  227. message:res.data,
  228. type:'error'
  229. }):''
  230. },
  231. // 查询授权信息
  232. async query_auth () {
  233. const res = await this.$api.requested({
  234. "classname": "webmanage.saletool.courseware.coursewareauth",
  235. "method": "selectList",
  236. "content": {
  237. "oncache":true,
  238. "sat_coursewareid": this.$route.query.id,
  239. }
  240. })
  241. this.defaultData = res.data
  242. console.log(this.defaultData,'授权aa ');
  243. },
  244. },
  245. created () {
  246. this.coursewareclass()
  247. this.tool.checkAuth(this.$route.name,'data_analysis')?'':this.$router.go(-1)
  248. //详情页禁用操作
  249. store.state.pageOnlyRead = true
  250. },
  251. mounted () {
  252. setTimeout(() => {
  253. this.selectDetail()
  254. this.query_auth()
  255. },100)
  256. }
  257. }
  258. </script>
  259. <style>
  260. </style>
  261. <style scoped>
  262. .disable{
  263. pointer-events: none;
  264. }
  265. </style>