get-view.blade.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. @extends('layouts.base')
  2. @section('title', '基础设置')
  3. @section('content')
  4. <link rel="stylesheet" href="{{resource_get('plugins/answer-reward/views/admin/index.css')}}">
  5. <style>
  6. </style>
  7. <div class="all">
  8. <div id="app" v-cloak>
  9. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  10. <div class="vue-crumbs">
  11. 短视频积分
  12. >
  13. 基础设置
  14. </div>
  15. <div class="vue-main">
  16. <div class="vue-main-title">
  17. <div class="vue-main-title-left"></div>
  18. <div class="vue-main-title-content">题目编辑</div>
  19. </div>
  20. <div class="vue-main-form">
  21. <el-form-item label="题目" prop="title">
  22. <el-input v-model="form.title" style="width:70%;" placeholder="请输入题目名称"></el-input>
  23. </el-form-item>
  24. <el-form-item label="">
  25. <div style="width:70%;border:1px solid #ccc;margin-left:30px">
  26. <div>
  27. <div style="background:#f4f4f4;display:flex;padding:10px;text-align: center;">
  28. <div style="width:80px">选项</div>
  29. <div style="flex:1"></div>
  30. <div style="width:120px">正确答案</div>
  31. </div>
  32. <div style="display:flex;padding:10px;text-align: center;width:100%">
  33. <div style="width:100px">选项一</div>
  34. <div style="flex:1">
  35. <el-input v-model="content1"></el-input>
  36. </div>
  37. <el-radio v-model="is_true" :label="1" style="width:150px">&nbsp;</el-radio>
  38. </div>
  39. <div style="display:flex;padding:10px;text-align: center;width:100%">
  40. <div style="width:100px">选项二</div>
  41. <div style="flex:1">
  42. <el-input v-model="content2"></el-input>
  43. </div>
  44. <el-radio v-model="is_true" :label="2" style="width:150px">&nbsp;</el-radio>
  45. </div>
  46. <div style="display:flex;padding:10px;text-align: center;width:100%">
  47. <div style="width:100px">选项三</div>
  48. <div style="flex:1">
  49. <el-input v-model="content3"></el-input>
  50. </div>
  51. <el-radio v-model="is_true" :label="3" style="width:150px">&nbsp;</el-radio>
  52. </div>
  53. <div style="display:flex;padding:10px;text-align: center;width:100%">
  54. <div style="width:100px">选项四</div>
  55. <div style="flex:1">
  56. <el-input v-model="content4"></el-input>
  57. </div>
  58. <el-radio v-model="is_true" :label="4" style="width:150px">&nbsp;</el-radio>
  59. </div>
  60. </div>
  61. </div>
  62. </el-form-item>
  63. <el-form-item label="选择视频" prop="is_open">
  64. <div style="width:70%">
  65. <el-tag v-for="(item,index) in choosed_list" :key="index" closable @close="handleClose(item,index)" style="margin:0 3px;"> [[item.title]]</el-tag>
  66. </div>
  67. <el-button size="mini" @click="openVideo">选择视频</el-button>
  68. <div class="tip">已被添加的视频,将不会被搜索出来</div>
  69. </el-form-item>
  70. <el-form-item label="会员答对题奖励" prop="uid_reward_value">
  71. <el-input v-model="form.uid_reward_value" style="width:70%;" placeholder="请输入会员答对题奖励">
  72. <template slot="append">积分</template>
  73. </el-input>
  74. </el-form-item>
  75. <el-form-item label="答对题上级奖励" prop="parent_reward_value">
  76. <el-input v-model="form.parent_reward_value" style="width:70%;" placeholder="请输入答对题上级奖励">
  77. <template slot="append">积分</template>
  78. </el-input>
  79. </el-form-item>
  80. <el-form-item label="会员答对题奖励" prop="uid_reward_integral">
  81. <el-input v-model="form.uid_reward_integral" style="width:70%;" placeholder="请输入会员答对题奖励">
  82. <template slot="append">消费积分</template>
  83. </el-input>
  84. </el-form-item>
  85. <el-form-item label="答对题上级奖励" prop="parent_reward_integral">
  86. <el-input v-model="form.parent_reward_integral" style="width:70%;" placeholder="请输入答对题上级奖励">
  87. <template slot="append">消费积分</template>
  88. </el-input>
  89. </el-form-item>
  90. </div>
  91. </div>
  92. </el-form>
  93. <!--视频-->
  94. <el-dialog :visible.sync="video_show" width="60%" center title="选择视频">
  95. <div>
  96. <div>
  97. <el-form :model="search_video" >
  98. <el-form-item label="">
  99. <el-input v-model="video_title" placeholder="视频标题" style="width:70%"></el-input>
  100. <el-button type="primary" @click="searchVideo(1)">搜索</el-button>
  101. </el-form-item>
  102. </el-form>
  103. </div>
  104. <el-table :data="video_list" style="width: 100%;height:500px;overflow:auto" id="video-list">
  105. <el-table-column label="视频ID" prop="id" align="center" width="150px"></el-table-column>
  106. <el-table-column label="视频">
  107. <template slot-scope="scope">
  108. <div style="display:flex;align-items: center">
  109. <div style="flex:1">
  110. <div style="color:#333;font-weight:500">[[scope.row.title]]</div>
  111. </div>
  112. </div>
  113. </template>
  114. </el-table-column>
  115. <el-table-column label="操作" width="150" align="center">
  116. <template slot-scope="scope">
  117. <el-button v-if="choosed_ids.indexOf(scope.row.id)==-1" type="pramary" size="mini" @click="choosed(scope.row)">选取</el-button>
  118. <div v-else type="pramary" style="color:#29ba9b;text-align:center">已选</div>
  119. </template>
  120. </el-table-column>
  121. </el-table>
  122. </div>
  123. <span slot="footer" class="dialog-footer">
  124. <el-button @click="video_show = false">取 消</el-button>
  125. <!-- <el-button type="primary" @click="sureVideo">确 定 </el-button> -->
  126. </span>
  127. </el-dialog>
  128. <!--end-->
  129. <!-- 分页 -->
  130. <div class="vue-page">
  131. <div class="vue-center">
  132. <el-button type="primary" @click="submitForm('form')">提交</el-button>
  133. <el-button @click="goBack">返回</el-button>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. <script>
  139. var app = new Vue({
  140. el:"#app",
  141. delimiters: ['[[', ']]'],
  142. name: 'test',
  143. data() {
  144. return{
  145. is_true:0,
  146. content1:"",
  147. content2:"",
  148. content3:"",
  149. content4:"",
  150. id:0,
  151. choosed_list:[],
  152. choosed_ids:[],
  153. form:{
  154. is_open:0,
  155. uid_reward_value:"",
  156. parent_reward_value:"",
  157. uid_reward_integral:"",
  158. parent_reward_integral:"",
  159. },
  160. search_video:{},
  161. video_show:false,
  162. video_title:"",
  163. video_list:[],
  164. rules:{
  165. name:{ required: true, message: '请输入'}
  166. },
  167. }
  168. },
  169. created() {
  170. },
  171. mounted() {
  172. this.id = this.getParam('id');
  173. if(this.id) {
  174. this.getData();
  175. }
  176. },
  177. methods: {
  178. submitForm(formName) {
  179. console.log(this.form)
  180. let that = this;
  181. if(this.is_true == 0) {
  182. this.$message.error("请选择正确答案!")
  183. return;
  184. }
  185. let json = {
  186. data:{
  187. title:this.form.title,
  188. uid_reward_value:this.form.uid_reward_value,
  189. parent_reward_value:this.form.parent_reward_value,
  190. uid_reward_integral:this.form.uid_reward_integral,
  191. parent_reward_integral:this.form.parent_reward_integral,
  192. answer:[],
  193. video_id:this.choosed_ids,
  194. }
  195. };
  196. json.data.answer.push({content:this.content1,answer:0},{content:this.content2,answer:0},{content:this.content3,answer:0},{content:this.content4,answer:0},)
  197. json.data.answer[this.is_true-1].answer = 1;
  198. if(this.id) {
  199. json.id = this.id;
  200. }
  201. console.log(json);
  202. this.$refs[formName].validate((valid) => {
  203. if (valid) {
  204. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  205. this.$http.post('{!! yzWebFullUrl('plugin.answer-reward.admin.subject.edit') !!}',json).then(response => {
  206. if (response.data.result) {
  207. this.$message({type: 'success',message: '操作成功!'});
  208. this.goBack();
  209. } else {
  210. this.$message({message: response.data.msg,type: 'error'});
  211. }
  212. loading.close();
  213. },response => {
  214. loading.close();
  215. });
  216. }
  217. else {
  218. console.log('error submit!!');
  219. return false;
  220. }
  221. });
  222. },
  223. getData() {
  224. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  225. this.$http.post("{!! yzWebFullUrl('plugin.answer-reward.admin.subject.edit') !!}",{id:this.id}).then(function (response) {
  226. if (response.data.result){
  227. if(response.data.data!=null) {
  228. console.log(response.data.data)
  229. let datas = response.data.data;
  230. this.form = {
  231. title:response.data.data.title,
  232. parent_reward_value: response.data.data.parent_reward_value,
  233. uid_reward_value: response.data.data.uid_reward_value,
  234. uid_reward_integral: response.data.data.uid_reward_integral,
  235. parent_reward_integral: response.data.data.parent_reward_integral,
  236. }
  237. datas.has_many_answer.forEach((item,index) => {
  238. if(item.answer == 1) {
  239. this.is_true = index+1;
  240. }
  241. })
  242. if(datas.has_many_answer.length>=4) {
  243. this.content1 = datas.has_many_answer[0].content;
  244. this.content2 = datas.has_many_answer[1].content;
  245. this.content3 = datas.has_many_answer[2].content;
  246. this.content4 = datas.has_many_answer[3].content;
  247. }
  248. if(response.data.data.has_many_video_subject!=null) {
  249. let videos = response.data.data.has_many_video_subject;
  250. videos.forEach((item,index) => {
  251. this.choosed_ids.push(item.video_id);
  252. this.choosed_list.push({id:item.video_id,title:item.has_one_video?item.has_one_video.title:"该视频不存在"})
  253. })
  254. }
  255. }
  256. }
  257. else {
  258. this.$message({message: response.data.msg,type: 'error'});
  259. }
  260. loading.close();
  261. },function (response) {
  262. this.$message({message: response.data.msg,type: 'error'});
  263. loading.close();
  264. }
  265. );
  266. },
  267. openVideo() {
  268. this.video_show = true;
  269. },
  270. searchVideo() {
  271. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  272. this.$http.post("{!! yzWebFullUrl('plugin.answer-reward.admin.subject.get-video') !!}",{search:{title:this.video_title}}).then(function (response) {
  273. if (response.data.result){
  274. this.video_list = response.data.data;
  275. }
  276. else {
  277. this.$message({message: response.data.msg,type: 'error'});
  278. }
  279. loading.close();
  280. },function (response) {
  281. this.$message({message: response.data.msg,type: 'error'});
  282. loading.close();
  283. }
  284. );
  285. },
  286. choosed(row) {
  287. this.choosed_list.push({id:row.id,title:row.title});
  288. this.choosed_ids.push(row.id);
  289. },
  290. handleClose(tag,index) {
  291. console.log(tag);
  292. this.choosed_ids.splice(index,1);
  293. this.choosed_list.splice(index,1);
  294. },
  295. getParam(name) {
  296. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  297. var r = window.location.search.substr(1).match(reg);
  298. if (r != null) return unescape(r[2]);
  299. return null;
  300. },
  301. goBack() {
  302. history.go(-1)
  303. },
  304. },
  305. })
  306. </script>
  307. @endsection