| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- <template>
- <div>
- <ele-modal
- :title="`处理工单`"
- append-to-body
- :visible.sync="visibleDialog"
- destroy-on-close
- @close="closeWindows"
- width="80vw"
- :maxable="true"
- :resizable="true"
- >
- <div class="flex_info">
- <div class="flex_right">
- <div class="search_box">
- <el-input
- placeholder="请输入关键词"
- v-model="keyWord"
- class="input-with-select"
- >
- <el-button slot="append" icon="el-icon-search" @click="search">搜索</el-button>
- </el-input>
- <el-button type="primary" @click="control">处理</el-button>
- </div>
- <el-table
- ref="multipleTable"
- :data="tableData"
- border
- height="500px"
- tooltip-effect="dark"
- @selection-change="handleSelectionChange"
- >
- <el-table-column
- type="selection"
- :selectable="checkSelectable"
- width="55"
- align="center"
- >
- </el-table-column>
- <el-table-column label="序号" type="index" width="50">
- </el-table-column>
- <el-table-column
- label="物品名称"
- prop="categoryName"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="物品编码"
- prop="info.categoryCode"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <!-- <el-table-column
- width="150"
- prop="categoryLevelPath"
- label="产品分类"
- :show-overflow-tooltip="true"
- ></el-table-column> -->
- <el-table-column
- label="批次号"
- prop="batchNo"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <!-- <el-table-column
- label="包装编码"
- prop="packageNo"
- :show-overflow-tooltip="true"
- ></el-table-column> -->
- <!-- <el-table-column
- label="包装数量"
- prop="info.packingCountBase"
- :show-overflow-tooltip="true"
- ></el-table-column> -->
- <!-- <el-table-column
- label="包装单位"
- prop="info.packingUnit"
- :show-overflow-tooltip="true"
- ></el-table-column> -->
- <!-- <el-table-column
- label="牌号"
- prop="brandNum"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="型号"
- prop="categoryModel"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="型号"
- prop="categoryModel"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="规格"
- prop="specification"
- :show-overflow-tooltip="true"
- ></el-table-column> -->
- <el-table-column
- label="计量数量"
- prop="info.measureQuantity"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="计量单位"
- prop="info.measureUnit"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="重量"
- prop="info.weight"
- :show-overflow-tooltip="true"
- >
- </el-table-column>
- <el-table-column
- label="重量单位"
- prop="info.weightUnit"
- :show-overflow-tooltip="true"
- >
- </el-table-column>
- <el-table-column
- label="仓库"
- prop="info.warehouseName"
- :show-overflow-tooltip="true"
- ></el-table-column>
- </el-table>
- <el-pagination
- background
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
- :page-sizes="[10, 20, 50, 100]"
- :page-size.sync="pages.size"
- :current-page.sync="pages.pageNum"
- @current-change="_getInformation"
- @size-change="_getInformation"
- >
- </el-pagination>
- </div>
- <div class="flex_right" style="margin-left: 10px">
- <el-table
- ref="table"
- :data="controlTableData"
- border
- height="600px"
- tooltip-effect="dark"
- >
- <el-table-column
- label="盘点状态"
- width="100"
- prop="controlStatus"
- :show-overflow-tooltip="true"
- >
- <template slot-scope="{ row }">
- <el-select v-model="row.controlStatus" placeholder="请选择">
- <el-option
- v-for="item in statusOption"
- :label="item.label"
- :value="item.value"
- :key="item.value"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column
- label="数量"
- prop="count"
- :show-overflow-tooltip="true"
- >
- <template slot-scope="{ row }">
- <el-input
- v-model="row.count"
- placeholder="请输入内容"
- ></el-input> </template
- ></el-table-column>
- <el-table-column label="序号" type="index" width="50">
- </el-table-column>
- <el-table-column
- label="物品名称"
- prop="categoryName"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="物品编码"
- prop="info.categoryCode"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="批次号"
- prop="batchNo"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <!-- <el-table-column
- label="包装编码"
- prop="packageNo"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="包装数量"
- prop="info.packingCountBase"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="包装单位"
- prop="info.packingUnit"
- :show-overflow-tooltip="true"
- ></el-table-column> -->
- <el-table-column
- label="计量数量"
- prop="info.measureQuantity"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="计量单位"
- prop="info.measureUnit"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="重量"
- prop="info.weight"
- :show-overflow-tooltip="true"
- >
- </el-table-column>
- <el-table-column
- label="重量单位"
- prop="info.weightUnit"
- :show-overflow-tooltip="true"
- >
- </el-table-column>
- <el-table-column
- label="仓库"
- prop="info.warehouseName"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column label="操作" width="100" fixed="right">
- <template slot-scope="{ row, $index }">
- <el-button
- @click="deleted(row, $index)"
- type="text"
- size="small"
- >删除</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- <div class="select-btn">
- <el-button type="primary" @click="onConfirm">确定</el-button>
- <el-button @click="closeWindows">关闭</el-button>
- </div>
- </ele-modal>
- </div>
- </template>
- <script>
- import { getPlanDetailList } from '@/api/inventory';
- import deptSelect from '@/components/CommomSelect/new-dept-select.vue';
- import { getUserPage } from '@/api/system/organization';
- import { reportWork } from '@/api/inventory';
- import { fieldModel } from '@/api/codeManagement';
- export default {
- watch: {
- tableData() {
- this.doLayout();
- },
- visibleDialog(val) {
- if (val) {
- this._getInformation();
- }
- }
- },
- components: { deptSelect },
- data() {
- return {
- statusOption: [
- {
- label: '盘盈',
- value: '2'
- },
- {
- label: '丢失',
- value: '3'
- },
- {
- label: '破损',
- value: '4'
- }
- ],
- visibleDialog: false,
- planOrderId: '',
- keyWord: '',
- formData: {},
- tableData: [],
- controlTableData: [],
- executorList: [],
- factoryList: [],
- factoryId: '',
- value: '',
- treeType: '',
- treeList: [],
- selection: [],
- selectionIds: [],
- pages: {
- pageNum: 1,
- size: 10,
- keyWord: ''
- },
- total: 0,
- curType: '',
- classificationId: '',
- memoSelection: [],
- newColumns: [] // 动态表头
- };
- },
- created() {
- this.getFieldModel();
- },
- methods: {
- // 搜索
- search() {
- this.pages.keyWord = this.keyWord;
- this.pages.pageNum = 1;
- this._getInformation();
- },
- control() {
- if (this.selection.length > 0) {
- console.log(this.selection);
- console.log(this.selectionIds);
- let boolen = this.selection.every((item) =>
- this.selectionIds.includes(item.id)
- );
- if (this.selection.length > 0 && !boolen) {
- this.selection = this.selection.filter(
- (item) => !this.selectionIds.includes(item.id)
- );
- this.selectionIds = this.selectionIds.concat(
- this.selection.map((item) => item.id)
- );
- console.log('this.selection---------', this.selection);
- console.log('this.selectionIds---', this.selectionIds);
- this.controlTableData = this.controlTableData.concat(
- this.selection.map((item) => {
- return {
- ...item
- };
- })
- );
- console.log('this.tableData---------', this.controlTableData);
- } else {
- this.$message.error('请选择正确的行');
- }
- } else {
- this.$message.error('请选择调出物品信息');
- }
- },
- checkSelectable(row) {
- return !this.selectionIds.includes(row.id);
- },
- executorChange(val) {
- this.formData.executorName = this.executorList.filter(
- (item) => item.id == val
- )[0].name;
- },
- //选择部门(搜索)
- searchDeptNodeClick(info, row) {
- this.formData.executorId = '';
- if (info) {
- const params = { groupId: info };
- this.getUserList(params);
- this.formData.executeGroupName = row.name;
- } else {
- this.formData.executeGroupId = null;
- }
- },
- // 获取审核人列表、巡点检人员
- async getUserList(params) {
- try {
- let data = { pageNum: 1, size: -1 };
- if (params) {
- data = Object.assign(data, params);
- }
- const res = await getUserPage(data);
- this.executorList = res.list;
- } catch (error) {}
- },
- doLayout() {
- let that = this;
- this.$nextTick(() => {
- that.$refs.multipleTable.doLayout();
- });
- },
- // 获取动态表头
- getFieldModel() {
- fieldModel({ fieldModel: 't_main_category' }).then((res) => {
- let newRes = res.map((m) => {
- return {
- prop: 'extField.' + m.prop,
- label: m.label,
- align: 'center',
- showOverflowTooltip: true
- };
- });
- this.newColumns = [...newRes];
- });
- },
- deleted(row, index) {
- this.controlTableData.splice(index, 1);
- this.selectionIds = this.selectionIds.filter((item) => item !== row.id);
- },
- onConfirm() {
- let arr = []
- if (this.controlTableData.length > 0) {
- let isBoolen = this.controlTableData.every(
- (item) => item.controlStatus > 0 && item.count > 0
- );
- if (!isBoolen) {
- return this.$message.error('请选择盘点状态和数量!');
- }
- arr = this.controlTableData.map((item) => {
- let key = null;
- switch (item.controlStatus) {
- case '2':
- key = 'surplusQuantity';
- break;
- case '3':
- key = 'loseQuantity';
- break;
- case '4':
- key = 'wornQuantity';
- break;
- }
- return {
- id: item.id,
- status: item.controlStatus,
- planOrderId: this.planOrderId,
- [key]: item.count
- };
- });
- } else {
- arr = []
- }
- console.log(arr);
- reportWork(arr, { planOrderId: this.planOrderId }).then(() => {
- this.$message.success('报工成功!');
- this.$emit('flushed');
- this.closeWindows();
- });
- // } else {
- // this.$message.error('请选择物品!');
- // }
- },
- open(id) {
- this.planOrderId = id;
- this.visibleDialog = true;
- },
- handleSelectionChange(val) {
- this.selection = val;
- },
- closeWindows() {
- this.keyWord = '';
- this.pages.keyWord = '';
- this.selection = [];
- this.controlTableData = [];
- this.visibleDialog = false;
- },
- async _getInformation() {
- getPlanDetailList({
- ...this.pages,
- planOrderId: this.planOrderId
- }).then((data) => {
- this.tableData = data.list;
- this.total = data.count;
- });
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- :deep(.el-checkbox__input.is-disabled .el-checkbox__inner) {
- background-color: #eee !important;
- }
- .flex_info {
- display: flex;
- margin-top: 20px;
- margin-bottom: 20px;
- .flex_right {
- flex: 1;
- overflow: hidden;
- .search_box {
- display: flex;
- margin-bottom: 10px;
- > div {
- flex: 1;
- }
- > button {
- margin-left: 10px;
- }
- }
- }
- }
- .search_box {
- overflow: hidden;
- }
- .select-btn {
- text-align: right;
- }
- .right {
- text-align: right;
- }
- .mt10 {
- margin-top: 10px;
- }
- </style>
|