|
@@ -143,10 +143,13 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="row">
|
|
|
- <div class="col-5">
|
|
|
+ <div class="col-6">
|
|
|
<div class="card mb-3">
|
|
|
<div class="card-body">
|
|
|
<h5 class="card-title">工程变更</h5>
|
|
|
+ <div class="alert alert-dark py-1 px-2 mb-2" role="alert">
|
|
|
+ 页面显示
|
|
|
+ </div>
|
|
|
<div class="form-group mb-1">
|
|
|
<div class="form-check form-check-inline">
|
|
|
<input class="form-check-input" type="checkbox" id="openChangeProject" <% if(ctx.session.sessionProject.page_show.openChangeProject) { %>checked<% } %> onchange="updateSetting(1);">
|
|
@@ -165,10 +168,17 @@
|
|
|
<label class="form-check-label" for="openChangePlan">显示「变更方案」页面</label>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="alert alert-dark py-1 px-2 mb-2" role="alert">
|
|
|
+ 功能设置
|
|
|
+ </div>
|
|
|
+ <div class="my-2">
|
|
|
+ 自定义变更类别
|
|
|
+ <a class="pull-right mr-3" href="#bgclass" data-toggle="modal" data-target="#bgclass">设置</a>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="col-7">
|
|
|
+ <div class="col-6">
|
|
|
<div class="card mb-3">
|
|
|
<div class="card-body">
|
|
|
<h5 class="card-title">材料调差</h5>
|
|
@@ -226,10 +236,44 @@
|
|
|
</div>
|
|
|
<script src="/public/js/setting.js"></script>
|
|
|
<script>
|
|
|
+ let changeClass = JSON.parse(unescape('<%- escape(JSON.stringify(funSet.change_class)) %>'));
|
|
|
$(() => {
|
|
|
autoFlashHeight();
|
|
|
+ // 自定义变更类别
|
|
|
+ $('body').on('click', '#change_class_div input[type="checkbox"]', function () {
|
|
|
+ if ($(this).is(':checked')) {
|
|
|
+ $(this).parents('.input-group-prepend').siblings('input').removeAttr('readonly');
|
|
|
+ } else {
|
|
|
+ $(this).parents('.input-group-prepend').siblings('input').attr('readonly', true).val('');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $('body').on('change', '#change_class_div input[type="text"]', function () {
|
|
|
+ if ($(this).val().length > 8) {
|
|
|
+ toastr.error('类别名称不能超过8个字符');
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#bgclass").on('show.bs.modal', function () {
|
|
|
+ let html = '';
|
|
|
+ for (const cc of changeClass) {
|
|
|
+ html += `<div class="input-group input-group-sm mb-1">
|
|
|
+ <div class="input-group-prepend">
|
|
|
+ <div class="input-group-text">
|
|
|
+ <input type="checkbox" value="${cc.value}" aria-label="Checkbox for following text input" ${cc.checked ? 'checked' : ''}>
|
|
|
+ </div>
|
|
|
+ <span class="input-group-text">${cc.name}</span>
|
|
|
+ </div>
|
|
|
+ <input type="text" class="form-control" value="${cc.new_name}" ${!cc.checked ? 'readonly' : ''} aria-label="Text input with checkbox" placeholder="">
|
|
|
+ </div>`;
|
|
|
+ }
|
|
|
+ $('#change_class_div').html(html);
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#set_change_class_btn').click(function () {
|
|
|
+ updateSetting(false, 1);
|
|
|
+ });
|
|
|
});
|
|
|
- const updateSetting = function (tab = false) {
|
|
|
+ const updateSetting = function (tab = false, setChangeClass = false) {
|
|
|
if (!$('#openChangeApply')[0].checked && $('#openChangeProject')[0].checked && tab === 1) {
|
|
|
$('#openChangeApply').prop('checked', true);
|
|
|
$('#openChangePlan').prop('checked', true);
|
|
@@ -296,6 +340,50 @@
|
|
|
$('#end_month').removeAttr('disabled');
|
|
|
$('#end_day').removeAttr('disabled');
|
|
|
}
|
|
|
+ if (setChangeClass) {
|
|
|
+ const change_class = [];
|
|
|
+ let flag = false;
|
|
|
+ let allUnchecked = true;
|
|
|
+ $('#change_class_div .input-group').each(function () {
|
|
|
+ const one_class = _.find(changeClass, { value: parseInt($(this).find('input[type="checkbox"]').val())});
|
|
|
+ if ($(this).find('input[type="checkbox"]').is(':checked') && $(this).find('input[type="text"]').val().length > 8) {
|
|
|
+ toastr.error(one_class.name + ' 类别名称字符不能超过8个');
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ const new_name = $(this).find('input[type="checkbox"]').is(':checked') ? $(this).find('input[type="text"]').val() : '';
|
|
|
+ if (new_name) {
|
|
|
+ const classInfo = _.find(changeClass, function(item) {
|
|
|
+ return item.name === new_name && item.value !== one_class.value;
|
|
|
+ })
|
|
|
+ if (classInfo) {
|
|
|
+ toastr.error(one_class.name + '的类别名称不能与其他变更名称相同');
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ if (_.findIndex(change_class, { new_name }) !== -1) {
|
|
|
+ toastr.error(one_class.name + '的类别名称不能与其他类别名称相同');
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($(this).find('input[type="checkbox"]').is(':checked')) {
|
|
|
+ allUnchecked = false;
|
|
|
+ }
|
|
|
+ const one_updateClass = {
|
|
|
+ value: one_class.value,
|
|
|
+ name: one_class.name,
|
|
|
+ new_name,
|
|
|
+ checked: $(this).find('input[type="checkbox"]').is(':checked'),
|
|
|
+ }
|
|
|
+ change_class.push(one_updateClass);
|
|
|
+ });
|
|
|
+ if (flag) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (allUnchecked) {
|
|
|
+ toastr.error('至少保留一个变更类别');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ pushData.change_class = change_class;
|
|
|
+ }
|
|
|
postData('/setting/fun/update', {
|
|
|
imType: parseInt($('[name=im_type]:checked').val()),
|
|
|
banOver: $('[name=ban_over]')[0].checked,
|
|
@@ -313,6 +401,12 @@
|
|
|
openMaterialEditForAudit: $('#openMaterialEditForAudit')[0].checked,
|
|
|
openStageStart: $('#openStageStart')[0].checked,
|
|
|
addFunSet: _.size(pushData) !== 0 ? pushData : null,
|
|
|
+ }, function (result) {
|
|
|
+ if (setChangeClass) {
|
|
|
+ changeClass = pushData.change_class;
|
|
|
+ toastr.success('设置成功');
|
|
|
+ $('#bgclass').modal('hide');
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
</script>
|