adManage.html 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <div class="bg-light lter b-b wrapper-md">
  2. <h1 class="m-n font-thin h4">投放广告</h1>
  3. </div>
  4. <div class="wrapper-md" ng-controller="adManageCtrl">
  5. <style>
  6. .condition-row {
  7. background: #eee;
  8. margin: 10px -5px !important;
  9. border: 1px solid #ccc;
  10. padding: 5px !important;
  11. }
  12. </style>
  13. <div class="panel panel-default">
  14. <div class="row wrapper">
  15. <div class="col-sm-4">
  16. <div>
  17. <div class="btn btn-default" ng-click="addAd()"><i class="fa fa-plus-circle"></i> 新增</div>
  18. <div class="btn btn-default" ng-click="editAd()"><i class="fa fa-edit "></i> 修改</div>
  19. <div class="btn btn-default" ng-click="deleteAd()"><i class="fa fa-trash-o"></i> 删除</div>
  20. </div>
  21. </div>
  22. <div class="col-sm-2">
  23. </div>
  24. <div class="col-sm-6">
  25. <div class="col-sm-6 text-right">
  26. <div class="btn-group dropdown" dropdown>
  27. <button class="btn btn-default dropdown-toggle" dropdown-toggle>
  28. <span class="dropdown-label">{{condition.online.label}}</span>
  29. <span class="caret"></span>
  30. </button>
  31. <ul class="dropdown-menu">
  32. <li ng-repeat="item in enum.online" ng-click="event.conditionChange('online',item)">
  33. <a href ng-bind="item.label"></a></li>
  34. </ul>
  35. </div>
  36. <div class="btn-group dropdown" dropdown>
  37. <button class="btn btn-default dropdown-toggle" dropdown-toggle>
  38. <span class="dropdown-label">{{condition.adType.label}}</span>
  39. <span class="caret"></span>
  40. </button>
  41. <ul class="dropdown-menu">
  42. <li ng-repeat="item in enum.adType" ng-click="event.conditionChange('adType',item)">
  43. <a href ng-bind="item.label"></a></li>
  44. </ul>
  45. </div>
  46. </div>
  47. <div class="col-sm-6">
  48. <div class="btn-group input-group">
  49. <input type="text" class=" form-control" ng-model="condition.searchKey"
  50. ng-keydown="$event.keyCode==13&&event.search()"
  51. placeholder="名称、广告词等">
  52. <span class="input-group-btn">
  53. <div class="btn btn-default" ng-click="event.search()"><i class="fa fa-search"></i> 搜索</div>
  54. </span>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <div class="table-responsive">
  60. <div ui-grid="gridOptions" style="min-height:420px" ui-grid-pagination ui-grid-selection ui-grid-expandable
  61. ui-grid-resize-columns></div>
  62. <div class="grid-mask" ng-if="gridOptionsLoading"><span>正在加载,请稍候...</span></div>
  63. </div>
  64. </div>
  65. <!--禁止enter提交-->
  66. <form name="adForm" id="adPanel" class="form-horizontal form-validation modal fade" role="dialog"
  67. data-backdrop="static"
  68. onkeydown="if(event.keyCode==13){return false;}"
  69. style=" width: 1280px;height: 80%">
  70. <div class="panel panel-default">
  71. <div class="modal-header">
  72. <strong ng-bind="dialogName"></strong>
  73. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  74. </div>
  75. <div class="panel-body no-animate">
  76. <accordion close-others="false">
  77. <accordion-group is-open="dialogStatus.openbase">
  78. <accordion-heading>
  79. 基本配置<i class="pull-right fa fa-angle-right"
  80. ng-class="{'fa-angle-down': dialogStatus.openbase, 'fa-angle-right': !dialogStatus.openbase}"></i>
  81. </accordion-heading>
  82. <div class="form-group">
  83. <label class="col-sm-3 control-label">是否开启</label>
  84. <div class="col-sm-3">
  85. <div class="checkbox">
  86. <label class="i-checks">
  87. <input type="checkbox" ng-model="dialogData.online">
  88. <i></i>
  89. </label>
  90. </div>
  91. </div>
  92. </div>
  93. <div class="form-group">
  94. <label class="col-sm-3 control-label">名称<i class="text-danger text-base"> *</i></label>
  95. <div class="col-sm-4">
  96. <input type="text" ng-model="dialogData.name" class="form-control" placeholder="名称"
  97. required>
  98. </div>
  99. </div>
  100. <div class="form-group">
  101. <label class="col-sm-3 control-label">广告场景<i class="text-danger text-base"> *</i></label>
  102. <div class="col-sm-9">
  103. <div class="radio pull-left">
  104. <label class="i-checks">
  105. <input type="radio" name="adType" value="init" required
  106. ng-model="dialogData.adType">
  107. <i></i>
  108. 主页广告
  109. </label>
  110. </div>
  111. <div class="radio pull-left m-l">
  112. <label class="i-checks">
  113. <input type="radio" name="adType" value="payAfter" required
  114. ng-model="dialogData.adType">
  115. <i></i>
  116. 投币后
  117. </label>
  118. </div>
  119. <!--只有配置了改特性,才能配置套餐顶部广告-->
  120. <div class="radio pull-left m-l" ng-if="app.feature_map.support_banner_ad">
  121. <label class="i-checks">
  122. <input type="radio" name="adType" value="banner" required
  123. ng-model="dialogData.adType">
  124. <i></i>
  125. 套餐顶部
  126. </label>
  127. </div>
  128. </div>
  129. </div>
  130. <!--主页广告,目前只有二维码-->
  131. <div ng-if="dialogData.adType=='init'">
  132. <div class="line line-dashed b-b line-lg pull-in"></div>
  133. <div class="form-group">
  134. <label class="col-sm-3 control-label">点击跳转链接</label>
  135. <div class="col-sm-9">
  136. <textarea ng-model="dialogData.link" style="height: 50px;" type="url"
  137. class="form-control" placeholder="输入点击跳转链接"></textarea>
  138. </div>
  139. </div>
  140. <div class="form-group">
  141. <label class="col-sm-3 control-label">自动下线</label>
  142. <div class="col-sm-2">
  143. <input type="number" min="0" ng-model="dialogData.offlineFansNumber"
  144. class="form-control"
  145. placeholder="0"
  146. required>
  147. </div>
  148. <div class="col-sm-7 m-t-xs ">
  149. <span class="">吸粉达到指定数目下线,输入0则不下线</span>
  150. </div>
  151. </div>
  152. <div class="form-group">
  153. <label class="col-sm-3 control-label">吸粉号类型<i class="text-danger text-base">
  154. *</i></label>
  155. <div class="col-sm-9">
  156. <div class="radio pull-left">
  157. <label class="i-checks">
  158. <input type="radio" name="fansType" value="person" required
  159. ng-model="dialogData.fansType">
  160. <i></i>
  161. 个人号
  162. </label>
  163. </div>
  164. <div class="radio pull-left m-l">
  165. <label class="i-checks">
  166. <input type="radio" name="fansType" value="official" required
  167. ng-model="dialogData.fansType">
  168. <i></i>
  169. 公众号
  170. </label>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. <!--支付后广告,有脚本和链接-->
  176. <div ng-if="dialogData.adType=='payAfter'">
  177. <div class="line line-dashed b-b line-lg pull-in"></div>
  178. <div class="form-group">
  179. <label class="col-sm-3 control-label">广告类型</label>
  180. <div class="col-sm-9">
  181. <div class="radio pull-left ">
  182. <label class="i-checks">
  183. <input type="radio" name="fansType" value=""
  184. ng-model="dialogData.scriptType">
  185. <i></i>
  186. 广告链接
  187. </label>
  188. </div>
  189. <div class="radio pull-left m-l">
  190. <label class="i-checks">
  191. <input type="radio" name="fansType" value="remote"
  192. ng-model="dialogData.scriptType">
  193. <i></i>
  194. 远程脚本
  195. </label>
  196. </div>
  197. <div class="radio pull-left m-l">
  198. <label class="i-checks">
  199. <input type="radio" name="fansType" value="inline"
  200. ng-model="dialogData.scriptType">
  201. <i></i>
  202. 代码脚本
  203. </label>
  204. </div>
  205. </div>
  206. </div>
  207. <!--如果没有脚本,默认是连接广告-->
  208. <div ng-if="!dialogData.scriptType">
  209. <div class="line line-dashed b-b line-lg pull-in"></div>
  210. <div class="form-group">
  211. <label class="col-sm-3 control-label">广告链接<i class="text-danger text-base">
  212. *</i></label>
  213. <div class="col-sm-9">
  214. <textarea ng-model="dialogData.link" style="height: 100px;" type="url" required
  215. class="form-control" placeholder="输入广告链接"></textarea>
  216. </div>
  217. </div>
  218. <div class="form-group">
  219. <label class="col-sm-3 control-label">跳转行为<i class="text-danger text-base">
  220. *</i></label>
  221. <div class="col-sm-9">
  222. <div class="radio pull-left">
  223. <label class="i-checks">
  224. <input type="radio" name="autoRedirect" ng-value="false" required
  225. ng-model="dialogData.configs.autoRedirect">
  226. <i></i>
  227. 点击跳转
  228. </label>
  229. </div>
  230. <div class="radio pull-left m-l">
  231. <label class="i-checks">
  232. <input type="radio" name="autoRedirect" ng-value="true" required
  233. ng-model="dialogData.configs.autoRedirect">
  234. <i></i>
  235. 自动跳转
  236. </label>
  237. </div>
  238. </div>
  239. </div>
  240. </div>
  241. <!--支付后广告支持script脚本-->
  242. <div ng-if="dialogData.scriptType">
  243. <div class="line line-dashed b-b line-lg pull-in"></div>
  244. <div class="form-group" ng-if="dialogData.scriptType=='remote'">
  245. <label class="col-sm-3 control-label">远程脚本<i class="text-danger text-base">
  246. *</i></label>
  247. <div class="col-sm-9">
  248. <textarea ng-model="dialogData.script" style="height: 100px;" type="url" required
  249. class="form-control" placeholder="输入脚本地址"></textarea>
  250. </div>
  251. </div>
  252. <div class="form-group" ng-if="dialogData.scriptType=='inline'">
  253. <label class="col-sm-3 control-label">脚本代码<i class="text-danger text-base">
  254. *</i></label>
  255. <div class="col-sm-9">
  256. <textarea ng-model="dialogData.script" style="height: 100px;" required
  257. class="form-control" placeholder="输入脚本代码"></textarea>
  258. </div>
  259. </div>
  260. </div>
  261. </div>
  262. <!--套餐顶部广告-->
  263. <div ng-if="dialogData.adType=='banner'">
  264. <div class="line line-dashed b-b line-lg pull-in"></div>
  265. <div class="form-group">
  266. <label class="col-sm-3 control-label">广告链接<i class="text-danger text-base">
  267. *</i></label>
  268. <div class="col-sm-9">
  269. <textarea ng-model="dialogData.link" style="height: 100px;" type="url" required
  270. class="form-control" placeholder="输入广告链接"></textarea>
  271. </div>
  272. </div>
  273. </div>
  274. <div class="line line-dashed b-b line-lg pull-in"></div>
  275. <div class="form-group">
  276. <label class="col-sm-3 control-label">广告词<i
  277. ng-if="dialogData.adType=='init'"
  278. class="text-danger text-base"> *</i></label>
  279. <div class="col-sm-4">
  280. <input type="text" ng-model="dialogData.word" class="form-control" name="word"
  281. placeholder="广告词"
  282. ng-required="dialogData.adType=='init'">
  283. </div>
  284. </div>
  285. <div class="form-group">
  286. <label class="col-sm-3 control-label">图片|素材</label>
  287. <div class="col-sm-5">
  288. <!---文件选择-->
  289. <input type="file" nv-file-select="" id="fileUpload" uploader="uploader"/>
  290. <input type="hidden" name="img" id="fileUploadValue" title="图片路径隐藏域"
  291. class="form-control hide-required-img-input img-input"
  292. ng-model="dialogData.img"/>
  293. <!---上传进度-->
  294. <div class="progress bg-light dker" style="margin-top: 10px;margin-bottom: 10px">
  295. <div class="progress-bar progress-bar-striped bg-info" role="progressbar"
  296. ng-style="{ 'width': uploader.progress + '%' }"></div>
  297. </div>
  298. <!---上传按钮-->
  299. <button type="button" class="btn btn-addon btn-success" ng-click="uploader.uploadAll()"
  300. ng-disabled="!uploader.getNotUploadedItems().length">
  301. <i class="fa fa-arrow-circle-o-up"></i> 上传图片
  302. </button>
  303. </div>
  304. <div class="col-sm-4">
  305. <!---图片预览-->
  306. <img id="previewImg"
  307. ng-src="{{dialogData.img+(dialogData.img?('?t='+dialogData._nowTime):'')}}"
  308. style="max-height: 160px;max-width: 100%">
  309. </div>
  310. </div>
  311. </accordion-group>
  312. <accordion-group is-open="dialogStatus.opentarget" ng-click="ngEvent.openDeviceTarget()">
  313. <accordion-heading>
  314. 投放目标<i class="pull-right fa fa-angle-right"
  315. ng-class="{'fa-angle-down': dialogStatus.opentarget, 'fa-angle-right': !dialogStatus.opentarget}"></i>
  316. </accordion-heading>
  317. <div style="min-height: 600px">
  318. <div class="dev-condition"></div>
  319. <div class="form-group m-b-xs ">
  320. <label class="col-sm-4 control-label text-left padding-t-0">地址类型</label>
  321. </div>
  322. <div class="form-group form-inline ">
  323. <div class="col-sm-12">
  324. <div class="checkbox m-l m-r-xs"
  325. ng-repeat="item in dialogData.selectAddressType">
  326. <label class="i-checks">
  327. <input type="checkbox"
  328. ng-true-value="true"
  329. ng-false-value="false" ng-model="item.checked"><i></i>
  330. {{item.label}}
  331. </label>
  332. </div>
  333. </div>
  334. </div>
  335. <div class="form-group m-b-xs ">
  336. <label class="col-sm-4 control-label text-left padding-t-0">设备类型</label>
  337. </div>
  338. <div class="form-group form-inline ">
  339. <div class="col-sm-12">
  340. <div class="checkbox m-l m-r-xs"
  341. ng-repeat="item in dialogData.selectDevType">
  342. <label class="i-checks">
  343. <input type="checkbox"
  344. ng-true-value="true"
  345. ng-false-value="false" ng-model="item.checked"><i></i>
  346. {{item.name}}
  347. </label>
  348. </div>
  349. </div>
  350. </div>
  351. <div class="form-group m-b-xs col-sm-12">
  352. <button type="button" class="btn btn-info" ng-click="ngEvent.findDevList()">查询
  353. </button>
  354. </div>
  355. <div class="line line-dashed b-b line-lg pull-in"></div>
  356. <div class="form-group m-b-xs ">
  357. <div class="checkbox m-l m-r-xs">
  358. <label class="i-checks">
  359. <input type="checkbox" ng-change="ngEvent.selectAllDevice()"
  360. ng-true-value="true"
  361. ng-false-value="false"
  362. ng-model="dialogData.selectAllDeviceChecked"><i></i>
  363. 全选
  364. </label>
  365. <label class=" control-label text-left padding-t-0">目标设备(将投放广告给这些选中设备)</label>
  366. </div>
  367. </div>
  368. <div class="form-group ">
  369. <div class="table-responsive">
  370. <div ui-grid="deviceGridOptions" ui-grid-pagination
  371. ui-grid-resize-columns></div>
  372. </div>
  373. </div>
  374. <div class="line line-dashed b-b line-lg pull-in"></div>
  375. <div class="form-group m-b-xs ">
  376. <label class="col-sm-4 control-label text-left ">目标人群性别</label>
  377. </div>
  378. <div class="form-group">
  379. <div class="col-sm-4">
  380. <select class="form-control" ng-model="dialogData.targetSex">
  381. <option value="*">*</option>
  382. <option value="男">男</option>
  383. <option value="女">女</option>
  384. </select>
  385. </div>
  386. </div>
  387. <div class="form-group m-b-xs ">
  388. <label class="col-sm-4 control-label text-left ">手机系统</label>
  389. </div>
  390. <div class="form-group form-inline">
  391. <div class="col-sm-12">
  392. <div class="checkbox m-l m-r-xs"
  393. ng-repeat="item in dialogData.selectPhoneOS">
  394. <label class="i-checks">
  395. <input type="checkbox" value="item.name"
  396. ng-true-value="true"
  397. ng-false-value="false" ng-model="item.checked"><i></i>
  398. {{item.name}}
  399. </label>
  400. </div>
  401. </div>
  402. </div>
  403. <div class="form-group m-b-xs ">
  404. <label class="col-sm-4 control-label text-left ">网关</label>
  405. </div>
  406. <div class="form-group form-inline">
  407. <div class="col-sm-12">
  408. <div class="checkbox m-l m-r-xs"
  409. ng-repeat="item in dialogData.selectGateway">
  410. <label class="i-checks">
  411. <input type="checkbox" value="item.name"
  412. ng-true-value="true"
  413. ng-false-value="false" ng-model="item.checked"><i></i>
  414. {{item.name}}
  415. </label>
  416. </div>
  417. </div>
  418. </div>
  419. </div>
  420. </accordion-group>
  421. <accordion-group is-open="dialogStatus.openptime">
  422. <accordion-heading>
  423. 投放时间<i class="pull-right fa fa-angle-right"
  424. ng-class="{'fa-angle-down': dialogStatus.openptime, 'fa-angle-right': !dialogStatus.openptime}"></i>
  425. </accordion-heading>
  426. <div style="min-height: 400px">
  427. <div class="form-group">
  428. <label class="col-sm-3 control-label">开始时间</label>
  429. <div class="col-sm-4">
  430. <div class="dropdown" dropdown is-open="startTimeOpen">
  431. <a class="dropdown-toggle" data-target="#" href="">
  432. <div class="input-group" dropdown-toggle>
  433. <input type="text" class="form-control" onkeydown="return false"
  434. name="startTime"
  435. ui-validate="'$value==null||$value&&$value<dialogData.endTime'"
  436. ui-validate-watch=" 'dialogData.endTime'"
  437. ng-model="dialogData.startTime"
  438. placeholder="请选择开始时间">
  439. <span class="input-group-addon"><i
  440. class="glyphicon glyphicon-calendar"></i></span>
  441. </div>
  442. </a>
  443. <span ng-show="adForm.startTime.$invalid"
  444. class="text-danger">开始时间必须小于结束时间!</span>
  445. <ul class="dropdown-menu" dropdown-menu>
  446. <datetimepicker on-set-time="timeChange()" class="max"
  447. data-datetimepicker-config="{modelType: 'YYYY-MM-DD HH:mm'}"
  448. data-ng-model="dialogData.startTime"></datetimepicker>
  449. </ul>
  450. </div>
  451. </div>
  452. </div>
  453. <div class="form-group">
  454. <label class="col-sm-3 control-label">结束时间</label>
  455. <div class="col-sm-4">
  456. <div class="dropdown" dropdown is-open="endTimeOpen">
  457. <a class="dropdown-toggle" data-target="#" href="">
  458. <div class="input-group" dropdown-toggle>
  459. <input type="text" class="form-control" onkeydown="return false"
  460. name="endTime"
  461. ui-validate="'$value==null||$value&&$value>dialogData.startTime'"
  462. ui-validate-watch=" 'dialogData.startTime'"
  463. ng-model="dialogData.endTime"
  464. placeholder="请选择结束时间">
  465. <span class="input-group-addon"><i
  466. class="glyphicon glyphicon-calendar"></i></span>
  467. </div>
  468. </a>
  469. <span ng-show="adForm.endTime.$invalid"
  470. class="text-danger">开始时间必须小于结束时间!</span>
  471. <ul class="dropdown-menu" dropdown-menu>
  472. <datetimepicker on-set-time="timeChange()" class="max"
  473. data-datetimepicker-config="{modelType: 'YYYY-MM-DD HH:mm'}"
  474. data-ng-model="dialogData.endTime"></datetimepicker>
  475. </ul>
  476. </div>
  477. </div>
  478. <div class="col-sm-4">
  479. <div class="btn-group dropdown" dropdown>
  480. <input type="button" class="dropdown-toggle form-control v-middle" value="快速选择"
  481. dropdown-toggle>
  482. <ul class="dropdown-menu" id="adTimeRange">
  483. <li ng-click="modelEvent.adQuickTime($event,3)"><a href>未来3天</a></li>
  484. <li ng-click="modelEvent.adQuickTime($event,30)"><a href>未来30天</a></li>
  485. <li ng-click="modelEvent.adQuickTime($event,90)"><a href>未来90天</a></li>
  486. <li ng-click="modelEvent.adQuickTime($event,180)"><a href>未来180天</a></li>
  487. <li ng-click="modelEvent.adQuickTime($event,365)"><a href>未来1年</a></li>
  488. <li ng-click="modelEvent.adQuickTime($event,365*3)"><a href>未来3年</a></li>
  489. <li ng-click="modelEvent.adQuickTime($event,365*10)"><a href>未来10年</a></li>
  490. </ul>
  491. </div>
  492. </div>
  493. </div>
  494. </div>
  495. </accordion-group>
  496. <accordion-group is-open="dialogStatus.openprice">
  497. <accordion-heading>
  498. 价格设置<i class="pull-right fa fa-angle-right"
  499. ng-class="{'fa-angle-down': dialogStatus.openprice, 'fa-angle-right': !dialogStatus.openprice}"></i>
  500. </accordion-heading>
  501. <div class="form-group">
  502. <label class="col-sm-3 control-label">广告总价格</label>
  503. <div class="col-sm-2">
  504. <input type="number" min="0" step="0.01" ng-model="dialogData.price"
  505. class="form-control"
  506. name="price"
  507. ui-validate="'$value==null||$value>=(dialogData.agentPrice+dialogData.dealerPrice)'"
  508. ui-validate-watch=" '[dialogData.agentPrice,dialogData.dealerPrice]'"
  509. placeholder="0">
  510. </div>
  511. <div class="col-sm-7 m-t-xs ">
  512. <span ng-show="!adForm.price.$invalid">推送一次的价格</span>
  513. <span ng-show="adForm.price.$invalid"
  514. class="text-danger">广告总价必须大于等于代理商和经销商广告价格之和!</span>
  515. </div>
  516. </div>
  517. <div class="form-group">
  518. <label class="col-sm-3 control-label">代理商价格</label>
  519. <div class="col-sm-2">
  520. <input type="number" min="0" step="0.01" ng-model="dialogData.agentPrice"
  521. class="form-control"
  522. name="agentPrice"
  523. placeholder="0">
  524. </div>
  525. <div class="col-sm-7 m-t-xs ">
  526. <span class="">推送一次代理商分成</span>
  527. </div>
  528. </div>
  529. <div class="form-group">
  530. <label class="col-sm-3 control-label">经销商价格</label>
  531. <div class="col-sm-2">
  532. <input type="number" min="0" step="0.01" ng-model="dialogData.dealerPrice"
  533. class="form-control"
  534. name="dealerPrice"
  535. placeholder="0">
  536. </div>
  537. <div class="col-sm-7 m-t-xs ">
  538. <span class="">推送一次经销商分成</span>
  539. </div>
  540. </div>
  541. </accordion-group>
  542. </accordion>
  543. </div>
  544. <footer class="panel-footer text-right bg-light lter">
  545. <button type="submit" class="btn btn-success" ng-click="saveData()">保存
  546. </button>
  547. </footer>
  548. </div>
  549. </form>
  550. <div id="copyLinkPanel" class="form-horizontal form-validation modal fade" role="dialog"
  551. style="width: 480px;min-height: 180px;height: 180px">
  552. <div class="panel panel-default">
  553. <div class="panel-heading text-center">
  554. <strong>复制链接</strong>
  555. </div>
  556. <div class="panel-body">
  557. <div class="form-group">
  558. <div class="col-sm-12">
  559. <input type="text" ng-model="copyLinkData.link" class="form-control" placeholder=""
  560. id="copyLinkInput"
  561. required>
  562. </div>
  563. </div>
  564. </div>
  565. <footer class="panel-footer text-center bg-light lter">
  566. <button id="copyLinkBtn" data-clipboard-target="#copyLinkInput" type="submit" class="btn btn-info"
  567. >复制
  568. </button>
  569. </footer>
  570. </div>
  571. </div>
  572. <div id="chartInfoPanel" class="form-horizontal form-validation modal fade" role="dialog"
  573. style="height:80%;width: 80%;">
  574. <div class="panel panel-default">
  575. <div class="nav-tabs-alt panel-heading">
  576. <ul class="nav nav-tabs ">
  577. <li ng-class="{active:adFansDetailShow=='chart'}">
  578. <a ng-click="modelEvent.adFansDetailShow('chart')"><i class="fa fa-bar-chart-o"></i> 查看统计图</a>
  579. </li>
  580. <li ng-class="{active:adFansDetailShow=='grid'}">
  581. <a ng-click="modelEvent.adFansDetailShow('grid')"><i class="fa fa-list"></i> 查看列表</a>
  582. </li>
  583. </ul>
  584. </div>
  585. <div class="panel-heading" style="height: auto">
  586. <div class="m-l-xs btn-group dropdown" dropdown is-open="modelEvent.startTimeOpen">
  587. <input type="text" class="form-control w-xs" dropdown-toggle
  588. ng-model="chartCondition.startTime"
  589. placeholder="开始日期">
  590. <ul class="dropdown-menu" dropdown-menu>
  591. <datetimepicker
  592. data-datetimepicker-config="{modelType: 'YYYY-MM-DD',startView:'day',minView:'day'}"
  593. on-set-time="modelEvent.timeChange()"
  594. data-ng-model="chartCondition.startTime"></datetimepicker>
  595. </ul>
  596. </div>
  597. <span class="v-middle">至</span>
  598. <div class="btn-group dropdown" dropdown is-open="modelEvent.endTimeOpen">
  599. <input type="text" class=" form-control w-xs" dropdown-toggle
  600. ng-model="chartCondition.endTime"
  601. placeholder="结束日期">
  602. <ul class="dropdown-menu" dropdown-menu>
  603. <datetimepicker
  604. data-datetimepicker-config="{modelType: 'YYYY-MM-DD',startView:'day',minView:'day'}"
  605. on-set-time="modelEvent.timeChange()"
  606. data-ng-model="chartCondition.endTime"></datetimepicker>
  607. </ul>
  608. </div>
  609. <div class="btn-group dropdown" dropdown>
  610. <input type="button" class="dropdown-toggle form-control v-middle" value="快捷日期"
  611. dropdown-toggle>
  612. <ul class="dropdown-menu" id="timeRange">
  613. <li ng-click="modelEvent.quickTime($event,1)"><a href>今天</a></li>
  614. <li ng-click="modelEvent.quickTime($event,7)"><a href>过去7天</a></li>
  615. <li ng-click="modelEvent.quickTime($event,15)"><a href>过去15天</a></li>
  616. <li ng-click="modelEvent.quickTime($event,30)"><a href>最近30天</a></li>
  617. <li ng-click="modelEvent.quickTime($event,60)"><a href>最近60天</a></li>
  618. <li ng-click="modelEvent.quickTime($event,90)"><a href>最近90天</a></li>
  619. </ul>
  620. </div>
  621. <div class="btn btn-default btn-info" ng-click="modelEvent.searchDetail()"><i
  622. class="fa fa-search"></i> 查询
  623. </div>
  624. <div class=" inline" ng-show="adFansDetailShow=='grid'">
  625. <div ng-disabled="ngEvent.exportExcelOpen" class="btn btn-default btn-success"
  626. ng-click="ngEvent.exportExcel()"><i class="fa fa-file-excel-o"></i>
  627. 生成报表
  628. </div>
  629. </div>
  630. </div>
  631. <div class="panel-body">
  632. <div id="adChartPanel" style="height: 100%" ng-show="adFansDetailShow=='chart'"></div>
  633. <div class="table-responsive" style="height: 100%" ng-show="adFansDetailShow=='grid'">
  634. <div ui-grid="adFansDetailGridOptions" style="min-height:96%" ui-grid-pagination
  635. ui-grid-resize-columns></div>
  636. </div>
  637. </div>
  638. <footer class="panel-footer text-center bg-light lter">
  639. <button type="button" class="btn btn-info margin-5" ng-click="closeChart()"
  640. style="margin-left: 8px"><i
  641. class="fa fa-close"></i> 关闭
  642. </button>
  643. </footer>
  644. </div>
  645. </div>
  646. <div id="QRCodePanel" class="form-horizontal form-validation modal fade" role="dialog"
  647. style=" width: 360px;min-height: 388px;height: 388px">
  648. <div class="panel panel-default">
  649. <div class="panel-heading text-center">
  650. <strong ng-if="!currentWxIsLogin">扫码登录</strong>
  651. <strong ng-if="currentWxIsLogin" class="text-success">{{currentWxUserName}}已登录</strong>
  652. </div>
  653. <div class="panel-body">
  654. <div class="form-group text-center">
  655. <img id="qrCodePreviewImg"
  656. style="z-index: 9;position:relative;box-shadow: 0 0 4px #ccc;background: #fff"
  657. width="200"
  658. height="230"/></div>
  659. <div class="text-center">
  660. <a href="javascript:void(0)" ng-if="currentWxTimeout" ng-click="refreshQRCode()"
  661. class="text-danger">已超时,点此处刷新二维码</a>
  662. </div>
  663. </div>
  664. <footer class="panel-footer text-center bg-light lter">
  665. <button type="button" class="btn btn-info margin-5" ng-click="closeQRCode()" style="margin-left: 8px"><i
  666. class="fa fa-close"></i> 关闭
  667. </button>
  668. </footer>
  669. </div>
  670. </div>
  671. <!--注意:二级弹窗要覆盖一级,所以要更大,或是待实现的解决方案(修改 z-index)-->
  672. <div class="modal fade" role="dialog" id="devDetailList" style="width: 90%; min-width: 1300px;height: 81%">
  673. <div class="panel panel-default">
  674. <div class="panel-heading">
  675. <strong>设备详情</strong>
  676. </div>
  677. <div class="panel-body">
  678. <div ui-view></div>
  679. </div>
  680. <footer class="panel-footer text-center bg-light lter">
  681. <button type="button" class="btn btn-info margin-5" ng-click="closeDevDetailList()"
  682. style="margin-left: 8px"><i
  683. class="fa fa-close"></i> 关闭
  684. </button>
  685. </footer>
  686. </div>
  687. </div>
  688. </div>