|
@@ -0,0 +1,453 @@
|
|
|
+import { required, mobileRequired, mobile } from '@/components/template/rules_verify.js'
|
|
|
+import ImageUpload from '@/components/file-upload'
|
|
|
+import { listPageV2 } from '@/api/auxiliaryFittings/supplier'
|
|
|
+import { getBrandList } from '@/api/miniapp'
|
|
|
+import { getClassifyList } from '@/api/goods'
|
|
|
+import { goodsMaterialList, goodsMaterialDetail } from '@/api/commercialMaterial.js'
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ gysList: [],
|
|
|
+ brandList: [],
|
|
|
+ ClassifyList: [],
|
|
|
+ isEditIndex: -1
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ formItems() {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ md: 24,
|
|
|
+ isShow: true,
|
|
|
+ name: 'slot-component',
|
|
|
+ formItemAttributes: {
|
|
|
+ label: '',
|
|
|
+ prop: '',
|
|
|
+ 'label-width': '0px'
|
|
|
+ },
|
|
|
+ render: (h, { props, onInput }) => {
|
|
|
+ var { value } = props
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ <el-descriptions
|
|
|
+ border
|
|
|
+ title=""
|
|
|
+ column={4}
|
|
|
+ colon={false}
|
|
|
+ labelStyle={{ width: '8%' }}
|
|
|
+ contentStyle={{ width: '17%' }}
|
|
|
+ >
|
|
|
+ <el-descriptions-item label="单据状态">
|
|
|
+ {{ SAVE: '保存', WAIT: '待审核', OK: '通过', FAIL: '失败' }[this.formData.status] || ''}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="单据编号">{this.formData.id || ''}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="所属商户" contentStyle={{ width: '42%' }}>
|
|
|
+ {JSON.parse(localStorage.getItem('greemall_user')).companyName}
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions
|
|
|
+ border
|
|
|
+ title=""
|
|
|
+ column={2}
|
|
|
+ colon={false}
|
|
|
+ labelStyle={{ width: '8%' }}
|
|
|
+ contentStyle={{ width: '42%' }}
|
|
|
+ style="margin-top:-1px"
|
|
|
+ >
|
|
|
+ <el-descriptions-item label="供应商名称">
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item label="" lebel-width="0px" prop={`venderId`} rules={required}>
|
|
|
+ <el-select
|
|
|
+ style="width:100%"
|
|
|
+ value={this.formData.venderId}
|
|
|
+ onInput={val => {
|
|
|
+ this.formData.venderId = val
|
|
|
+ }}
|
|
|
+ placeholder="请选择"
|
|
|
+ disabled={!!~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)}
|
|
|
+ onChange={val => {
|
|
|
+ if (val) {
|
|
|
+ this.formData['venderName'] = this.gysList.find(item => item.venderId == val).venderName
|
|
|
+ } else {
|
|
|
+ this.formData['venderName'] = ''
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {this.gysList.map(item => (
|
|
|
+ <el-option key={item.venderId} label={item.venderName} value={item.venderId}></el-option>
|
|
|
+ ))}
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </el-descriptions-item>
|
|
|
+ {!!~['merchandisePurchaseReturn'].indexOf(this?.$route?.name) ? (
|
|
|
+ <el-descriptions-item label="采购入库单">
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item label="" lebel-width="0px" prop={`venderId`} rules={required}>
|
|
|
+ <el-select
|
|
|
+ style="width:100%"
|
|
|
+ value={this.formData.goodsPurchaseId}
|
|
|
+ onInput={val => {
|
|
|
+ this.formData.goodsPurchaseId = val
|
|
|
+ }}
|
|
|
+ placeholder="请选择"
|
|
|
+ disabled={!!~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)}
|
|
|
+ >
|
|
|
+ {[].map(item => (
|
|
|
+ <el-option key={item.id} label={item.label} value={item.id}></el-option>
|
|
|
+ ))}
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </el-descriptions-item>
|
|
|
+ ) : (
|
|
|
+ <el-descriptions-item label=""></el-descriptions-item>
|
|
|
+ )}
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions
|
|
|
+ border
|
|
|
+ title=""
|
|
|
+ column={4}
|
|
|
+ colon={false}
|
|
|
+ labelStyle={{ width: '8%' }}
|
|
|
+ contentStyle={{ width: '17%' }}
|
|
|
+ style="margin-top:-1px"
|
|
|
+ >
|
|
|
+ {!!~['merchandisePurchaseReturn'].indexOf(this?.$route?.name)
|
|
|
+ ? [
|
|
|
+ <el-descriptions-item label="退货数量">{this.formData.totalQty}</el-descriptions-item>,
|
|
|
+ <el-descriptions-item label="退款金额">{this.formData.totalAmount}</el-descriptions-item>,
|
|
|
+ <el-descriptions-item label=""></el-descriptions-item>,
|
|
|
+ <el-descriptions-item label=""></el-descriptions-item>
|
|
|
+ ]
|
|
|
+ : null}
|
|
|
+ <el-descriptions-item label="制单人">{this.formData.createBy}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="制单时间">{this.formData.createTime}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="审核人">{this.formData.examineBy}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="审核时间">{this.formData.examineTime}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions
|
|
|
+ border
|
|
|
+ title=""
|
|
|
+ column={4}
|
|
|
+ colon={false}
|
|
|
+ labelStyle={{ width: '8%' }}
|
|
|
+ contentStyle={{ width: '17%' }}
|
|
|
+ style="margin-top:-1px"
|
|
|
+ >
|
|
|
+ <el-descriptions-item label="备注" contentStyle={{ width: '92%' }}>
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ placeholder="请输入内容"
|
|
|
+ value={this.formData.remark}
|
|
|
+ onInput={val => {
|
|
|
+ this.formData.remark = val
|
|
|
+ }}
|
|
|
+ maxlength="200"
|
|
|
+ show-word-limit
|
|
|
+ autosize={{ minRows: 2, maxRows: 4 }}
|
|
|
+ disabled={!!~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)}
|
|
|
+ ></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions
|
|
|
+ border
|
|
|
+ title=""
|
|
|
+ column={4}
|
|
|
+ colon={false}
|
|
|
+ labelStyle={{ width: '8%' }}
|
|
|
+ contentStyle={{ width: '17%' }}
|
|
|
+ style="margin-top:-1px"
|
|
|
+ >
|
|
|
+ <el-descriptions-item label="附件" contentStyle={{ width: '92%' }}>
|
|
|
+ <ImageUpload
|
|
|
+ fileList={this.formData.fileUrl}
|
|
|
+ uid="imgSrc666_materials_drawing_images"
|
|
|
+ limit={1}
|
|
|
+ isEdit={!~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)}
|
|
|
+ fileType={['image']}
|
|
|
+ />
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ commonColumns() {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '品牌',
|
|
|
+ prop: 'brandId',
|
|
|
+ propName: 'brandName',
|
|
|
+ width: 160
|
|
|
+ },
|
|
|
+ render: (h, { row, column, index }) => {
|
|
|
+ return this.isEditIndex == index ? (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ lebel-width="0px"
|
|
|
+ prop={`items.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={required}
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ onChange={val => {
|
|
|
+ this.shanchujichu(row, 0)
|
|
|
+ if (val) {
|
|
|
+ row[column.columnAttributes.propName] = this.brandList.find(item => item.id == val).brandName
|
|
|
+ } else {
|
|
|
+ row[column.columnAttributes.propName] = ''
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ {this.brandList.map((item, index_) => (
|
|
|
+ <el-option key={index_} label={item.brandName} value={item.id}></el-option>
|
|
|
+ ))}
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div style="padding:0 6px">{row[column.columnAttributes.propName]}</div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '商品大类',
|
|
|
+ prop: 'mainId',
|
|
|
+ propName: 'mainName',
|
|
|
+ width: 160
|
|
|
+ },
|
|
|
+ render: (h, { row, column, index }) => {
|
|
|
+ return this.isEditIndex == index ? (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ lebel-width="0px"
|
|
|
+ prop={`items.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={required}
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ onChange={val => {
|
|
|
+ this.shanchujichu(row, 1)
|
|
|
+ if (val) {
|
|
|
+ row[column.columnAttributes.propName] = this.ClassifyList.find(
|
|
|
+ item => item.categoryId == val
|
|
|
+ ).name
|
|
|
+ } else {
|
|
|
+ row[column.columnAttributes.propName] = ''
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ {this.ClassifyList.map((item, index_) => (
|
|
|
+ <el-option key={index_} label={item.name} value={item.categoryId}></el-option>
|
|
|
+ ))}
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div style="padding:0 6px">{row[column.columnAttributes.propName]}</div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '商品小类',
|
|
|
+ prop: 'smallId',
|
|
|
+ propName: 'smallName',
|
|
|
+ width: 160
|
|
|
+ },
|
|
|
+ render: (h, { row, column, index }) => {
|
|
|
+ return this.isEditIndex == index ? (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ lebel-width="0px"
|
|
|
+ prop={`items.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={required}
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ onChange={val => {
|
|
|
+ this.shanchujichu(row, 2)
|
|
|
+ if (val) {
|
|
|
+ row[column.columnAttributes.propName] = (
|
|
|
+ this.ClassifyList.find(item => item.categoryId == row.mainId)?.children || []
|
|
|
+ ).find(item => item.categoryId == val).name
|
|
|
+ } else {
|
|
|
+ row[column.columnAttributes.propName] = ''
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ {(this.ClassifyList.find(item => item.categoryId == row.mainId)?.children || []).map(
|
|
|
+ (item, index_) => (
|
|
|
+ <el-option key={index_} label={item.name} value={item.categoryId}></el-option>
|
|
|
+ )
|
|
|
+ )}
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div style="padding:0 6px">{row[column.columnAttributes.propName]}</div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '商品名称',
|
|
|
+ prop: 'goodsMaterialId',
|
|
|
+ propName: 'goodsMaterialName',
|
|
|
+ width: 160
|
|
|
+ },
|
|
|
+ render: (h, { row, column, index }) => {
|
|
|
+ return this.isEditIndex == index ? (
|
|
|
+ <div class="redbordererr">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ lebel-width="0px"
|
|
|
+ prop={`items.${index}.${column.columnAttributes.prop}`}
|
|
|
+ rules={required}
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ value={row[column.columnAttributes.prop]}
|
|
|
+ onInput={val => {
|
|
|
+ row[column.columnAttributes.prop] = val
|
|
|
+ }}
|
|
|
+ onChange={val => {
|
|
|
+ this.shanchujichu(row, 3)
|
|
|
+ if (val) {
|
|
|
+ var data = this.goodsMaterialList
|
|
|
+ .filter(
|
|
|
+ item =>
|
|
|
+ item.brandId === row.brandId && item.mainId === row.mainId && item.smallId === row.smallId
|
|
|
+ )
|
|
|
+ .find(item => item.id == val)
|
|
|
+ row[column.columnAttributes.propName] = data?.goodsName
|
|
|
+ this.getGoodsDetl(data, res => {
|
|
|
+ if (this.formDialogType == 0) {
|
|
|
+ row['specsName'] = res?.specsName
|
|
|
+ row['unit'] = res?.unit
|
|
|
+ row['insideQty'] = res?.insideQty
|
|
|
+ row['outQty'] = res?.outQty
|
|
|
+ row['partsQty'] = res?.partsQty
|
|
|
+ row['stockQty'] = res?.stockQty
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ row[column.columnAttributes.propName] = ''
|
|
|
+ row['specsName'] = ''
|
|
|
+ row['unit'] = ''
|
|
|
+ row['insideQty'] = ''
|
|
|
+ row['outQty'] = ''
|
|
|
+ row['partsQty'] = ''
|
|
|
+ row['stockQty'] = ''
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ {this.goodsMaterialList
|
|
|
+ .filter(
|
|
|
+ item =>
|
|
|
+ item.brandId === row.brandId && item.mainId === row.mainId && item.smallId === row.smallId
|
|
|
+ )
|
|
|
+ .map((item, index_) => (
|
|
|
+ <el-option key={index_} label={item.goodsName} value={item.id}></el-option>
|
|
|
+ ))}
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div style="padding:0 6px">{row[column.columnAttributes.propName]}</div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnAttributes: {
|
|
|
+ label: '规格型号',
|
|
|
+ prop: 'specsName'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 获取供应商列表
|
|
|
+ getGysList() {
|
|
|
+ listPageV2({
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: -1,
|
|
|
+ params: [
|
|
|
+ { param: 'a.status', compare: '=', value: 'ON' },
|
|
|
+ { param: 'a.vender_type', compare: 'like', value: '商品' }
|
|
|
+ ]
|
|
|
+ }).then(res => {
|
|
|
+ this.gysList = res.data.records
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getBaseList() {
|
|
|
+ getBrandList({
|
|
|
+ status: true
|
|
|
+ }).then(res => {
|
|
|
+ this.brandList = res.data
|
|
|
+ })
|
|
|
+ getClassifyList({
|
|
|
+ type: 2,
|
|
|
+ status: true
|
|
|
+ }).then(res => {
|
|
|
+ this.ClassifyList = res.data
|
|
|
+ })
|
|
|
+ goodsMaterialList({
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: -1,
|
|
|
+ params: []
|
|
|
+ }).then(res => {
|
|
|
+ this.goodsMaterialList = res.data.records.map(item => ({ ...item, details: {} }))
|
|
|
+ })
|
|
|
+ },
|
|
|
+ shanchujichu(row, num) {
|
|
|
+ if (num <= 0) {
|
|
|
+ }
|
|
|
+ if (num <= 1) {
|
|
|
+ row.smallId = ''
|
|
|
+ row.smallName = ''
|
|
|
+ }
|
|
|
+ if (num <= 2) {
|
|
|
+ row.goodsMaterialId = ''
|
|
|
+ row.goodsMaterialName = ''
|
|
|
+ row.specsName = ''
|
|
|
+ row.unit = ''
|
|
|
+ row.insideQty = ''
|
|
|
+ row.outQty = ''
|
|
|
+ row.partsQty = ''
|
|
|
+ row.stockQty = ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getGoodsDetl(row, cb) {
|
|
|
+ if (!row.details.id) {
|
|
|
+ goodsMaterialDetail({ id: row.id }).then(res => {
|
|
|
+ Object.assign(row.details, res.data || {})
|
|
|
+ cb(row.details)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ cb(row.details)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|