1. POSTBonus in/out
2. POSTPresale in/out
3. Переработана форма гостя
This commit is contained in:
miroman-afk
2022-12-14 12:42:39 +03:00
parent 4d3ad7727d
commit d24bba305f
49 changed files with 2525 additions and 772 deletions

View File

@@ -0,0 +1,32 @@
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Создание скидки</h5>
</div>
<div class="modal-body text-center p-lg">
<form role="form" class="ng-pristine ng-valid container">
<div class="form-group row">
<div class="col-sm-12"><input class="form-control" placeholder="Название" type="text" ng-model="currentDiscount.name"></div>
</div>
<div class="form-group row">
<div class="col-sm-6">
<select class="form-control" ng-model="currentDiscount.value_type">
<option value="0">Процент</option>
<option value="1">Сумма</option>
</select>
</div>
<div class="col-sm-6">
<input class="form-control" placeholder="Значение" type="text" ng-model="currentDiscount.value">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn dark-white p-x-md" data-dismiss="modal">Отмена</button>
<button type="button" class="btn success p-x-md" ng-click="create()">Создать</button>
</div>
</div>
</div>

234
web/views/loyalty/edit.html Normal file
View File

@@ -0,0 +1,234 @@
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Редактирование скидки</h5>
</div>
<div class="modal-body text-center p-lg">
<form role="form" class="ng-pristine ng-valid container">
<div class="form-group row">
<div class="col-sm-12">
<input class="form-control" placeholder="Название" type="text" ng-model="currentDiscount.name">
</div>
</div>
<div class="form-group row">
<div class="col-sm-6">
<select class="form-control" ng-model="currentDiscount.value_type">
<option value="0">Процент</option>
<option value="1">Сумма</option>
</select>
</div>
<div class="col-sm-6">
<input class="form-control" placeholder="Значение" type="text" ng-model="currentDiscount.value">
</div>
</div>
<div class="form-group row" style="text-align: left">
<div class="col-sm-12">
<div class="checkbox-group" style="display: inline-block; width: auto; margin-right: 50px">
<label class="ui-switch ui-switch-md m-t-xs">
<input type="checkbox" ng-model="currentDiscount.is_enable">
<i></i>
</label>
<label class="ui-switch-info">Активна</label>
</div>
<div class="checkbox-group" style="display: inline-block; width: auto">
<label class="ui-switch ui-switch-md m-t-xs">
<input type="checkbox" ng-model="currentDiscount.is_check_all">
<i></i>
</label>
<label class="ui-switch-info">Проверять все условия</label>
</div>
</div>
</div>
<hr/>
<div class="form-group row">
<div class="col-sm-12">
<label>Время действия скидки</label>
</div>
</div>
<div class="form-group row">
<div class="col-sm-6">
<div class='input-group date' ui-jp="datetimepicker" ui-options="{
format: 'DD.MM.YYYY',
icons: {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
up: 'fa fa-chevron-up',
down: 'fa fa-chevron-down',
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-screenshot',
clear: 'fa fa-trash',
close: 'fa fa-remove'
}
}">
<input type='text' class="form-control" placeholder="С" ng-model="currentDiscount.start_date" />
<span class="input-group-addon">
<i class="material-icons">&#xE916;</i>
</span>
</div>
</div>
<div class="col-sm-6">
<div class='input-group date' ui-jp="datetimepicker" ui-options="{
format: 'DD.MM.YYYY',
icons: {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
up: 'fa fa-chevron-up',
down: 'fa fa-chevron-down',
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-screenshot',
clear: 'fa fa-trash',
close: 'fa fa-remove'
}
}">
<input type='text' class="form-control" placeholder="По" ng-model="currentDiscount.end_date" />
<span class="input-group-addon">
<i class="material-icons">&#xE916;</i>
</span>
</div>
</div>
</div>
<hr/>
<div class="form-group row">
<label>Условия</label>
</div>
<div class="form-group row">
<div class="col-sm-9">
<select ng-model="currentDiscount.new_term_type" class="form-control">
<option ng-repeat="term in terms" value="{{ term.code }}">{{ term.name }}</option>
</select>
</div>
<div class="col-sm-3">
<button class="btn" style="width: 100%" ng-click="addTerm()">Добавить</button>
</div>
</div>
<div class="form-group row" ng-repeat="term in currentTerms">
<div class="col-sm-12">
<div class="term-item">
<div style="height: 30px" class="term-header" onclick="toggleTerm(this)">
<strong>
<i class="material-icons term-icon">&#xE313;</i> {{ term.discount_type_name }}</strong>
<button class="btn btn-xs btn-danger pull-right" ng-click="askDeleteTerm(term)" onclick="event.stopPropagation()">
<i class="material-icons">&#xE872;</i>
</button>
</div>
<div class="term-content">
<div class="form-group row">
<div class="col-sm-{{ 12 / term.params.length }}" ng-repeat="param in term.params">
<label>{{ param.name }}</label>
<input type="text" class="form-control" ng-model="param.value" ng-if="param.type == 'Integer'" />
<select class="form-control" ng-model="param.value" ng-if="param.type == 'Select'">
<option value="">Выбрать</option>
<option ng-repeat="option in param.options" value="{{ option.code }}">{{ option.name }}
</option>
</select>
<div ng-if="param.type == 'Time'" class='input-group date' ui-jp="datetimepicker" style="border-right: 1px solid rgba(120, 130, 140, 0.2)"
ui-options="{
format: 'LT',
icons: {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
up: 'fa fa-chevron-up',
down: 'fa fa-chevron-down',
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-screenshot',
clear: 'fa fa-trash',
close: 'fa fa-remove'
}
}">
<input type='text' class="form-control" ng-model="param.value" />
<span class="input-group-addon">
<i class="material-icons">&#xE916;</i>
</span>
<script type="text/javascript">
$('.date').on('dp.change', function () {
$(this).find('input').trigger('change');
});
</script>
</div>
<div ng-if="param.type == 'SelectMenuItem' || param.type == 'SelectClientItem'">
<div class="row">
<div class="col-sm-9" style="padding-right: 0">
<div style="border: 1px solid #efefef; min-height: 38px" class="form-control">
{{ param.info }}
</div>
</div>
<div class="col-sm-3" style="padding-left: 0">
<button class="btn" style="width: 100%" ng-click="editTermParam(param)">
<i class="material-icons">&#xE254;</i>
</button>
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="form-group" style="text-align: left">
<div class="checkbox-group">
<label class="ui-switch danger ui-switch-md m-t-xs">
<input type="checkbox" ng-model="term.is_term">
<i></i>
</label>
<label class="ui-switch-info">Исключающее условие</label>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn danger p-x-md pull-left" data-toggle="modal" data-target="#edit-discount-confirm-delete">
<i class="material-icons">&#xE872;</i>
</button>
<button type="button" class="btn dark-white p-x-md" data-dismiss="modal">Отмена</button>
<button type="button" class="btn success p-x-md" ng-click="save()">Сохранить</button>
</div>
</div>
</div>
<script type="text/javascript" src="/libs/js/moment/locale/ru.js"></script>
<script type="text/javascript">
function toggleTerm(el) {
var content = $(el).parent().find('.term-content');
if (content.css('display') !== 'block') {
content.slideDown('normal');
}
else {
content.slideUp('fast');
}
}
</script>

