From e3ac63c2b87ed1cc9409412fba7b8b38b4867a17 Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期一, 19 一月 2026 13:11:15 +0800
Subject: [PATCH] 1.递交
---
src/views/qualityManager/qualityPlaning.vue | 430 +++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 397 insertions(+), 33 deletions(-)
diff --git a/src/views/qualityManager/qualityPlaning.vue b/src/views/qualityManager/qualityPlaning.vue
index 4cc3f53..6185285 100644
--- a/src/views/qualityManager/qualityPlaning.vue
+++ b/src/views/qualityManager/qualityPlaning.vue
@@ -268,7 +268,7 @@
:visible.sync="dialogVisible"
width="1260px"
:close-on-click-modal="false"
- top="5vh"
+ top="2vh"
@closed="handleClose"
@close="handleClose"
>
@@ -334,30 +334,48 @@
prop="suitpart"
:label="dialogForm.suitobject==='P'?'閫傜敤鐗╂枡':'閫傜敤鐗╂枡绫诲埆'"
>
- <el-select
- v-model="dialogForm.suitpart"
- style="width: 200px"
- multiple
- filterable
- collapse-tags
- placeholder="璇烽�夋嫨"
- :popper-append-to-body="false"
- >
- <el-option
- v-for="item in PartSelectArr"
- v-if="dialogForm.suitobject==='P'"
- :key="item.partcode"
- :label="item.partcode +' / '+ item.partname"
- :value="item.partcode"
- />
- <el-option
- v-for="item in StockTypeSelectArr"
- v-if="dialogForm.suitobject==='PY'"
- :key="item.code"
- :label="item.code+' / '+item.name"
- :value="item.code"
- />
- </el-select>
+ <el-button
+ v-if="dialogForm.suitobject==='P'"
+ v-waves
+ type="primary"
+ icon="el-icon-circle-plus-outline"
+ @click="selectSuitpart"
+ >閫夋嫨鐗╂枡</el-button>
+ <el-button
+ v-if="dialogForm.suitobject==='PY'"
+ v-waves
+ type="primary"
+ icon="el-icon-circle-plus-outline"
+ @click="selectSuitpart"
+ >閫夋嫨鐗╂枡绫诲埆</el-button>
+ <div>
+ 宸查�夋嫨{{ dialogForm.suitpart.length }}涓獅{ dialogForm.suitobject==='P'?'鐗╂枡':'鐗╂枡绫诲埆' }}
+ </div>
+
+ <!-- <el-select-->
+ <!-- v-model="dialogForm.suitpart"-->
+ <!-- style="width: 200px"-->
+ <!-- multiple-->
+ <!-- filterable-->
+ <!-- collapse-tags-->
+ <!-- placeholder="璇烽�夋嫨"-->
+ <!-- :popper-append-to-body="false"-->
+ <!-- >-->
+ <!-- <el-option-->
+ <!-- v-for="item in PartSelectArr"-->
+ <!-- v-if="dialogForm.suitobject==='P'"-->
+ <!-- :key="item.partcode"-->
+ <!-- :label="item.partcode +' / '+ item.partname"-->
+ <!-- :value="item.partcode"-->
+ <!-- />-->
+ <!-- <el-option-->
+ <!-- v-for="item in StockTypeSelectArr"-->
+ <!-- v-if="dialogForm.suitobject==='PY'"-->
+ <!-- :key="item.code"-->
+ <!-- :label="item.code+' / '+item.name"-->
+ <!-- :value="item.code"-->
+ <!-- />-->
+ <!-- </el-select>-->
</el-form-item>
<br>
<el-form-item
@@ -697,6 +715,194 @@
</span>
</el-dialog>
+ <el-dialog
+ v-el-drag-dialog
+ :title="dialogForm.suitobject==='P'?'閫夋嫨鐗╂枡':'閫夋嫨鐗╂枡绫诲埆'"
+ :visible.sync="dialogVisibleSuitobject"
+ width="1460px"
+ :close-on-click-modal="false"
+ top="5vh"
+ @closed="handleCloseSuitobject"
+ @close="handleCloseSuitobject"
+ >
+
+ <div v-if="dialogForm.suitobject==='P'" style="display: flex">
+
+ <div style="width: 300px;margin-right: 20px;background:#fff">
+
+ <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;">
+ <div style="display: flex;">
+ <div
+ style="width: 5px;height: 100%;border-radius: 5px;"
+ :style="{background:$store.state.settings.theme}"
+ />
+ <div style="margin-left: 8px;">瀛樿揣妗f</div>
+ </div>
+ </div>
+
+ <el-tree
+ ref="treeLeftRef"
+ style="padding: 10px;overflow: auto;height: 600px;"
+ :data="treeLeft"
+ node-key="code"
+ highlight-current
+ :props="defaultPropsLeft"
+ :default-expand-all="true"
+ :expand-on-click-node="false"
+ @node-click="getTMaterielData"
+ />
+ </div>
+ <div
+ style=" width:calc(100% - 300px);"
+ >
+ <div class="bodyTopFormGroup">
+ <el-form
+ ref="suitobjectForm"
+ :model="suitobjectForm"
+ label-width="80px"
+ inline
+ style="display: flex;"
+ >
+ <div class="elForm">
+ <el-form-item label="瀛樿揣缂栫爜" style=" display: flex;">
+ <el-input
+ v-model="suitobjectForm.partcode"
+ placeholder="璇疯緭鍏�"
+ :style="{minWidth:'100px',width:150+'px'}"
+ />
+ </el-form-item>
+ <el-form-item label="瀛樿揣鍚嶇О" style=" display: flex;">
+ <el-input
+ v-model="suitobjectForm.partname"
+ placeholder="璇疯緭鍏�"
+ :style="{minWidth:'100px',width:150+'px'}"
+ />
+ </el-form-item>
+ <el-form-item label="瀛樿揣瑙勬牸" style=" display: flex;">
+ <el-input
+ v-model="suitobjectForm.partspec"
+ placeholder="璇疯緭鍏�"
+ :style="{minWidth:'100px',width:150+'px'}"
+ />
+ </el-form-item>
+
+ </div>
+ <div class="bodySearchReset">
+ <el-button
+ v-waves
+ type="primary"
+ icon="el-icon-search"
+ @click="getTMaterielData($refs.treeLeftRef.getCurrentNode())"
+ >鏌ヨ
+ </el-button>
+ <el-button
+ v-waves
+ type="info"
+ icon="el-icon-refresh"
+ @click="resetSuitobject"
+ >閲嶇疆
+ </el-button>
+ </div>
+ </el-form>
+ </div>
+
+ <div class="elTableDiv">
+ <el-table
+ ref="tableDataRef3"
+ class="tableFixed"
+ :data="suitobjectTableData"
+ height="520"
+ border
+ row-class-name="custom-row"
+ highlight-current-row
+ :header-cell-style="this.$headerCellStyle"
+ :cell-style="this.$cellStyle"
+ row-key="partcode"
+ @select="handleSelectionChange"
+ @select-all="handleAllChange"
+ >
+
+ <el-table-column
+ type="selection"
+ width="50"
+ :reserve-selection="true"
+ fixed
+ />
+ <el-table-column
+ prop="rowNum"
+ width="70"
+ fixed
+ label="搴忓彿"
+ />
+ <el-table-column
+ prop="partcode"
+ label="瀛樿揣缂栫爜"
+ />
+ <el-table-column
+ prop="partname"
+ label="瀛樿揣鍚嶇О"
+ show-tooltip-when-overflow
+ min-width="200"
+ />
+ <el-table-column
+ prop="partspec"
+ label="瑙勬牸鍨嬪彿"
+ >
+ <template slot-scope="{row}">
+ {{ row.partspec ? row.partspec : '/' }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="idinventoryclassname"
+ label="鎵�灞炵被鍒�"
+ />
+
+ </el-table>
+ </div>
+
+ <!--鍒嗛〉-->
+ <pagination
+ :total="suitobjectTotal"
+ :page.sync="suitobjectForm.page"
+ :limit.sync="suitobjectForm.rows"
+ align="right"
+ layout="total,prev, pager, next,sizes,jumper"
+ popper-class="select_bottom"
+ @pagination="getTMaterielData($refs.treeLeftRef.getCurrentNode())"
+ />
+
+ </div>
+
+ </div>
+ <div v-if="dialogForm.suitobject==='PY'">
+ <el-tree
+ ref="treeLeftRef"
+ style="padding: 10px;overflow: auto;height: 600px;"
+ :data="treeLeft"
+ node-key="code"
+ highlight-current
+ :props="defaultPropsLeft"
+ :default-expand-all="true"
+ :expand-on-click-node="false"
+ show-checkbox
+ :default-checked-keys="dialogForm.suitpart"
+ />
+ </div>
+
+ <span slot="footer" class="dialog-footer">
+ <div class="footerButton">
+ <el-button v-waves @click="dialogVisibleCancelSuitobject">杩� 鍥�</el-button>
+ <el-button
+ v-waves
+ :loading="$store.state.app.buttonIsDisabled"
+ :disabled="$store.state.app.buttonIsDisabled"
+ type="primary"
+ @click="dialogVisibleConfirmSuitobject"
+ >纭� 璁�</el-button>
+ </div>
+ </span>
+ </el-dialog>
+
</div>
</template>
@@ -711,8 +917,9 @@
QualityInspectionSearch, QualityInspectionSeeEdit, QualityStepCheckItemSelect
} from '@/api/QualityManagement'
import TableColumnSettings from '@/components/TableColumnSettings'
-import { PartSelect, TMaterielClassTree } from '@/api/ProductModel'
+import { PartSelect, TMaterielClassTree, TMaterielData } from '@/api/ProductModel'
import { StepData } from '@/api/GeneralBasicData'
+import arrayToTree from 'array-to-tree'
export default {
name: 'QualityPlaning',
@@ -919,7 +1126,33 @@
CheckItemSelectArr: [], // 妫�楠岄」鐩�
StepSelectArr: [], // 宸ュ簭鍚嶇О涓嬫媺鎵�鏈�
- isCancel: true// 鏄惁鍙彇娑�
+ isCancel: true, // 鏄惁鍙彇娑�
+
+ dialogVisibleSuitobject: false,
+ treeLeft: [
+ {
+ code: '-1',
+ name: '鍏ㄩ儴'
+ }
+ ], // 宸︿晶鏍�
+ treeLeftArr: [],
+ defaultPropsLeft: {
+ children: 'children',
+ label: 'name'
+ },
+
+ suitobjectTableData: [],
+ suitobjectForm: {
+ inventoryclasscode: '',
+ partcode: '',
+ partname: '',
+ partspec: '',
+ page: 1,
+ rows: 20,
+ prop: 'lm_date', // 鎺掑簭瀛楁
+ order: 'desc' // 鎺掑簭瀛楁
+ },
+ suitobjectTotal: 0
}
},
@@ -949,9 +1182,10 @@
if (res.code === '200') {
// this.getUomSelect()
this.getStepCheckItemSelect()
- this.getPartSelect()
- this.getStockTypeSelect()
+ // this.getPartSelect()
+ // this.getStockTypeSelect()
this.getStepSelect()
+ this.getTMaterielClassTree()
}
})
},
@@ -1093,19 +1327,149 @@
},
// 鐗╂枡涓嬫媺
async getPartSelect() {
- const { data: res } = await PartSelect()
- this.PartSelectArr = res
+ // const { data: res } = await PartSelect()
+ // this.PartSelectArr = res
},
// 鐗╂枡绫诲埆涓嬫媺
async getStockTypeSelect() {
- const { data: res } = await TMaterielClassTree()
- this.StockTypeSelectArr = res
+ // const { data: res } = await TMaterielClassTree()
+ // this.StockTypeSelectArr = res
},
// 閫傜敤瀵硅薄鍊兼敼鍙樻槸
suitobjectChange() {
this.dialogForm.suitpart = []
},
+ /*
+ * 閫夋嫨鐗╂枡鎴栬�呯墿鏂欑被鍒脊鍑烘
+ * */
+ //
+ selectSuitpart() {
+ this.dialogVisibleSuitobject = true
+
+ if (this.dialogForm.suitobject === 'P') { // 鐗╂枡
+ this.$nextTick(() => {
+ this.$refs.treeLeftRef.setCurrentKey('-1')
+ this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode())
+ })
+ } else { // //鐗╂枡绫诲埆
+ // this.$refs.treeLeftRef.setCurrentKey('-1')
+ }
+ },
+
+ handleCloseSuitobject() {
+ this.suitobjectForm = {
+ inventoryclasscode: '',
+ partcode: '',
+ partname: '',
+ partspec: '',
+ page: 1,
+ rows: 20,
+ prop: 'lm_date', // 鎺掑簭瀛楁
+ order: 'desc' // 鎺掑簭瀛楁
+ }
+ },
+
+ dialogVisibleCancelSuitobject() {
+ this.dialogVisibleSuitobject = false
+ },
+
+ dialogVisibleConfirmSuitobject() {
+ // console.log(this.$refs.treeLeftRef.getCheckedKeys())
+ if (this.dialogForm.suitobject === 'P') { // 鐗╂枡
+
+ } else { // //鐗╂枡绫诲埆
+ this.dialogForm.suitpart = this.$refs.treeLeftRef.getCheckedKeys()
+ }
+ this.dialogVisibleSuitobject = false
+ },
+
+ // 杩欓噷鏄仛鍗曢」閫夋嫨涓庡崟椤瑰弽閫夌殑 閫夋嫨锛氭墦鍕炬垨鍙栨秷
+ handleSelectionChange(selected, row) {
+ if (selected.length > 0) {
+ if (selected.map(i => i.partcode).includes(row.partcode)) { // 璇存槑鏄柊澧�
+ this.dialogForm.suitpart.push(row.partcode)
+ } else { // 璇存槑鏄彇娑�
+ this.dialogForm.suitpart = this.dialogForm.suitpart.filter(i => i !== row.partcode)
+ }
+ }
+ },
+ // 鍏ㄩ�夈�佸彇娑堝叏閫夛紙鍘熺悊鍚屼笂闈㈢殑鍗曢�夛級
+ handleAllChange(selected) {
+ console.log(selected)
+
+ if (selected.length > 0) { // 浠h〃浠庝笉鍏ㄩ�夊埌鍏ㄩ��
+ this.dialogForm.suitpart = [...new Set([...this.dialogForm.suitpart, ...selected.map(i => i.partcode)])]
+ } else { // 浠h〃浠庡叏閫夊埌 鍏ㄤ笉閫�
+ this.dialogForm.suitpart = this.dialogForm.suitpart.filter(item => !this.suitobjectTableData.map(i => i.partcode).includes(item))
+ }
+ },
+
+ resetSuitobject() {
+ this.suitobjectForm.inventoryclasscode = ''
+ this.suitobjectForm.partcode = ''
+ this.suitobjectForm.partname = ''
+ this.suitobjectForm.partspec = ''
+ this.$refs.treeLeftRef.setCurrentKey('-1')
+ this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode())
+ },
+
+ async getTMaterielClassTree() {
+ const res = await TMaterielClassTree()
+ res.data.forEach(i => {
+ i.idparent = i.idparent ? i.idparent : '-1'
+ })
+ this.treeLeftArr = res.data
+ this.treeLeftArr.forEach(e => {
+ e.name = e.code + ' ' + e.name
+ })
+ this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), {
+ parentProperty: 'idparent',
+ customID: 'code',
+ childrenProperty: 'children'
+ })
+ // this.$nextTick(() => {
+ // this.$refs.treeLeftRef.setCurrentKey('-1')
+ // console.log(this.$refs.treeLeftRef.getCurrentNode())
+ // this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode())
+ // })
+ },
+
+ async getTMaterielData(node) {
+ const result = this.getChildrenCodeMethod(node, [])
+ if (result.includes('-1')) {
+ result.shift()
+ }
+ this.suitobjectForm.inventoryclasscode = result.join(',')
+ const res = await TMaterielData(this.suitobjectForm)
+
+ this.suitobjectTableData = res.data
+ this.suitobjectTotal = res.count
+
+ const selectedKeys = this.dialogForm.suitpart
+ this.$refs.tableDataRef3.clearSelection() // 娓呯┖褰撳墠閫夋嫨锛岄伩鍏嶉噸澶嶉�夋嫨闂
+ this.suitobjectTableData.forEach(row => {
+ if (selectedKeys.includes(row.partcode)) {
+ this.$refs.tableDataRef3.toggleRowSelection(row, true)
+ }
+ })
+
+ this.$nextTick(() => {
+ this.$refs.tableDataRef3.doLayout()
+ })
+ },
+
+ // 閫掑綊鍙栧瓙闆嗙殑鎵�鏈塩ode
+ getChildrenCodeMethod(node, result) {
+ result.push(node.code)
+ if (node.children && node.children.length > 0) {
+ node.children.forEach(i => {
+ this.getChildrenCodeMethod(i, result)
+ })
+ }
+ return result
+ },
+
// 鑾峰彇妫�楠岄」鐩笅鎷夋帴鍙�
async getStepCheckItemSelect() {
const { data: res } = await QualityStepCheckItemSelect()
--
Gitblit v1.9.3