|  |  | 
 |  |  | <template> | 
 |  |  |   <GlobalWindow title="新建出库单" :visible.sync="isShowModal" :confirm-working="isLoading" width="900px" @close="close" | 
 |  |  |   <GlobalWindow title="新建入库单" :visible.sync="isShowModal" :confirm-working="isLoading" width="1000px" @close="close" | 
 |  |  |     @confirm="confirm"> | 
 |  |  |     <el-form :model="param" ref="form" :rules="rules"> | 
 |  |  |       <div class="df_ac"> | 
 |  |  |         <el-form-item class="w3" label="出库仓库" prop="parentId"> | 
 |  |  |           <el-select :disabled="param.id" v-model="param.parentId" placeholder="不填为则一级分类"> | 
 |  |  |             <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option> | 
 |  |  |         <el-form-item class="w3" label="入库仓库" prop="warehouseId"> | 
 |  |  |           <el-select :disabled="param.id" v-model="param.warehouseId" placeholder="请选择"> | 
 |  |  |             <el-option v-for="op in storeList" :key="op.id" :label="op.name" :value="op.id"></el-option> | 
 |  |  |           </el-select> | 
 |  |  |         </el-form-item> | 
 |  |  |         <el-form-item class="w3" label="出库日期"> | 
 |  |  |           <el-date-picker type="date" v-model="param.getDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd" | 
 |  |  |             placeholder="请选择出库日期"></el-date-picker> | 
 |  |  |         <el-form-item class="w3" label="入库日期" prop="doneDate"> | 
 |  |  |           <el-date-picker type="date" v-model="param.doneDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd" | 
 |  |  |             placeholder="请选择入库日期"></el-date-picker> | 
 |  |  |         </el-form-item> | 
 |  |  |         <el-form-item class="w3" label="出库类型" prop="parentId"> | 
 |  |  |           <el-select :disabled="param.id" v-model="param.parentId" placeholder="不填为则一级分类"> | 
 |  |  |             <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option> | 
 |  |  |         <el-form-item class="w3" label="入库类型" prop="type"> | 
 |  |  |           <el-select :disabled="param.id" v-model="param.type" placeholder="请选择入库类型"> | 
 |  |  |             <el-option v-for="op in StoreTypeOps" :key="op.id" :label="op.name" :value="op.id"></el-option> | 
 |  |  |           </el-select> | 
 |  |  |         </el-form-item> | 
 |  |  |         <el-form-item class="w3" label="处理人" prop="name"> | 
 |  |  |           <el-input v-model="param.name" v-trim /> | 
 |  |  |           <el-input v-model="param.createUserName" :disabled="true" v-trim /> | 
 |  |  |         </el-form-item> | 
 |  |  |         <el-form-item class="w6" label="备注" prop="name"> | 
 |  |  |           <el-input v-model="param.name" placeholder="请输入" v-trim /> | 
 |  |  |         <el-form-item class="w6" label="备注" prop="remark"> | 
 |  |  |           <el-input v-model="param.remark" placeholder="请输入" v-trim /> | 
 |  |  |         </el-form-item> | 
 |  |  |       </div> | 
 |  |  |     </el-form> | 
 |  |  | 
 |  |  |     <el-button type="primary" @click="handleOpenMaterial">选择物料</el-button> | 
 |  |  |     <el-table :data="list" stripe> | 
 |  |  |       <el-table-column align="center" label="序号" type="index" width="50" /> | 
 |  |  |       <el-table-column prop="creatorName" label="物料名称" show-overflow-tooltip min-width="80px"></el-table-column> | 
 |  |  |       <el-table-column prop="categoryName" label="物料编码" show-overflow-tooltip min-width="90px"></el-table-column> | 
 |  |  |       <el-table-column prop="createDate" label="条形码" show-overflow-tooltip min-width="70px"></el-table-column> | 
 |  |  |       <el-table-column prop="dealUserName" label="品牌" show-overflow-tooltip min-width="70px"></el-table-column> | 
 |  |  |       <el-table-column prop="dealUserName" label="单位" show-overflow-tooltip min-width="70px"></el-table-column> | 
 |  |  |       <el-table-column prop="dealUserName" label="出库数量" min-width="90px"> | 
 |  |  |         <template v-slot="{row}"> | 
 |  |  |           <el-input oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 11)" v-model="row.aa" class="w100"></el-input> | 
 |  |  |       <el-table-column prop="name" label="物料名称" show-overflow-tooltip min-width="80px"></el-table-column> | 
 |  |  |       <el-table-column prop="code" label="物料编码" show-overflow-tooltip min-width="90px"></el-table-column> | 
 |  |  |       <el-table-column prop="qrcode" label="条形码" show-overflow-tooltip min-width="70px"></el-table-column> | 
 |  |  |       <el-table-column prop="brand" label="品牌" show-overflow-tooltip min-width="70px"></el-table-column> | 
 |  |  |       <el-table-column prop="unitName" label="单位" show-overflow-tooltip min-width="70px"></el-table-column> | 
 |  |  |       <el-table-column prop="dealUserName" label="入库数量" min-width="100px"> | 
 |  |  |         <template v-slot="{ row }"> | 
 |  |  |           <el-input oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" v-model="row.stock" | 
 |  |  |             class="w100"></el-input> | 
 |  |  |         </template> | 
 |  |  |       </el-table-column> | 
 |  |  |       <el-table-column prop="dealUserName" label="库存数量" show-overflow-tooltip min-width="80px"></el-table-column> | 
 |  |  |       <el-table-column prop="dealUserName" label="操作" min-width="60px"> | 
 |  |  |       <!-- <el-table-column prop="maxStock" label="库存数量" show-overflow-tooltip min-width="80px"></el-table-column> --> | 
 |  |  |       <el-table-column label="操作" min-width="60px"> | 
 |  |  |         <template v-slot="scope"> | 
 |  |  |           <span @click="handleDel(scope)" class="red pointer">删除</span> | 
 |  |  |         </template> | 
 |  |  | 
 |  |  | <script> | 
 |  |  | import GlobalWindow from '@/components/common/GlobalWindow' | 
 |  |  | import AssetSel from './AssetSel' | 
 |  |  | import { create, fetchCateList, getInfoById } from '@/api/business/category.js' | 
 |  |  | import { fetchList as getStoreList } from '@/api/ywWarehouse' | 
 |  |  | import { ywOutinboundCreate } from '@/api/store/index' | 
 |  |  | import { StoreTypeOps, rules } from './config' | 
 |  |  | import { Message } from 'element-ui' | 
 |  |  | import dayjs from 'dayjs' | 
 |  |  | export default { | 
 |  |  |   name: 'OperaCategoryWindow', | 
 |  |  |   components: { GlobalWindow, AssetSel }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       // 表单数据 | 
 |  |  |       param: {}, | 
 |  |  |       param: { | 
 |  |  |         createUserName: this.$store.state.userInfo.realname || this.$store.state.userInfo.username, | 
 |  |  |         creator: this.$store.state.userInfo.id, | 
 |  |  |         inOut: 0 | 
 |  |  |       }, | 
 |  |  |       activeName: 'first', | 
 |  |  |       isShowModal: false, | 
 |  |  |       isShowSel: false, | 
 |  |  |       isLoading: false, | 
 |  |  |       // 验证规则 | 
 |  |  |       rules: { | 
 |  |  |         name: [{ required: true, message: '请输入二级分类名称', trigger: 'blur' }], | 
 |  |  |       }, | 
 |  |  |       list: [{}], | 
 |  |  |       rules, | 
 |  |  |       storeList: [], | 
 |  |  |       list: [], | 
 |  |  |       StoreTypeOps: StoreTypeOps.filter(i => i.type == 0), | 
 |  |  |  | 
 |  |  |       dataList: [], | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   created() { | 
 |  |  |     this.initData() | 
 |  |  |     console.log(this.$store.state.userInfo) | 
 |  |  |  | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     confirm() { | 
 |  |  |  | 
 |  |  |     }, | 
 |  |  |     getList() { | 
 |  |  |       fetchCateList({ type: 5 }).then(res => { | 
 |  |  |         this.dataList = res || [] | 
 |  |  |  | 
 |  |  |       this.$refs['form'].validate((valid) => { | 
 |  |  |         if (valid) { | 
 |  |  |           const { param, list } = this | 
 |  |  |           if(list.length == 0) return Message.warning('请先选择物料信息') | 
 |  |  |           let count = 0 // 入库数量必填 | 
 |  |  |           list.forEach(item => { | 
 |  |  |             if(!item.stock) count ++ | 
 |  |  |           }) | 
 |  |  |           if(count > 0) return Message.warning('请输入正确的入库数量') | 
 |  |  |           this.isLoading = true | 
 |  |  |           ywOutinboundCreate({ | 
 |  |  |             ...param, | 
 |  |  |             recordList: list | 
 |  |  |           }).then(res => { | 
 |  |  |             this.isLoading = false | 
 |  |  |             Message.success('提交成功') | 
 |  |  |             this.$emit('success') | 
 |  |  |             this.close() | 
 |  |  |           }, () => { | 
 |  |  |             this.isLoading = false | 
 |  |  |           }) | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     changeSel() { | 
 |  |  |  | 
 |  |  |     initData() { | 
 |  |  |       this.$set(this.param, 'doneDate', dayjs().format('YYYY-MM-DD')) | 
 |  |  |       getStoreList({ capacity: 9999, page: 1, model: {status: 0} }).then(res => { | 
 |  |  |         this.storeList = res.records || [] | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     changeSel(val) { | 
 |  |  |       const list = val | 
 |  |  |       list.forEach(item => { | 
 |  |  |         const index = this.list.findIndex(i => i.id == item.id) | 
 |  |  |         if(index == -1){ | 
 |  |  |           item.materialId = item.id | 
 |  |  |           item.multifile = null | 
 |  |  |           item.createDate = null | 
 |  |  |           this.list.push(item) | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     handleDel(val) { | 
 |  |  |       const index = val.$index | 
 |  |  |       this.list.splice(index, 1) | 
 |  |  |        | 
 |  |  |  | 
 |  |  |     }, | 
 |  |  |     handleOpenMaterial() { | 
 |  |  |       this.isShowSel = true | 
 |  |  |       this.$nextTick(() => { | 
 |  |  |         this.$refs.AssetSelRef.isShowModal = true | 
 |  |  |         this.$refs.AssetSelRef.getList() | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     close() { |