From c9ed3d1958a2489460592b3b17e386d9d515d7ea Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 12 六月 2026 18:07:01 +0800
Subject: [PATCH] 君歌 1.工序修改 2.销售报价重构
---
src/views/productionManagement/productionProcess/Edit.vue | 194 ++++++++++++++++++++++++++++++------------------
1 files changed, 120 insertions(+), 74 deletions(-)
diff --git a/src/views/productionManagement/productionProcess/Edit.vue b/src/views/productionManagement/productionProcess/Edit.vue
index 28077b6..e1d91d8 100644
--- a/src/views/productionManagement/productionProcess/Edit.vue
+++ b/src/views/productionManagement/productionProcess/Edit.vue
@@ -1,74 +1,95 @@
<template>
- <div>
- <el-dialog
- v-model="isShow"
- title="缂栬緫宸ュ簭"
- width="400"
- @close="closeModal"
- >
- <el-form label-width="140px" :model="formState" label-position="top" ref="formRef">
- <el-form-item
- label="宸ュ簭鍚嶇О锛�"
- prop="name"
- :rules="[
- {
- required: true,
- message: '璇疯緭鍏ュ伐搴忓悕绉�',
- },
+ <FormDialog
+ v-model="isShow"
+ title="缂栬緫宸ュ簭"
+ width="800px"
+ @confirm="handleSubmit"
+ @cancel="closeModal"
+ >
+ <el-form label-width="180px" :model="formState" label-position="top" ref="formRef">
+ <el-form-item
+ label="閮ㄤ欢锛�"
+ prop="name"
+ :rules="[
{
- max: 100,
- message: '鏈�澶�100涓瓧绗�',
- }
- ]">
- <el-input v-model="formState.name" />
- </el-form-item>
- <el-form-item label="宸ュ簭缂栧彿" prop="no">
- <el-input v-model="formState.no" />
- </el-form-item>
- <el-form-item
- label="宸ュ簭绫诲瀷"
- prop="type"
- :rules="[
- {
- required: true,
- message: '璇烽�夋嫨宸ュ簭绫诲瀷',
- }
- ]"
- >
- <el-select v-model="formState.type" placeholder="璇烽�夋嫨宸ュ簭绫诲瀷">
- <el-option label="璁℃椂" :value="0" />
- <el-option label="璁′欢" :value="1" />
- </el-select>
- </el-form-item>
- <el-form-item label="宸ヨ祫瀹氶" prop="salaryQuota">
- <el-input v-model="formState.salaryQuota" type="number" :step="0.001" />
- </el-form-item>
- <el-form-item label="鏄惁璐ㄦ" prop="isQuality">
- <el-switch v-model="formState.isQuality" :active-value="true" inactive-value="false"/>
- </el-form-item>
- <el-form-item label="鏄惁鍏ュ簱" prop="inbound">
- <el-switch v-model="formState.inbound" :active-value="true" inactive-value="false"/>
- </el-form-item>
- <el-form-item label="鏄惁鎶ュ伐" prop="reportWork">
- <el-switch v-model="formState.reportWork" :active-value="true" inactive-value="false"/>
- </el-form-item>
- <el-form-item label="澶囨敞" prop="remark">
- <el-input v-model="formState.remark" type="textarea" />
- </el-form-item>
- </el-form>
- <template #footer>
- <div class="dialog-footer">
- <el-button type="primary" @click="handleSubmit">纭</el-button>
- <el-button @click="closeModal">鍙栨秷</el-button>
- </div>
- </template>
- </el-dialog>
- </div>
+ required: true,
+ message: '璇疯緭鍏ラ儴浠�',
+ },
+ {
+ max: 100,
+ message: '鏈�澶�100涓瓧绗�',
+ }
+ ]">
+ <el-input v-model="formState.name" />
+ </el-form-item>
+ <el-form-item label="宸ュ簭缂栧彿" prop="no">
+ <el-input v-model="formState.no" />
+ </el-form-item>
+ <el-form-item
+ label="宸ュ簭绫诲瀷"
+ prop="processType"
+ :rules="[
+ {
+ required: true,
+ message: '璇烽�夋嫨宸ュ簭绫诲瀷',
+ }
+ ]"
+ >
+ <el-select v-model="formState.processType" placeholder="璇烽�夋嫨宸ュ簭绫诲瀷" style="width: 100%">
+ <el-option v-for="item in processTypeOptions"
+ :key="item"
+ :label="item"
+ :value="item" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璁″垝宸ユ椂(灏忔椂)" prop="salaryQuota">
+ <el-input v-model="formState.salaryQuota" type="number" :step="0.5" />
+ </el-form-item>
+ <el-form-item label="璁″垝浜哄憳" prop="planPerson">
+ <el-select v-model="formState.planPerson"
+ placeholder="璇烽�夋嫨璁″垝浜哄憳"
+ clearable
+ filterable
+ style="width: 100%">
+ <el-option v-for="item in employeeOptions"
+ :key="item.id"
+ :label="item.staffName"
+ :value="item.id" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璁″垝鎵ц浜哄憳" prop="executor">
+ <el-select v-model="formState.executor"
+ placeholder="璇烽�夋嫨璁″垝鎵ц浜哄憳"
+ clearable
+ filterable
+ style="width: 100%">
+ <el-option v-for="item in employeeOptions"
+ :key="item.id"
+ :label="item.staffName"
+ :value="item.id" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鏄惁璐ㄦ" prop="isQuality">
+ <el-switch v-model="formState.isQuality" :active-value="true" inactive-value="false"/>
+ </el-form-item>
+ <el-form-item label="鏄惁鍏ュ簱" prop="inbound">
+ <el-switch v-model="formState.inbound" :active-value="true" inactive-value="false"/>
+ </el-form-item>
+ <el-form-item label="鏄惁鎶ュ伐" prop="reportWork">
+ <el-switch v-model="formState.reportWork" :active-value="true" inactive-value="false"/>
+ </el-form-item>
+ <el-form-item label="澶囨敞" prop="remark">
+ <el-input v-model="formState.remark" type="textarea" />
+ </el-form-item>
+ </el-form>
+ </FormDialog>
</template>
<script setup>
-import { ref, computed, getCurrentInstance, watch } from "vue";
-import {update} from "@/api/productionManagement/productionProcess.js";
+import { ref, computed, getCurrentInstance, watch, onMounted } from "vue";
+import { update } from "@/api/productionManagement/productionProcess.js";
+import { staffOnJobListPage } from "@/api/personnelManagement/staffOnJob.js";
+import FormDialog from "@/components/Dialog/FormDialog.vue";
const props = defineProps({
visible: {
@@ -84,14 +105,26 @@
const emit = defineEmits(['update:visible', 'completed']);
-// 鍝嶅簲寮忔暟鎹紙鏇夸唬閫夐」寮忕殑 data锛�
+const processTypeOptions = [
+ "鏈哄姞宸�",
+ "鍒澘鍐疯姱鍒朵綔",
+ "绠¤矾缁勫",
+ "缃愪綋杩炴帴鍙婅皟璇�",
+ "娴嬭瘯鎵撳帇",
+ "鍏朵粬",
+];
+
+const employeeOptions = ref([]);
+
const formState = ref({
id: props.record.id,
name: props.record.name,
- type: props.record.type,
no: props.record.no,
+ processType: props.record.processType || '',
remark: props.record.remark,
salaryQuota: props.record.salaryQuota,
+ planPerson: props.record.planPerson || null,
+ executor: props.record.executor || null,
isQuality: props.record.isQuality,
inbound: props.record.inbound,
reportWork: props.record.reportWork,
@@ -106,16 +139,17 @@
},
});
-// 鐩戝惉 record 鍙樺寲锛屾洿鏂拌〃鍗曟暟鎹�
watch(() => props.record, (newRecord) => {
if (newRecord && isShow.value) {
formState.value = {
id: newRecord.id,
name: newRecord.name || '',
no: newRecord.no || '',
- type: newRecord.type,
+ processType: newRecord.processType || '',
remark: newRecord.remark || '',
salaryQuota: newRecord.salaryQuota || '',
+ planPerson: newRecord.planPerson || null,
+ executor: newRecord.executor || null,
isQuality: props.record.isQuality,
inbound: newRecord.inbound,
reportWork: newRecord.reportWork,
@@ -123,16 +157,17 @@
}
}, { immediate: true, deep: true });
-// 鐩戝惉寮圭獥鎵撳紑锛岄噸鏂板垵濮嬪寲琛ㄥ崟鏁版嵁
watch(() => props.visible, (visible) => {
if (visible && props.record) {
formState.value = {
id: props.record.id,
name: props.record.name || '',
no: props.record.no || '',
- type: props.record.type,
+ processType: props.record.processType || '',
remark: props.record.remark || '',
salaryQuota: props.record.salaryQuota || '',
+ planPerson: props.record.planPerson || null,
+ executor: props.record.executor || null,
isQuality: props.record.isQuality,
inbound: props.record.inbound,
reportWork: props.record.reportWork,
@@ -150,9 +185,7 @@
proxy.$refs["formRef"].validate(valid => {
if (valid) {
update(formState.value).then(res => {
- // 鍏抽棴妯℃�佹
isShow.value = false;
- // 鍛婄煡鐖剁粍浠跺凡瀹屾垚
emit('completed');
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
})
@@ -160,6 +193,19 @@
})
};
+const loadEmployees = async () => {
+ try {
+ const res = await staffOnJobListPage({ current: -1, size: -1, staffState: 1 });
+ employeeOptions.value = res.data?.records || [];
+ } catch (error) {
+ console.error("鍔犺浇鍛樺伐鍒楄〃澶辫触", error);
+ }
+};
+
+onMounted(() => {
+ loadEmployees();
+});
+
defineExpose({
closeModal,
handleSubmit,
--
Gitblit v1.9.3