From 5ecb7958c96d3f0b6d47b79aff7eb306c2cf690f Mon Sep 17 00:00:00 2001 From: charles <981744753@qq.com> Date: 星期二, 06 八月 2024 11:16:58 +0800 Subject: [PATCH] gitlab上面的wms转移到公司git --- src/components/makepager/CommonFormTableView.vue | 2255 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 1,183 insertions(+), 1,072 deletions(-) diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue index 500bf19..a30c7d7 100644 --- a/src/components/makepager/CommonFormTableView.vue +++ b/src/components/makepager/CommonFormTableView.vue @@ -1,1142 +1,1253 @@ <template> - <div class="page-view" :class="{ setHeight: isinventory || islistingrules || isReorder }"> - <el-form - ref="form" - :model="tableList" - :show-message="false" - label-position="right" - :class="{ setHeight: isinventory || islistingrules || isReorder }" - > - <el-table - :data="tableList.tableData" - border - style="width: 100%" - :height="'calc(100% - 0px)'" - :class="{ setHeight: isinventory || islistingrules || isReorder }" - :header-cell-style="{ background: '#f1f3f8', color: '#000009' }" - :row-class-name="tableRowClassName" - @row-click="tableRowClick" - > - <el-table-column v-if="tableList.selectBox" type="selection" width="40" align="center"> </el-table-column> - <el-table-column v-if="tableList.selectIndex" type="index" label="搴忓彿" width="50"> </el-table-column> - <el-table-column - v-for="(item, i) in tableList.tableColumn" - :key="i" - :prop="item.prop" - :label="item.label" - :width="item.width" - :min-width="item.min" - align="center" + <div class="page-view" :class="{ setHeight: isinventory || islistingrules || isReorder }"> + <el-form + ref="form" + :model="tableList" + :show-message="false" + label-position="right" + :class="{ setHeight: isinventory || islistingrules || isReorder }" > - <!-- 琛ㄥご鏍峰紡 --> - <template slot="header"> - <span v-if="item.isRequird" style="color: #f56c6c">*</span> - <span>{{ item.label }}</span> - </template> - <!-- column鏍峰紡 --> - <template slot-scope="scope"> - <template v-if="!detailEnter"> - <el-form-item - v-if="item.input" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" + <el-table + :data="tableList.tableData" + border + style="width: 100%" + :height="'calc(100% - 0px)'" + :class="{ setHeight: isinventory || islistingrules || isReorder }" + :header-cell-style="{ background: '#f1f3f8', color: '#000009' }" + :row-class-name="tableRowClassName" + @row-click="tableRowClick" + @selection-change="selectProductArray" + > + <el-table-column v-if="tableList.selectBox" type="selection" width="40" + align="center"></el-table-column> + <el-table-column v-if="tableList.selectIndex" type="index" label="搴忓彿" width="50"></el-table-column> + <el-table-column + v-for="(item, i) in tableList.tableColumn" + :key="i" + :prop="item.prop" + :label="item.label" + :width="item.width" + :min-width="item.min" + align="center" + > + <!-- 琛ㄥご鏍峰紡 --> + <template slot="header"> + <span v-if="item.isRequird" style="color: #f56c6c">*</span> + <span> + {{ item.label }} + <span></span> + <el-popover + placement="top" + width="240" + trigger="click" + v-if="item.isScanCode" + @show="startScanCode" + :popper-append-to-body="false" > - <div @click.stop="commoInput"> - <el-input - v-model.trim="scope.row[item.prop]" - maxlength="50" - size="mini" - @change=" + <el-input placeholder="璇疯緭鍏ユ潯鐮�" + v-model="scanCode" ref="input" + @keyup.enter.native="handlerEnter" + /> + <span class="scan-code" slot="reference"> + <img src="@/assets/saoma.png" width="20px"> + <span style="color:lawngreen">鎵爜</span> + </span> + </el-popover> + </span> + </template> + <!-- column鏍峰紡 --> + <template slot-scope="scope"> + <template v-if="!detailEnter"> + <el-form-item + v-if="item.input" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" + > + <div @click.stop="commoInput"> + <el-input + v-model.trim="scope.row[item.prop]" + maxlength="50" + size="mini" + @change=" (val) => { commonInputChange(val, item.prop, scope.row) } " - ></el-input> - </div> - </el-form-item> - <!-- <el-form-item - v-else-if="item.productName" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - > - <div class="custom-name"> - <SimpleSearchInput - :echoValue="scope.row[item.prop]" - :echoName="scope.row[item.prop]" - checkedNum="1" - :clearable="true" - @select-user="selProductNameClick" - > - </SimpleSearchInput> - </div> - </el-form-item> --> - <el-form-item - v-else-if="item.productName" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - > - <div class="custom-name"> - <el-autocomplete - v-model="scope.row[item.prop]" - :fetch-suggestions=" + ></el-input> + </div> + </el-form-item> + <!-- <el-form-item + v-else-if="item.productName" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + > + <div class="custom-name"> + <SimpleSearchInput + :echoValue="scope.row[item.prop]" + :echoName="scope.row[item.prop]" + checkedNum="1" + :clearable="true" + @select-user="selProductNameClick" + > + </SimpleSearchInput> + </div> + </el-form-item> --> + <el-form-item + v-else-if="item.productName" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + > + <div class="custom-name"> + <el-autocomplete + v-model="scope.row[item.prop]" + :fetch-suggestions=" (queryString, callback) => { querySearchAsync(queryString, callback, 'product') } " - value-key="name" - :disabled="!isOperate" - size="mini" - @select=" + value-key="name" + :disabled="!isOperate" + size="mini" + @select=" (val) => { handleSelectClient(val, item.prop, scope.row,scope) } " - ></el-autocomplete> + ></el-autocomplete> - <div - v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate" - class="common-select-btn" - @click="handleEditClient(scope, item.prop)" - > - <i class="el-icon-edit" title="缂栬緫"></i> - </div> - <div - v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate" - class="common-select-btn" - @click="clearupClient(scope)" - > - <i class="el-icon-remove-outline" title="娓呴櫎"></i> - </div> - <div class="common-select-btn" v-else @click="selClientClick(scope, item.prop)"> - <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> - </div> - </div> - </el-form-item> - <el-form-item - v-else-if="item.date" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" - > - <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span> - <el-date-picker v-else v-model="scope.row[item.prop]" type="date" size="mini" style="width: 100%"> - </el-date-picker> - </el-form-item> - <el-form-item - v-else-if="item.inputNumber" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" - > - <div @click.stop="commoInput"> - <el-input-number - v-model="scope.row[item.prop]" - placeholder="" - :min="0" - :controls="false" - size="mini" - style="width: 100%; margin-right: 5px" - @change=" + <div + v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate" + class="common-select-btn" + @click="handleEditClient(scope, item.prop)" + > + <i class="el-icon-edit" title="缂栬緫"></i> + </div> + <div + v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate" + class="common-select-btn" + @click="clearupClient(scope)" + > + <i class="el-icon-remove-outline" title="娓呴櫎"></i> + </div> + <div class="common-select-btn" v-else @click="selClientClick(scope, item.prop)"> + <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> + </div> + </div> + </el-form-item> + <el-form-item + v-else-if="item.date" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" + > + <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span> + <el-date-picker v-else v-model="scope.row[item.prop]" type="date" size="mini" + style="width: 100%"> + </el-date-picker> + </el-form-item> + <el-form-item + v-else-if="item.inputNumber" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" + > + <div @click.stop="commoInput"> + <el-input-number + v-model="scope.row[item.prop]" + placeholder="" + :min="0" + :controls="false" + size="mini" + style="width: 100%; margin-right: 5px" + @change=" + (val) => { + commonInputChange(val, item.prop, scope.row) + }" + ></el-input-number> + </div> + </el-form-item> + <el-form-item + v-else-if="item.inputFloat||item.inputFloatValue" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" + > + <span v-if="scope.row.isEdit||(item.inputFloatValue&&!scope.row[item.isInputFloat])">{{ scope.row[item.prop] }}</span> + <div v-else @click.stop="commoInput"> + <el-input-number + v-model="scope.row[item.prop]" + placeholder="" + :precision="2" + :controls="false" + size="mini" + style="width: 100%; margin-right: 5px" + :min="item.prop === 'minInventory' ? 0 : 0" + @change=" (val) => { commonInputChange(val, item.prop, scope.row) } " - ></el-input-number> - </div> - </el-form-item> - <el-form-item - v-else-if="item.inputFloat||item.inputFloatValue" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]" - > - <span v-if="scope.row.isEdit||(item.inputFloatValue&&!scope.row[item.isInputFloat])">{{ scope.row[item.prop] }}</span> - <div v-else @click.stop="commoInput"> - <el-input-number - v-model="scope.row[item.prop]" - placeholder="" - :precision="2" - :controls="false" - size="mini" - style="width: 100%; margin-right: 5px" - :min="item.prop === 'minInventory' ? 0 : 0" - @change=" - (val) => { - commonInputChange(val, item.prop, scope.row) - } - " - ></el-input-number> - </div> - </el-form-item> - <el-form-item v-else-if="item.select" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> - <el-select - v-model="scope.row[item.prop]" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 63%" - @change="selCommonClick" - > - <el-option v-for="(item, index) in selOptions" :key="index" :label="item.name" :value="item"> - </el-option> - </el-select> - </div> - </el-form-item> - <!-- 浣嶇疆 --> - <el-form-item v-else-if="item.location" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> + ></el-input-number> + </div> + </el-form-item> + <el-form-item v-else-if="item.select" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> + <el-select + v-model="scope.row[item.prop]" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + @change="selCommonClick" + > + <el-option v-for="(item, index) in selOptions" :key="index" :label="item.name" + :value="item"> + </el-option> + </el-select> + </div> + </el-form-item> + <!-- 浣嶇疆 --> + <el-form-item v-else-if="item.location" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span> - <el-select - v-else - v-model="scope.row[item.prop]" - placeholder="璇烽�夋嫨" - size="mini" - filterable - style="width: 80%" - @change=" + <el-select + v-else + v-model="scope.row[item.prop]" + placeholder="璇烽�夋嫨" + size="mini" + filterable + style="width: 80%" + @change=" (val) => { - selLocationClick(val, item.prop,scope.row) + selLocationClick(val, item.prop,scope.row,1) } " - > - <el-option - v-for="(item, index) in selLocationOptions" - :key="index" - :label="item.jointName" - :value="{ value: item.id, label: item.jointName }" - > - </el-option> - </el-select> - </div> - </el-form-item> - <!-- 浜у搧鍒拌揪浣嶇疆 --> - <el-form-item v-else-if="item.toLocation" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> + > + <el-option + v-for="(item, index) in selLocationOptions" + :key="index" + :label="item.jointName" + :value="{ value: item.id, label: item.jointName }" + > + </el-option> + </el-select> + </div> + </el-form-item> + <!-- 浜у搧鍒拌揪浣嶇疆 --> + <el-form-item v-else-if="item.toLocation" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span> - <el-select - v-else - v-model="scope.row[item.prop]" - placeholder="璇烽�夋嫨" - size="mini" - filterable - style="width: 80%" - @change=" + <el-select + v-else + v-model="scope.row[item.prop]" + placeholder="璇烽�夋嫨" + size="mini" + filterable + style="width: 80%" + @change=" (val) => { - selLocationClick(val, item.prop, scope.row) + selLocationClick(val, item.prop, scope.row,scope.$index) } " - > - <el-option - v-for="(item, index) in selToLocationOptions" - :key="index" - :label="item.jointName" - :value="{ value: item.id, label: item.jointName }" - > - </el-option> - </el-select> - </div> - </el-form-item> - <!-- 瀛愪綅缃� --> - <el-form-item - v-else-if="item.sonLocation" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - > - <div class="custom-name"> + > + <el-option + v-for="(item, index) in selToLocationOptions" + :key="index" + :label="item.jointName" + :value="item.id" + > + </el-option> + </el-select> + </div> + </el-form-item> + <!-- 瀛愪綅缃� --> + <el-form-item + v-else-if="item.sonLocation" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + > + <div class="custom-name"> <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span> - <el-select - v-else - v-model="scope.row[item.prop]" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 80%" - @change=" + <el-select + v-else + v-model="scope.row[item.prop]" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 80%" + @change=" (val) => { selSonLocationClick(val, item.prop,scope.row,scope) } " - > - <el-option - v-for="(item, index) in selSonLocationOptions" - :key="index" - :label="item.jointName" - :value="{ value: item.id, label: item.jointName }" - > - </el-option> - </el-select> - </div> - </el-form-item> - <!-- 閲嶈璐ц鍒�-浣嶇疆 --> - <el-form-item - v-else-if="item.defaultLocation" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - > - <div class="custom-name"> - <el-select - v-if="!scope.row.isEdit && scope.row.isOrder" - v-model="locacionName" - placeholder="璇烽�夋嫨" - size="mini" - filterable - style="width: 80%" - @change=" + > + <el-option + v-for="(item, index) in selSonLocationOptions" + :key="index" + :label="item.jointName" + :value="item.id" + > + </el-option> + </el-select> + </div> + </el-form-item> + <!-- 閲嶈璐ц鍒�-浣嶇疆 --> + <el-form-item + v-else-if="item.defaultLocation" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + > + <div class="custom-name"> + <el-select + v-if="!scope.row.isEdit && scope.row.isOrder" + v-model="locacionName" + placeholder="璇烽�夋嫨" + size="mini" + filterable + style="width: 80%" + @change=" (val) => { - selLocationClick(val, item.prop, scope.row) + selLocationClick(val, item.prop, scope.row,3) } - " - > - <el-option - v-for="(ite, index) in selLocationOptions" - :key="index" - :label="ite.name" - :value="{ value: ite.id, label: ite.name }" - > - </el-option> - </el-select> - <span v-else-if="scope.row.isEdit || scope.row.editable">{{ + "> + <el-option + v-for="(ite, index) in selLocationOptions" + :key="index" + :label="ite.name" + :value="item.id" + > + </el-option> + </el-select> + <span v-else-if="scope.row.isEdit || scope.row.editable">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span> - </div> - </el-form-item> - <!-- 浜у搧 --> - <el-form-item v-else-if="item.product" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> - <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productName }}</span> - <template v-else> - <SimpleSearchInput - v-model="scope.row[item.prop]" - :echoValue="scope.row[item.prop]" - :echoName="scope.row[item.prop]" - checkedNum="1" - :clearable="true" - @select-user=" - (val) => { - selProductClick(val, scope.row) - } - " - > - </SimpleSearchInput> - </template> - </div> - </el-form-item> - <!-- 浠� --> - <el-form-item - v-else-if="item.formLocation" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - > - <div class="custom-name"> - <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.formLocation }}</span> - <el-autocomplete - v-else - style="width: 100%" - v-model="scope.row.productCategory" - @focus="productTypeFocus" - :fetch-suggestions=" - (queryString, callback) => { + </div> + </el-form-item> + <!-- 浜у搧 --> + <el-form-item v-else-if="item.product" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> + <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productName }}</span> + <template v-else> + <SimpleSearchInput + v-model="scope.row[item.prop]" + :echoValue="scope.row[item.prop]" + :echoName="scope.row[item.prop]" + checkedNum="1" + :clearable="true" + @select-user=" + (val) => { + selProductClick(val, scope.row) + }"> + </SimpleSearchInput> + </template> + </div> + </el-form-item> + <!-- 浠� --> + <el-form-item + v-else-if="item.formLocation" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + > + <div class="custom-name"> + <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.formLocation }}</span> + <el-autocomplete + v-else + style="width: 100%" + v-model="scope.row.productCategory" + @focus="productTypeFocus" + :fetch-suggestions="(queryString, callback) => { querySearchAsync(queryString, callback, 'formLocation') - } - " - value-key="name" - @select="handleSelectClient('formLocation', $event)" - ></el-autocomplete> - </div> - </el-form-item> - <!-- 浜у搧绫诲埆 --> - <el-form-item - v-else-if="item.productType" - label=" " - :prop="'tableData.' + scope.$index + '.' + item.prop" - > - <div class="custom-name"> - <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productCategory }}</span> - <el-autocomplete - v-else - style="width: 100%" - v-model="scope.row.productCategory" - @focus="productTypeFocus" - :fetch-suggestions=" + }" + value-key="name" + @select="handleSelectClient('formLocation', $event)" + ></el-autocomplete> + </div> + </el-form-item> + <!-- 浜у搧绫诲埆 --> + <el-form-item + v-else-if="item.productType" + label="" + :prop="'tableData.' + scope.$index + '.' + item.prop" + > + <div class="custom-name"> + <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productCategory }}</span> + <el-autocomplete + v-else + style="width: 100%" + v-model="scope.row.productCategory" + @focus="productTypeFocus" + :fetch-suggestions=" (queryString, callback) => { querySearchAsync(queryString, callback, 'productType') } " - value-key="name" - @select="handleSelectClient('productType', $event)" - ></el-autocomplete> - </div> - </el-form-item> - <!-- 鐢ㄦ埛 --> - <el-form-item v-else-if="item.user" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> - <span>{{ "绠$悊鍛�" }}</span> - <!-- <el-select - v-else - v-model="scope.row[item.prop]" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 80%" - @change="selCommonClick" - > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.name" :value="item.name"> - </el-option> - </el-select> --> - </div> - </el-form-item> - <!-- 璺嚎 --> - <el-form-item v-else-if="item.route" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> - <span v-if="scope.row.isEdit">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span> - <el-select - v-else - v-model="scope.row[item.prop]" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 80%" - @change=" + value-key="name" + @select="handleSelectClient('productType', $event)" + ></el-autocomplete> + </div> + </el-form-item> + <!-- 鐢ㄦ埛 --> + <el-form-item v-else-if="item.user" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> + <span>{{ "绠$悊鍛�" }}</span> + <!-- <el-select + v-else + v-model="scope.row[item.prop]" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 80%" + @change="selCommonClick" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.name" :value="item.name"> + </el-option> + </el-select> --> + </div> + </el-form-item> + <!-- 璺嚎 --> + <el-form-item v-else-if="item.route" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> + <span v-if="scope.row.isEdit">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span> + <el-select + v-else + v-model="scope.row[item.prop]" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 80%" + @change=" (val) => { selRouteClick(val, item.prop) } " - > - <el-option - v-for="(item, index) in selRouteOptions" - :key="index" - :label="item.name" - :value="{ value: item.id, label: item.name }" - > - </el-option> - </el-select> - </div> - </el-form-item> - <!-- 鍏徃 --> - <el-form-item v-else-if="item.company" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"> - <div class="custom-name"> - <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span> - <el-select v-else v-model="scope.row[item.prop]" placeholder="璇烽�夋嫨" size="mini" style="width: 80%"> - <el-option v-for="(item, index) in companyOptions" :key="index" :label="item.name" :value="item"> - </el-option> - </el-select> - </div> - </el-form-item> - <span v-else>{{ scope.row[item.prop] }}</span> - </template> - <span v-else>{{ scope.row[item.prop] }}</span> - </template> - </el-table-column> - <slot name="tableButton" /> - </el-table> - </el-form> - <div v-if="!detailEnter && !isinventory && !isReorder&&isOperateAdd" style="margin: 10px"> - <el-button size="small" type="primary" @click="add">鏂板</el-button> - <el-button size="small" type="primary" @click="empty">娓呯┖</el-button> + > + <el-option + v-for="(item, index) in selRouteOptions" + :key="index" + :label="item.name" + :value="{ value: item.id, label: item.name }" + > + </el-option> + </el-select> + </div> + </el-form-item> + <!-- 鍏徃 --> + <el-form-item v-else-if="item.company" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> + <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span> + <el-select v-else v-model="scope.row[item.prop]" placeholder="璇烽�夋嫨" size="mini" + style="width: 80%"> + <el-option v-for="(item, index) in companyOptions" :key="index" + :label="item.name" :value="item"> + </el-option> + </el-select> + </div> + </el-form-item> + <!-- 澶囨敞 --> + <el-form-item v-else-if="item.editInput" label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop"> + <div class="custom-name"> + <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span> + <el-input v-else v-model="scope.row[item.prop]" placeholder="璇疯緭鍏�" size="mini" + style="width: 80%"></el-input> + </div> + </el-form-item> + <!-- 浜у搧鍚嶇О --> + <span v-else>{{ scope.row[item.prop] }}</span> + </template> + <span v-else>{{ scope.row[item.prop] }}</span> + </template> + </el-table-column> + <slot name="tableButton"/> + </el-table> + </el-form> + <div v-if="!detailEnter && !isinventory && !isReorder&&isOperateAdd" style="margin: 10px"> + <el-button size="small" type="primary" @click="add">鏂板</el-button> + <el-button size="small" type="primary" @click="empty">娓呯┖</el-button> + <el-button size="small" type="primary" @click="deleteItems">鍒犻櫎</el-button> + </div> + <!-- 浜у搧鍚嶇О --> + <SelectCommonDialog + v-if="editSelCommonConfig.editVisible" + :edit-common-config="editSelCommonConfig" + :selectBoxList="tableList.tableData" + :quotationNumber="quotationNumber" + @selClient="selClient" + :warehouseId="warehouseId" + @getSelectArray="getSelectArray"/> </div> - <!-- 浜у搧鍚嶇О --> - <SelectCommonDialog - v-if="editSelCommonConfig.editVisible" - :edit-common-config="editSelCommonConfig" - :selectBoxList="tableList.tableData" - :quotationNumber="quotationNumber" - @selClient="selClient" - @getSelectArray="getSelectArray" - /> - </div> </template> <script> -import { getProductList } from "@/api/product/product" -import { getLocationList } from "@/api/warehouseManage/warehouse" -import { getCompanyList } from "@/api/common/other" -import { getRuleList} from "@/api/operate/inventoryAdjustment" -import { getProductCategoryList } from "@/api/product/productCategory" -import SimpleSearchInput from "@/components/makepager/SimpleSearchInput" -import { getAmountAndPrediction } from "@/api/product/reorderRules" -import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" -export default { - name: "CommmonFormTableView", - components: { SimpleSearchInput, SelectCommonDialog }, - props: { - detailEnter: { - type: Boolean, - default: false - }, - sign: { - type: String, - default: "" - }, - productTableList: { - type: Object, - default: () => { - return { - selectBox: false, - selectIndex: false, - tableData: [], // 鎺ュ彛杩斿洖鏁版嵁 - tableColumn: [ - // table琛ㄥ崟 - { label: "", prop: "", min: 200, tooltip: true } - ] - } - } - }, - isinventory: { - type: Boolean, - default: false - }, - islistingrules: { - type: Boolean, - default: false - }, - isReorder: { - type: Boolean, - default: false - }, - // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝� - quotationNumber: { - type: [String, Number], - default: "" - }, - // 鍒楄〃鏂板鏄惁澶氶�� - addTypeIdMultiple: { - type: Boolean, - default: false - }, - // 鏄惁鍙互鎿嶄綔 娣诲姞绛� - isOperate: { - type: Boolean, - default: true - }, - // 鏄惁鏈夋柊澧炲拰娓呯┖鎿嶄綔 - isOperateAdd: { - type: Boolean, - default: true - }, - }, - data() { - return { - total: 0, - productList: [], - tableList: [], - editSelCommonConfig: { - editVisible: false, - isSelectBox: false, - title: "", - infomation: {} - }, - productIndex: 0, - productNameOptions: [], - productTypeNameOptions: [], - memberOptions: [{ id: 1, name: "绠$悊鍛�" }], - selOptions: [ - { id: 1, name: "浠�" }, - { id: 2, name: "鎵�" } - ], - selLocationOptions: [], // 浣嶇疆 - selSonLocationOptions: [], //瀛愪綅缃� - selToLocationOptions: [], // 浜у搧鍒拌揪浣嶇疆 - companyOptions: [], // 鍏徃 - selRouteOptions: [{ id: 1, name: "鍒堕��" }], // 璺嚎 - locacionName: "", - locacionId: 0, - productName: "", - productId: "", - initialPosition: "", - formLocationList: [], - toLocationList: [] - } - }, - created() { - if (this.isinventory) { - this.getRuleList() - } else if (this.isReorder) { - this.getProductList() - this.getLocationList() - } else { - this.getProductList() - this.getProductCategoryList() - } - if (this.islistingrules) { - this.getToLocationList() - // this.getCompanyList() - } - this.tableList = this.productTableList - }, - computed: {}, - watch: { - productTableList() { - // this.showcol = this.productTableList.showcol - this.getTableInfo() - } - }, - methods: { - getTableInfo(){ - this.tableList = this.productTableList - if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") { - this.isRecalculate = false - } else { - this.isRecalculate = true - } - }, - // 浜у搧鍚嶇О - async getProductList() { - await getProductList({ - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - if (res.data && res.data.length > 0) { - this.productNameOptions = res.data - } - } - }) - }, - // 涓嬫媺鎼滅储 - async handleSelectClient(value, item,row,scope) { - this.$emit("selProductClick", value, item,row,scope) - if (value === "product") { - if (item.categoryId === 0 || item.categoryName === "") { - this.productTypeNameOptions = [] - this.tableList.tableData[this.tableList.rowClickIndex].productCategory = "" - } else { - await getProductCategoryList({ - categoryId: item.categoryId, - keyWord: item.categoryName, - page: 1, - pageSize: 15 - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.productTypeNameOptions = list - this.tableList.tableData[this.tableList.rowClickIndex].productCategory = list[0].name + import {getProductList, getProductDetailsByBarCodeApi} from "@/api/product/product" + import {getLocationList} from "@/api/warehouseManage/warehouse" + import {getCompanyList} from "@/api/common/other" + import {getRuleList} from "@/api/operate/inventoryAdjustment" + import {getProductCategoryList} from "@/api/product/productCategory" + import SimpleSearchInput from "@/components/makepager/SimpleSearchInput" + import {getAmountAndPrediction} from "@/api/product/reorderRules" + import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" + export default { + name: "CommmonFormTableView", + components: {SimpleSearchInput, SelectCommonDialog}, + props: { + warehouseId:{ + type:Number, + default:0 + }, + detailEnter: { + type: Boolean, + default: false + }, + sign: { + type: String, + default: "" + }, + productTableList: { + type: Object, + default: () => { + return { + selectBox: false, + selectIndex: false, + tableData: [], // 鎺ュ彛杩斿洖鏁版嵁 + tableColumn: [ + // table琛ㄥ崟 + {label: "", prop: "", min: 200, tooltip: true} + ] + } + } + }, + isinventory: { + type: Boolean, + default: false + }, + islistingrules: { + type: Boolean, + default: false + }, + isReorder: { + type: Boolean, + default: false + }, + // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝� + quotationNumber: { + type: [String, Number], + default: "" + }, + // 鍒楄〃鏂板鏄惁澶氶�� + addTypeIdMultiple: { + type: Boolean, + default: false + }, + // 鏄惁鍙互鎿嶄綔 娣诲姞绛� + isOperate: { + type: Boolean, + default: true + }, + // 鏄惁鏈夋柊澧炲拰娓呯┖鎿嶄綔 + isOperateAdd: { + type: Boolean, + default: true + }, + }, + data() { + return { + scanCode: '', + total: 0, + productList: [], + tableList: [], + editSelCommonConfig: { + editVisible: false, + isSelectBox: false, + title: "", + infomation: {} + }, + productIndex: 0, + productNameOptions: [], + productTypeNameOptions: [], + memberOptions: [{id: 1, name: "绠$悊鍛�"}], + selOptions: [ + {id: 1, name: "浠�"}, + {id: 2, name: "鎵�"} + ], + selLocationOptions: [], // 浣嶇疆 + selSonLocationOptions: [], //瀛愪綅缃� + selToLocationOptions: [], // 浜у搧鍒拌揪浣嶇疆 + companyOptions: [], // 鍏徃 + selRouteOptions: [{id: 1, name: "鍒堕��"}], // 璺嚎 + locacionName: "", + locacionId: 0, + productName: "", + productId: "", + initialPosition: "", + formLocationList: [], + toLocationList: [] } - }) - } - } else if (value === "productType") { - console.log("浜у搧绫诲瀷閫変腑") - } - }, - querySearchAsync(queryString, cb, value) { - let restaurants = "" - if (value === "product") { - restaurants = this.productNameOptions - } else if (value === "productType") { - restaurants = this.productTypeNameOptions - } else if (value === "formLocation") { - restaurants = this.selLocationOptions - } - var results = (queryString&&restaurants) ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants - cb(results) - if (results.length === 0) { - this.productTypeNameOptions = [] - } - this.$emit("querySearchData", queryString, results, value) - }, - createStateFilter(queryString) { - return (state) => { - return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 - } - }, - // 鏂板 - selClientClick(scope, prop) { - console.log(scope, prop) - this.productIndex = scope.$index - this.editSelCommonConfig.title = "浜у搧鍚嶇О" - this.editSelCommonConfig.isSelectBox = true - this.editSelCommonConfig.editVisible = true - }, - // 缂栬緫 - handleEditClient(scope, prop) { - console.log(scope, prop) - this.productIndex = scope.$index - this.editSelCommonConfig.title = "浜у搧鍚嶇О" - this.editSelCommonConfig.isSelectBox = false - this.editSelCommonConfig.editVisible = true - }, - // 娓呴櫎閫変腑浜у搧 - setValueNull(val) { - console.log(val, "鐪嬬湅val") - }, - - // 搴撳瓨璋冩暣鑾峰彇浣嶇疆鍜屼骇鍝� - async getRuleList() { - await getRuleList({ - locationId: 0, - productId: "" - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.selLocationOptions = list.locationList - this.selSonLocationOptions = list.locationList - this.productNameOptions = list.productList - } - }) - }, - // 鑾峰彇浜у搧绫诲瀷鍒楄〃 - async getProductCategoryList() { - await getProductCategoryList({ - categoryId: 0, - keyWord: "", - page: 1, - pageSize: 15 - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.productTypeNameOptions = list - } - }) - }, - - // 浣嶇疆 - async getLocationList() { - this.locacionName = "" - await getLocationList({ - // keyword: "", - type:3, - jointName: this.initialPosition ? this.initialPosition : null, - productId: this.queryProductId ? this.queryProductId : null, - productCategoryId: this.categoryId ? this.categoryId : null, - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.selLocationOptions = list - this.selSonLocationOptions = list - if (this.isReorder) { - this.locacionName = list[0]?.name - this.locacionId = list[0]?.id - this.$emit("selLocationClick", list[0], "locacionName") - } - } - }) - }, - // 浜у搧鍒拌揪浣嶇疆 - async getToLocationList() { - await getLocationList({ - // keyword: "", - type: 3, - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.selToLocationOptions = list - this.selSonLocationOptions = list - if (this.isReorder) { - this.locacionName = list[0]?.name - this.locacionId = list[0]?.id - this.$emit("selLocationClick", list[0], "locacionName") - } - } - }) - }, - // 璁剧疆瀛愪綅缃�/婧愪綅缃� - async setLocationList(jointName, tag) { - if (tag === "fromLocation") { - await getLocationList({ - jointName: jointName, - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - this.selSonLocationOptions = res.data - } - }) - } else if (tag === "toLocation") { - await getLocationList({ - jointName: jointName, - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - this.selToLocationOptions = res.data - } - }) - } else { - await getLocationList({ - jointName: jointName, - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - this.selSonLocationOptions = res.data - } - }) - } - }, - // 鑾峰彇鍏徃鍒楄〃 - async getCompanyList() { - await getCompanyList().then((res) => { - if (res.code === 200) { - this.companyOptions = res.data - } - }) - }, - selProductNameClick(item) { - this.productIndex = this.tableList.tableData.length - 1 - this.tableList.tableData.map((ite, index) => { - if (index === this.productIndex) { - ite.productId = item.id - ite.productName = item.name - ite.amount = item.amount - ite.unit = item.unit - } - }) - }, - // 閫夋嫨浜у搧 - selProductClick(item, row) { - console.log("閫夋嫨浜у搧",row,item) - if (this.isReorder) { - this.productId = item.id - this.productName = item.name - this.getAmountAndPrediction(item, "product", row) - } else { - let selIndex = 0 - this.tableList.tableData.map((ite, index) => { - // ite.id 鏄笂鏋惰鍒欑殑, ite.productId鏄簱瀛樿皟鏁寸殑 - if (ite.id === row.id && ite.id != undefined && row.id != undefined) { - selIndex = index - ite.productId = item.id - ite.productName = item.name - ite.categoryId = item.categoryId - ite.productCategory = item.categoryName - ite.amount = item.amount - ite.unit = item.unit - } else if (ite.productId === row.productId) { - selIndex = index - ite.productId = item.id - ite.productName = item.name - ite.categoryId = item.categoryId - ite.productCategory = item.categoryName - // ite.amount = item.amount - ite.unit = item.unit - } - }) - this.$emit("selProductClick", "product", this.tableList.tableData[selIndex]) - } - if (this.isinventory) { - getRuleList({ - locationId: 0, - productId: item.value - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.selLocationOptions = list.locationList - this.selSonLocationOptions = list.locationList - } - }) - } - - // this.$emit("selProductClick", item) - }, - // 閫夋嫨浜у搧绫诲瀷 - selProductTypeClick(item) { - this.tableList.tableData.map((ite) => { - if (ite.productCategory.label === item.label) { - ite.productCategoryId = item.value - ite.productCategory = item.label - } - }) - if (this.isinventory) { - this.getProductCategoryList() - } - // this.$emit("selProductTypeClick", item) - }, - // 浜у搧绫诲瀷鑾峰彇鐒︾偣 - productTypeFocus() { - getProductCategoryList({ - categoryId: 0, - keyWord: "", - page: 1, - pageSize: 15 - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.productTypeNameOptions = list - } - }) - }, - // 閫夋嫨浣嶇疆 - selLocationClick(item, prop, row) { - console.log("浣嶇疆閫夋嫨",item,row) - if (prop === "areaName") { - getLocationList({ - jointName: item.label, - page: 1, - pageSize: 100 - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.selSonLocationOptions = list - } - }) - }else if(prop==='locationName'){ - console.log("locationName") - } - if (this.isReorder) { - this.locacionId = item.value - this.productId = row.productId - if (this.productId.length !== 0) { - this.getAmountAndPrediction(row, "location", item) - } - } - if (this.isinventory) { - getRuleList({ - locationId: item.value, - productId: "" - }).then((res) => { - if (res.code === 200) { - const list = res.data ? res.data : [] - this.productNameOptions = list.productList - } - }) - } - this.$emit("selLocationClick", item, prop) - }, - // 閫夋嫨瀛愪綅缃� - selSonLocationClick(item,prop,row,scope) { - this.$emit("selSonLocationClick", item,prop,row,scope) - }, - // 鑾峰彇鍦ㄥ簱涓庨娴嬫暟閲� - getAmountAndPrediction(item, val, ite) { - let selIndex = 0 - getAmountAndPrediction({ - locationId: val === "product" ? this.locacionId : ite.value, - productId: val === "product" ? item.id : this.productId - }).then((res) => { - if (res.code === 200) { - this.tableList.tableData.map((ite, index) => { - if (val === "product") { - if (index === 0) { - selIndex = index - ite.amount = res.data.amount - ite.prediction = res.data.prediction - ite.productId = item.id - ite.productName = item.name - ite.unit = item.unit - } + }, + created() { + if (this.isinventory) { + this.getRuleList() + } else if (this.isReorder) { + this.getProductList() + //this.getLocationList() } else { - if (ite.id === item.id) { - selIndex = index - ite.amount = res.data.amount - ite.prediction = res.data.prediction - } + this.getProductList() + this.getProductCategoryList() } - }) - this.$emit("selProductClick", this.tableList.tableData[selIndex]) - } - }) - }, - // 閫夋嫨璺嚎 - selRouteClick(item, prop) { - this.$emit("selRouteClick", item, prop) - }, - // 閫夋嫨鍗曚綅/鐢ㄦ埛 - selCommonClick(item) { - console.log(item) - }, - handleReserve(row) { - return row._id ? row._id : row.id - }, - handleSelectionChange(val) { - this.$emit("getSelectArray", val) - }, + /*if (this.islistingrules) { + this.getToLocationList() + // this.getCompanyList() + }*/ + this.tableList = this.productTableList + }, + computed: {}, + watch: { + productTableList() { + // this.showcol = this.productTableList.showcol + this.getTableInfo() + }, + scanCode: { + handler(newValue, oldValue) { + //1.杈撳叆涓嶄細瑙﹀彂锛岄渶瑕佹壂鍏ユ潯褰㈢爜瑙﹀彂 + if (newValue&&(newValue.length - oldValue.length > 1)) { + const codeNum=this.scanCode; + this.scanCode=""; + this.queryProduct(codeNum); + } + } + } + }, + methods: { + deleteItems(){ + this.$emit('deleteItems'); + }, + selectProductArray(val){ + this.$emit('selectProductArray',val); + }, + handlerEnter() { + if (this.scanCode.length > 0) { + const codeNum=this.scanCode; + this.scanCode=""; + this.queryProduct(codeNum); + } + }, + async queryProduct(codeNum) { + const {code, data, msg} = await getProductDetailsByBarCodeApi(codeNum); + if (code === 200) { + this.$emit("getSelectArray", [data]); + this.$message.success(`鎵爜鎴愬姛,${data.name}鏁伴噺鍔�1`); + } else { + this.$message.error(msg); + } + // this.scanCode = ""; + }, + startScanCode() { + this.$nextTick(() => { + this.$refs.input[0].focus(); + }); + }, + getTableInfo() { + this.tableList = this.productTableList + if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") { + this.isRecalculate = false + } else { + this.isRecalculate = true + } + }, + // 浜у搧鍚嶇О + async getProductList() { + await getProductList({ + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + if (res.data && res.data.length > 0) { + this.productNameOptions = res.data + } + } + }) + }, + // 涓嬫媺鎼滅储 + async handleSelectClient(value, item, row, scope) { + this.$emit("selProductClick", value, item, row, scope) + if (value === "product") { + if (item.categoryId === 0 || item.categoryName === "") { + this.productTypeNameOptions = [] + this.tableList.tableData[this.tableList.rowClickIndex].productCategory = "" + } else { + await getProductCategoryList({ + categoryId: item.categoryId, + keyWord: item.categoryName, + page: 1, + pageSize: 15 + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : []; + this.productTypeNameOptions = list; + this.tableList.tableData[this.tableList.rowClickIndex].productCategory = list[0].name + } + }) + } + } else if (value === "productType") { + console.log("浜у搧绫诲瀷閫変腑") + } + }, + querySearchAsync(queryString, cb, value) { + let restaurants = "" + if (value === "product") { + restaurants = this.productNameOptions + } else if (value === "productType") { + restaurants = this.productTypeNameOptions; + } else if (value === "formLocation") { + restaurants = this.selLocationOptions + } + var results = (queryString && restaurants) ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants + cb(results) + if (results.length === 0) { + this.productTypeNameOptions = [] + } + this.$emit("querySearchData", queryString, results, value) + }, + createStateFilter(queryString) { + return (state) => { + return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + } + }, + // 鏂板 + selClientClick(scope, prop) { + console.log(scope, prop) + this.productIndex = scope.$index + this.editSelCommonConfig.title = "浜у搧鍚嶇О" + this.editSelCommonConfig.isSelectBox = true + this.editSelCommonConfig.editVisible = true + }, + // 缂栬緫 + handleEditClient(scope, prop) { + console.log(scope, prop) + this.productIndex = scope.$index + this.editSelCommonConfig.title = "浜у搧鍚嶇О" + this.editSelCommonConfig.isSelectBox = false + this.editSelCommonConfig.editVisible = true + }, + // 娓呴櫎閫変腑浜у搧 + setValueNull(val) { + console.log(val, "鐪嬬湅val") + }, - // 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮� - number_format(number, decimals, dec_point, thousands_sep) { - decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁� - /* - * 鍙傛暟璇存槑锛� - * number锛氳鏍煎紡鍖栫殑鏁板瓧 - * decimals锛氫繚鐣欏嚑浣嶅皬鏁� - * dec_point锛氬皬鏁扮偣绗﹀彿 - * thousands_sep锛氬崈鍒嗕綅绗﹀彿 - * */ - number = (number + "").replace(/[^0-9+-Ee.]/g, "") - var n = !isFinite(+number) ? 0 : +number, - prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), - sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, - dec = typeof dec_point === "undefined" ? "." : dec_point - var s = n.toString().split(".") - var re = /(-?\d+)(\d{3})/ - while (re.test(s[0])) { - s[0] = s[0].replace(re, "$1" + sep + "$2") - } - if ((s[1] || "").length < prec) { - s[1] = s[1] || "" - s[1] += new Array(prec - s[1].length + 1).join("0") - } else { - s[1] = s[1].substring(0, prec) //灏忔暟鐐逛綅鏁拌秴鍑洪暱搴︽椂鎴彇鍓嶉潰鐨勪綅鏁� - } - return s.join(dec) - }, - // 鏂板 - add() { - if (this.addTypeIdMultiple) { - this.productIndex = this.tableList.tableData.length - this.editSelCommonConfig.title = "浜у搧鍚嶇О" - this.editSelCommonConfig.isSelectBox = true - this.editSelCommonConfig.editVisible = true - } else { - this.$emit("addProductClick") - } - }, - commonInputChange(val, prop, row) { - this.$emit("inputContent", val, prop, row) - }, - // 娓呯┖ - empty() { - this.$emit("emptyProductClick") - }, - // 娓呴櫎宸查�夋嫨鐢ㄦ埛 - clearupClient(scope) { - this.productIndex = scope.$index - this.tableList.tableData.map((ite, index) => { - if (index === this.productIndex) { - ite.productName = "" - ite.id = "" - ite.name = "" - ite.amount = 1 - ite.number = "" - ite.model = "" - ite.specs = "" - ite.unit = "" - ite.deliveryTime = 0 - ite.shippingDuration = 0 + // 搴撳瓨璋冩暣鑾峰彇浣嶇疆鍜屼骇鍝� + async getRuleList() { + await getRuleList({ + locationId: 0, + productId: "" + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.selLocationOptions = list.locationList + this.selSonLocationOptions = list.locationList + this.productNameOptions = list.productList + } + }) + }, + // 鑾峰彇浜у搧绫诲瀷鍒楄〃 + async getProductCategoryList() { + await getProductCategoryList({ + categoryId: 0, + keyWord: "", + page: 1, + pageSize: 15 + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.productTypeNameOptions = list + } + }) + }, + + // 浣嶇疆 + async getLocationList() { + this.locacionName = "" + await getLocationList({ + // keyword: "", + type: 3, + jointName: this.initialPosition ? this.initialPosition : null, + productId: this.queryProductId ? this.queryProductId : null, + productCategoryId: this.categoryId ? this.categoryId : null, + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.selLocationOptions = list + this.selSonLocationOptions = list + if (this.isReorder) { + this.locacionName = list[0]?.name + this.locacionId = list[0]?.id + this.$emit("selLocationClick", list[0], "locacionName") + } + } + }) + }, + // 浜у搧鍒拌揪浣嶇疆 + async getToLocationList() { + await getLocationList({ + // keyword: "", + type: 3, + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.selToLocationOptions = list + this.selSonLocationOptions = list + if (this.isReorder) { + this.locacionName = list[0]?.name + this.locacionId = list[0]?.id + this.$emit("selLocationClick", list[0], "locacionName") + } + } + }) + }, + // 璁剧疆瀛愪綅缃�/婧愪綅缃� + async setLocationList(jointName, tag) { + if (tag === "fromLocation") { + /*await getLocationList({ + warehouseId: jointName, + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + this.selSonLocationOptions = res.data; + } + })*/ + this.selSonLocationOptions = jointName; + } else if (tag === "toLocation") { + /*await getLocationList({ + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + this.selToLocationOptions = res.data + } + })*/ + this.selToLocationOptions = jointName; + } else { + /*await getLocationList({ + warehouseId: jointName, + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + this.selSonLocationOptions = res.data; + } + })*/ + this.selSonLocationOptions = jointName; + } + }, + // 鑾峰彇鍏徃鍒楄〃 + async getCompanyList() { + await getCompanyList().then((res) => { + if (res.code === 200) { + this.companyOptions = res.data + } + }) + }, + selProductNameClick(item) { + this.productIndex = this.tableList.tableData.length - 1 + this.tableList.tableData.map((ite, index) => { + if (index === this.productIndex) { + ite.productId = item.id + ite.productName = item.name + ite.amount = item.amount + ite.unit = item.unit + } + }) + }, + // 閫夋嫨浜у搧 + selProductClick(item, row) { + console.log("閫夋嫨浜у搧", row, item) + if (this.isReorder) { + this.productId = item.id + this.productName = item.name + this.getAmountAndPrediction(item, "product", row) + } else { + let selIndex = 0 + this.tableList.tableData.map((ite, index) => { + // ite.id 鏄笂鏋惰鍒欑殑, ite.productId鏄簱瀛樿皟鏁寸殑 + if (ite.id === row.id && ite.id != undefined && row.id != undefined) { + selIndex = index + ite.productId = item.id + ite.productName = item.name + ite.categoryId = item.categoryId + ite.productCategory = item.categoryName + ite.amount = item.amount + ite.unit = item.unit + } else if (ite.productId === row.productId) { + selIndex = index + ite.productId = item.id + ite.productName = item.name + ite.categoryId = item.categoryId + ite.productCategory = item.categoryName + // ite.amount = item.amount + ite.unit = item.unit + } + }) + this.$emit("selProductClick", "product", this.tableList.tableData[selIndex]) + } + if (this.isinventory) { + getRuleList({ + locationId: 0, + productId: item.value + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.selLocationOptions = list.locationList + this.selSonLocationOptions = list.locationList + } + }) + } + + // this.$emit("selProductClick", item) + }, + // 閫夋嫨浜у搧绫诲瀷 + selProductTypeClick(item) { + this.tableList.tableData.map((ite) => { + if (ite.productCategory.label === item.label) { + ite.productCategoryId = item.value + ite.productCategory = item.label + } + }) + if (this.isinventory) { + this.getProductCategoryList() + } + // this.$emit("selProductTypeClick", item) + }, + // 浜у搧绫诲瀷鑾峰彇鐒︾偣 + productTypeFocus() { + getProductCategoryList({ + categoryId: 0, + keyWord: "", + page: 1, + pageSize: 15 + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.productTypeNameOptions = list + } + }) + }, + // 閫夋嫨浣嶇疆 + selLocationClick(item, prop, row,index) { + console.log("浣嶇疆閫夋嫨1", item,prop ,row); + if (prop === "areaName") { + getLocationList({ + jointName: item.label, + page: 1, + pageSize: 100 + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.selSonLocationOptions = list + } + }) + } else if (prop === 'locationName') { + console.log("locationName") + } + if (this.isReorder) { + this.locacionId = item.value + this.productId = row.productId + if (this.productId.length !== 0) { + this.getAmountAndPrediction(row, "location", item) + } + } + if (this.isinventory) { + getRuleList({ + locationId: item.value, + productId: "" + }).then((res) => { + if (res.code === 200) { + const list = res.data ? res.data : [] + this.productNameOptions = list.productList + } + }) + } + this.$emit("selLocationClick", item, prop,index); + }, + // 閫夋嫨瀛愪綅缃� + selSonLocationClick(item, prop, row, scope) { + this.$emit("selSonLocationClick", item, prop, row, scope) + }, + // 鑾峰彇鍦ㄥ簱涓庨娴嬫暟閲� + getAmountAndPrediction(item, val, ite) { + let selIndex = 0; + getAmountAndPrediction({ + locationId: val === "product" ? this.locacionId : ite.value, + productId: val === "product" ? item.id : this.productId + }).then((res) => { + if (res.code === 200) { + this.tableList.tableData.map((ite, index) => { + if (val === "product") { + if (index === 0) { + selIndex = index + ite.amount = res.data.amount + ite.prediction = res.data.prediction + ite.productId = item.id + ite.productName = item.name + ite.unit = item.unit + } + } else { + if (ite.id === item.id) { + selIndex = index + ite.amount = res.data.amount + ite.prediction = res.data.prediction + } + } + }) + this.$emit("selProductClick", this.tableList.tableData[selIndex]) + } + }) + }, + // 閫夋嫨璺嚎 + selRouteClick(item, prop) { + this.$emit("selRouteClick", item, prop) + }, + // 閫夋嫨鍗曚綅/鐢ㄦ埛 + selCommonClick(item) { + console.log(item) + }, + handleReserve(row) { + return row._id ? row._id : row.id + }, + handleSelectionChange(val) { + this.productIndex = this.tableList.tableData.length; + this.$emit("getSelectArray", val) + }, + + // 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮� + number_format(number, decimals, dec_point, thousands_sep) { + decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁� + /* + * 鍙傛暟璇存槑锛� + * number锛氳鏍煎紡鍖栫殑鏁板瓧 + * decimals锛氫繚鐣欏嚑浣嶅皬鏁� + * dec_point锛氬皬鏁扮偣绗﹀彿 + * thousands_sep锛氬崈鍒嗕綅绗﹀彿 + * */ + number = (number + "").replace(/[^0-9+-Ee.]/g, "") + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, + dec = typeof dec_point === "undefined" ? "." : dec_point + var s = n.toString().split(".") + var re = /(-?\d+)(\d{3})/ + while (re.test(s[0])) { + s[0] = s[0].replace(re, "$1" + sep + "$2") + } + if ((s[1] || "").length < prec) { + s[1] = s[1] || "" + s[1] += new Array(prec - s[1].length + 1).join("0") + } else { + s[1] = s[1].substring(0, prec) //灏忔暟鐐逛綅鏁拌秴鍑洪暱搴︽椂鎴彇鍓嶉潰鐨勪綅鏁� + } + return s.join(dec) + }, + // 鏂板 + add() { + if(this.warehouseId||this.$route.query.workType){ + if(this.$route.query.workType==3&&!this.warehouseId){ + this.$message.warning('璇峰厛閫夋嫨璋冩嫧鍦板潃'); + return ; + } + if (this.addTypeIdMultiple) { + this.productIndex = this.tableList.tableData.length + this.editSelCommonConfig.title = "浜у搧鍚嶇О" + this.editSelCommonConfig.isSelectBox = true + this.editSelCommonConfig.editVisible = true + } else { + this.$emit("addProductClick") + } + }else{ + this.$message.warning('璇峰厛閫夋嫨浠撳簱') + } + }, + commonInputChange(val, prop, row) { + this.$emit("inputContent", val, prop, row) + }, + // 娓呯┖ + empty() { + this.$emit("emptyProductClick") + }, + // 娓呴櫎宸查�夋嫨鐢ㄦ埛 + clearupClient(scope) { + this.productIndex = scope.$index; + this.tableList.tableData.map((ite, index) => { + if (index === this.productIndex) { + ite.productName = "" + ite.id = "" + ite.name = "" + ite.amount = 1 + ite.number = "" + ite.model = "" + ite.specs = "" + ite.unit = "" + ite.deliveryTime = 0 + ite.shippingDuration = 0 + } + }) + this.$emit("clearupProduct", this.tableList.tableData) + }, + deleteClient(row, scope) { + if (this.tableList.tableData.length == 1) { + this.$message.error("鑷冲皯淇濈暀涓�鏉★紝涓嶈兘鍒櫎浜嗭紒") + return true + } + this.tableList.tableData.splice(scope.$index, 1) + }, + // 琛岀偣鍑� + tableRowClick(row) { + if (this.isReorder) { + this.locacionName = row.location.name + } + this.$emit("tableRowClick", row, row.index) + }, + // 鍗曢�夎鐩稿叧 + tableRowClassName({row, rowIndex}) { + row.index = rowIndex + }, + setFormItem(val) { + console.log(val) + }, + commoInput() { + }, + selClient(item) { + let list = this.tableList.tableData.map((item) => item.id) + if (list.findIndex((v) => v == item.id) == -1) { + this.isRecalculate = true + // this.editConfig.infomation.client_name = row.name + this.tableList.tableData.map((ite, index) => { + if (index === this.productIndex) { + ite.productName = item.name + ite.productId = item.id + ite.name = item.name + ite.amount = 1 + ite.number = item.id + ite.specs = item.specs + ite.model = item.model + // ite.price = item.price + // ite.total = item.amount ? item.amount * item.price : 1 * item.price + ite.unit = item.unit + } + }) + } else { + this.$message.error("涓嶈兘閫夋嫨閲嶅鐨勪骇鍝侊紝 璇烽噸鏂伴�夋嫨") + } + }, + getSelectArray(val) { + this.$emit("getSelectArray", val, this.productIndex) + } } - }) - this.$emit("clearupProduct", this.tableList.tableData) - }, - deleteClient(row, scope) { - if (this.tableList.tableData.length == 1) { - this.$message.error("鑷冲皯淇濈暀涓�鏉★紝涓嶈兘鍒櫎浜嗭紒") - return true - } - this.tableList.tableData.splice(scope.$index, 1) - }, - // 琛岀偣鍑� - tableRowClick(row) { - if (this.isReorder) { - this.locacionName = row.location.name - } - this.$emit("tableRowClick", row, row.index) - }, - // 鍗曢�夎鐩稿叧 - tableRowClassName({ row, rowIndex }) { - row.index = rowIndex - }, - setFormItem(val) { - console.log(val) - }, - commoInput() {}, - selClient(item) { - let list = this.tableList.tableData.map((item) => item.id) - if (list.findIndex((v) => v == item.id) == -1) { - this.isRecalculate = true - // this.editConfig.infomation.client_name = row.name - this.tableList.tableData.map((ite, index) => { - if (index === this.productIndex) { - ite.productName = item.name - ite.productId = item.id - ite.name = item.name - ite.amount = 1 - ite.number = item.id - ite.specs = item.specs - ite.model = item.model - // ite.price = item.price - // ite.total = item.amount ? item.amount * item.price : 1 * item.price - ite.unit = item.unit - } - }) - } else { - this.$message.error("涓嶈兘閫夋嫨閲嶅鐨勪骇鍝侊紝 璇烽噸鏂伴�夋嫨") - } - }, - getSelectArray(val) { - this.$emit("getSelectArray", val, this.productIndex) } - } -} </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.setHeight { - height: 100%; -} -.page-view { - min-width: 100px; - - .el-form-item { - margin-bottom: 0; - .custom-name { - display: flex; - justify-content: center; - font-size: 12px; - line-height: 17px; - font-family: PingFangSC; - .common-select-btn { - margin-left: 5px; - font-size: 13px; + .scan-code { cursor: pointer; - } + margin-left: 10px; + img, span { + position: relative; + } + img { + top: 5px; + } + span: { + top: -10px; + } } - } -} -::v-deep { - .el-autocomplete { - height: 28px; - .el-input { - height: 28px; - .el-input__inner { - height: 28px; - } - } - } - .el-form-item__label { - display: none; - } - .el-form-item__content { - // height: 28px; /* 璁剧疆楂樺害 */ - line-height: 22px; /* 璁剧疆琛岄珮 */ - } - .el-table__footer-wrapper tbody td.el-table__cell { - background-color: #fff; - // text-align: right; - font-weight: bold; - } - .el-table .cell, - .el-table th.el-table__cell > .cell { - padding: 0 5px; - } - // .el-input__inner { - // text-align: left; - // } -} -::v-deep .el-table .cell { - font-size: 12px; - line-height: 17px; - font-family: PingFangSC; - color: rgba(0, 0, 0, 0.9); - .el-button--text { - width: auto; - height: auto; - font-family: PingFangSC-Medium, sans-serif; - } -} -::v-deep .el-table .el-table__cell { - padding: 6px 0 !important; - height: 35px; - text-align: center; -} -::v-deep .el-table__body-wrapper { - height: unset !important; -} + .setHeight { + height: 100%; + } + + .page-view { + min-width: 100px; + + .el-form-item { + margin-bottom: 0; + .custom-name { + display: flex; + justify-content: center; + font-size: 12px; + line-height: 17px; + font-family: PingFangSC; + .common-select-btn { + margin-left: 5px; + font-size: 13px; + cursor: pointer; + } + } + } + } + + ::v-deep { + .el-autocomplete { + height: 28px; + .el-input { + height: 28px; + .el-input__inner { + height: 28px; + } + } + } + .el-form-item__label { + display: none; + } + .el-form-item__content { + // height: 28px; /* 璁剧疆楂樺害 */ + line-height: 22px; /* 璁剧疆琛岄珮 */ + } + .el-table__footer-wrapper tbody td.el-table__cell { + background-color: #fff; + // text-align: right; + font-weight: bold; + } + .el-table .cell, + .el-table th.el-table__cell > .cell { + padding: 0 5px; + } + // .el-input__inner { + // text-align: left; + // } + } + + ::v-deep .el-table .cell { + font-size: 12px; + line-height: 17px; + font-family: PingFangSC; + color: rgba(0, 0, 0, 0.9); + .el-button--text { + width: auto; + height: auto; + font-family: PingFangSC-Medium, sans-serif; + } + } + + ::v-deep .el-table .el-table__cell { + padding: 6px 0 !important; + height: 35px; + text-align: center; + } + + ::v-deep .el-table__body-wrapper { + height: unset !important; + } </style> -- Gitblit v1.8.0