From b8ab235624031dc838f7584e19697f3e87e20e24 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 06 五月 2026 17:32:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_NEW_pro' into dev_NEW_pro
---
src/store/modules/user.js | 53 +++--
multiple/config.json | 9 +
src/layout/index.vue | 5
src/views/productionManagement/productionOrder/components/MaterialSupplementDialog.vue | 6
src/store/modules/permission.js | 48 ++++
src/views/salesManagement/salesLedger/index.vue | 13
src/views/financialManagement/receivable/invoiceApply.vue | 16 +
src/router/index.js | 250 +++++++++++++-------------
src/views/equipmentManagement/ledger/Form.vue | 21 +-
src/views/financialManagement/payable/input-invoice.vue | 16 +
src/views/procurementManagement/procurementLedger/index.vue | 13
src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue | 11
src/views/productionManagement/productionOrder/index.vue | 4
src/views/projectManagement/Management/components/formDia.vue | 11
multiple/assets/favicon/SDJCfavicon.ico | 0
multiple/assets/logo/SDJCLogo.png | 0
src/views/financialManagement/receivable/outputInvoice.vue | 16 +
17 files changed, 280 insertions(+), 212 deletions(-)
diff --git a/multiple/assets/favicon/SDJCfavicon.ico b/multiple/assets/favicon/SDJCfavicon.ico
new file mode 100644
index 0000000..5e80af3
--- /dev/null
+++ b/multiple/assets/favicon/SDJCfavicon.ico
Binary files differ
diff --git a/multiple/assets/logo/SDJCLogo.png b/multiple/assets/logo/SDJCLogo.png
new file mode 100644
index 0000000..139e398
--- /dev/null
+++ b/multiple/assets/logo/SDJCLogo.png
Binary files differ
diff --git a/multiple/config.json b/multiple/config.json
index 60f9d3a..ead43d0 100644
--- a/multiple/config.json
+++ b/multiple/config.json
@@ -15,6 +15,15 @@
"logo": "logo/Logo.png",
"favicon": "favicon/favicon.ico"
},
+ "SDJC": {
+ "env": {
+ "VITE_APP_TITLE": "榛庡煄鍘胯儨寰峰缓鏉愭湁闄愬叕鍙�",
+ "VITE_BASE_API": "http://36.138.236.153:9000",
+ "VITE_JAVA_API": "http://36.138.236.153:9001"
+ },
+ "logo": "logo/SDJCLogo.png",
+ "favicon": "favicon/SDJCfavicon.ico"
+ },
"logo": "/src/assets/logo/logo.png",
"favicon": "/public/favicon.ico"
}
diff --git a/src/layout/index.vue b/src/layout/index.vue
index a1bb724..03c13ba 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -16,7 +16,7 @@
<app-main />
<settings ref="settingRef" />
</div>
- <AIChatSidebar />
+ <AIChatSidebar v-if="aiEnabled" />
</div>
</template>
@@ -28,15 +28,18 @@
import defaultSettings from "@/settings";
import useAppStore from "@/store/modules/app";
+ import useUserStore from "@/store/modules/user";
import useSettingsStore from "@/store/modules/settings";
const settingsStore = useSettingsStore();
+ const userStore = useUserStore();
const theme = computed(() => settingsStore.theme);
const sideTheme = computed(() => settingsStore.sideTheme);
const sidebar = computed(() => useAppStore().sidebar);
const device = computed(() => useAppStore().device);
const needTagsView = computed(() => settingsStore.tagsView);
const fixedHeader = computed(() => settingsStore.fixedHeader);
+ const aiEnabled = computed(() => Number(userStore.aiEnabled) === 1);
const classObj = computed(() => ({
hideSidebar: !sidebar.value.opened,
diff --git a/src/router/index.js b/src/router/index.js
index c9b163c..2bb5586 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -48,19 +48,19 @@
hidden: true,
},
// 绯荤粺鏋舵瀯鍥�
- {
- path: "/system-architecture",
- component: Layout,
- redirect: "/system-architecture/index",
- children: [
- {
- path: "index",
- component: () => import("@/views/systemArchitecture/index.vue"),
- name: "SystemArchitecture",
- meta: { title: "绯荤粺鏋舵瀯鍥�", icon: "tree" },
- },
- ],
- },
+ // {
+ // path: "/system-architecture",
+ // component: Layout,
+ // redirect: "/system-architecture/index",
+ // children: [
+ // {
+ // path: "index",
+ // component: () => import("@/views/systemArchitecture/index.vue"),
+ // name: "SystemArchitecture",
+ // meta: { title: "绯荤粺鏋舵瀯鍥�", icon: "tree" },
+ // },
+ // ],
+ // },
{
path: "/:pathMatch(.*)*",
component: () => import("@/views/error/404"),
@@ -134,118 +134,118 @@
],
},
// 璐㈠姟绠$悊妯″潡璺敱
- {
- path: "/financial",
- component: Layout,
- hidden: false,
- redirect: "/financial/general-ledger",
- alwaysShow: true,
- meta: { title: "璐㈠姟绠$悊", icon: "money" },
- children: [
- {
- path: "general-ledger",
- component: () => import("@/views/financialManagement/generalLedger/index.vue"),
- name: "GeneralLedger",
- meta: { title: "鎬诲笎绉戠洰" },
- },
- {
- path: "sales-out",
- component: () => import("@/views/financialManagement/receivable/salesOut.vue"),
- name: "SalesOut",
- meta: { title: "閿�鍞嚭搴�" },
- },
- {
- path: "sales-return",
- component: () => import("@/views/financialManagement/receivable/salesReturn.vue"),
- name: "SalesReturn",
- meta: { title: "閿�鍞��璐�" },
- },
- {
- path: "receivable-reconciliation",
- component: () => import("@/views/financialManagement/receivable/reconciliation.vue"),
- name: "ReceivableReconciliation",
- meta: { title: "搴旀敹瀵硅处" },
- },
- {
- path: "invoice-apply",
- component: () => import("@/views/financialManagement/receivable/invoiceApply.vue"),
- name: "InvoiceApply",
- meta: { title: "寮�绁ㄧ敵璇�" },
- },
- {
- path: "output-invoice",
- component: () => import("@/views/financialManagement/receivable/outputInvoice.vue"),
- name: "OutputInvoice",
- meta: { title: "閿�椤瑰彂绁�" },
- },
- {
- path: "receipt",
- component: () => import("@/views/financialManagement/receivable/receipt.vue"),
- name: "Receipt",
- meta: { title: "鏀舵鍗�" },
- },
- {
- path: "purchase-in",
- component: () => import("@/views/financialManagement/payable/purchaseIn.vue"),
- name: "PurchaseIn",
- meta: { title: "閲囪喘鍏ュ簱" },
- },
- {
- path: "payable-reconciliation",
- component: () => import("@/views/financialManagement/payable/reconciliation.vue"),
- name: "PayableReconciliation",
- meta: { title: "搴斾粯瀵硅处" },
- },
- {
- path: "input-invoice",
- component: () => import("@/views/financialManagement/payable/input-invoice.vue"),
- name: "InputInvoice",
- meta: { title: "杩涢」鍙戠エ" },
- },
- {
- path: "payment-apply",
- component: () => import("@/views/financialManagement/payable/paymentApply.vue"),
- name: "PaymentApply",
- meta: { title: "浠樻鐢宠" },
- },
- {
- path: "payment",
- component: () => import("@/views/financialManagement/payable/payment.vue"),
- name: "Payment",
- meta: { title: "浠樻鍗�" },
- },
- {
- path: "fixed-assets",
- component: () => import("@/views/financialManagement/assets/fixedAssets.vue"),
- name: "FixedAssets",
- meta: { title: "鍥哄畾璧勪骇" },
- },
- {
- path: "intangible-assets",
- component: () => import("@/views/financialManagement/assets/intangibleAssets.vue"),
- name: "IntangibleAssets",
- meta: { title: "鏃犲舰璧勪骇" },
- },
- {
- path: "voucher",
- component: () => import("@/views/financialManagement/voucher/index.vue"),
- name: "Voucher",
- meta: { title: "鍑瘉" },
- },
- {
- path: "voucher-general-ledger",
- component: () => import("@/views/financialManagement/voucher/generalLedger.vue"),
- name: "VoucherGeneralLedger",
- meta: { title: "绉戠洰鎬诲笎" },
- },
- {
- path: "voucher-detail-ledger",
- component: () => import("@/views/financialManagement/voucher/detailLedger.vue"),
- name: "VoucherDetailLedger",
- meta: { title: "绉戠洰鏄庣粏甯�" },
- },
- ],
- },
+ // {
+ // path: "/financial",
+ // component: Layout,
+ // hidden: false,
+ // redirect: "/financial/general-ledger",
+ // alwaysShow: true,
+ // meta: { title: "璐㈠姟绠$悊", icon: "money" },
+ // children: [
+ // {
+ // path: "general-ledger",
+ // component: () => import("@/views/financialManagement/generalLedger/index.vue"),
+ // name: "GeneralLedger",
+ // meta: { title: "鎬诲笎绉戠洰" },
+ // },
+ // {
+ // path: "sales-out",
+ // component: () => import("@/views/financialManagement/receivable/salesOut.vue"),
+ // name: "SalesOut",
+ // meta: { title: "閿�鍞嚭搴�" },
+ // },
+ // {
+ // path: "sales-return",
+ // component: () => import("@/views/financialManagement/receivable/salesReturn.vue"),
+ // name: "SalesReturn",
+ // meta: { title: "閿�鍞��璐�" },
+ // },
+ // {
+ // path: "receivable-reconciliation",
+ // component: () => import("@/views/financialManagement/receivable/reconciliation.vue"),
+ // name: "ReceivableReconciliation",
+ // meta: { title: "搴旀敹瀵硅处" },
+ // },
+ // {
+ // path: "invoice-apply",
+ // component: () => import("@/views/financialManagement/receivable/invoiceApply.vue"),
+ // name: "InvoiceApply",
+ // meta: { title: "寮�绁ㄧ敵璇�" },
+ // },
+ // {
+ // path: "output-invoice",
+ // component: () => import("@/views/financialManagement/receivable/outputInvoice.vue"),
+ // name: "OutputInvoice",
+ // meta: { title: "閿�椤瑰彂绁�" },
+ // },
+ // {
+ // path: "receipt",
+ // component: () => import("@/views/financialManagement/receivable/receipt.vue"),
+ // name: "Receipt",
+ // meta: { title: "鏀舵鍗�" },
+ // },
+ // {
+ // path: "purchase-in",
+ // component: () => import("@/views/financialManagement/payable/purchaseIn.vue"),
+ // name: "PurchaseIn",
+ // meta: { title: "閲囪喘鍏ュ簱" },
+ // },
+ // {
+ // path: "payable-reconciliation",
+ // component: () => import("@/views/financialManagement/payable/reconciliation.vue"),
+ // name: "PayableReconciliation",
+ // meta: { title: "搴斾粯瀵硅处" },
+ // },
+ // {
+ // path: "input-invoice",
+ // component: () => import("@/views/financialManagement/payable/input-invoice.vue"),
+ // name: "InputInvoice",
+ // meta: { title: "杩涢」鍙戠エ" },
+ // },
+ // {
+ // path: "payment-apply",
+ // component: () => import("@/views/financialManagement/payable/paymentApply.vue"),
+ // name: "PaymentApply",
+ // meta: { title: "浠樻鐢宠" },
+ // },
+ // {
+ // path: "payment",
+ // component: () => import("@/views/financialManagement/payable/payment.vue"),
+ // name: "Payment",
+ // meta: { title: "浠樻鍗�" },
+ // },
+ // {
+ // path: "fixed-assets",
+ // component: () => import("@/views/financialManagement/assets/fixedAssets.vue"),
+ // name: "FixedAssets",
+ // meta: { title: "鍥哄畾璧勪骇" },
+ // },
+ // {
+ // path: "intangible-assets",
+ // component: () => import("@/views/financialManagement/assets/intangibleAssets.vue"),
+ // name: "IntangibleAssets",
+ // meta: { title: "鏃犲舰璧勪骇" },
+ // },
+ // {
+ // path: "voucher",
+ // component: () => import("@/views/financialManagement/voucher/index.vue"),
+ // name: "Voucher",
+ // meta: { title: "鍑瘉" },
+ // },
+ // {
+ // path: "voucher-general-ledger",
+ // component: () => import("@/views/financialManagement/voucher/generalLedger.vue"),
+ // name: "VoucherGeneralLedger",
+ // meta: { title: "绉戠洰鎬诲笎" },
+ // },
+ // {
+ // path: "voucher-detail-ledger",
+ // component: () => import("@/views/financialManagement/voucher/detailLedger.vue"),
+ // name: "VoucherDetailLedger",
+ // meta: { title: "绉戠洰鏄庣粏甯�" },
+ // },
+ // ],
+ // },
];
// 鍔ㄦ�佽矾鐢憋紝鍩轰簬鐢ㄦ埛鏉冮檺鍔ㄦ�佸幓鍔犺浇
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
index f7a7044..d3f0594 100644
--- a/src/store/modules/permission.js
+++ b/src/store/modules/permission.js
@@ -1,9 +1,10 @@
import auth from '@/plugins/auth'
import router, { constantRoutes, dynamicRoutes } from '@/router'
import { getRouters } from '@/api/menu'
-import Layout from '@/layout/index'
-import ParentView from '@/components/ParentView'
-import InnerLink from '@/layout/components/InnerLink'
+import Layout from '@/layout/index'
+import ParentView from '@/components/ParentView'
+import InnerLink from '@/layout/components/InnerLink'
+import useUserStore from '@/store/modules/user'
// 鍖归厤views閲岄潰鎵�鏈夌殑.vue鏂囦欢
const modules = import.meta.glob('./../../views/**/*.vue')
@@ -36,9 +37,11 @@
return new Promise(resolve => {
// 鍚戝悗绔姹傝矾鐢辨暟鎹�
getRouters().then(res => {
- const sdata = JSON.parse(JSON.stringify(res.data))
- const rdata = JSON.parse(JSON.stringify(res.data))
- const defaultData = JSON.parse(JSON.stringify(res.data))
+ const aiEnabled = Number(useUserStore().aiEnabled) === 1
+ const rawRoutes = filterAiFeatureRoutes(res.data, aiEnabled)
+ const sdata = JSON.parse(JSON.stringify(rawRoutes))
+ const rdata = JSON.parse(JSON.stringify(rawRoutes))
+ const defaultData = JSON.parse(JSON.stringify(rawRoutes))
const sidebarRoutes = filterAsyncRouter(sdata)
const rewriteRoutes = filterAsyncRouter(rdata, false, true)
const defaultRoutes = filterAsyncRouter(defaultData)
@@ -57,7 +60,38 @@
})
// 閬嶅巻鍚庡彴浼犳潵鐨勮矾鐢卞瓧绗︿覆锛岃浆鎹负缁勪欢瀵硅薄
-function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
+function filterAiFeatureRoutes(routes = [], aiEnabled = false) {
+ if (aiEnabled) {
+ return routes
+ }
+ return routes.reduce((acc, route) => {
+ if (!route || isAiFeatureRoute(route)) {
+ return acc
+ }
+ const nextRoute = { ...route }
+ if (Array.isArray(nextRoute.children) && nextRoute.children.length > 0) {
+ nextRoute.children = filterAiFeatureRoutes(nextRoute.children, aiEnabled)
+ }
+ acc.push(nextRoute)
+ return acc
+ }, [])
+}
+
+function isAiFeatureRoute(route = {}) {
+ const path = String(route.path || '').toLowerCase()
+ const component = String(route.component || '').toLowerCase()
+ const name = String(route.name || '').toLowerCase()
+ const title = String(route?.meta?.title ?? route?.title ?? '')
+
+ return (
+ path.includes('chathome') ||
+ component.includes('chathome') ||
+ name.includes('chathome') ||
+ title.includes('AI')
+ )
+}
+
+function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
return asyncRouterMap.filter(route => {
if (type && route.children) {
route.children = filterChildren(route.children)
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 4f3eab4..ea358d1 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -7,13 +7,14 @@
const useUserStore = defineStore(
'user',
{
- state: () => ({
- token: getToken(),
- id: '',
- name: '',
- avatar: '',
- roles: [],
- permissions: []
+ state: () => ({
+ token: getToken(),
+ id: '',
+ name: '',
+ avatar: '',
+ roles: [],
+ permissions: [],
+ aiEnabled: 0
}),
actions: {
// 鐧诲綍
@@ -58,29 +59,31 @@
this.id = user.userId
this.name = user.userName
this.avatar = avatar
- this.currentFactoryName = user.currentFactoryName
- this.nickName = user.nickName
- this.roleName = user.roles[0].roleName
- this.currentDeptId = user.tenantId
- this.currentLoginTime = this.getCurrentTime()
- resolve(res)
- }).catch(error => {
- reject(error)
- })
- })
+ this.currentFactoryName = user.currentFactoryName
+ this.nickName = user.nickName
+ this.roleName = user.roles[0].roleName
+ this.currentDeptId = user.tenantId
+ this.currentLoginTime = this.getCurrentTime()
+ this.aiEnabled = Number(res.aiEnabled) === 1 ? 1 : 0
+ resolve(res)
+ }).catch(error => {
+ reject(error)
+ })
+ })
},
// 閫�鍑虹郴缁�
logOut() {
return new Promise((resolve, reject) => {
logout(this.token).then(() => {
- this.token = ''
- this.roles = []
- this.permissions = []
- removeToken()
- resolve()
- }).catch(error => {
- reject(error)
- })
+ this.token = ''
+ this.roles = []
+ this.permissions = []
+ this.aiEnabled = 0
+ removeToken()
+ resolve()
+ }).catch(error => {
+ reject(error)
+ })
})
},
// 鐧诲綍鏍¢獙
diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index 72d594e..45ca248 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -100,22 +100,18 @@
</el-col>
<el-col :span="12">
<el-form-item label="绋庣巼(%)" prop="taxRate">
- <!-- <el-input
- v-model="form.taxRate"
- placeholder="璇疯緭鍏ョ◣鐜�"
- type="number"
- >
- <template #append> % </template>
- </el-input> -->
<el-select
v-model="form.taxRate"
placeholder="璇烽�夋嫨"
clearable
@change="mathNum"
>
- <el-option label="1" :value="1" />
- <el-option label="6" :value="6" />
- <el-option label="13" :value="13" />
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="Number(dict.value)"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -174,7 +170,10 @@
calculateTaxExclusiveTotalPrice,
} from "@/utils/summarizeTable";
import { ElMessage } from "element-plus";
-import {ref} from "vue";
+import {ref, getCurrentInstance} from "vue";
+
+const { proxy } = getCurrentInstance();
+const { tax_rate } = proxy.useDict("tax_rate");
defineOptions({
name: "璁惧鍙拌处琛ㄥ崟",
diff --git a/src/views/financialManagement/payable/input-invoice.vue b/src/views/financialManagement/payable/input-invoice.vue
index b809c98..660d0dd 100644
--- a/src/views/financialManagement/payable/input-invoice.vue
+++ b/src/views/financialManagement/payable/input-invoice.vue
@@ -104,11 +104,12 @@
<el-col :span="8">
<el-form-item label="绋庣巼" prop="taxRate">
<el-select v-model="form.taxRate" placeholder="璇烽�夋嫨绋庣巼" style="width: 100%;" @change="calculateTax">
- <el-option label="0%" :value="0" />
- <el-option label="3%" :value="3" />
- <el-option label="6%" :value="6" />
- <el-option label="9%" :value="9" />
- <el-option label="13%" :value="13" />
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="Number(dict.value)"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -150,7 +151,7 @@
</template>
<script setup>
-import { ref, reactive, onMounted } from "vue";
+import { ref, reactive, onMounted, getCurrentInstance } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import FormDialog from "@/components/Dialog/FormDialog.vue";
@@ -158,6 +159,9 @@
name: "杩涢」鍙戠エ",
});
+const { proxy } = getCurrentInstance();
+const { tax_rate } = proxy.useDict("tax_rate");
+
const filters = reactive({
invoiceCode: "",
invoiceNo: "",
diff --git a/src/views/financialManagement/receivable/invoiceApply.vue b/src/views/financialManagement/receivable/invoiceApply.vue
index be9621d..2a4bd81 100644
--- a/src/views/financialManagement/receivable/invoiceApply.vue
+++ b/src/views/financialManagement/receivable/invoiceApply.vue
@@ -86,11 +86,12 @@
<el-col :span="12">
<el-form-item label="绋庣巼" prop="taxRate">
<el-select v-model="form.taxRate" placeholder="璇烽�夋嫨绋庣巼" style="width: 100%;">
- <el-option label="0%" :value="0" />
- <el-option label="3%" :value="3" />
- <el-option label="6%" :value="6" />
- <el-option label="9%" :value="9" />
- <el-option label="13%" :value="13" />
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="Number(dict.value)"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -127,7 +128,7 @@
</template>
<script setup>
-import { ref, reactive, onMounted } from "vue";
+import { ref, reactive, onMounted, getCurrentInstance } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import FormDialog from "@/components/Dialog/FormDialog.vue";
@@ -135,6 +136,9 @@
name: "寮�绁ㄧ敵璇�",
});
+const { proxy } = getCurrentInstance();
+const { tax_rate } = proxy.useDict("tax_rate");
+
const filters = reactive({
applyCode: "",
customerId: "",
diff --git a/src/views/financialManagement/receivable/outputInvoice.vue b/src/views/financialManagement/receivable/outputInvoice.vue
index 1f6b0a4..3e597db 100644
--- a/src/views/financialManagement/receivable/outputInvoice.vue
+++ b/src/views/financialManagement/receivable/outputInvoice.vue
@@ -98,11 +98,12 @@
<el-col :span="12">
<el-form-item label="绋庣巼" prop="taxRate">
<el-select v-model="form.taxRate" placeholder="璇烽�夋嫨绋庣巼" style="width: 100%;" @change="calculateTax">
- <el-option label="0%" :value="0" />
- <el-option label="3%" :value="3" />
- <el-option label="6%" :value="6" />
- <el-option label="9%" :value="9" />
- <el-option label="13%" :value="13" />
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="Number(dict.value)"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -140,7 +141,7 @@
</template>
<script setup>
-import { ref, reactive, onMounted, computed } from "vue";
+import { ref, reactive, onMounted, computed, getCurrentInstance } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import FormDialog from "@/components/Dialog/FormDialog.vue";
@@ -148,6 +149,9 @@
name: "閿�椤瑰彂绁�",
});
+const { proxy } = getCurrentInstance();
+const { tax_rate } = proxy.useDict("tax_rate");
+
const filters = reactive({
invoiceCode: "",
invoiceNo: "",
diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index 28fb968..7c8cb89 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -526,12 +526,12 @@
placeholder="璇烽�夋嫨"
clearable
@change="mathNum">
- <el-option label="1"
- value="1"/>
- <el-option label="6"
- value="6"/>
- <el-option label="13"
- value="13"/>
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -673,6 +673,7 @@
const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
const {proxy} = getCurrentInstance();
+const { tax_rate } = proxy.useDict("tax_rate");
const tableData = ref([]);
const productData = ref([]);
const selectedRows = ref([]);
diff --git a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
index 991f2a1..210dbba 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
@@ -49,11 +49,8 @@
</template>
</el-table-column>
<!-- 鎵瑰彿澶氶�� -->
- <el-table-column min-width="200">
- <template #header>
- <span style="color: #f56c6c; margin-right: 4px;">*</span>
- <span>鎵瑰彿</span>
- </template>
+ <el-table-column min-width="200"
+ label="鎵瑰彿">
<template #default="{ row }">
<el-select v-model="row.batchNo"
multiple
@@ -313,8 +310,8 @@
item =>
!item.operationName ||
!item.materialName ||
- !item.batchNo ||
- item.batchNo.length === 0 ||
+ (Number(item.pickQty) > 0 &&
+ (!item.batchNo || item.batchNo.length === 0)) ||
item.demandedQuantity === null ||
item.demandedQuantity === undefined ||
item.pickQty === null ||
diff --git a/src/views/productionManagement/productionOrder/components/MaterialSupplementDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialSupplementDialog.vue
index 67e44f1..4f052ed 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialSupplementDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialSupplementDialog.vue
@@ -19,9 +19,15 @@
<el-table-column label="璁¢噺鍗曚綅"
prop="unit"
width="100" />
+ <el-table-column label="闇�姹傛暟閲�"
+ prop="demandedQuantity"
+ width="100" />
<el-table-column label="棰嗙敤鏁伴噺"
prop="pickQuantity"
width="100" />
+ <el-table-column label="宸茶ˉ鏁伴噺"
+ prop="feedingQty"
+ width="100" />
<el-table-column label="琛ユ枡鏁伴噺"
min-width="150">
<template #default="{ row }">
diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue
index c37358b..8d44b85 100644
--- a/src/views/productionManagement/productionOrder/index.vue
+++ b/src/views/productionManagement/productionOrder/index.vue
@@ -402,7 +402,7 @@
name: "棰嗘枡",
type: "text",
color: "#5EC7AB",
- showHide: row => !row.endOrder,
+ showHide: row => !row.endOrder && !row.returned,
clickFun: row => {
openMaterialDialog(row);
},
@@ -411,7 +411,7 @@
name: "琛ユ枡",
type: "text",
color: "#5EC7AB",
- showHide: row => !row.endOrder,
+ showHide: row => !row.endOrder && !row.returned,
clickFun: row => {
openMaterialSupplementDialog(row);
},
diff --git a/src/views/projectManagement/Management/components/formDia.vue b/src/views/projectManagement/Management/components/formDia.vue
index f29512b..c2ee9c2 100644
--- a/src/views/projectManagement/Management/components/formDia.vue
+++ b/src/views/projectManagement/Management/components/formDia.vue
@@ -571,9 +571,12 @@
<el-col :span="12">
<el-form-item label="绋庣巼(%)锛�" prop="taxRate">
<el-select v-model="productForm.taxRate" placeholder="璇烽�夋嫨" clearable @change="calculateFromTaxRate">
- <el-option label="1" value="1" />
- <el-option label="6" value="6" />
- <el-option label="13" value="13" />
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -650,7 +653,7 @@
const emit = defineEmits(['completed'])
const { proxy } = getCurrentInstance()
-const { bill_status, project_management, plan_status } = proxy.useDict('bill_status', 'project_management', 'plan_status')
+const { bill_status, project_management, plan_status, tax_rate } = proxy.useDict('bill_status', 'project_management', 'plan_status', 'tax_rate')
const dialogVisible = ref(false)
const operationType = ref('add')
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 7849b60..c6184c8 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -640,12 +640,12 @@
placeholder="璇烽�夋嫨"
clearable
@change="calculateFromTaxRate">
- <el-option label="1"
- value="1"/>
- <el-option label="6"
- value="6"/>
- <el-option label="13"
- value="13"/>
+ <el-option
+ v-for="dict in tax_rate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -996,6 +996,7 @@
const route = useRoute();
const userStore = useUserStore();
const {proxy} = getCurrentInstance();
+const { tax_rate } = proxy.useDict("tax_rate");
const tableData = ref([]);
const productData = ref([]);
const selectedRows = ref([]);
--
Gitblit v1.9.3