View File

@@ -0,0 +1,79 @@
<div id="container-floating">
<div class="nd3 nds" data-toggle="tooltip" data-placement="left" title="Добавить" ng-click="add()" ng-if="!readonlyMode" style="background-color: #3c80f6" onmouseenter="$(this).tooltip('show')">
<i class="material-icons">&#xE145;</i>
</div>
<div class="nd1 nds" data-toggle="tooltip" data-placement="left" title="Обновить" ng-click="update()" style="background-color: #d3a411" onmouseenter="$(this).tooltip('show')">
<i class="material-icons">&#xE5D5;</i>
</div>
<div id="floating-button" data-toggle="tooltip" data-placement="left" title="Действия" onmouseenter="$(this).tooltip('show')">
<p class="plus"><i class="material-icons">&#xE5D2;</i></p>
<p class="edit"><i class="material-icons">&#xE5CD;</i></p>
</div>
</div>
<div class="padding">
<div class="box">
<div class="table-responsive">
<table class="table table-bordered m-a-0 table-hover">
<thead>
<tr>
<th>Название</th>
<th style="width: 120px; text-align: center">Значение</th>
<th style="width: 80px; text-align: center">Условия</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="discount in discounts" ng-click="edit(discount)">
<td>{{ discount.name }}</td>
<td style="text-align: center">{{ discount.value_type == 0 ? discount.value + '%' : discount.value + ' BYN' }}</td>
<td style="text-align: center">{{ discount.terms_count }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="new-discount" data-backdrop="true" ng-if="!readonlyMode">
<div ui-include="'../views/discounts/create.html'"></div>
</div>
<div class="modal fade" id="edit-discount" data-backdrop="true" ng-if="!readonlyMode">
<div ui-include="'../views/discounts/edit.html'"></div>
</div>
<div id="edit-discount-confirm-delete" class="modal confirm-box" data-backdrop="true" style="z-index: 1052">
<div class="bottom white b-b" style="height: 90px">
<div class="confirm-box-body p-lg">
<p>Вы действительно хотите удалить скидку?</p>
</div>
<div class="confirm-box-footer">
<button type="button" class="btn dark-white p-x-md" data-dismiss="modal">Нет</button>
<button type="button" class="btn danger p-x-md" ng-click="delete()">Да</button>
</div>
</div>
</div>
<div id="edit-term-confirm-delete" class="modal confirm-box" data-backdrop="true" style="z-index: 1052">
<div class="bottom white b-b" style="height: 90px">
<div class="confirm-box-body p-lg">
<p>Вы действительно хотите удалить условие скидки?</p>
</div>
<div class="confirm-box-footer">
<button type="button" class="btn dark-white p-x-md" data-dismiss="modal">Нет</button>
<button type="button" class="btn danger p-x-md" ng-click="deleteTerm()">Да</button>
</div>
</div>
</div>
<div class="modal fade" id="edit-selectmenuitem" data-backdrop="true" style="z-index: 1052">
<div ui-include="'../views/discounts/terms/selectmenuitem.html'"></div>
</div>
<div class="modal fade" id="edit-selectclientitem" data-backdrop="true" style="z-index: 1052">
<div ui-include="'../views/discounts/terms/selectclientitem.html'"></div>
</div>

View File

@@ -0,0 +1,65 @@
<div class="modal-dialog modal-list">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Выбор клиента</h5>
</div>
<div class="modal-body p-lg">
<div ng-if="selectClientItemParams.isParent == false">
<div class="list-item pointer no_selection" ios-dblclick="upGroup()">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE2C7;</i>
</span>
</div>
<div class="list-body" style="line-height: 30px">...</div>
</div>
</div>
<div class="list inset" ng-repeat="group in selectClientItemParams.groups">
<div class="list-item pointer no_selection" sglclick="selectItem(group.id, 'client_group', group.name)"
ios-dblclick="openGroup(group)"
ng-class="group.id == selectedElement.value && selectedElement.type == 'client_group' ? 'active' : ''">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE2C7;</i>
</span>
</div>
<div class="list-body" style="line-height: 30px">
{{ group.name }}
</div>
</div>
</div>
<div class="list inset" ng-repeat="client in selectClientItemParams.clients">
<div class="list-item pointer no_selection" ng-click="selectItem(client.id, 'client', client.name)"
ng-class="client.id == selectedElement.value && selectedElement.type == 'client' ? 'active' : ''">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE893;</i>
</span>
</div>
<div class="list-body" style="line-height: 30px">
{{ client.name }}
</div>
</div>
</div>
</div>
<div class="p-a text-center">
<div class="btn-group" role="group">
<a class="btn btn-md btn-outline rounded b-info text-info" ng-class="{disabled:currentPage === 1}" ng-click="pager(currentPage=currentPage-1)"><</a>
<a class="btn btn-md btn-outline rounded b-info text-info" ng-class="{disabled:currentPage}">{{currentPage}}/{{pages}}</a>
<a class="btn btn-md btn-outline rounded b-info text-info" ng-class="{disabled:currentPage === pages}" ng-click="pager(currentPage=currentPage+1)">></a>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn dark-white p-x-md" data-dismiss="modal">Отмена</button>
<button type="button" class="btn success p-x-md" ng-disabled="selectedElement.value == 0"
ng-click="confirmSelect()">Выбрать
</button>
</div>
</div>
</div>

View File

@@ -0,0 +1,82 @@
<div class="modal-dialog modal-list">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Выбор элемента меню</h5>
</div>
<div class="modal-body p-lg">
<div ng-if="selectMenuItemParams.currentMenu > 0">
<div class="list-item pointer no_selection" ios-dblclick="upMenuItem()">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE2C7;</i>
</span>
</div>
<div class="list-body" style="line-height: 30px">...</div>
</div>
</div>
<div ng-if="selectMenuItemParams.currentMenu == 0">
<div class="list inset" ng-repeat="menu in selectMenuItemParams.menus">
<div class="list-item pointer no_selection" ios-dblclick="openMenuItem(menu)"
sglclick="selectItem(menu.id, 'menu', menu.name)"
ng-class="menu.id == selectedElement.value && selectedElement.type == 'menu' ? 'active' : ''">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE2C7;</i>
</span>
</div>
<div class="list-body" style="line-height: 30px">
{{ menu.name }}
</div>
</div>
</div>
</div>
<div ng-if="selectMenuItemParams.currentMenu > 0">
<div class="list inset" ng-repeat="folder in selectMenuItemParams.folders">
<div class="list-item pointer no_selection" ios-dblclick="openFolderItem(folder)"
sglclick="selectItem(folder.id, 'folder', folder.name)"
ng-class="folder.id == selectedElement.value && selectedElement.type == 'folder' ? 'active' : ''">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE2C7;</i>
</span>
</div>
<div class="list-body" style="line-height: 30px">
{{ folder.name }}
</div>
</div>
</div>
</div>
<div ng-if="selectMenuItemParams.currentMenu > 0">
<div class="list inset" ng-repeat="item in selectMenuItemParams.items">
<li class="list-item pointer no_selection" ng-click="selectItem(item.id, 'item', item.name)"
ng-class="item.id == selectedElement.value && selectedElement.type == 'item' ? 'active' : ''">
<div class="list-left">
<span class="w-30">
<i class="material-icons" style="font-size: 30px;">&#xE893;</i>
</span>
</div>
<div class="list-body">
{{ item.name }} <span class="text-muted">#{{ item.code }}</span>
<small class="block text-muted">{{ item.cosht | curr }} BYN</small>
</div>
</li>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn dark-white p-x-md" data-dismiss="modal">Отмена</button>
<button type="button" class="btn success p-x-md" ng-disabled="selectedElement.value == 0"
ng-click="confirmSelect()">Выбрать
</button>
</div>
</div>
</div>