broadcast.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. let cacheData = {
  2. }
  3. $(function () {
  4. var types = {
  5. 0:'服饰',
  6. 1:'家具',
  7. 2:'数码',
  8. 3:'娱乐',
  9. 4:'其他',
  10. }
  11. $("#jqGrid").Grid({
  12. url: '../liveRoom/getRoomList',
  13. rownumWidth:60,
  14. colModel: [{
  15. label: 'id', name: 'id', index: 'liveId', key: true, hidden: true
  16. },
  17. {
  18. label: 'liveId', name: 'liveId', index: 'liveId', hidden: true
  19. },
  20. {
  21. label: '最近开播', name: 'startTime', index: 'startTime', width: 80,formatter: function (value, col, row) {
  22. cacheData[col.rowId] = row
  23. return transDate(parseInt(value)*1000);
  24. }
  25. },
  26. {
  27. label: '直播名称', name: 'name', index: 'name', width: 80
  28. },
  29. {
  30. label: '直播分享图',align:'center', name: 'shareImgOss', index: 'shareImgOss', width: 120, formatter: function (value) {
  31. return transImg(value,100,'auto');
  32. }
  33. },
  34. {
  35. label: '房间号', name: 'roomId', index: 'roomId', width: 80
  36. },
  37. {
  38. label: '主播', name: 'anchorName', index: 'anchorName', width: 80
  39. },
  40. {
  41. label: '直播状态', name: 'liveStatus', index: 'liveStatus', width: 80
  42. }
  43. ]
  44. });
  45. });
  46. const validateSceneUrlCheck = function (rule, value, callback){
  47. var link1 ='https://test.4dkankan.com/eShopMobile.html?m='
  48. var link2 ='https://www.4dkankan.com/eShopMobile.html?m='
  49. if (value === ''||!value) {
  50. callback(new Error('场景地址不能为空'));
  51. } else if(!~value.indexOf(link1)&&!~value.indexOf(link2)){
  52. callback(new Error('场景地址需为'+link2+'或'+link1));
  53. } else {
  54. callback();
  55. }
  56. };
  57. const validateNotNullIdCheck =function (rule, value, callback) {
  58. if (value === '' || !value) {
  59. callback(new Error(rule.name+'不能为空'));
  60. }else {
  61. callback();
  62. }
  63. };
  64. var vm = new Vue({
  65. el: '#rrapp',
  66. data: {
  67. loading:false,
  68. showList: true,
  69. title: null,
  70. broadcast: {name: '',coverImg:'',startTime:'',endTime:'',anchorName:'',anchorWechat:'', shareImg: '',feedsImg: '',screenType:0,isFeedsPublic: 0,type: 1,closeLike:0, closeGoods: 0,closeKf:0, closeComment: 0,closeReplay: 0,closeShare: 0},
  71. func:['closeComment','closeGoods'],
  72. ruleValidate: {
  73. name: [
  74. {required: true, message: '直播间标题不能为空', trigger: 'blur'}
  75. ],
  76. startTime: [
  77. {required: true, name: '直播开始时间',validator: validateNotNullIdCheck, trigger: 'change'},
  78. {required: true, name: '直播开始时间只能在十分钟后',validator: validateNotNullIdCheck, trigger: 'change'},
  79. ],
  80. endTime: [
  81. {required: true, name: '直播结束时间',validator: validateNotNullIdCheck, trigger: 'change'}
  82. ],
  83. anchorName: [
  84. {required: true, message: '主播名称不能为空', trigger: 'blur'}
  85. ],
  86. anchorWechat: [
  87. {required: true, message: '主播微信账号不能为空', trigger: 'blur'}
  88. ],
  89. shareImg: [
  90. {required: true, message: '分享卡片封面不能为空', trigger: 'blur'}
  91. ],
  92. coverImg: [
  93. {required: true, message: '直播卡片封面不能为空', trigger: 'blur'}
  94. ],
  95. feedsImg: [
  96. {required: true, message: '直播间背景墙不能为空', trigger: 'blur'}
  97. ]
  98. },
  99. q: {
  100. name: ''
  101. },
  102. coverImg:'',
  103. shareImg:'',
  104. feedsImg:'',
  105. startTime:'',
  106. endTime:'',
  107. valiImg: ''
  108. },
  109. methods: {
  110. handleRemove (file) {
  111. },
  112. query: function () {
  113. vm.reload();
  114. },
  115. add: function () {
  116. vm.showList = false;
  117. vm.title = "新增";
  118. vm.broadcast = {name: '',coverImg:'',startTime:'',endTime:'',anchorName:'',anchorWechat:'', shareImg: '',feedsImg: '',screenType:0,isFeedsPublic: 0,type: 1,closeLike:0, closeGoods: 0,closeKf:0, closeComment: 0,closeReplay: 0,closeShare: 0}
  119. },
  120. share: function (event) {
  121. eyeImage('https://res.wx.qq.com/op_res/BbVNeczA1XudfjVqCVoKgfuWe7e3aUhokktRVOqf_F0IqS6kYR--atCpVNUUC3zr');
  122. },
  123. saveOrUpdate: function (event) {
  124. var url = vm.broadcast.slideId == null ? "../liveRoom/add" : "../liveRoom/update";
  125. // 判断时间
  126. if ((new Date().getTime() + 60000 * 10) >= vm.startTime * 1000) {
  127. alert('开播时间需要在当前时间的10分钟后,并且不能在6 个月后')
  128. return
  129. }
  130. if ((vm.endTime * 1000 - vm.startTime * 1000 < 30 * 60000) || (vm.endTime * 1000 - vm.startTime * 1000 >= 86400000)) {
  131. alert('开播时间和结束时间间隔不得短于30分钟,不得超过24小时')
  132. return
  133. }
  134. let params = Object.assign({}, vm.broadcast,{
  135. startTime:vm.startTime,
  136. endTime:vm.endTime
  137. })
  138. Ajax.request({
  139. type: "POST",
  140. url: url,
  141. contentType: "application/json",
  142. params: JSON.stringify(params),
  143. successCallback: function (r) {
  144. if (r.errcode === 0) {
  145. alert('操作成功', function (index) {
  146. vm.reload();
  147. })
  148. return
  149. }
  150. const errcode = {
  151. 300002: '主播名称长度非法',
  152. 300001: '禁止创建/更新商品',
  153. 300002: '名称长度不符合规则',
  154. 300006: '图片上传失败',
  155. 300022: '此房间号不存在',
  156. 300023: '当前房间状态不允许此操作',
  157. 300028: '房间名称违规',
  158. 300029: '主播昵称违规',
  159. 300030: '主播微信号不合法',
  160. 300031: '直播间封面图不合规',
  161. 300032: '直播间分享图违规',
  162. 300034: '主播微信昵称长度不符合要求',
  163. 300035: '主播微信号不存在',
  164. 300036: '主播微信号未实名认证,请扫码进行验证',
  165. 300037: '购物直播频道封面图不合规',
  166. 300038: '未在小程序管理后台配置客服',
  167. 300039: '主播副号微信号不合法',
  168. 300040: '名称含有非限定字符(含有特殊字符)'
  169. }
  170. alert(errcode[r.errcode] || '添加失败')
  171. if (r.errcode === 300036) {
  172. vm.valiImg = r.qrcode_url
  173. }
  174. }
  175. });
  176. },
  177. handleChangeStart(val){
  178. let date = new Date(val)
  179. this.startTime = parseInt(date.getTime()/1000)
  180. },
  181. handleChangeEnd(val){
  182. let date = new Date(val)
  183. this.endTime = parseInt(date.getTime()/1000)
  184. },
  185. del: function (event) {
  186. let rowId = getSelectedRow("#jqGrid");
  187. if (rowId == null) {
  188. return;
  189. }
  190. var data = cacheData[rowId]
  191. confirm('确定要删除选中的记录?', function () {
  192. Ajax.request({
  193. type: "POST",
  194. url: "..//liveRoom/update",
  195. contentType: "application/json",
  196. params: JSON.stringify(Object.assign(data,{
  197. enable:0
  198. })),
  199. successCallback: function () {
  200. alert('操作成功', function (index) {
  201. vm.reload();
  202. });
  203. }
  204. });
  205. });
  206. },
  207. getInfo: function (id) {
  208. vm.defaultList = []
  209. Ajax.request({
  210. url: "../slideShow/getById?slideId=" + id,
  211. async: true,
  212. successCallback: function (r) {
  213. vm.carousel = r.page;
  214. }
  215. });
  216. },
  217. reload: function (event) {
  218. vm.showList = true;
  219. var page = $("#jqGrid").jqGrid('getGridParam', 'page');
  220. $("#jqGrid").jqGrid('setGridParam', {
  221. postData: {'name': vm.q.name},
  222. page: page
  223. }).trigger("reloadGrid");
  224. vm.handleReset('formValidate');
  225. },
  226. handleSuccessListPicUrl: function (res, file) {
  227. vm.brand.listPicUrl = file.response.url;
  228. vm.brand.appListPicUrl = file.response.url;
  229. },
  230. handleSuccessPicUrl: function (res, file) {
  231. vm.brand.picUrl = file.response.url;
  232. },
  233. handleSuccessAppListPicUrl: function (res, file) {
  234. vm.brand.appListPicUrl = file.response.url;
  235. },
  236. beforecoverImgUpload: function (file) {
  237. this.loading = true
  238. this.coverImg = URL.createObjectURL(file)
  239. },
  240. beforeShareImgUpload: function (file) {
  241. this.loading = true
  242. this.shareImg = URL.createObjectURL(file)
  243. },
  244. beforefeedsImgUpload: function (file) {
  245. this.loading = true
  246. this.feedsImg = URL.createObjectURL(file)
  247. },
  248. handleSuccessShareImg: function (res, file) {
  249. this.loading = false
  250. this.broadcast.shareImg = file.response.mediaId;
  251. this.broadcast.shareImgOss = file.response.ossUrl
  252. },
  253. handleSuccesscoverImg: function (res, file) {
  254. this.loading = false
  255. this.broadcast.coverImg = file.response.mediaId;
  256. this.broadcast.coverImgOss = file.response.ossUrl
  257. },
  258. handleSuccessfeedsImg: function (res, file) {
  259. this.loading = false
  260. this.broadcast.feedsImg = file.response.mediaId;
  261. this.broadcast.feedsImgOss = file.response.ossUrl
  262. },
  263. handleBefore(){
  264. this.loading = true
  265. },
  266. handleSuccessNewPicUrl: function (res, file) {
  267. vm.brand.newPicUrl = file.response.url;
  268. },
  269. handleFormatError: function (file) {
  270. this.loading = false
  271. this.$Notice.warning({
  272. title: '文件格式不正确',
  273. desc: '文件 ' + file.name + ' 格式不正确。'
  274. });
  275. },
  276. handleMaxSize: function (file) {
  277. this.loading = false
  278. this.$Notice.warning({
  279. title: '超出文件大小限制',
  280. desc: '文件 ' + file.name + ' 太大。'
  281. });
  282. },
  283. eyeImageListPicUrl: function () {
  284. var url = vm.brand.listPicUrl;
  285. eyeImage(url);
  286. },
  287. eyeImagePicUrl: function () {
  288. var url = vm.brand.picUrl;
  289. eyeImage(url);
  290. },
  291. eyeImageAppListPicUrl: function () {
  292. var url = vm.brand.appListPicUrl;
  293. eyeImage(url);
  294. },
  295. eyeImageNewPicUrl: function () {
  296. var url = vm.brand.newPicUrl;
  297. eyeImage(url);
  298. },
  299. handleSubmit: function (name) {
  300. handleSubmitValidate(this, name, function () {
  301. vm.saveOrUpdate()
  302. });
  303. },
  304. handleReset: function (name) {
  305. handleResetForm(this, name);
  306. }
  307. },
  308. mounted () {
  309. }
  310. });