activity_launch.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. <style>
  2. body{
  3. font-family: "Microsoft Yahei", "微软雅黑";
  4. box-sizing: border-box;
  5. }
  6. .clearfix {
  7. clear: both;
  8. }
  9. .content-header{
  10. padding-left: 22px;
  11. }
  12. .content .box-show{
  13. position: relative;
  14. margin-top: 4px;
  15. padding-left: 22px;
  16. border-radius: 3px;
  17. background: #ffffff;
  18. margin-bottom: 20px;
  19. width: 100%;
  20. min-height: 1700px;
  21. border: 1px solid #dcdcdc;
  22. box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
  23. }
  24. .content-setting{
  25. margin-top: 24px;
  26. }
  27. .content-setting .form-group{
  28. margin-bottom: 14px;
  29. height: 30px;
  30. line-height: 30px;
  31. }
  32. .content-setting .form-group label{
  33. margin: 0 22px 0 14px;
  34. font-family: 'SimHei'!important;
  35. width: 60px;
  36. font-size: 14px;
  37. font-weight: normal;
  38. color: #8da8b8;
  39. }
  40. .content-setting .form-group input{
  41. /*padding-left: 35px;*/
  42. /*position: absolute;*/
  43. padding-right: 16px;
  44. width: 390px;
  45. height: 28px;
  46. font-size: 14px;
  47. color: #323232;
  48. border-radius: 0;
  49. /*z-index: 1000;*/
  50. }
  51. .content-setting .form-group input.activePrice{
  52. padding-left: 35px;
  53. position: absolute;
  54. }
  55. /*活动发起*/
  56. .content-setting .form-group .active-time{
  57. overflow: hidden;
  58. }
  59. .content-setting .form-group .active-time input.date-choose{
  60. width: 200px;
  61. height: 30px;
  62. font-size: 14px;
  63. color: #323232;
  64. border-radius: 0;
  65. }
  66. .content-setting .form-group .active-time span{
  67. margin: 0 10px 0 -5px;
  68. font-size: 14px;
  69. color: #323232;
  70. }
  71. .content-setting .form-group .prise{
  72. }
  73. .content-setting .form-group .prise .prise-detail{
  74. position: relative ;
  75. margin-bottom: 14px;
  76. width: 435px;
  77. height: 30px;
  78. }
  79. .content-setting .form-group .prise .prise-detail .award{
  80. /*padding-left: 43px;*/
  81. width: 435px;
  82. height: 30px;
  83. /*border: 1px solid #dcdcdc;*/
  84. }
  85. .content-setting .form-group .prise .prise-detail span{
  86. position: absolute;
  87. top: 1px;
  88. left: 1px;
  89. width:28px;
  90. height: 26px;
  91. line-height: 26px;
  92. text-align: center;
  93. font-size: 14px;
  94. color: #323232;
  95. background: #eeeeee;
  96. }
  97. .content-setting .form-group .prise .prise-detail a{
  98. position: absolute;
  99. top: 0;
  100. right: 0;
  101. font-size: 14px;
  102. font-family: 'SimHei'!important;
  103. color: #1b71c9;
  104. }
  105. .content-setting .form-group .prise .award-detail{
  106. margin-bottom: 14px;
  107. height: 30px;
  108. line-height: 30px;
  109. }
  110. .content-setting .form-group .prise .award-detail span{
  111. width: 60px;
  112. margin-right: 20px;
  113. font-size: 14px;
  114. color: #969696;
  115. }
  116. .content-setting .form-group .prise .award-detail input{
  117. width: 230px;
  118. height: 30px;
  119. }
  120. .content-setting .form-group .prise .award-detail select{
  121. width: 230px;
  122. height: 30px;
  123. border-radius: 0;
  124. padding: 0 12px;
  125. }
  126. .content-setting .form-group .prise .award-detail .edit-template{
  127. margin-left: 20px;
  128. width: 84px;
  129. height: 28px;
  130. line-height: 28px;
  131. font-family: 'SimHei'!important;
  132. font-size: 14px;
  133. text-align: center;
  134. color: #fff;
  135. background: #3c8dbc;
  136. border-radius: 3px;
  137. cursor: pointer ;
  138. }
  139. .content-setting .form-group .prise .uploadImg {
  140. position: relative;
  141. margin: 20px 0 36px 0;
  142. width: 90px;
  143. height: 28px;
  144. line-height: 28px;
  145. text-align: center;
  146. font-size: 14px;
  147. color: #6d6d6d;
  148. background: -webkit-linear-gradient(top, #fff 0%,#dadada 100%);
  149. background: -o-linear-gradient(top, #fff 0%,#dadada 100%);
  150. background: -ms-linear-gradient(top, #fff 0%,#dadada 100%);
  151. background: linear-gradient(to bottom, #fff 0%,#dadada 100%);
  152. border: 1px solid #dcdcdc;
  153. border-radius: 3px;
  154. }
  155. .content-setting .form-group .prise .uploadImg input{
  156. position: absolute;
  157. top: 0;
  158. left: 0;
  159. opacity: 0;
  160. width: 100%;
  161. height: 100%;
  162. outline: none;
  163. }
  164. .content-setting .form-group .prise .add-price{
  165. margin: 16px 0 36px 0;
  166. font-family: 'SimHei'!important;
  167. font-size: 14px;
  168. color: #1b71c9;
  169. cursor: pointer;
  170. }
  171. .content-setting .form-group .project .activity-project span{
  172. display: inline-block;
  173. margin-right: 18px;
  174. padding: 0 14px;
  175. height: 30px;
  176. line-height: 30px;
  177. font-size: 14px;
  178. color: #323232;
  179. background: #ebf1f4;
  180. border-radius: 3px;
  181. }
  182. .content-setting .form-group .project .add-project{
  183. margin: 22px 0 44px 0;
  184. font-family: 'SimHei'!important;
  185. font-size: 14px;
  186. color: #1b71c9;
  187. cursor: pointer;
  188. }
  189. .content-setting .form-group .project .button button{
  190. display: inline-block ;
  191. width: 140px;
  192. height: 34px;
  193. line-height: 34px;
  194. text-align: center;
  195. font-size: 16px;
  196. font-family: 'SimHei'!important;
  197. border-radius: 3px;
  198. outline: none;
  199. border: none;
  200. }
  201. .content-setting .form-group .project .button button.launch {
  202. color: #fff;
  203. background: #3c8dbc;
  204. }
  205. .content-setting .form-group .project .button button.draft {
  206. margin: 0 30px 0 26px;
  207. color: #787878;
  208. background: #fff;
  209. border: 1px solid #dcdcdc;
  210. }
  211. .content-setting .form-group .project .button span.clear{
  212. font-family: 'SimHei'!important;
  213. font-size: 14px;
  214. color: #323232;
  215. cursor: pointer;
  216. }
  217. .introduce {
  218. margin-bottom: 22px;
  219. width: 780px;
  220. height: 380px;
  221. }
  222. .introduce .note-editable ol,.introduce .note-editable ul{
  223. padding-left: 20px;
  224. }
  225. .introduce .intro-header {
  226. /*position: relative;*/
  227. width: 100%;
  228. height: 54px;
  229. line-height: 54px;
  230. background: -webkit-linear-gradient(top, #fff 0%,#dadada 100%);
  231. background: -o-linear-gradient(top, #fff 0%,#dadada 100%);
  232. background: -ms-linear-gradient(top, #fff 0%,#dadada 100%);
  233. background: linear-gradient(to bottom, #fff 0%,#dadada 100%);
  234. border: 1px solid #ccc;
  235. border-bottom: none;
  236. }
  237. .introduce .intro-header span{
  238. font-size: 16px;
  239. color: #323232;
  240. }
  241. .introduce .intro-header span img{
  242. margin-left: 30px;
  243. }
  244. .introduce .intro-header span em{
  245. margin-left: 8px;
  246. font-size: 16px;
  247. color: #323232;
  248. font-style: normal;
  249. }
  250. .introduce .intro-header span input{
  251. position: absolute;
  252. top: 119px;
  253. left: 338px;
  254. width: 65px;
  255. outline: none;
  256. opacity: 0;
  257. }
  258. .introduce textarea{
  259. width: 780px;
  260. height: 325px;
  261. border: 1px solid #ccc;
  262. border-top: none;
  263. border-radius: 0;
  264. }
  265. /*定时发送弹出框*/
  266. .modal-open .modal {
  267. width: 100%;
  268. height: 100%;
  269. }
  270. .modal-open .modal .modal-dialog{
  271. width: 590px;
  272. height: 590px;
  273. }
  274. .modal-open .modal .modal-dialog .modal-content{
  275. width: 590px;
  276. height: 590px;
  277. }
  278. .setting .header{
  279. padding: 0 20px;
  280. width: 100%;
  281. height: 44px;
  282. line-height: 44px;
  283. background: #eeeeee;
  284. }
  285. .setting .header p{
  286. font-size: 16px;
  287. color: #323232;
  288. }
  289. .setting .header .close{
  290. font-size: 38px;
  291. }
  292. .setting .body{
  293. width: 100%;
  294. height: 480px;
  295. padding: 0 20px;
  296. text-align: left;
  297. }
  298. .setting .body .chooseUser{
  299. width: 100%;
  300. height: 100%;
  301. }
  302. .setting .body .chooseUser .search{
  303. margin: 16px 0 22px 0;
  304. width: 429px;
  305. height: 30px;
  306. line-height: 30px;
  307. position: relative;
  308. }
  309. .setting .body .chooseUser .search input{
  310. width: 490px;
  311. height: 30px;
  312. border-radius: 0;
  313. }
  314. .setting .body .chooseUser .search button{
  315. position: absolute;
  316. top: 0;
  317. right: -105px;
  318. margin-left: 13px;
  319. font-size: 14px;
  320. color: #1b71c9;
  321. border: none;
  322. background: none;
  323. }
  324. .setting .body .chooseUser .choose-body {
  325. overflow: hidden;
  326. }
  327. .setting .body .chooseUser .choose-body .item{
  328. width: 230px;
  329. height: 400px;
  330. border: 1px solid #dcdcdc;
  331. }
  332. .setting .body .chooseUser .choose-body .item .top{
  333. width: 100%;
  334. height: 25px;
  335. line-height: 25px;
  336. text-align: center;
  337. font-size: 14px;
  338. color: #8da8b8;
  339. background: #f5f5f5;
  340. }
  341. .setting .body .chooseUser .choose-body .item .bottom{
  342. padding: 20px 0 0 15px;
  343. width: 100%;
  344. height: 365px;
  345. overflow-y: auto;
  346. }
  347. .setting .body .chooseUser .choose-body .item .bottom .item-list{
  348. margin-bottom: 19px;
  349. overflow: hidden ;
  350. }
  351. .setting .body .chooseUser .choose-body .item .bottom .item-list input{
  352. float: left;
  353. margin-right: 14px;
  354. width: 14px;
  355. height: 14px;
  356. }
  357. .setting .body .chooseUser .choose-body .item .bottom .item-list label{
  358. float: left;
  359. width: 165px;
  360. overflow: hidden;
  361. text-overflow: ellipsis ;
  362. white-space: nowrap;
  363. font-size: 14px;
  364. font-weight: normal;
  365. color: #323232;
  366. }
  367. .setting .body .chooseUser .choose-body .center{
  368. margin-top: 160px;
  369. width: 85px;
  370. text-align: center;
  371. }
  372. .setting .body .chooseUser .choose-body .center .choice{
  373. margin-bottom: 18px;
  374. }
  375. .setting .body .chooseUser .choose-body .center button{
  376. width: 68px;
  377. height: 28px;
  378. line-height: 28px;
  379. border: 1px solid #dcdcdc;
  380. font-size: 14px;
  381. color: #323232;
  382. background: -webkit-linear-gradient(top, #fff 0%,#dadada 100%);
  383. background: -o-linear-gradient(top, #fff 0%,#dadada 100%);
  384. background: -ms-linear-gradient(top, #fff 0%,#dadada 100%);
  385. background: linear-gradient(to bottom, #fff 0%,#dadada 100%);
  386. border-radius: 3px;
  387. }
  388. .setting .body .chooseUser .choose-body .center button i{
  389. font-size: 18px;
  390. color: #323232;
  391. }
  392. .setting .footer{
  393. padding-top: 10px;
  394. width: 100%;
  395. height: 50px;
  396. background: #f4f4f4;
  397. }
  398. .setting .footer a{
  399. display: inline-block;
  400. height: 30px;
  401. line-height: 30px;
  402. font-size: 16px;
  403. text-align: center;
  404. border-radius: 3px;
  405. letter-spacing: 10px;
  406. }
  407. .setting .footer a:first-child{
  408. margin-right: 10px;
  409. width: 120px;
  410. color: #fff;
  411. background: #3c8dbc;
  412. }
  413. .setting .footer a:last-child{
  414. width: 80px;
  415. color: #959595;
  416. background: #fff;
  417. border: 1px solid #dcdcdc;
  418. }
  419. /*短息编辑弹出框*/
  420. .modal-open .redact .modal-dialog{
  421. width: 590px;
  422. height: 420px;
  423. }
  424. .modal-open .redact .modal-dialog .modal-content{
  425. width: 590px;
  426. height: 420px;
  427. }
  428. .redact .body{
  429. margin-top: 20px;
  430. height: 325px;
  431. }
  432. .redact .body .form-group{
  433. margin-bottom: 14px;
  434. height: 30px;
  435. line-height: 30px;
  436. }
  437. .redact .body .form-group label{
  438. margin-right: 30px;
  439. width: 60px;
  440. font-family: 'SimHei'!important;
  441. font-weight: normal;
  442. font-size: 14px;
  443. color: #8da8b8;
  444. }
  445. .redact .body .form-group textarea {
  446. margin-bottom: 14px;
  447. width: 456px;
  448. height: 190px;
  449. font-size: 14px;
  450. color: #323232;
  451. border-radius: 0;
  452. }
  453. .redact .body .form-group select{
  454. padding: 0 12px;
  455. width: 456px;
  456. height: 30px;
  457. font-size: 14px;
  458. color: #323232;
  459. border-radius: 0;
  460. }
  461. .redact .body .form-group span{
  462. font-size: 14px;
  463. color: #b4b4b4;
  464. }
  465. /*封面图片Banner*/
  466. .content-setting .form-group .uploadImage{
  467. position: relative;
  468. }
  469. .content-setting .form-group .uploadImage div{
  470. height: 28px;
  471. line-height: 28px;
  472. }
  473. .content-setting .form-group .uploadImage div button{
  474. width: 90px;
  475. height: 28px;
  476. line-height: 28px;
  477. text-align: center;
  478. font-size: 14px;
  479. color: #6d6d6d;
  480. background: -webkit-linear-gradient(top, #fff 0%,#dadada 100%);
  481. background: -o-linear-gradient(top, #fff 0%,#dadada 100%);
  482. background: -ms-linear-gradient(top, #fff 0%,#dadada 100%);
  483. background: linear-gradient(to bottom, #fff 0%,#dadada 100%);
  484. border: 1px solid #dcdcdc;
  485. border-radius: 3px;
  486. }
  487. .content-setting .form-group .uploadImage div span{
  488. margin-left: 20px;
  489. font-size: 12px;
  490. color: #969696;
  491. }
  492. .content-setting .form-group .uploadImage input{
  493. position: absolute;
  494. top: 0;
  495. left: 0;
  496. width: 90px;
  497. height: 28px;
  498. opacity: 0;
  499. outline: none;
  500. }
  501. .content-setting .form-group .uploadImage .img-show {
  502. margin: 15px 0 25px;
  503. width: 160px;
  504. height: 160px;
  505. line-height: 160px;
  506. text-align: center;
  507. }
  508. .content-setting .form-group .uploadImage .img-show img{
  509. width: 100%;
  510. height: 100%;
  511. }
  512. .content-setting .form-group .uploadImage .img-shows {
  513. margin: 15px 0 30px;
  514. width: 480px;
  515. height: 60px;
  516. line-height: 60px;
  517. text-align: center;
  518. }
  519. /* */
  520. button.disabled {
  521. opacity: 0.6;
  522. cursor: not-allowed;
  523. }
  524. /*上传图片*/
  525. .content-setting .form-group .uploadImage .showImg {
  526. position: relative ;
  527. width: 160px;
  528. height: 160px;
  529. margin: 16px 0;
  530. }
  531. .content-setting .form-group .uploadImage .showImgs{
  532. width: 570px;
  533. height: 70px;
  534. }
  535. .content-setting .form-group .uploadImage .showImg img{
  536. width: 100%;
  537. height: 100%;
  538. }
  539. .content-setting .form-group .uploadImage .showImg .hover-show {
  540. position: absolute ;
  541. top: 0;
  542. left: -20px;
  543. width: 100%;
  544. height: 100%;
  545. background: rgba(0,0,0,.5);
  546. display: none;
  547. }
  548. .content-setting .form-group .uploadImage .showImg:hover .hover-show {
  549. display: block;
  550. }
  551. .content-setting .form-group .uploadImage .showImg .hover-show .delete{
  552. position: absolute;
  553. top: 5px;
  554. right: 5px;
  555. color: #fff;
  556. cursor: pointer;
  557. }
  558. .content-setting .form-group .uploadImage .showImg .hover-show .delete em.fa-trash{
  559. font-size: 18px;
  560. color: #fff;
  561. }
  562. .content-setting .form-group .uploadImage .showImg .hover-show a{
  563. position: absolute;
  564. top: 44%;
  565. left: 36%;
  566. font-size: 16px;
  567. color: #fff;
  568. }
  569. .content-setting .form-group .uploadImage .showImgs .hover-show a{
  570. position: absolute;
  571. top: 35%;
  572. left: 48%;
  573. font-size: 16px;
  574. color: #fff;
  575. }
  576. .content-setting .form-group .prise .showImage{
  577. position: relative ;
  578. width: 160px;
  579. height: 160px;
  580. margin: 16px 0;
  581. }
  582. .content-setting .form-group .prise .showImage img{
  583. width: 100%;
  584. height: 100%;
  585. }
  586. .content-setting .form-group .prise .showImage .hover-show {
  587. position: absolute ;
  588. top: 0;
  589. left: 0;
  590. width: 100%;
  591. height: 100%;
  592. background: rgba(0,0,0,.5);
  593. display: none;
  594. }
  595. .content-setting .form-group .prise .showImage:hover .hover-show {
  596. display: block;
  597. }
  598. .content-setting .form-group .prise .showImage .hover-show .delete{
  599. position: absolute;
  600. top: 5px;
  601. right: 5px;
  602. color: #fff;
  603. cursor: pointer;
  604. }
  605. .content-setting .form-group .prise .showImage .hover-show a{
  606. position: absolute;
  607. top: 44%;
  608. left: 36%;
  609. font-size: 16px;
  610. color: #fff;
  611. }
  612. .content-setting .error{
  613. margin-left: 0!important;
  614. font-size: 12px !important;
  615. color: red !important;
  616. }
  617. .showEmpty{
  618. border: 1px dashed red;
  619. }
  620. .content-setting .form-group input:focus {
  621. border: 1px solid #66afe9 !important ;
  622. outline: 0;
  623. -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);
  624. box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);
  625. }
  626. /* datepicker 今天按钮隐藏,清除按钮样式修改 */
  627. div.active-time ul.dropdown-menu span.btn-group.pull-left>button.btn:first-child{
  628. display: none;
  629. }
  630. div.active-time ul.dropdown-menu span.btn-group.pull-left>button.btn:nth-child(2){
  631. border-bottom-left-radius: 3px;
  632. border-top-left-radius: 3px;
  633. }
  634. </style>
  635. <!-- loading start -->
  636. <div class="loading in" ng-class="{'in': loading}"><i></i></div>
  637. <!-- loading end -->
  638. <div class="content-wrapper" style="min-height: 924px;; z-index: 50;">
  639. <section class="content-header clearfix">
  640. <h1>活动发起</h1>
  641. </section>
  642. <!-- Main content -->
  643. <section class="content">
  644. <div class="box-show">
  645. <form class="form-horizontal" name="activityForm" novalidate>
  646. <div class="content-setting">
  647. <div class="form-group clearfix">
  648. <label class="control-label fl">活动标题</label>
  649. <input type="text" class="form-control fl" name="activityName" maxlength="40" ng-model="activity.name" required ng-class="{'showEmpty': submited && activityForm.activityName.$error.required}"/>
  650. <span class="error" ng-show="submited && activityForm.activityName.$error.required">*活动标题不能为空</span>
  651. </div>
  652. <div class="form-group clearfix">
  653. <label class="control-label fl">活动时间</label>
  654. <div class="active-time fl">
  655. <input type="text" ng-model="activity.startTime" readonly style="float:left" required
  656. class="date-choose f1 form-control" placeholder="开始时间"
  657. datepicker-popup="yyyy-MM-dd" is-open="activity.$startTimeOpened"
  658. ng-required="true" max-date="activity.endTime"
  659. current-text="今天" clear-text="清除" close-text="关闭"
  660. datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
  661. ng-click="openDatePicker($event, activity, '$startTimeOpened')"
  662. ng-class="{'showEmpty' : submited && !activity.startTime}">
  663. <span class="fl" style="margin-left: 5px;">至</span>
  664. <input type="text" ng-model="activity.endTime" readonly required
  665. class="date-choose f1 form-control" placeholder="结束时间" title="选择活动开始时间后可选此项"
  666. datepicker-popup="yyyy-MM-dd" is-open="activity.$endTimeOpened" min-date="activity.startTime"
  667. ng-required="true" ng-disabled="activity.startTime == null"
  668. current-text="今天" clear-text="清除" close-text="关闭"
  669. datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
  670. ng-click="openDatePicker($event, activity, '$endTimeOpened')"
  671. ng-class="{'showEmpty' : submited && !activity.endTime}">
  672. <span class="error" ng-show="submited && !activity.startTime">*请选择活动开始时间</span>
  673. <span class="error" ng-show="submited && !activity.endTime">*请选择活动结束时间</span>
  674. <span class="error" ng-show="submited && activity.startTime && activity.endTime && activity.startTime.getTime() == activity.endTime.getTime()">*活动开始时间与结束时间不能相同</span>
  675. </div>
  676. </div>
  677. <div class="form-group clearfix">
  678. <label class="control-label fl">兑奖时间</label>
  679. <div class="active-time fl">
  680. <input type="text" ng-model="activity.receiveStartTime" readonly style="float:left" required
  681. class="date-choose f1 form-control" placeholder="开始兑奖时间" title="选择活动开始及结束时间后可选此项"
  682. datepicker-popup="yyyy-MM-dd" is-open="activity.$receiveStartTimeOpened"
  683. ng-required="true" min-date="activity.startTime" max-date="activity.endTime"
  684. current-text="今天" clear-text="清除" close-text="关闭" ng-disabled="activity.startTime == null || activity.endTime == null"
  685. datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
  686. ng-click="openDatePicker($event, activity, '$receiveStartTimeOpened')"
  687. ng-class="{'showEmpty' : submited && !activity.receiveStartTime}">
  688. <span class="fl" style="margin-left: 5px;">至</span>
  689. <input type="text" ng-model="activity.receiveEndTime" readonly required
  690. class="date-choose f1 form-control" placeholder="截止兑奖时间" title="选择兑奖开始时间之后可选此项"
  691. datepicker-popup="yyyy-MM-dd" is-open="activity.$receiveEndTimeOpened"
  692. ng-required="true" min-date="activity.receiveStartTime" max-date="activity.endTime"
  693. current-text="今天" clear-text="清除" close-text="关闭" ng-disabled="activity.receiveStartTime == null"
  694. datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
  695. ng-click="openDatePicker($event, activity, '$receiveEndTimeOpened')"
  696. ng-class="{'showEmpty' : submited && !activity.receiveEndTime}">
  697. <span class="error" ng-show="submited && !activity.receiveStartTime">*请选择开始兑奖时间</span>
  698. <span class="error" ng-show="submited && !activity.receiveEndTime">*请选择截止兑奖时间</span>
  699. <span class="error" ng-show="submited && activity.receiveStartTime && activity.receiveEndTime && activity.receiveStartTime.getTime() == activity.receiveEndTime.getTime()">*兑奖开始时间与截止时间不能相同</span>
  700. </div>
  701. </div>
  702. <div class="form-group clearfix">
  703. <label class="control-label fl">活动介绍</label>
  704. <div class="fl introduce">
  705. <summernote lang="zh-CN" ng-model="activity.summary" height="300px" maxlength="3500">
  706. </summernote>
  707. </div>
  708. <span class="error" ng-show="submited && !activity.summary">*请填写活动介绍</span>
  709. </div>
  710. <div class="form-group clearfix">
  711. <label class="control-label fl">封面图片</label>
  712. <div class="fl uploadImage">
  713. <div><button>上传图片</button><span>(160*160)</span></div>
  714. <input type="file" ng-multiple="false" id="actImg" accept="image/*" onchange='angular.element(this).scope().fileChanged(this, 0)'>
  715. <div ng-if="null != actImgUrl" class="showImg">
  716. <img src="{{actImgUrl}}" alt="活动图片">
  717. <span class="hover-show">
  718. <em style="cursor: pointer;" class="delete" title="删除" ng-click="clearFile('actImg')"><em class="fa fa-2x fa-trash"></em></em>
  719. <a ng-click="showImg('actImg')" title="点击查看大图"><em class="fa fa-search"></em> 查看</a>
  720. </span>
  721. </div>
  722. </div>
  723. <span class="error" ng-show="submited && !actImgUrl && !activity.actImg">*请上传封面图片</span>
  724. </div>
  725. <div class="form-group clearfix">
  726. <label class="control-label fl">Banner</label>
  727. <div class="fl uploadImage">
  728. <div><button>上传图片</button><span>(1140*140)</span></div>
  729. <input type="file" ng-multiple="false" id="banner" accept="image/*" onchange='angular.element(this).scope().fileChanged(this, 1)'>
  730. <div ng-if="null != bannerUrl" class="showImg showImgs">
  731. <img src="{{bannerUrl}}" alt="Banner">
  732. <span class="hover-show">
  733. <em style="cursor: pointer;" class="delete" title="删除" ng-click="clearFile('banner')"><em class="fa fa-2x fa-trash"></em></em>
  734. <a ng-click="showImg('banner')" title="点击查看大图"><em class="fa fa-search"></em> 查看</a>
  735. </span>
  736. </div>
  737. </div>
  738. <span class="error" ng-show="submited && !bannerUrl && !activity.banner">*请上传Banner</span>
  739. </div>
  740. <div class="form-group clearfix">
  741. <label class="control-label fl">活动奖品</label>
  742. <div class="prise fl">
  743. <div class="prise-list" ng-repeat="award in awards">
  744. <div class="prise-detail">
  745. <div class="award"> <input type="text" ng-model="award.awardName" class="activePrice"></div>
  746. <span>{{$index + 1}}</span>
  747. <a ng-click="deleteAward($index)">删除</a>
  748. </div>
  749. <div class="award-detail clearfix">
  750. <span class="fl">简介</span>
  751. <input type="text" ng-model="award.awardSummary" maxlength="100" class="fl form-control" required
  752. ng-class="{'showEmpty' : submited && !award.awardSummary}"/>
  753. <span class="error" ng-show="submited && !award.awardSummary">*活动奖品的简介不能为空</span>
  754. </div>
  755. <div class="award-detail clearfix">
  756. <span class="fl">数量</span>
  757. <input ng-pattern="/^[1-9]\d*$/" type="text" name="awardAmount" ng-model="award.amount" class="fl form-control" required
  758. ng-class="{'showEmpty' : submited && activityForm.awardAmount.$error.required}"/>
  759. <span class="error" ng-show="submited && activityForm.awardAmount.$error.required">*活动奖品的数量不能为空</span>
  760. <span class="error" ng-show="submited && activityForm.awardAmount.$error.pattern">*活动奖品的数量不正确</span>
  761. </div>
  762. <div class="award-detail clearfix">
  763. <span class="fl">奖品{{award.awardLevel}}等级</span>
  764. <input type="text" ng-model="award.awardLevel" maxlength="10" class="fl form-control" required
  765. ng-class="{'showEmpty' : submited && !award.awardLevel}"/>
  766. <span class="error" ng-show="submited && !award.awardLevel">*活动奖品的奖品等级不能为空</span>
  767. </div>
  768. <div class="award-detail clearfix">
  769. <span class="fl">赠送方式</span>
  770. <select name="" ng-model="award.way" class="form-control fl" ng-init="award.way = 1">
  771. <option value="1">快递配送</option>
  772. <option value="2">短信通知</option>
  773. </select>
  774. <!--<a class="edit-template fl" data-target="#redact" data-toggle="modal">编辑模板</a>-->
  775. </div>
  776. <div class="uploadImg">
  777. 上传图片
  778. <input type="file" ng-multiple="false" accept="image/*" id="award{{$index}}" ng-model="award.prizeImgs" ng-file-select ng-change="uploadPrizeImg(award, $index)">
  779. </div>
  780. <div ng-if="null != award.img" class="showImage">
  781. <img src="{{award.img}}">
  782. <span class="hover-show">
  783. <em style="cursor: pointer;" class="delete" title="删除" ng-click="deletePrizeImg(award.img, $index)"><em class="fa fa-2x fa-trash" style="font-size: 18px;"></em></em>
  784. <a ng-click="showImg(award.img)" title="点击查看大图"><em class="fa fa-search"></em> 查看</a>
  785. </span>
  786. </div>
  787. <span class="error" ng-show="submited && !award.img">*请上传活动奖品图片</span>
  788. </div>
  789. <div class="add-price">
  790. <a ng-click="addAward()">+添加奖品</a>
  791. </div>
  792. </div>
  793. <span class="error" ng-show="submited && !awards.length">*请添加活动奖品</span>
  794. </div>
  795. <div class="form-group clearfix" style="height:auto;">
  796. <label class="control-label fl">活动项目</label>
  797. <div class="project fl">
  798. <div class="activity-project">
  799. <span ng-repeat="relatedProject in selectedProjects">
  800. {{relatedProject.name}}
  801. </span>
  802. </div>
  803. <div class="add-project" data-target="#setting" data-toggle="modal">
  804. <span>+选择项目</span>
  805. </div>
  806. <div class="button">
  807. <button ng-click="submit(true, activityForm.$invalid || !activity.summary || !actImgUrl || !bannerUrl)" class="launch">发布</button>
  808. <button ng-click="submit(false)" ng-disabled="!activityForm.$dirty" class="draft">存为草稿</button>
  809. <span style="color: #5078cb;" class="clear" ng-click="clearActivity()">清空内容</span>
  810. </div>
  811. </div>
  812. <span class="error" ng-show="submited && !selectedProjects.length">*请添加活动项目</span>
  813. </div>
  814. </div>
  815. </form>
  816. </div>
  817. </section>
  818. </div>
  819. <!--选择关联项目弹出框-->
  820. <div class="modal setting" role="dialog" id="setting" data-backdrop="static">
  821. <div class="modal-dialog">
  822. <div class="modal-content">
  823. <div class="modal-header header">
  824. <p class="fl">选择关联项目</p>
  825. <div class="close fr" data-dismiss="modal" ng-click="cancelSelected()">&times;</div>
  826. </div>
  827. <div class="modal-body body">
  828. <div class="chooseUser">
  829. <div class="search">
  830. <input type="text" ng-model="keyword" ng-change="onSearch()" placeholder="请输入关键字" class="form-control" required>
  831. <button ng-click="onSearch()">搜索</button>
  832. </div>
  833. <div class="choose-body">
  834. <div class="item fl">
  835. <div class="top">全部项目</div>
  836. <div class="bottom">
  837. <div class="item-list" ng-repeat="project in projects">
  838. <input ng-model="project.checked" ng-click="checkSelected(project)" type="checkbox" required/>
  839. <label>{{project.name}}</label>
  840. </div>
  841. </div>
  842. </div>
  843. <div class="center fl">
  844. <div class="choice"><button ng-click="addSelected()" ng-disabled="projects.length == 0" ng-class="{'disabled': projects.length == 0}">选择&nbsp;&nbsp;<i class="fa fa-angle-right"></i></button></div>
  845. <div class="delete"><button ng-click="deleteSelected()" ng-disabled="selectedProjects.length ==0" ng-class="{'disabled': selectedProjects.length == 0}"><i class="fa fa-angle-left"></i>&nbsp;&nbsp;删除</button></div>
  846. </div>
  847. <div class="item fr">
  848. <div class="top">已选项目</div>
  849. <div class="bottom">
  850. <div class="item-list" ng-repeat="project in selectedProjects">
  851. <input ng-model="project.checked" type="checkbox" required/>
  852. <label>{{project.name}}</label>
  853. </div>
  854. </div>
  855. </div>
  856. </div>
  857. </div>
  858. </div>
  859. <div class="modal-footer footer text-right">
  860. <a ng-click="saveSelected()" data-dismiss="modal">保存</a>
  861. <a ng-click="cancelSelected()" data-dismiss="modal">取消</a>
  862. </div>
  863. </div>
  864. </div>
  865. </div>
  866. <!--查看大图-->
  867. <div id="image-box" style="display: none;">
  868. <div class="x-close-wrap" title="关闭">
  869. <a href="javascript:void(0);">&times;</a>
  870. </div>
  871. <div class="x-floating-wrap"></div>
  872. <div class="x-floating">
  873. <img/>
  874. </div>
  875. </div>