demo20230512/Views/Partial/LCA/DetailSurveyForm/DirectMaterial.cshtml

677 lines
34 KiB
Plaintext
Raw Normal View History

2023-05-12 10:20:28 +08:00
<div ng-controller="LCAMaterialController" select-row lca-detail>
<div class="body_content container" style="margin-top: 10px;">
<div header-content-layout>
@*<div class="header_image_button" ng-style="{backgroundImage: headerLayout.header_image2}"
ng-click="createChildProcess(selectRow.getSelected())"
ng-mouseover="headerLayout.headerImageChange(2, 2)"
ng-mouseleave="headerLayout.headerImageChange(2, 1)"
ng-show="selectRow.getSelected()!=null&&!selectRow.getSelected().isChild">
<div class="tooltip" ng-show="headerLayout.show2"><div ng-style="{width: tooltipWidth(2)}">@Resource.StaticLabelAddChild</div><div></div></div>
</div>
<div class="header_image_button" ng-style="{backgroundImage: headerLayout.header_image4}"
ng-click="editChildProcess(selectRow.getSelected(),selectRow.getParent())"
ng-mouseover="headerLayout.headerImageChange(4, 2)"
ng-mouseleave="headerLayout.headerImageChange(4, 1)"
ng-show="selectRow.getSelected()!=null&&selectRow.getSelected().isChild">
<div class="tooltip" ng-show="headerLayout.show4"><div ng-style="{width: headerLayout.tooltipWidth(4)}">@Resource.StaticLabelGlobal_Edit</div><div></div></div>
</div>*@
<div class="header_image_button" ng-style="{backgroundImage: headerLayout.header_image3}"
ng-click="selectSimaproProcess(selectRow.getSelected(), selectRow.getParent())"
ng-mouseover="headerLayout.headerImageChange(3, 2)"
ng-mouseleave="headerLayout.headerImageChange(3, 1)"
ng-show="selectRow.getSelected().isChild && selectRow.getSelected().MaterialComposites.length==0 && lcaDetail.HasProductLifeCycle_MaterialsObtained">
<div class="tooltip" ng-show="headerLayout.show3"><div ng-style="{width: headerLayout.tooltipWidth(3)}">@Resource.StaticLabelSelectSimapro</div><div></div></div>
</div>
<div class="header_image_button" ng-style="{backgroundImage: headerLayout.header_image8}"
ng-click="export(selectRow.getSelected().ChildMaterials,model.materialTypeOptions, 'csv', '-Direct')"
ng-mouseover="headerLayout.headerImageChange(8, 2)"
ng-mouseleave="headerLayout.headerImageChange(8, 1)"
ng-show="selectRow.getSelected()&&!selectRow.getSelected().isChild && lcaDetail.HasProductLifeCycle_MaterialsObtained">
<div class="tooltip" ng-show="headerLayout.show8">
<div ng-style="{width: headerLayout.tooltipWidth(8)}">匯出子項</div><div></div>
</div>
</div>
<div class="header_image_button" ng-style="{ backgroundImage: headerLayout.header_image9 }"
ng-click="importChild(selectRow.getSelected())"
ng-mouseover="headerLayout.headerImageChange(9, 2)"
ng-mouseleave="headerLayout.headerImageChange(9, 1)"
ng-show="selectRow.getSelected()&&!selectRow.getSelected().isChild && lcaDetail.HasProductLifeCycle_MaterialsObtained">
<div class="tooltip" ng-show="headerLayout.show9">
<div ng-style="{ width: headerLayout.tooltipWidth(9) }">@Resource.StaticLabelImprotBOM</div><div></div>
</div>
</div>
<div class="header_image_button"
ng-style="{ backgroundImage: headerLayout.header_image11 }"
ng-click="search_box = !search_box"
ng-mouseover="headerLayout.headerImageChange(11, 2)"
ng-mouseleave="headerLayout.headerImageChange(11, 1)"
ng-show="lcaDetail.HasProductLifeCycle_MaterialsObtained">
<div class="tooltip" ng-show="headerLayout.show11">
<div ng-style="{ width: tooltipWidth(11) }">
@Resource.StaticLabelGlobal_Search
</div>
</div>
</div>
<div class="header_search" ng-show="!Table_Edit_State">
<input type="text" ng-model="searchText" ng-class="{ expand: search_box }" class="transition" />
</div>
</div>
</div>
<div class="body_content container" style="margin-top: 10px;">
<div class="header_title" style="line-height: 36px; float: left;">
@Resource.ProductName : {{ lcaDetail.productName }}
| @Resource.MaterialDirectMaterial : {{ model.directMaterials.length }}
<span ng-show="searchText">
| @Resource.StaticLabelGlobal_Search : {{(model.directMaterials|filter:searchText).length}}
</span>
</div>
</div>
<div class="body_content">
<div class="table_overflow">
<table class="table" style=" width: 100%; overflow-x: auto; white-space: nowrap;">
<thead>
<tr class="table-active" style="text-align:center">
<th>
</th>
<th>
@Resource.PartNumber
</th>
<th>
@Resource.MaterialName
</th>
<th>
@Resource.MaterialSupplierCompany
</th>
<th ng-click="predicate='Scalar'; reverse =! reverse;">
@Resource.MaterialScalar
</th>
<th ng-click="predicate='WeightUnit'; reverse =! reverse;">
@Resource.StaticLabelGlobal_Unit
</th>
<th>
@Resource.UsedQuantity_BOM
</th>
<th>
@Resource.UsedQuantity
</th>
<th>
@Resource.MaterialParameterValue
</th>
<th>
@Resource.ParameterUnit
</th>
<th>
@Resource.KgCO2ePerUnit
</th>
<th>
@Resource.ActualKgCO2e
</th>
<th>
@Resource.ParameterSource
</th>
</tr>
</thead>
<tbody ng-mouseleave="setHoverColumnRow(-1, -1, -1)">
<tr class="survey_order_table_row"
ng-repeat="row in model.directMaterials | filter:searchText"
ng-click="selectRow.select(row)"
ng-dblclick="displayDetail(row)"
ng-class="{ selected: row==selectRow.getSelected() }">
<td ng-click="row.expend=!row.expend">
<div ng-class="{ arrow_down:row.expend ,arrow_right:!row.expend }"
ng-show="row.ChildMaterials.length>0"></div>
</td>
<td>{{ row.PartNumber }}</td>
<td>{{ row.Name }}</td>
<td>{{ row.SupplierCompanyName }}</td>
<td align="right">{{ row.Scalar | number : 4 }}</td>
<td>
<div ng-show="row.WeightUnit == 'mg'">@Resource.Weight_mg</div>
<div ng-show="row.WeightUnit == 'g'">@Resource.Weight_g</div>
<div ng-show="row.WeightUnit == 'kg'">@Resource.Weight_kg</div>
<div ng-show="row.WeightUnit == 't'">@Resource.Weight_t</div>
</td>
<td align="right">{{ row.Quantity_BOM }}</td>
<td align="right">{{ row.Quantity }}</td>
<td align="right">{{ row.ParameterValue | number : 10 }}</td>
<td>{{ row.Unit }}</td>
@*
<td align="right">{{ row.KgCO2e_BOM | number : 3 }}</td>
<td align="right">{{ row.KgCO2e | number : 3 }}</td>
*@
<td align="right">{{ row.KgCO2e_BOM.toExponential(4) }}</td>
<td align="right">{{ row.KgCO2e.toExponential(4) }}</td>
<td>
<div ng-show="row.ParameterSource == 1">@Resource.PrimaryData</div>
<div ng-show="row.ParameterSource == 2">@Resource.SecondaryData</div>
<div ng-show="row.ParameterSource == 3">@Resource.SpecificFactoryData</div>
</td>
</tr>
<tr ng-click="selectRow.select(childRow, row)"
ng-dblclick="editChildProcess(childRow, row)"
ng-class="{ selected: childRow == selectRow.getSelected() }"
ng-repeat="childRow in row.ChildMaterials"
ng-show="row.expend">
<td></td>
<td>{{ childRow.PartNumber }}</td>
<td>{{ childRow.LocalName }}</td>
<td>{{ childRow.SupplierCompanyName }}</td>
<td align="right">{{ childRow.Scalar | number : 4 }}</td>
<td align="right">{{ childRow.Quantity_BOM }}</td>
<td align="right">{{ childRow.Quantity }}</td>
<td align="right">{{ childRow.ActivityIntensity }}</td>
<td align="right">{{ childRow.ParameterValue | number : 10 }}</td>
@*<td align="right">{{ (childRow.KgCO2e | number : 4 == 0) ? childRow.KgCO2e.toExponential(4) : (childRow.KgCO2e | number : 4) }}</td>*@
<td align="right">{{ childRow.KgCO2e.toExponential(4) }}
<td>
<div ng-show="row.ParameterSource == 1">@Resource.PrimaryData</div>
<div ng-show="row.ParameterSource == 2">@Resource.SecondaryData</div>
<div ng-show="row.ParameterSource == 3">@Resource.SpecificFactoryData</div>
</td>
</tr>
<tr style="background-color: #F5F5F5" ng-show="model.directMaterials.length != 0" align="right">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
@*<td>{{(directMaterialsSumKgCO2e | number:4) == 0 ? directMaterialsSumKgCO2e.toExponential(4) : (directMaterialsSumKgCO2e | number:4) }}</td>*@
<td>{{ directMaterialsSumKgCO2e.toExponential(4) }}</td>
<td></td>
</tr>
<tr style="border-bottom: solid 1px rgb(214, 214, 214);">
<td ng-show="model.directMaterials.length == 0">
@Resource.NoData
</td>
</tr>
</tbody>
</table>
</div>
<table-edit-modal display-option="fileImportOption">
<div file-import-process import-option="fileImportOption"></div>
</table-edit-modal>
<form name="editForm">
<table-edit-modal display-option="modalFormOption" passed-form="editForm">
<div class="row" ng-show="toBeEdit.isChild">
<label class="col-sm-4 col-form-label">@Resource.NameOfParentMaterial</label>
<div class="col col-sm-8">
<input type="text"
class="table_edit_formula"
readonly
ng-model="toBeEdit.parentName">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.Level
</label>
<div class="col col-sm-8">
<input type="text" ng-model="toBeEdit.Level">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.PartNumber
<span tooltip-placement="right" class="tooltip-directive" tooltip="@Resource.TooltipPartNumber"></span>
</label>
<div class="col col-sm-8">
<input type="text" required placeholder="@Resource.RequiredMessage" ng-model="toBeEdit.PartNumber">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.MaterialName
</label>
<div class="col col-sm-8">
<input type="text" ng-model="toBeEdit.Name">
</div>
<div class="validation_block"></div>
</div>
@*
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.Components
</label>
<div class="col col-sm-8">
<input type="text" required placeholder="@Resource.RequiredMessage" ng-model="toBeEdit.Components">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.MaterialComposition1
</label>
<div class="col col-sm-8">
<input type="text" required placeholder="@Resource.RequiredMessage" ng-model="toBeEdit.Composite">
</div>
<div class="validation_block"></div>
</div>
*@
<div class="row">
<label class="col-sm-2 col-form-label">
@Resource.Length (m)
</label>
<div class="col col-sm-4">
<input name="Length"
type="number" step="any"
placeholder="@Resource.RequiredMessage"
required
step="0.000001"
ng-model="toBeEdit.Length">
<div class="validation_block">
<div ng-show="editForm.Length.$dirty">
<small ng-show="editForm.Length.$error.required &&
!editForm.Length.$error.number">
@Resource.RequiredMessage
</small>
<small ng-show="editForm.Length.$error.number">
@Resource.NumberValidateMsg
</small>
</div>
</div>
</div>
<label class="col-sm-2 col-form-label">
@Resource.StaticLabelGlobal_MeasureOfArea (m2)
</label>
<div class="col col-sm-4">
<input name="Area"
type="number" step="any"
placeholder="@Resource.RequiredMessage"
required
step="0.000001"
ng-model="toBeEdit.Area">
<div class="validation_block">
<div ng-show="editForm.Area.$dirty">
<small ng-show="editForm.Area.$error.required &&
!editForm.Area.$error.number">
@Resource.RequiredMessage
</small>
<small ng-show="editForm.Area.$error.number">
@Resource.NumberValidateMsg
</small>
</div>
</div>
</div>
</div>
<div class="row">
<label class="col-sm-2 col-form-label">
@Resource.Weight
@*<span tooltip-placement="right" class="tooltip-directive" tooltip="@Resource.TooltipMaterialScalar"></span>*@
</label>
<div class="col-sm-2 col">
<input name="Scalar"
type="number" step="any"
placeholder="@Resource.RequiredMessage"
required
step="0.000001"
ng-model="toBeEdit.Scalar"
ng-change="updateScalar()">
</div>
<div class="col-sm-2 col">
<select name="WeightUnit"
placeholder="@Resource.RequiredMessage"
ng-model="toBeEdit.WeightUnit"
ng-change="updateScalar()">
<option value="mg">mg</option>
<option value="g">g</option>
<option value="kg">kg</option>
<option value="t">t</option>
</select>
</div>
<div class="validation_block">
<div ng-show="editForm.Scalar.$dirty">
<small ng-show="editForm.Scalar.$error.required &&
!editForm.Scalar.$error.number">
@Resource.RequiredMessage
</small>
<small ng-show="editForm.Scalar.$error.number">
@Resource.NumberValidateMsg
</small>
</div>
</div>
</div>
<div class="row">
<label class="col-sm-2 col-form-label">
@Resource.StaticLabelGlobal_MeasureOfVolume
</label>
<div class="col-sm-2 col">
<input name="Volume_ml"
type="number" step="any"
step="0.000001"
ng-model="toBeEdit.Volume"
ng-change="updateDensity()">
</div>
<div class="col-sm-2 col">
<select name="WeightUnit"
placeholder="@Resource.RequiredMessage"
ng-model="toBeEdit.VolumeUnit"
ng-change="updateDensity()">
<option value="ml">ml</option>
<option value="L">L</option>
<option value="m3">m3</option>
</select>
</div>
<label class="col-sm-2 col-form-label">
@Resource.StaticLabelGlobal_MeasureOfDensity (kg/m3)
</label>
<div class="col-sm-4 col">
<input name="Density"
type="number" step="any"
step="0.000001"
readonly
ng-model="toBeEdit.Density">
<div class="validation_block">
<div ng-show="editForm.Density.$dirty">
<small ng-show="editForm.Density.$error.number">
@Resource.NumberValidateMsg
</small>
</div>
</div>
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.MaterialComposition
</label>
<div class="col col-sm-8" ng-show="toBeEdit.isChild">
<button ng-click="addComposite()" style="border: none;">@Resource.StaticLabelGlobal_New</button>
</div>
</div>
<div ng-repeat="row in toBeEdit.MaterialComposites" class="col-sm-12" style="border: ridge">
<input type="text" ng-show="false" ng-model="row.ID">
<input type="text" ng-show="false" ng-model="row.materialID">
<div class="row">
<label class="col-sm-2 col-form-label">
@Resource.MaterialComposition1
</label>
<div class="col col-sm-4">
<input type="text" required placeholder="@Resource.RequiredMessage" ng-model="row.materialComposite">
</div>
<div class="col col-sm-6" ng-show="toBeEdit.isChild">
<button ng-click="deleteComposite($index)" style="float: right; border: none;">X</button>
</div>
</div>
<div class="row">
<label class="col-sm-2 col-form-label">
@Resource.MaterialCASNumber
</label>
<div class="col col-sm-4">
<input type="text" required placeholder="@Resource.RequiredMessage" ng-model="row.CASNo">
</div>
<label class="col-sm-2 col-form-label">
@Resource.MaterialRatio (%)
</label>
<div class="col col-sm-4">
<input type="number" required placeholder="@Resource.RequiredMessage" min="0" max="100" step="0.0001" ng-model="row.compositePercentage" ng-change="updateParameter()">
</div>
</div>
<div class="row">
<label class="col-sm-2 col-form-label">
@Resource.Parameter
</label>
<div class="col col-sm-4">
<input type="number" step="any" required placeholder="@Resource.RequiredMessage" ng-model="row.parameterValue" style="width:auto" ng-change="updateParameter()">
<div class="header_image_button simapro-image-button" style="right:0px;position:relative;float:right;margin-right:0px;width:27px"
ng-click="selectSimaproProcess_Composition(row, null, false)">
</div>
</div>
<label class="col-sm-2 col-form-label">
@Resource.ParaDesc
</label>
<div class="col col-sm-4">
<input type="text" required placeholder="@Resource.RequiredMessage" ng-model="row.parameterDescription">
</div>
</div>
</div>
<br />
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.UsedQuantity_BOM
<span tooltip-placement="right" class="tooltip-directive" tooltip="@Resource.TooltipQuantity"></span>
</label>
<div class="col col-sm-8">
<input name="Quantity_BOM"
type="number" step="any"
placeholder="@Resource.RequiredMessage"
required
ng-model="toBeEdit.Quantity_BOM"
ng-change="updateActivityIntensity();updateKgCO2e(toBeEdit);">
</div>
<div class="validation_block">
<div ng-show="editForm.Quantity_BOM.$dirty">
<small ng-show="editForm.Quantity_BOM.$error.required &&
!editForm.Quantity_BOM.$error.number">
@Resource.RequiredMessage
</small>
<small ng-show="editForm.Quantity_BOM.$error.number">
@Resource.NumberValidateMsg
</small>
</div>
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ActivityIntensity_BOM
</label>
<div class="col col-sm-8">
<input type="text" readonly ng-model="toBeEdit.ActivityIntensity_BOM">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.UsedQuantity
<span tooltip-placement="right" class="tooltip-directive" tooltip="@Resource.TooltipQuantity"></span>
</label>
<div class="col col-sm-8">
<input name="Quantity"
type="number" step="any"
placeholder="@Resource.RequiredMessage"
required
ng-model="toBeEdit.Quantity"
ng-change="updateActivityIntensity();">
</div>
<div class="validation_block">
<div ng-show="editForm.Quantity.$dirty">
<small ng-show="editForm.Quantity.$error.required &&
!editForm.Quantity.$error.number">
@Resource.RequiredMessage
</small>
<small ng-show="editForm.Quantity.$error.number">
@Resource.NumberValidateMsg
</small>
</div>
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ActivityIntensity
</label>
<div class="col col-sm-8">
<input type="text" readonly ng-model="toBeEdit.ActivityIntensity">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.MaterialSupplierCompany
</label>
<div class="col col-sm-8">
<input type="text" readonly ng-model="toBeEdit.SupplierCompanyName">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.MaterialSupplierCompanyType
</label>
<div class="col col-sm-8">
<input type="text" ng-model="toBeEdit.SupplierCompanyType">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.Parameter
</label>
<div class="col col-sm-8">
<input type="number" step="any" ng-model="toBeEdit.ParameterValue" ng-readonly="toBeEdit.MaterialComposites.length>0" ng-change="updateKgCO2e(toBeEdit)">
<div class="header_image_button simapro-image-button" ng-show="toBeEdit.MaterialComposites.length==0"
ng-click="selectSimaproProcess(toBeEdit, null, false)">
</div>
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.KgCO2ePerUnit
</label>
<div class="col col-sm-8">
<input type="text" readonly ng-model="toBeEdit.KgCO2e_BOM">
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ActualKgCO2e
</label>
<div class="col col-sm-8">
<input type="text" readonly ng-model="toBeEdit.KgCO2e">
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ParameterUnit
</label>
<div class="col col-sm-8">
<input name="Unit"
type="text"
ng-model="toBeEdit.Unit">
</div>
<div class="validation_block">
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ParaDesc
</label>
<div class="col col-sm-8">
<input type="text" ng-model="toBeEdit.ParameterDescription">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ParameterSource
</label>
<div class="col col-sm-8">
<input type="text" readonly ng-show="toBeEdit.ParameterSource == 1" value="@Resource.PrimaryData">
<input type="text" readonly ng-show="toBeEdit.ParameterSource == 2" value="@Resource.SecondaryData">
<input type="text" readonly ng-show="toBeEdit.ParameterSource == 3" value="@Resource.SpecificFactoryData">
<input type="text" readonly ng-show="toBeEdit.ParameterSource != 1 && toBeEdit.ParameterSource != 2 && toBeEdit.ParameterSource != 3" value="">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.ParameterSourceDesc
</label>
<div class="col col-sm-8">
<input type="text" ng-model="toBeEdit.ParaSourceDesc">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.MataDataDQI
</label>
<div class="col col-sm-8">
<select name="dqi"
required
ng-model="toBeEdit.DQI">
<option value="">-- @Resource.StaticLabelGlobal_Select --</option>
<option value="0">@Resource.MetaDataDQI1</option>
<option value="1">@Resource.MetaDataDQI2</option>
<option value="2">@Resource.MetaDataDQI3</option>
</select>
</div>
</div>
<div class="row">
<label class="col-sm-4 col-form-label">
@Resource.Remark
</label>
<div class="col col-sm-8">
<input type="text" ng-model="toBeEdit.Description">
</div>
<div class="validation_block"></div>
</div>
<div class="row">
<button class="header_button"
style="float: left; margin-left: 16px;"
ng-click="dataQualityShow(selectRow.getSelected())"
ng-if="isEdit">
@Resource.DataQualityLevel
</button>
<button class="header_button"
style="float: left; margin-left: 16px;"
ng-click="modalFormOption.onOkFn()"
ng-disabled="editForm.$invalid"
ng-show="toBeEdit.isChild">
@Resource.StaticLabelGlobal_Save
</button>
</div>
</table-edit-modal>
</form>
<quality display-option="dataQualityOption">
</quality>
<simapro display-option="simaproOption">
<div>@Resource.PartNumber : <span ng-bind="selectRow.getSelected().PartNumber"></span></div>
</simapro>
<div class="footnote">
@Html.Raw(@Resource.FootnoteDirectMaterial.Replace("\r\n", "<br>"))
</div>
</div>
</div>