Commit e8ccb97ce61f9b631d3221dbaa60a1de60a5d306

Authored by boyang
1 parent 643471d9

删除生产科邮件配置页面

src/api/sys/config.ts
... ... @@ -86,17 +86,18 @@ export function deleteConfig(params: LoginParams) {
86 86 // };
87 87  
88 88 export const getEmailList = async (params: any) => {
89   - console.log(params, 111222);
90 89 const res = await defHttp.post<any>({
91 90 url: Api.EMAIL_LIST,
92 91 params,
93 92 });
  93 + console.log(res, 111222);
94 94 const resAll = dealRecords(res.records);
95   - console.log(resAll);
  95 + console.log(resAll, 111222);
96 96 return resAll;
97 97 };
98 98  
99 99 function dealRecords(data: any) {
  100 + console.log(data, 111222);
100 101 for (const value of data) {
101 102 const emailEvents = JSON.parse(value.configInfos);
102 103 value.configInfos = emailEvents;
... ...
src/views/project/config/DrawerEdit.vue
... ... @@ -41,6 +41,7 @@
41 41 span: 23,
42 42 },
43 43 defaultValue: '',
  44 + rules: [{ required: true }],
44 45 },
45 46 {
46 47 field: 'configSample',
... ...
src/views/project/config/ProductPanel.vue deleted 100644 → 0
1   -<template>
2   - <BasicTable @register="registerTable">
3   - <template #toolbar>
4   - <a-button type="primary" @click="handleCreateModal">新建</a-button>
5   - </template>
6   - <template #bodyCell="{ column, record }">
7   - <template v-if="column.key === 'action'">
8   - <TableAction :actions="createActions(record)" />
9   - </template>
10   - </template>
11   - </BasicTable>
12   - <CreateModal @register="createModalRegister" @modal-success="handleModalSuccess" />
13   -</template>
14   -<script setup lang="ts">
15   - import { BasicTable, useTable, TableAction } from '/@/components/Table';
16   - import CreateModal from './CreateModal.vue';
17   - import { deleteConfig, getList, saveConfig } from '/@/api/sys/config';
18   - import { columnsProduct } from './data';
19   - import { useModal } from '/@/components/Modal';
20   -
21   - const [createModalRegister, { openModal }] = useModal();
22   -
23   - const [registerTable, { reload }] = useTable({
24   - api: getList,
25   - pagination: false,
26   - columns: columnsProduct,
27   - rowKey: 'id',
28   - actionColumn: {
29   - width: 160,
30   - title: 'Action',
31   - dataIndex: 'action',
32   - },
33   - });
34   -
35   - function handleCreateModal() {
36   - openModal(true);
37   - }
38   -
39   - function createActions(record: any): any[] {
40   - if (!record.editable) {
41   - return [
42   - {
43   - label: '编辑',
44   - onClick: handleEdit.bind(null, record),
45   - },
46   - {
47   - ...{
48   - label: '删除',
49   - // onClick: handleDelete.bind(null, record),
50   - popConfirm: {
51   - title: '确认删除?',
52   - confirm: handleDelete.bind(null, record),
53   - },
54   - },
55   - },
56   - ];
57   - }
58   - return [
59   - {
60   - label: '保存',
61   - onClick: handleSave.bind(null, record),
62   - },
63   - {
64   - label: '取消',
65   - popConfirm: {
66   - title: '是否取消编辑',
67   - confirm: handleCancel.bind(null, record),
68   - },
69   - },
70   - ];
71   - }
72   -
73   - async function handleSave(record) {
74   - await saveConfig({ id: record.id, relationValue: record.relationValue });
75   - handleCancel(record);
76   - reload();
77   - }
78   -
79   - function handleEdit(record: any) {
80   - record.onEdit?.(true);
81   - }
82   -
83   - function handleCancel(record) {
84   - record.onEdit?.(false, false);
85   - }
86   -
87   - function handleModalSuccess() {
88   - reload();
89   - }
90   -
91   - async function handleDelete(record) {
92   - await deleteConfig({ ids: [record.id] });
93   - reload();
94   - }
95   -</script>
96   -<style></style>
src/views/project/config/index.vue
... ... @@ -12,7 +12,6 @@
12 12 <TablePanel :searchInfo="{ settingCode: 'exchangeRate' }" :column="3"
13 13 /></Tabs.TabPane>
14 14 <Tabs.TabPane key="4" tab="邮件发送配置"><EmailPanel /></Tabs.TabPane>
15   - <Tabs.TabPane key="5" tab="生产科邮件配置"><ProductPanel /></Tabs.TabPane>
16 15 </Tabs>
17 16 </div>
18 17 </PageWrapper>
... ...
src/views/project/order/ProductText.vue
... ... @@ -3,183 +3,155 @@
3 3 v-bind="$attrs"
4 4 destroyOnClose
5 5 @register="register"
6   - title="导出"
  6 + title="生产指标书"
7 7 width="500px"
8   - :height="100"
9   - wrapClassName="h-[260px]"
  8 + :height="80"
  9 + wrapClassName="h-[340px]"
10 10 @visible-change="handleShow"
11 11 :footer="null"
12 12 >
13   - <CheckboxGroup v-model:value="checkedList" :options="options" />
14   - <div className="mt-6">
15   - <a-button type="primary" @click="handleExport" className="ml-4" :loading="exportLoading"
16   - >导出</a-button
17   - >
  13 + <div class="container">
  14 + <div v-if="isShow1 == true" style="margin-top: 50px; text-align: center">
  15 + <RadioGroup v-model:value="choose" :options="options" />
  16 + </div>
  17 + <div class="showPdf" v-if="isShow2 == true" style="margin-top: 35px; text-align: center">
  18 + <!-- <img src="/pdf.png" /> -->
  19 + <FilePptOutlined :style="{ fontSize: '20px' }" class="FilePptOutlined" />
  20 + <div style="margin-top: 1px; margin-left: 10px">生产指标书</div>
  21 + <EyeOutlined :style="{ fontSize: '20px' }" class="EyeOutlined" @click="handlePdf" />
  22 + </div>
  23 + <div class="bottom">
  24 + <a-button type="primary" @click="handleProduct" className="ml-4" v-if="isShow1 == true"
  25 + >生成</a-button
  26 + >
  27 + <a-button
  28 + type="primary"
  29 + @click="handleExport"
  30 + className="ml-4"
  31 + :loading="exportLoading"
  32 + v-if="isShow1 == false"
  33 + >发送</a-button
  34 + >
  35 + <a-button type="primary" @click="handleCancel" className="ml-4" style="margin-left: 6px"
  36 + >取消</a-button
  37 + >
  38 + </div>
18 39 </div>
19 40 </BasicModal>
20 41 </template>
21 42 <script lang="ts">
22 43 import { defineComponent, ref, computed } from 'vue';
23 44 import { BasicModal, useModalInner } from '/@/components/Modal';
24   - import { orderExport } from '/@/api/project/order';
25   - import { ROLE } from './type.d';
26   - import { CheckboxGroup } from 'ant-design-vue';
27   - import { useOrderStoreWithOut } from '/@/store/modules/order';
28   - import { useOrderInfo } from '/@/hooks/component/order';
29   - import { merge } from 'lodash-es';
30   - import {
31   - ORDER_LIST_BASE_FIELDS,
32   - ORDER_LIST_REPORT_FIELDS,
33   - ORDER_LIST_PROFIT_FIELDS,
34   - ORDER_LIST_INSPECT_FIELDS,
35   - ORDER_LIST_TRACK_FIELDS,
36   - } from './tableData';
  45 + import { RadioGroup } from 'ant-design-vue';
  46 + import { EyeOutlined, FilePptOutlined } from '@ant-design/icons-vue';
  47 + import { createImgPreview } from '@/components/Preview';
37 48  
38 49 export default defineComponent({
39   - components: { BasicModal, CheckboxGroup },
40   - props: {
41   - role: {
42   - type: String,
43   - },
44   - ids: {
45   - type: Array<string | number>,
46   - },
47   - },
  50 + components: { BasicModal, RadioGroup, EyeOutlined, FilePptOutlined },
48 51 setup(props) {
49   - const orderStore = useOrderStoreWithOut();
50   - const { manualPreform, exchangeRate } = useOrderInfo(orderStore);
51   - const checkedList = ref([
52   - // 'baseFields',
53   - // 'reportFields',
54   - // 'profitAnalysisFields',
55   - // 'trackStageFields',
56   - // 'inspectionStageFields',
57   - ]);
58 52 const loading = ref(true);
59 53 const exportLoading = ref(false);
60   - const activeUser = ref();
61 54 const info = ref();
62   - const searchData = ref({});
63   - const [register, { setModalProps, closeModal }] = useModalInner(async (data) => {
64   - searchData.value = data.data || {};
65   - activeUser.value = undefined;
66   - info.value = '';
67   - });
68   -
  55 + const choose = ref(); //选择公司
  56 + const isShow1 = ref(true); //选择公司页面
  57 + const isShow2 = ref(false); //生成PDF页面
  58 + const pdf = ref(['/pdf.png']);
  59 + const [register, { setModalProps, closeModal }] = useModalInner();
69 60 const options = computed(() => {
70 61 // 运营总监-基本信息,跟单,质检
71   - if (props.role === ROLE.DATA_REPORT_USER) {
72   - return [
73   - { label: '基本信息', value: 'baseFields' },
74   - { label: '跟单信息', value: 'trackStageFields' },
75   - { label: '质检信息', value: 'inspectionStageFields' },
76   - ];
77   - }
78   - if (props.role === ROLE.BUSINESS) {
79   - return [
80   - { label: '基本信息', value: 'baseFields' },
81   - { label: '项目报告', value: 'reportFields' },
82   - { label: '利润分析', value: 'profitAnalysisFields' },
83   - { label: '跟单信息', value: 'trackStageFields' },
84   - { label: '质检信息', value: 'inspectionStageFields' },
85   - ];
86   - }
87   - if (props.role === ROLE.TRACKER) {
88   - return [
89   - { label: '基本信息', value: 'baseFields' },
90   - { label: '利润分析', value: 'profitAnalysisFields' },
91   - { label: '跟单信息', value: 'trackStageFields' },
92   - { label: '质检信息', value: 'inspectionStageFields' },
93   - ];
94   - }
95   -
96   - if (props.role === ROLE.ADMIN) {
97   - return [
98   - { label: '基本信息', value: 'baseFields' },
99   - { label: '项目报告', value: 'reportFields' },
100   - { label: '利润分析', value: 'profitAnalysisFields' },
101   - { label: '跟单信息', value: 'trackStageFields' },
102   - { label: '质检信息', value: 'inspectionStageFields' },
103   - ];
104   - }
105   -
106   - // 质检不能导出任何
107   - return [{ label: '质检信息', value: 'inspectionStageFields' }];
  62 + return [
  63 + { label: '青岛翱特逸格饰品有限公司', value: '1' },
  64 + { label: ' 青岛吉庆天成饰品有限公司', value: '2' },
  65 + ];
108 66 });
109   -
  67 + function handleCancel() {
  68 + loading.value = true;
  69 + choose.value = '';
  70 + setModalProps({ loading: false, confirmLoading: false });
  71 + isShow1.value = true;
  72 + isShow2.value = false;
  73 + closeModal();
  74 + }
110 75 function handleShow(visible: boolean) {
111 76 if (visible) {
112 77 loading.value = true;
  78 + choose.value = '';
113 79 setModalProps({ loading: false, confirmLoading: false });
  80 + isShow1.value = true;
  81 + isShow2.value = false;
114 82 }
115 83 }
116   -
  84 + function handleProduct() {
  85 + if (choose.value == '1' || choose.value == '2') {
  86 + isShow1.value = false;
  87 + isShow2.value = true;
  88 + }
  89 + //此处设置接口传递选择的公司值
  90 + }
  91 + function handlePdf() {
  92 + // 可以使用createImgPreview返回的 PreviewActions 来控制预览逻辑,实现类似幻灯片、自动旋转之类的骚操作
  93 + // createImgPreview({
  94 + // imageList: pdf.value,
  95 + // defaultWidth: 500,
  96 + // rememberState: true,
  97 + // maskClosable: true,
  98 + // });
  99 + console.log(123);
  100 + }
117 101 async function handleExport() {
118   - const fieldVO: any = {};
119   - checkedList.value.forEach((item) => {
120   - if (item === 'baseFields') {
121   - fieldVO.baseFields = ORDER_LIST_BASE_FIELDS.map((item) => ({
122   - [item.dataIndex]: 'selected',
123   - }));
124   - fieldVO.baseFields = merge({}, ...fieldVO.baseFields);
125   - } else if (item === 'reportFields') {
126   - fieldVO.reportFields = ORDER_LIST_REPORT_FIELDS[0].children.map((item) => ({
127   - [item.dataIndex]: 'selected',
128   - }));
129   - fieldVO.reportFields = merge({}, ...fieldVO.reportFields);
130   - } else if (item === 'profitAnalysisFields') {
131   - if (props.role === ROLE.TRACKER) {
132   - fieldVO.profitAnalysisFields = ORDER_LIST_PROFIT_FIELDS[0].children
133   - .filter((k) =>
134   - [
135   - 'customerPrice',
136   - 'productionDepartmentPrice',
137   - 'productionDepartmentTotalPrice',
138   - ].includes(k.dataIndex),
139   - )
140   - .map((item) => ({
141   - [item.dataIndex]: 'selected',
142   - }));
143   - } else {
144   - fieldVO.profitAnalysisFields = ORDER_LIST_PROFIT_FIELDS[0].children.map((item) => ({
145   - [item.dataIndex]: 'selected',
146   - }));
147   - }
148   - fieldVO.profitAnalysisFields = merge({}, ...fieldVO.profitAnalysisFields);
149   - } else if (item === 'trackStageFields') {
150   - fieldVO.trackStageFields = ORDER_LIST_TRACK_FIELDS[0].children.map((item) => ({
151   - [item.dataIndex]: 'selected',
152   - }));
153   - fieldVO.trackStageFields = merge({}, ...fieldVO.trackStageFields);
154   - } else if (item === 'inspectionStageFields') {
155   - fieldVO.inspectionStageFields = ORDER_LIST_INSPECT_FIELDS[0].children.map((item) => ({
156   - [item.dataIndex]: 'selected',
157   - }));
158   - fieldVO.inspectionStageFields = merge({}, ...fieldVO.inspectionStageFields);
159   - }
160   - });
161   -
162   - //导出选中的订单
163   - fieldVO.orderIds = props.ids;
164   - exportLoading.value = true;
165   - await orderExport({ ...searchData.value, fieldVO });
166   - exportLoading.value = false;
167   -
168 102 closeModal();
169 103 }
170 104 return {
171 105 register,
172   - options,
173 106 loading,
  107 + choose,
174 108 handleShow,
  109 + handleCancel,
175 110 info,
176   - manualPreform,
177 111 handleExport,
178   - activeUser,
179   - exchangeRate,
180   - checkedList,
  112 + handleProduct,
  113 + handlePdf,
181 114 exportLoading,
  115 + isShow1,
  116 + isShow2,
  117 + options,
  118 + pdf,
182 119 };
183 120 },
184 121 });
185 122 </script>
  123 +<style scoped>
  124 + /* .container {
  125 + position: relative;
  126 + }
  127 + .bottom {
  128 + position: absolute;
  129 + bottom: 0;
  130 + } */
  131 + .container {
  132 + display: flex;
  133 + flex-direction: column;
  134 + min-height: 20vh;
  135 + }
  136 + .bottom {
  137 + margin-top: auto;
  138 + margin-left: auto;
  139 + margin-right: 20px;
  140 + }
  141 + .showPdf {
  142 + border: 2px solid;
  143 + border-color: #d8d8d8;
  144 + border-radius: 5px;
  145 + height: 30px;
  146 + position: relative;
  147 + display: flex;
  148 + }
  149 + .FilePptOutlined {
  150 + margin-top: 3px;
  151 + margin-left: 30px;
  152 + }
  153 + .EyeOutlined {
  154 + margin-top: 3px;
  155 + margin-left: 290px;
  156 + }
  157 +</style>
... ...
src/views/project/order/index.vue
... ... @@ -63,6 +63,10 @@
63 63 onClick: handleHistory.bind(null, record),
64 64 },
65 65 {
  66 + label: '跟单结果记录',
  67 + onClick: handleInvoice.bind(null, record),
  68 + },
  69 + {
66 70 // 数据分析没有编辑权限
67 71 ...((role === ROLE.ADMIN || role === ROLE.TRACKER) && {
68 72 label: '复制',
... ... @@ -294,6 +298,10 @@
294 298 return false;
295 299 }
296 300  
  301 + function handleInvoice() {
  302 + console.log(1);
  303 + }
  304 +
297 305 function handleProfitModal() {
298 306 const form = getForm();
299 307 const values = form.getFieldsValue();
... ... @@ -388,6 +396,7 @@
388 396 checkModalRegister,
389 397 handleGoCheckDetail,
390 398 handleGoFormDetail,
  399 + handleInvoice,
391 400 handleHistory,
392 401 handleAdd,
393 402 createImgPreview,
... ...
src/views/project/order/tableData.tsx
... ... @@ -99,7 +99,7 @@ export const ORDER_LIST_BASE_FIELDS = [
99 99 dataIndex: 'picUrl',
100 100 },
101 101 {
102   - title: '生产要求',
  102 + title: '产品意见',
103 103 width: 150,
104 104 dataIndex: 'productionComment',
105 105 },
... ... @@ -345,8 +345,8 @@ export const ORDER_LIST_PROFIT_FIELDS = [
345 345 return record?.profitAnalysisInfo?.profitType === '0'
346 346 ? '方式1'
347 347 : record?.profitAnalysisInfo?.profitType === '1'
348   - ? '方式2'
349   - : '';
  348 + ? '方式2'
  349 + : '';
350 350 },
351 351 },
352 352 ],
... ... @@ -787,7 +787,7 @@ export const FIELDS_BASE_INFO = [
787 787 component: 'Input',
788 788 rules: [{ required: true }],
789 789 labelWidth: 150,
790   - label: '生产要求',
  790 + label: '产品意见',
791 791 },
792 792 {
793 793 field: 'orderCount',
... ... @@ -916,15 +916,36 @@ export const FIELDS_TRACK_STAGE_INFO = [
916 916 },
917 917 {
918 918 field: 'ppConfirmResult',
919   - component: 'Input',
920   - // componentProps: {
921   - // options: [
922   - // {
923   - // label: 'ok',
924   - // value: 'ok',
925   - // },
926   - // ],
927   - // },
  919 + component: 'Select',
  920 + componentProps: {
  921 + options: [
  922 + {
  923 + label: '1+1st+ok',
  924 + value: '1+1st+ok',
  925 + },
  926 + {
  927 + label: '1+1st+Fail',
  928 + value: '1+1st+Fail',
  929 + },
  930 + {
  931 + label: '1+1st+ok',
  932 + value: '1+1st+ok',
  933 + },
  934 + {
  935 + label: '2+2st+Fail',
  936 + value: '2+2st+Fail',
  937 + },
  938 + {
  939 + label: '3+3st+ok',
  940 + value: '3+3st+ok',
  941 + },
  942 + {
  943 + label: '3+3st+Fail',
  944 + value: '3+3st+Fail',
  945 + },
  946 + ],
  947 + },
  948 + default: '请选择',
928 949 label: 'pp样品确认意见 ',
929 950 },
930 951 {
... ... @@ -1529,8 +1550,28 @@ export function getFormConfig(businessUsers: any[]): Partial&lt;FormProps&gt; {
1529 1550 mode: 'multiple',
1530 1551 options: [
1531 1552 {
1532   - label: 'ok',
1533   - value: 'ok',
  1553 + label: '1+1st+ok',
  1554 + value: '1+1st+ok',
  1555 + },
  1556 + {
  1557 + label: '1+1st+Fail',
  1558 + value: '1+1st+Fail',
  1559 + },
  1560 + {
  1561 + label: '1+1st+ok',
  1562 + value: '1+1st+ok',
  1563 + },
  1564 + {
  1565 + label: '2+2st+Fail',
  1566 + value: '2+2st+Fail',
  1567 + },
  1568 + {
  1569 + label: '3+3st+ok',
  1570 + value: '3+3st+ok',
  1571 + },
  1572 + {
  1573 + label: '3+3st+Fail',
  1574 + value: '3+3st+Fail',
1534 1575 },
1535 1576 ],
1536 1577 },
... ...
vite.config.ts
... ... @@ -20,8 +20,8 @@ export default defineApplicationConfig({
20 20 server: {
21 21 proxy: {
22 22 '/basic-api/order': {
23   - // target: 'http://39.108.227.113:8000',
24   - target: 'http://localhost:8000',
  23 + target: 'http://47.104.8.35:18000',
  24 + // target: 'http://localhost:8000',
25 25 // target: 'http://39.108.227.113:3000/mock/35',
26 26 // http://39.108.227.113:8000/order/erp/captcha/get_img_captcha_code
27 27 changeOrigin: true,
... ... @@ -29,8 +29,8 @@ export default defineApplicationConfig({
29 29 rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''),
30 30 },
31 31 '/api/localStorage/upload': {
32   - // target: 'http://39.108.227.113:8000',
33   - target: 'http://localhost:8000',
  32 + target: 'http://47.104.8.35:18000',
  33 + // target: 'http://localhost:8000',
34 34 changeOrigin: true,
35 35 ws: true,
36 36 // rewrite: (path) => {
... ...