Jours d'exception de collecte
This commit is contained in:
parent
a0bd2fb816
commit
fc2abf3b33
9 changed files with 687 additions and 9 deletions
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\CollecteException;
|
||||
use App\Models\TimeslotSetting;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -12,10 +13,11 @@ class CreneauxController extends Controller
|
|||
public function settings(Request $request)
|
||||
{
|
||||
|
||||
$timeslotSettings = TimeslotSetting::all();
|
||||
$plage_days = Setting::where('key','order_withdrawal_period')->firstOrFail()->value;
|
||||
$timeslotSettings = TimeslotSetting::all();
|
||||
$plage_days = Setting::where('key', 'order_withdrawal_period')->firstOrFail()->value;
|
||||
$exceptionsCollecte = CollecteException::orderBy('date')->get();
|
||||
|
||||
return view('bo.creneaux.settings', compact('timeslotSettings', 'plage_days'));
|
||||
return view('bo.creneaux.settings', compact('timeslotSettings', 'plage_days', 'exceptionsCollecte'));
|
||||
}
|
||||
|
||||
public function updateSettings(Request $request)
|
||||
|
|
@ -41,4 +43,40 @@ class CreneauxController extends Controller
|
|||
|
||||
return redirect()->route('bo.creneaux.settings')->with('success', 'Modifications enregistrées !');
|
||||
}
|
||||
|
||||
public function saveExceptions(Request $request)
|
||||
{
|
||||
$collecteException = $request->collecte_exception;
|
||||
|
||||
for ($i = 0; $i < count($collecteException); $i++) {
|
||||
$collecteExceptionToInsert = !empty($collecteException[$i]["date"]);
|
||||
if (isset($collecteException[$i]["id"]) && $collecteException[$i]["id"] !== null && $collecteExceptionToInsert) {
|
||||
$ce = CollecteException::findOrFail($collecteException[$i]["id"]);
|
||||
$ce->date = $collecteException[$i]["date"];
|
||||
$ce->comment = $collecteException[$i]["comment"];
|
||||
$ce->save();
|
||||
} else {
|
||||
if ($collecteExceptionToInsert) {
|
||||
$ce = CollecteException::updateOrCreate(['date' => $collecteException[$i]["date"], 'comment' => $collecteException[$i]["comment"]]);
|
||||
$collecteException[$i]["id"] = $ce->id;
|
||||
} else {
|
||||
unset($collecteException[$i]);
|
||||
$i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//remet dans l'ordre avant de renvoyer
|
||||
$collecteException = CollecteException::orderBy('date')->get();
|
||||
return $collecteException;
|
||||
|
||||
}
|
||||
|
||||
public function destroyExceptions(Request $request)
|
||||
{
|
||||
$collecteException = CollecteException::findOrFail($request->id);
|
||||
$collecteException->delete();
|
||||
|
||||
return "Suppression terminée !";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ use App\Models\Timeslot;
|
|||
use Illuminate\Support\Facades\Mail;
|
||||
use App\Mail\OrderStatusMail;
|
||||
use App\Mail\OrderConfirmMail;
|
||||
use App\Models\CollecteException;
|
||||
use App\Models\Customers;
|
||||
use App\Models\TimeslotSetting;
|
||||
use Carbon\Carbon;
|
||||
|
|
@ -185,11 +186,14 @@ class OrdersController extends Controller
|
|||
);
|
||||
}
|
||||
|
||||
|
||||
//génération des plages
|
||||
//start today
|
||||
$today = CarbonImmutable::now()->startOfDay();
|
||||
//final boundary (permet de limiter la liste des jours d'exception)
|
||||
$finalday = $today->add($plage_days, 'day');
|
||||
$now = CarbonImmutable::now();
|
||||
//jours exceptions
|
||||
$noCollectDays = CollecteException::whereDate('date','>',$now)->whereDate('date','<=',$finalday)->orderBy('date')->get();
|
||||
|
||||
$availCreneaux = array();
|
||||
|
||||
|
|
@ -199,6 +203,16 @@ class OrdersController extends Controller
|
|||
$weekDay = $current->weekday();
|
||||
$interval = CarbonInterval::createFromFormat('h:i', $plage[$weekDay]['interval'] ?? '00:15');
|
||||
$delaiPrepa = CarbonInterval::createFromFormat('h:i', $plage[$weekDay]['min_order_preparation'] ?? '01:00');
|
||||
//si c'est un jour exception skip
|
||||
$skip = false;
|
||||
foreach ($noCollectDays as $not_today) {
|
||||
if($current->isSameDay($not_today->date)) {
|
||||
$skip = true;
|
||||
}
|
||||
}
|
||||
if($skip) {
|
||||
continue;
|
||||
}
|
||||
//matinée
|
||||
if (!empty($plage[$weekDay]['morning_start'])) {
|
||||
$currentTime = Carbon::createFromTimeString($plage[$weekDay]['morning_start']);
|
||||
|
|
|
|||
28
app/Models/CollecteException.php
Normal file
28
app/Models/CollecteException.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use DateTimeInterface;
|
||||
|
||||
class CollecteException extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = ['date', 'comment'];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'date' => 'date',
|
||||
];
|
||||
|
||||
protected function serializeDate(DateTimeInterface $date)
|
||||
{
|
||||
return $date->format('Y-m-d');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateCollecteExceptionsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('collecte_exceptions', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->date('date');
|
||||
$table->string('comment')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('collecte_exceptions');
|
||||
}
|
||||
}
|
||||
443
public/b-o/js/app.js
vendored
443
public/b-o/js/app.js
vendored
|
|
@ -12220,6 +12220,114 @@ __webpack_require__.r(__webpack_exports__);
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&":
|
||||
/*!*****************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js& ***!
|
||||
\*****************************************************************************************************************************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
/* harmony default export */ __webpack_exports__["default"] = ({
|
||||
mounted: function mounted() {
|
||||
console.log('CreneauxExceptions Component mounted.');
|
||||
this.datas = JSON.parse(this.dbdatas);
|
||||
},
|
||||
props: ['name', 'dbdatas'],
|
||||
data: function data() {
|
||||
return {
|
||||
datas: [],
|
||||
response: null,
|
||||
processing: false
|
||||
};
|
||||
},
|
||||
watch: {},
|
||||
methods: {
|
||||
newItem: function newItem() {
|
||||
this.datas.push({
|
||||
date: '',
|
||||
comment: ''
|
||||
});
|
||||
},
|
||||
removeItem: function removeItem(index) {
|
||||
var _this = this;
|
||||
|
||||
if (this.datas[index]['id'] !== undefined) {
|
||||
this.processing = true;
|
||||
axios.post('/bo/ajax/delete-creneaux-exception', {
|
||||
id: this.datas[index]['id']
|
||||
}).then(function (response) {
|
||||
_this.response = response.data;
|
||||
_this.processing = false;
|
||||
})["catch"](function (error) {
|
||||
console.log(error);
|
||||
alert('Erreur lors de la suppression.');
|
||||
this.processing = false;
|
||||
});
|
||||
this.datas.splice(index, 1);
|
||||
} else {
|
||||
this.datas.splice(index, 1);
|
||||
}
|
||||
},
|
||||
saveData: function saveData() {
|
||||
var _this2 = this;
|
||||
|
||||
this.processing = true;
|
||||
this.response = "En cours de sauvegarde...";
|
||||
axios.post('/bo/ajax/save-creneaux-exception', {
|
||||
collecte_exception: this.datas
|
||||
}).then(function (response) {
|
||||
_this2.datas = response.data;
|
||||
_this2.response = "Sauvegarde terminée !";
|
||||
_this2.processing = false;
|
||||
})["catch"](function (error) {
|
||||
console.log(error);
|
||||
this.response = "Erreur lors de la sauvegarde.";
|
||||
this.processing = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=script&lang=js&":
|
||||
/*!**************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Faq.vue?vue&type=script&lang=js& ***!
|
||||
|
|
@ -16953,6 +17061,25 @@ exports.push([module.i, "\n", ""]);
|
|||
// exports
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&":
|
||||
/*!************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/css-loader??ref--7-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-2!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& ***!
|
||||
\************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false);
|
||||
// imports
|
||||
|
||||
|
||||
// module
|
||||
exports.push([module.i, "\n.fade-enter-active[data-v-0a13eb26], .fade-leave-active[data-v-0a13eb26] {\n transition: opacity .5s;\n}\n.fade-enter[data-v-0a13eb26], .fade-leave-to[data-v-0a13eb26] {\n opacity: 0;\n}\n", ""]);
|
||||
|
||||
// exports
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=style&index=0&id=5546b00a&scoped=true&lang=css&":
|
||||
|
|
@ -48238,6 +48365,36 @@ var insertInto;
|
|||
|
||||
|
||||
|
||||
var options = {"hmr":true}
|
||||
|
||||
options.transform = transform
|
||||
options.insertInto = undefined;
|
||||
|
||||
var update = __webpack_require__(/*! ../../../node_modules/style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options);
|
||||
|
||||
if(content.locals) module.exports = content.locals;
|
||||
|
||||
if(false) {}
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/style-loader/index.js!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&":
|
||||
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/style-loader!./node_modules/css-loader??ref--7-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-2!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& ***!
|
||||
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
|
||||
var content = __webpack_require__(/*! !../../../node_modules/css-loader??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--7-2!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& */ "./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&");
|
||||
|
||||
if(typeof content === 'string') content = [[module.i, content, '']];
|
||||
|
||||
var transform;
|
||||
var insertInto;
|
||||
|
||||
|
||||
|
||||
var options = {"hmr":true}
|
||||
|
||||
options.transform = transform
|
||||
|
|
@ -50146,6 +50303,204 @@ render._withStripped = true
|
|||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&":
|
||||
/*!*********************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& ***!
|
||||
\*********************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
|
||||
var render = function() {
|
||||
var _vm = this
|
||||
var _h = _vm.$createElement
|
||||
var _c = _vm._self._c || _h
|
||||
return _c("div", [
|
||||
_c(
|
||||
"div",
|
||||
{
|
||||
staticClass:
|
||||
"d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"
|
||||
},
|
||||
[
|
||||
_vm._m(0),
|
||||
_vm._v(" "),
|
||||
_c("transition", { attrs: { name: "fade" } }, [
|
||||
_c(
|
||||
"span",
|
||||
{
|
||||
directives: [
|
||||
{
|
||||
name: "show",
|
||||
rawName: "v-show",
|
||||
value: _vm.processing,
|
||||
expression: "processing"
|
||||
}
|
||||
],
|
||||
staticClass: "float-right text-success"
|
||||
},
|
||||
[_vm._v(_vm._s(_vm.response))]
|
||||
)
|
||||
]),
|
||||
_vm._v(" "),
|
||||
_c(
|
||||
"button",
|
||||
{
|
||||
staticClass: "btn btn-primary btn-sm text-white float-right",
|
||||
attrs: { disabled: _vm.processing },
|
||||
on: {
|
||||
click: function($event) {
|
||||
return _vm.saveData()
|
||||
}
|
||||
}
|
||||
},
|
||||
[
|
||||
_vm._v("\n Sauvegarder les exceptions\n "),
|
||||
_c(
|
||||
"div",
|
||||
{
|
||||
directives: [
|
||||
{
|
||||
name: "show",
|
||||
rawName: "v-show",
|
||||
value: _vm.processing,
|
||||
expression: "processing"
|
||||
}
|
||||
],
|
||||
staticClass: "spinner-border spinner-border-sm text-light",
|
||||
attrs: { role: "status" }
|
||||
},
|
||||
[_c("span", { staticClass: "sr-only" }, [_vm._v("Loading...")])]
|
||||
)
|
||||
]
|
||||
)
|
||||
],
|
||||
1
|
||||
),
|
||||
_vm._v(" "),
|
||||
_c("table", { staticClass: "table table-bordered text-center" }, [
|
||||
_vm._m(1),
|
||||
_vm._v(" "),
|
||||
_c(
|
||||
"tbody",
|
||||
_vm._l(_vm.datas, function(item, index) {
|
||||
return _c("tr", { key: item.id }, [
|
||||
_c("td", [
|
||||
_c("input", {
|
||||
directives: [
|
||||
{
|
||||
name: "model",
|
||||
rawName: "v-model",
|
||||
value: item.date,
|
||||
expression: "item.date"
|
||||
}
|
||||
],
|
||||
staticClass: "form-control form-control-sm",
|
||||
attrs: { type: "date", required: "" },
|
||||
domProps: { value: item.date },
|
||||
on: {
|
||||
input: function($event) {
|
||||
if ($event.target.composing) {
|
||||
return
|
||||
}
|
||||
_vm.$set(item, "date", $event.target.value)
|
||||
}
|
||||
}
|
||||
})
|
||||
]),
|
||||
_vm._v(" "),
|
||||
_c("td", [
|
||||
_c("input", {
|
||||
directives: [
|
||||
{
|
||||
name: "model",
|
||||
rawName: "v-model",
|
||||
value: item.comment,
|
||||
expression: "item.comment"
|
||||
}
|
||||
],
|
||||
staticClass: "form-control form-control-sm",
|
||||
attrs: { type: "text" },
|
||||
domProps: { value: item.comment },
|
||||
on: {
|
||||
input: function($event) {
|
||||
if ($event.target.composing) {
|
||||
return
|
||||
}
|
||||
_vm.$set(item, "comment", $event.target.value)
|
||||
}
|
||||
}
|
||||
})
|
||||
]),
|
||||
_vm._v(" "),
|
||||
_c("td", [
|
||||
_c(
|
||||
"button",
|
||||
{
|
||||
staticClass: "btn btn-danger btn-sm",
|
||||
on: {
|
||||
click: function($event) {
|
||||
return _vm.removeItem(index)
|
||||
}
|
||||
}
|
||||
},
|
||||
[_vm._v("Supprimer")]
|
||||
)
|
||||
])
|
||||
])
|
||||
}),
|
||||
0
|
||||
)
|
||||
]),
|
||||
_vm._v(" "),
|
||||
_c("div", { staticClass: "form-group text-right" }, [
|
||||
_c(
|
||||
"button",
|
||||
{
|
||||
staticClass: "btn btn-primary btn-sm text-white",
|
||||
on: { click: _vm.newItem }
|
||||
},
|
||||
[_vm._v("Ajouter une date")]
|
||||
)
|
||||
])
|
||||
])
|
||||
}
|
||||
var staticRenderFns = [
|
||||
function() {
|
||||
var _vm = this
|
||||
var _h = _vm.$createElement
|
||||
var _c = _vm._self._c || _h
|
||||
return _c("h1", { staticClass: "h2" }, [
|
||||
_vm._v("Jours Exception - "),
|
||||
_c("small", { staticClass: "text-muted" }, [
|
||||
_vm._v("Fermetures exceptionnelles")
|
||||
])
|
||||
])
|
||||
},
|
||||
function() {
|
||||
var _vm = this
|
||||
var _h = _vm.$createElement
|
||||
var _c = _vm._self._c || _h
|
||||
return _c("thead", [
|
||||
_c("tr", [
|
||||
_c("th", { attrs: { scope: "col" } }, [_vm._v("Jour")]),
|
||||
_vm._v(" "),
|
||||
_c("th", { attrs: { scope: "col" } }, [_vm._v("Commentaire")]),
|
||||
_vm._v(" "),
|
||||
_c("th", { attrs: { scope: "col" } })
|
||||
])
|
||||
])
|
||||
}
|
||||
]
|
||||
render._withStripped = true
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=template&id=5546b00a&scoped=true&":
|
||||
|
|
@ -62890,6 +63245,7 @@ Vue.component('product-card', __webpack_require__(/*! ./components/ProductCard.v
|
|||
Vue.component('products-cards-dnd', __webpack_require__(/*! ./components/ProductsCardsDnd.vue */ "./resources/js/components/ProductsCardsDnd.vue")["default"]);
|
||||
Vue.component('tags-input', _voerro_vue_tagsinput__WEBPACK_IMPORTED_MODULE_0__["default"]);
|
||||
Vue.component('auto-complete-tags', __webpack_require__(/*! ./components/AutoCompleteTags.vue */ "./resources/js/components/AutoCompleteTags.vue")["default"]);
|
||||
Vue.component('creneaux-exceptions', __webpack_require__(/*! ./components/CreneauxExceptions.vue */ "./resources/js/components/CreneauxExceptions.vue")["default"]);
|
||||
var app = new Vue({
|
||||
el: '#app'
|
||||
});
|
||||
|
|
@ -63025,6 +63381,93 @@ __webpack_require__.r(__webpack_exports__);
|
|||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/components/CreneauxExceptions.vue":
|
||||
/*!********************************************************!*\
|
||||
!*** ./resources/js/components/CreneauxExceptions.vue ***!
|
||||
\********************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& */ "./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&");
|
||||
/* harmony import */ var _CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CreneauxExceptions.vue?vue&type=script&lang=js& */ "./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&");
|
||||
/* empty/unused harmony star reexport *//* harmony import */ var _CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& */ "./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&");
|
||||
/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* normalize component */
|
||||
|
||||
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
|
||||
_CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
|
||||
_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
|
||||
_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
|
||||
false,
|
||||
null,
|
||||
"0a13eb26",
|
||||
null
|
||||
|
||||
)
|
||||
|
||||
/* hot reload */
|
||||
if (false) { var api; }
|
||||
component.options.__file = "resources/js/components/CreneauxExceptions.vue"
|
||||
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&":
|
||||
/*!*********************************************************************************!*\
|
||||
!*** ./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js& ***!
|
||||
\*********************************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--4-0!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&");
|
||||
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&":
|
||||
/*!*****************************************************************************************************************!*\
|
||||
!*** ./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& ***!
|
||||
\*****************************************************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader!../../../node_modules/css-loader??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--7-2!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css& */ "./node_modules/style-loader/index.js!./node_modules/css-loader/index.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=style&index=0&id=0a13eb26&scoped=true&lang=css&");
|
||||
/* harmony import */ var _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);
|
||||
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_style_loader_index_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_style_index_0_id_0a13eb26_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&":
|
||||
/*!***************************************************************************************************!*\
|
||||
!*** ./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& ***!
|
||||
\***************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=template&id=0a13eb26&scoped=true&");
|
||||
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
|
||||
|
||||
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_CreneauxExceptions_vue_vue_type_template_id_0a13eb26_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/components/Faq.vue":
|
||||
|
|
|
|||
1
resources/js/app.js
vendored
1
resources/js/app.js
vendored
|
|
@ -13,6 +13,7 @@ Vue.component('product-card', require('./components/ProductCard.vue').default);
|
|||
Vue.component('products-cards-dnd', require('./components/ProductsCardsDnd.vue').default);
|
||||
Vue.component('tags-input', VoerroTagsInput);
|
||||
Vue.component('auto-complete-tags', require('./components/AutoCompleteTags.vue').default);
|
||||
Vue.component('creneaux-exceptions', require('./components/CreneauxExceptions.vue').default);
|
||||
|
||||
const app = new Vue({
|
||||
el: '#app',
|
||||
|
|
|
|||
112
resources/js/components/CreneauxExceptions.vue
Normal file
112
resources/js/components/CreneauxExceptions.vue
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
||||
<h1 class="h2">Jours Exception - <small class="text-muted">Fermetures exceptionnelles</small></h1>
|
||||
<transition name="fade">
|
||||
<span class="float-right text-success" v-show="processing">{{ response }}</span>
|
||||
</transition>
|
||||
<button class="btn btn-primary btn-sm text-white float-right" @click="saveData()" :disabled="processing">
|
||||
Sauvegarder les exceptions
|
||||
<div class="spinner-border spinner-border-sm text-light" role="status" v-show="processing">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<table class="table table-bordered text-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Jour</th>
|
||||
<th scope="col">Commentaire</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(item, index) in datas" v-bind:key="item.id">
|
||||
<td><input class="form-control form-control-sm" v-model="item.date" type="date" required></td>
|
||||
<td><input class="form-control form-control-sm" v-model="item.comment" type="text"></td>
|
||||
<td><button @click="removeItem(index)" class="btn btn-danger btn-sm">Supprimer</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="form-group text-right">
|
||||
<button class="btn btn-primary btn-sm text-white" @click="newItem">Ajouter une date</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
mounted() {
|
||||
console.log('CreneauxExceptions Component mounted.');
|
||||
this.datas = JSON.parse(this.dbdatas);
|
||||
},
|
||||
props: [
|
||||
'name',
|
||||
'dbdatas',
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
datas: [],
|
||||
response: null,
|
||||
processing: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
newItem() {
|
||||
this.datas.push({date: '', comment: ''});
|
||||
},
|
||||
removeItem(index) {
|
||||
if (this.datas[index]['id'] !== undefined) {
|
||||
this.processing = true;
|
||||
axios.post('/bo/ajax/delete-creneaux-exception', {
|
||||
id: this.datas[index]['id'],
|
||||
}).then(
|
||||
(response) => {
|
||||
this.response = response.data;
|
||||
this.processing = false;
|
||||
}
|
||||
)
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
alert('Erreur lors de la suppression.');
|
||||
this.processing = false;
|
||||
});
|
||||
this.datas.splice(index, 1);
|
||||
} else {
|
||||
this.datas.splice(index, 1);
|
||||
}
|
||||
},
|
||||
saveData() {
|
||||
this.processing = true;
|
||||
this.response = "En cours de sauvegarde..."
|
||||
axios.post('/bo/ajax/save-creneaux-exception', {
|
||||
collecte_exception: this.datas,
|
||||
}).then(
|
||||
(response) => {
|
||||
this.datas = response.data;
|
||||
this.response = "Sauvegarde terminée !";
|
||||
this.processing = false;
|
||||
}
|
||||
)
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
this.response = "Erreur lors de la sauvegarde.";
|
||||
this.processing = false;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.fade-enter-active, .fade-leave-active {
|
||||
transition: opacity .5s;
|
||||
}
|
||||
.fade-enter, .fade-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
<span class="float-right text-success">{{ session('success') }}</span>
|
||||
@endif
|
||||
<div class="btn-toolbar mb-2 mb-md-0">
|
||||
<button type="submit" class="btn btn-sm btn-primary">Enregistrer</a>
|
||||
<button type="submit" class="btn btn-sm btn-primary">Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
@if ($errors->any())
|
||||
|
|
@ -124,15 +124,21 @@
|
|||
<div class="form-group col">
|
||||
<input type="number" id="plage_days" name="plage_days" class="form-control" value="{{ old('plage_days', $plage_days) }}">
|
||||
</div>
|
||||
<div class="form-group col"></div>
|
||||
<div class="form-group col"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col"></div>
|
||||
<div class="form-group col"></div>
|
||||
<div class="form-group col">
|
||||
|
||||
</div>
|
||||
<div class="form-group col">
|
||||
|
||||
<button type="submit" class="btn btn-sm btn-primary">Enregistrer les règlages</button>
|
||||
</div>
|
||||
<div class="form-group col"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<creneaux-exceptions dbdatas='@json($exceptionsCollecte)'></creneaux-exceptions>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
|
|
|
|||
|
|
@ -78,6 +78,9 @@ Route::namespace('App\Http\Controllers\Bo')
|
|||
//Creneaux
|
||||
Route::get('/settings/creneaux', [CreneauxController::class, 'settings'])->name('creneaux.settings');
|
||||
Route::post('/settings/creneaux', [CreneauxController::class, 'updateSettings'])->name('creneaux.settings.update');
|
||||
//exceptions de collecte
|
||||
Route::post('/ajax/save-creneaux-exception', [CreneauxController::class, 'saveExceptions']);
|
||||
Route::post('/ajax/delete-creneaux-exception', [CreneauxController::class, 'destroyExceptions']);
|
||||
|
||||
|
||||
// Produits
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue