Change installation field.

This commit is contained in:
aminhashemi92 2025-11-23 14:14:52 +03:30
parent 18f37ab513
commit a8882ddf39
10 changed files with 147 additions and 258 deletions

View file

@ -146,33 +146,23 @@
<div class="row">
<div class="col-md-6">
<p class="text-nowrap mb-2"><i class="bx bx-calendar-event bx-sm me-2"></i>تاریخ مراجعه: {{ report.visited_date|to_jalali|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال جدید: {{ report.new_water_meter_serial|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال کنتور: {{ report.new_water_meter_serial|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ report.seal_number|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>نوع کنتور: {{ report.get_meter_type_display|default:'-' }}</p>
{% if report.meter_type == 'smart' %}
<p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>مدل کنتور: {{ report.get_meter_model_display|default:'-' }}</p>
{% else %}
<p class="text-nowrap mb-2"><i class="bx bx-ruler bx-sm me-2"></i>سایز کنتور: {{ report.meter_size|default:'-' }}</p>
{% endif %}
<p class="text-nowrap mb-2"><i class="bx bx-tachometer bx-sm me-2"></i>قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-building bx-sm me-2"></i>سازنده کنتور: {{ report.water_meter_manufacturer|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-mobile bx-sm me-2"></i>شماره سیمکارت: {{ report.sim_number|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-cog bx-sm me-2"></i>نیرو محرکه چاه: {{ report.driving_force|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-battery bx-sm me-2"></i>شارژ کنتور (متر مکعب): {{ report.meter_charge|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-building bx-sm me-2"></i>شرکت سازنده کنتور: {{ report.water_meter_manufacturer.name|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-calendar-exclamation bx-sm me-2"></i>پایان اعتبار شارژ: {{ report.meter_charge_expiration_date|to_jalali|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
</div>
<div class="col-md-6">
<p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ report.utm_x|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-map-pin bx-sm me-2"></i>UTM Y: {{ report.utm_y|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ report.utm_x|default:'-' }} Y: {{ report.utm_y|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع مصرف: {{ report.get_usage_type_display|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-id-card bx-sm me-2"></i>شماره پروانه بهره‌برداری: {{ report.exploitation_license_number|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>قدرت موتور (کیلووات ساعت): {{ report.motor_power|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی (لیتر/ثانیه): {{ report.flow_rate|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-pen bx-sm me-2"></i>عدد کنتور (متر مکعب): {{ report.meter_reading|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-lock-open-alt bx-sm me-2"></i>پلمپ تابلو: {{ report.is_panel_sealed|yesno:'بله,خیر' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>توان مصرفی (کیلووات): {{ report.motor_power|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی بعد از کالیبراسیون (لیتر بر ثانیه): {{ report.flow_rate|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-cycling bx-sm me-2"></i>نوع پمپ: {{ report.get_pump_type_display|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-time-five bx-sm me-2"></i>ساعت کارکرد پروانه: {{ report.licence_working_hour|default:'-' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-power-off bx-sm me-2"></i>تابلو قطع: {{ report.is_panel_cut|yesno:'بله,خیر' }}</p>
<p class="text-nowrap mb-2"><i class="bx bx-cut bx-sm me-2"></i>انجام عملیات قطع: {{ report.is_disconnection_done|yesno:'بله,خیر' }}</p>
</div>
</div>
@ -351,20 +341,7 @@
<div class="invalid-feedback">{{ form.meter_type.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-3" id="meter_size_wrapper">
{{ form.meter_size.label_tag }}
{{ form.meter_size }}
{% if form.meter_size.errors %}
<div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-3" id="meter_model_wrapper">
{{ form.meter_model.label_tag }}
{{ form.meter_model }}
{% if form.meter_model.errors %}
<div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
{% endif %}
</div>
<!-- meter_size and meter_model removed from form UI -->
<div class="col-md-3">
{{ form.discharge_pipe_diameter.label_tag }}
{{ form.discharge_pipe_diameter }}
@ -400,20 +377,7 @@
<div class="invalid-feedback">{{ form.flow_rate.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-3">
{{ form.meter_reading.label_tag }}
{{ form.meter_reading }}
{% if form.meter_reading.errors %}
<div class="invalid-feedback">{{ form.meter_reading.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-3">
{{ form.meter_charge.label_tag }}
{{ form.meter_charge }}
{% if form.meter_charge.errors %}
<div class="invalid-feedback">{{ form.meter_charge.errors.0 }}</div>
{% endif %}
</div>
<!-- meter_reading and meter_charge removed from form UI -->
<div class="col-md-3">
{{ form.meter_charge_expiration_date.label_tag }}
<input type="text" id="id_meter_charge_expiration_date_display" class="form-control{% if form.meter_charge_expiration_date.errors %} is-invalid{% endif %}" placeholder="انتخاب تاریخ" {% if not user_is_installer %}disabled{% endif %} readonly value="{% if report and edit_mode and report.meter_charge_expiration_date %}{{ report.meter_charge_expiration_date|date:'Y/m/d' }}{% elif form.meter_charge_expiration_date.value %}{{ form.meter_charge_expiration_date.value|date:'Y/m/d' }}{% endif %}">
@ -423,7 +387,7 @@
{% endif %}
</div>
<div class="col-md-3">
{{ form.water_meter_manufacturer.label_tag }}حجمی
{{ form.water_meter_manufacturer.label_tag }}
<div class="input-group">
{{ form.water_meter_manufacturer }}
{{ form.new_manufacturer }}
@ -438,39 +402,32 @@
<div class="invalid-feedback">{{ form.new_manufacturer.errors.0 }}</div>
{% endif %}
</div>
<!-- sim_number and driving_force removed from form UI -->
<div class="col-md-3">
{{ form.sim_number.label_tag }}
{{ form.sim_number }}
{% if form.sim_number.errors %}
<div class="invalid-feedback">{{ form.sim_number.errors.0 }}</div>
{{ form.pump_type.label_tag }}
{{ form.pump_type }}
{% if form.pump_type.errors %}
<div class="invalid-feedback">{{ form.pump_type.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-3">
{{ form.driving_force.label_tag }}
{{ form.driving_force }}
{% if form.driving_force.errors %}
<div class="invalid-feedback">{{ form.driving_force.errors.0 }}</div>
{{ form.licence_working_hour.label_tag }}
{{ form.licence_working_hour }}
{% if form.licence_working_hour.errors %}
<div class="invalid-feedback">{{ form.licence_working_hour.errors.0 }}</div>
{% endif %}
</div>
<div class="row mt-3">
<div class="col-md-3 d-flex align-items-end">
<div class="form-check">
{{ form.is_meter_suspicious }}
{{ form.is_meter_suspicious.label_tag }}
</div>
{% if form.is_meter_suspicious.errors %}
<div class="invalid-feedback">{{ form.is_meter_suspicious.errors.0 }}</div>
{% endif %}
<div class="col-md-3 d-flex align-items-end">
<div class="form-check">
{{ form.is_meter_suspicious }}
{{ form.is_meter_suspicious.label_tag }}
</div>
<div class="col-md-3 d-flex align-items-end">
<div class="form-check">
{{ form.is_panel_sealed }}
{{ form.is_panel_sealed.label_tag }}
</div>
{% if form.is_panel_sealed.errors %}
<div class="invalid-feedback">{{ form.is_panel_sealed.errors.0 }}</div>
{% endif %}
{% if form.is_meter_suspicious.errors %}
<div class="invalid-feedback">{{ form.is_meter_suspicious.errors.0 }}</div>
{% endif %}
</div>
<!-- is_panel_sealed removed from form UI -->
<div class="col-md-3 d-flex align-items-end">
<div class="form-check">
{{ form.is_panel_cut }}
@ -480,15 +437,7 @@
<div class="invalid-feedback">{{ form.is_panel_cut.errors.0 }}</div>
{% endif %}
</div>
<div class="col-md-3 d-flex align-items-end">
<div class="form-check">
{{ form.is_disconnection_done }}
{{ form.is_disconnection_done.label_tag }}
</div>
{% if form.is_disconnection_done.errors %}
<div class="invalid-feedback">{{ form.is_disconnection_done.errors.0 }}</div>
{% endif %}
</div>
<!-- is_disconnection_done removed from form UI -->
</div>
</div>
<div class="my-3">
@ -868,23 +817,14 @@
if (!$select.length || !$btn.length) return;
$btn.on('click', function(){
if ($select.is(':visible')) {
$select.hide();
$input.show().focus();
// Switch to input mode: disable select required, enable input required
$select.prop('disabled', true).prop('required', false).hide();
$input.prop('required', true).show().focus();
$btn.html('<i class="bx bx-check"></i>');
} else {
// When switching back, if input has value, append it as selected option
const val = ($input.val() || '').trim();
if (val) {
// Add a temporary option with value prefixed 'new:' to be handled server-side
const exists = $select.find('option').filter(function(){ return $(this).text().trim() === val; }).length > 0;
if (!exists) {
const opt = $('<option></option>').val('').text(val);
$select.append(opt);
}
$select.val('');
}
$input.hide();
$select.show();
// Back to select mode: remove input required, enable select required
$input.prop('required', false).hide();
$select.prop('disabled', false).prop('required', true).show();
$btn.html('<i class="bx bx-plus"></i>');
}
});
@ -913,46 +853,7 @@
}
}
// Dynamic meter field visibility based on meter type
(function() {
const meterTypeSelect = document.getElementById('{{ form.meter_type.id_for_label }}');
const meterSizeWrapper = document.getElementById('meter_size_wrapper');
const meterModelWrapper = document.getElementById('meter_model_wrapper');
function updateMeterFields() {
if (!meterTypeSelect) return;
const selectedType = meterTypeSelect.value;
if (selectedType === 'smart') {
// Show meter_model, hide meter_size
meterModelWrapper.style.display = '';
meterSizeWrapper.style.display = 'none';
// Clear meter_size value when hidden
const meterSizeInput = meterSizeWrapper.querySelector('input, select');
if (meterSizeInput) meterSizeInput.value = '';
} else if (selectedType === 'volumetric') {
// Show meter_size, hide meter_model
meterSizeWrapper.style.display = '';
meterModelWrapper.style.display = 'none';
// Clear meter_model value when hidden
const meterModelSelect = meterModelWrapper.querySelector('select');
if (meterModelSelect) meterModelSelect.value = '';
} else {
// No selection: hide both
meterSizeWrapper.style.display = 'none';
meterModelWrapper.style.display = 'none';
}
}
// Initial update on page load
updateMeterFields();
// Update on change
if (meterTypeSelect) {
meterTypeSelect.addEventListener('change', updateMeterFields);
}
})();
// meter_size/meter_model dynamic handling removed
</script>
{% endblock %}