From b904c6cf33ea022dfc84544501d965f4c30f4887 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 20 五月 2026 16:49:18 +0800
Subject: [PATCH] 天津宝东app 1.部署修改
---
src/pages/productionDesign/processManagement/edit.vue | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 236 insertions(+), 0 deletions(-)
diff --git a/src/pages/productionDesign/processManagement/edit.vue b/src/pages/productionDesign/processManagement/edit.vue
new file mode 100644
index 0000000..425be43
--- /dev/null
+++ b/src/pages/productionDesign/processManagement/edit.vue
@@ -0,0 +1,236 @@
+<template>
+ <view class="process-edit">
+ <PageHeader :title="pageTitle"
+ @back="goBack" />
+ <up-form ref="formRef"
+ :model="form"
+ :rules="rules"
+ :errorType="['none']"
+ label-width="110">
+ <up-form-item label="宸ュ簭缂栫爜"
+ prop="no">
+ <up-input v-model="form.no"
+ placeholder="璇疯緭鍏ュ伐搴忕紪鐮�"
+ clearable />
+ </up-form-item>
+ <up-form-item label="宸ュ簭鍚嶇О"
+ prop="name"
+ required>
+ <up-input v-model="form.name"
+ placeholder="璇疯緭鍏ュ伐搴忓悕绉�"
+ clearable />
+ </up-form-item>
+ <up-form-item label="宸ヨ祫瀹氶"
+ prop="salaryQuota">
+ <up-input v-model="form.salaryQuota"
+ type="number"
+ placeholder="璇疯緭鍏ュ伐璧勫畾棰�"
+ clearable />
+ </up-form-item>
+ <up-form-item label="璁¤垂绫诲瀷"
+ prop="type">
+ <up-input v-model="typeText"
+ placeholder="璇烽�夋嫨璁¤垂绫诲瀷"
+ readonly
+ @click="showTypeSheet = true" />
+ <template #right>
+ <up-icon name="arrow-right"
+ @click="showTypeSheet = true"></up-icon>
+ </template>
+ </up-form-item>
+ <up-form-item label="鏄惁璐ㄦ"
+ prop="isQuality">
+ <view style="display: flex; justify-content: flex-end; width: 100%;">
+ <up-switch v-model="form.isQuality" />
+ </view>
+ </up-form-item>
+ <up-form-item label="鏄惁鐢熶骇"
+ prop="isProduction">
+ <view style="display: flex; justify-content: flex-end; width: 100%;">
+ <up-switch v-model="form.isProduction" />
+ </view>
+ </up-form-item>
+ <up-form-item label="鍏宠仈璁惧"
+ prop="deviceLedgerId">
+ <up-input v-model="deviceText"
+ placeholder="璇烽�夋嫨鍏宠仈璁惧"
+ readonly
+ @click="showDeviceSheet = true" />
+ <template #right>
+ <up-icon name="arrow-right"
+ @click="showDeviceSheet = true"></up-icon>
+ </template>
+ </up-form-item>
+ <up-form-item label="宸ュ簭鎻忚堪"
+ prop="remark">
+ <up-textarea v-model="form.remark"
+ placeholder="璇疯緭鍏ュ伐搴忔弿杩�"
+ autoHeight />
+ </up-form-item>
+ </up-form>
+ <FooterButtons :loading="loading"
+ :confirmText="processId ? '淇濆瓨' : '鏂板'"
+ @cancel="goBack"
+ @confirm="handleSubmit" />
+ <!-- 璁¤垂绫诲瀷閫夋嫨 -->
+ <up-action-sheet :show="showTypeSheet"
+ title="閫夋嫨璁¤垂绫诲瀷"
+ :actions="typeActions"
+ @select="onSelectType"
+ @close="showTypeSheet = false" />
+ <!-- 璁惧閫夋嫨 -->
+ <up-action-sheet :show="showDeviceSheet"
+ title="閫夋嫨鍏宠仈璁惧"
+ :actions="deviceActions"
+ @select="onSelectDevice"
+ @close="showDeviceSheet = false" />
+ </view>
+</template>
+
+<script setup>
+ import { reactive, ref, computed, onMounted } from "vue";
+ import { onLoad, onReady } from "@dcloudio/uni-app";
+ import FooterButtons from "@/components/FooterButtons.vue";
+ import {
+ add,
+ update,
+ getDeviceLedger,
+ } from "@/api/productionManagement/processManagement";
+
+ const formRef = ref(null);
+ const loading = ref(false);
+ const processId = ref(null);
+ const pageTitle = computed(() => (processId.value ? "缂栬緫宸ュ簭" : "鏂板宸ュ簭"));
+
+ const form = ref({
+ no: "",
+ name: "",
+ salaryQuota: "",
+ isQuality: false,
+ isProduction: false,
+ remark: "",
+ deviceLedgerId: null,
+ type: 0,
+ });
+
+ const rules = {
+ name: [{ required: true, message: "璇疯緭鍏ュ伐搴忓悕绉�" }],
+ salaryQuota: [
+ {
+ validator: (rule, value, callback) => {
+ if (value !== "" && value !== null && (isNaN(value) || value < 0)) {
+ callback(new Error("宸ヨ祫瀹氶蹇呴』鏄潪璐熸暟瀛�"));
+ } else {
+ callback();
+ }
+ },
+ },
+ ],
+ };
+
+ const showTypeSheet = ref(false);
+ const typeActions = [
+ { name: "璁℃椂", value: 0 },
+ { name: "璁′欢", value: 1 },
+ ];
+ const typeText = computed(() => {
+ const action = typeActions.find(a => a.value === form.value.type);
+ return action ? action.name : "";
+ });
+
+ const showDeviceSheet = ref(false);
+ const deviceActions = ref([]);
+ const deviceText = ref("");
+
+ const onSelectType = e => {
+ form.value.type = e.value;
+ showTypeSheet.value = false;
+ };
+
+ const onSelectDevice = e => {
+ form.value.deviceLedgerId = e.id;
+ deviceText.value = e.name;
+ showDeviceSheet.value = false;
+ };
+
+ const loadDevices = async () => {
+ try {
+ const { data } = await getDeviceLedger();
+ deviceActions.value = (data || []).map(item => ({
+ name: item.deviceName,
+ id: item.id,
+ }));
+ if (form.value.deviceLedgerId) {
+ const device = deviceActions.value.find(
+ d => d.id === Number(form.value.deviceLedgerId)
+ );
+ if (device) deviceText.value = device.name;
+ }
+ } catch (error) {
+ console.error("鍔犺浇璁惧澶辫触", error);
+ }
+ };
+
+ const goBack = () => {
+ uni.navigateBack();
+ };
+
+ const handleSubmit = () => {
+ formRef.value
+ .validate()
+ .then(() => {
+ loading.value = true;
+ const promise = processId.value ? update(form.value) : add(form.value);
+ promise
+ .then(() => {
+ uni.showToast({ title: processId.value ? "淇濆瓨鎴愬姛" : "鏂板鎴愬姛" });
+ setTimeout(() => {
+ goBack();
+ }, 1500);
+ })
+ .catch(err => {
+ uni.showToast({ title: err.msg || "鎻愪氦澶辫触", icon: "error" });
+ })
+ .finally(() => {
+ loading.value = false;
+ });
+ })
+ .catch(errors => {
+ if (errors && errors.length > 0) {
+ uni.showToast({
+ title: errors[0].message,
+ icon: "none",
+ });
+ }
+ });
+ };
+
+ onLoad(option => {
+ if (option.item) {
+ const item = JSON.parse(decodeURIComponent(option.item));
+ processId.value = item.id;
+ Object.assign(form.value, item);
+ // 澶勭悊绫诲瀷杞崲锛岀‘淇濇槸鏁板瓧
+ form.value.type = Number(form.value.type);
+ form.value.isQuality = !!form.value.isQuality;
+ form.value.isProduction = !!form.value.isProduction;
+ }
+ });
+
+ onReady(() => {
+ formRef.value.setRules(rules);
+ });
+
+ onMounted(() => {
+ loadDevices();
+ });
+</script>
+
+<style scoped lang="scss">
+ @import "@/static/scss/form-common.scss";
+
+ .process-edit {
+ min-height: 100vh;
+ background: #f5f5f5;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3