add.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. // pages/room/add.js
  2. const api = require('../../config/api.js');
  3. const util = require('../../utils/util.js');
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. sceneList: [],
  10. hostList: [],
  11. currentUser: {},
  12. dateMinute: '',
  13. assistantList: [],
  14. detail: {
  15. name: '',
  16. scene: "", //直播label
  17. brandId: '', //直播场景ID
  18. anchorUserId: '', //主持人ID
  19. assistantUserId: '', //助理用户iD
  20. assistant: "", // 助理label
  21. effectiveStartTime: '',
  22. effectiveEndTime: '',
  23. },
  24. fetcherData: {
  25. type: 32,
  26. address: "",
  27. page: 1,
  28. size: 20,
  29. name: "",
  30. }
  31. },
  32. /**
  33. * 生命周期函数--监听页面加载
  34. */
  35. onLoad(options) {
  36. this.getSceneList()
  37. },
  38. /**
  39. * 生命周期函数--监听页面初次渲染完成
  40. */
  41. onReady() {
  42. },
  43. /**
  44. * 生命周期函数--监听页面显示
  45. */
  46. async onShow() {
  47. this.getAssistantsList();
  48. this.getSceneList();
  49. let user = await wx.getStorageSync('userinfoDetail')
  50. this.setData({
  51. currentUser: user,
  52. "detail.anchorUserId": user.userId
  53. })
  54. // debugger
  55. },
  56. /**
  57. * 生命周期函数--监听页面隐藏
  58. */
  59. onHide() {
  60. },
  61. /**
  62. * 生命周期函数--监听页面卸载
  63. */
  64. onUnload() {
  65. },
  66. /**
  67. * 页面相关事件处理函数--监听用户下拉动作
  68. */
  69. onPullDownRefresh() {
  70. },
  71. /**
  72. * 页面上拉触底事件的处理函数
  73. */
  74. onReachBottom() {
  75. },
  76. /**
  77. * 用户点击右上角分享
  78. */
  79. onShareAppMessage() {
  80. },
  81. async getAssistantsList() {
  82. let {mobile} = wx.getStorageSync('userinfoDetail')
  83. try {
  84. const res = await util.request(api.getAssistants, this.data.fetcherData, 'POST', 'application/json')
  85. if (res.code === 200) {
  86. if (Array.isArray(res.data)) {
  87. Array.from(res.data).forEach(assistant => {
  88. assistant.name = assistant.username
  89. assistant.id = assistant.userId
  90. })
  91. this.setData({
  92. assistantList: res.data.filter(ele => ele.name !== mobile)
  93. })
  94. }
  95. }
  96. } catch (error) {
  97. console.log('getAssistantsList::error', error)
  98. }
  99. },
  100. async getSceneList() {
  101. try {
  102. const res = await util.request(api.BrandList, this.data.fetcherData, 'POST')
  103. console.log('getSceneList', res.data.data);
  104. if (res.code === 200) {
  105. this.setData({
  106. sceneList: res.data.data
  107. })
  108. }
  109. } catch (error) {
  110. console.log('getSceneList::error', error)
  111. }
  112. },
  113. pickerChange: function (e) {
  114. const abj = {
  115. 'scene': this.data.sceneList,
  116. 'host': this.data.hostList,
  117. 'assistant': this.data.assistantList,
  118. }
  119. const {
  120. type,
  121. name
  122. } = e.currentTarget.dataset
  123. let item = abj[name][e.detail.value];
  124. let detail = this.data.detail;
  125. detail[type] = e.detail.value;
  126. detail[name] = item.name;
  127. this.setData({
  128. [name]: item.id,
  129. detail,
  130. }, () => {
  131. console.log('picker值为', type, name, detail, item, )
  132. })
  133. },
  134. handleRoomName: function (e) {
  135. this.setData({
  136. 'detail.name': e.detail.value
  137. })
  138. },
  139. sceneChange: function (e) {
  140. console.log('sceneChange', e)
  141. const index = e.detail.value
  142. if (index > -1) {
  143. const select = this.data.sceneList[index]
  144. console.log('picker值为', select)
  145. this.setData({
  146. 'detail.scene': select.name,
  147. "detail.brandId": select.id
  148. })
  149. }
  150. },
  151. assistantChange: function (e) {
  152. const index = e.detail.value
  153. if (index > -1) {
  154. const select = this.data.assistantList[index]
  155. console.log('picker值为', select)
  156. this.setData({
  157. 'detail.assistant': select.username,
  158. "detail.assistantUserId": select.userId
  159. })
  160. }
  161. },
  162. /**
  163. * 年月日时分选择类型的回调函数,可以在该函数得到选择的时间
  164. */
  165. selectDateMinuteChange(ev) {
  166. const {
  167. type
  168. } = ev.currentTarget.dataset
  169. let detail = JSON.parse(JSON.stringify(this.data.detail))
  170. detail[type] = ev.detail.value
  171. //判断大小
  172. console.log(detail,this.data.detail)
  173. if (detail.effectiveEndTime && detail.effectiveStartTime) {
  174. let value = new Date(detail.effectiveEndTime.replace(/-/g, "/")) - new Date(detail.effectiveStartTime.replace(/-/g, "/"));
  175. console.log(value, new Date(detail.effectiveEndTime.replace(/-/g, "/")).getMinutes(),new Date(detail.effectiveStartTime.replace(/-/g, "/")).getMinutes())
  176. if (value <= 0 ) {
  177. return wx.showToast({
  178. title: '结束时间大于开始时间',
  179. icon: 'none',
  180. duration: 1000
  181. })
  182. }
  183. if (new Date(detail.effectiveEndTime.replace(/-/g, "/")).getTime()<new Date()) {
  184. return wx.showToast({
  185. title: '结束时间需大于现在',
  186. icon: 'none',
  187. duration: 1000
  188. })
  189. }
  190. }
  191. this.setData({
  192. detail
  193. })
  194. },
  195. bindMultiPickerChange: function (e) {
  196. console.log('picker发送选择改变,携带值为', e.detail.value)
  197. this.setData({
  198. multiIndex: e.detail.value
  199. })
  200. },
  201. toReportScene: function(e) {
  202. let sceneList = this.data.sceneList
  203. if(sceneList && sceneList.length == 0){
  204. this.toReport()
  205. }
  206. },
  207. toReportAssistant: function(e) {
  208. let assistantList = this.data.assistantList
  209. if(assistantList && assistantList.length == 0){
  210. this.toReport()
  211. }
  212. },
  213. toReport: function(e) {
  214. return wx.showToast({
  215. title: '暂无数据',
  216. icon: 'none',
  217. duration: 1000
  218. })
  219. },
  220. sbmit: async function () {
  221. const {
  222. name,
  223. id,
  224. brandId,
  225. anchorUserId,
  226. effectiveStartTime,
  227. effectiveEndTime,
  228. assistantUserId
  229. } = this.data.detail
  230. let err = ''
  231. if (!name) {
  232. err = '请输入房间名称'
  233. } else if (!brandId) {
  234. err = '请选择直播场景'
  235. } else if (!anchorUserId) {
  236. err = '请选择主持人'
  237. } else if (!anchorUserId) {
  238. err = '请选择主持人'
  239. } else if (!effectiveStartTime) {
  240. err = '请选择开始时间'
  241. } else if (!effectiveEndTime) {
  242. err = '请选择结束时间'
  243. }
  244. let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig
  245. if(iconRule2.test(name)){
  246. err = '房间名称仅支持中英文'
  247. }
  248. if (err) {
  249. return wx.showToast({
  250. title: err,
  251. icon: 'none',
  252. duration: 1000
  253. })
  254. }
  255. let res = await util.request(api.createOrUpdate, {
  256. name,
  257. brandId, //直播场景ID
  258. anchorUserId, //主持人ID
  259. assistantUserId, //助理用户iD
  260. effectiveStartTime: new Date(effectiveStartTime.replace(/-/g, "/")).getTime() ,
  261. effectiveEndTime: new Date(effectiveEndTime.replace(/-/g, "/")).getTime() ,
  262. }, "POST", 'application/json')
  263. // debugger
  264. if (res.code == 200) {
  265. wx.showToast({
  266. title: '创建成功!!',
  267. icon: "success"
  268. })
  269. // wx.navigateBack({
  270. // delta: 0,
  271. // })
  272. wx.navigateTo({
  273. url: '/pages/roomManger/roomManger',
  274. })
  275. } else {
  276. wx.showToast({
  277. title: res.error || '创建失败!!',
  278. icon: "none"
  279. })
  280. }
  281. }
  282. })