Ver Fonte

添加新配件

xiaohaizhao há 3 semanas atrás
pai
commit
e2230a8ea4
2 ficheiros alterados com 113 adições e 43 exclusões
  1. 24 14
      pages/select/accessories.vue
  2. 89 29
      pages/workOrder/work.vue

+ 24 - 14
pages/select/accessories.vue

@@ -7,9 +7,9 @@
                 <up-icon name="close-circle-fill" size="20" />
             </view>
         </view>
-        <view style="height: 20rpx;" />
     </block>
-
+    <up-tabs :list="[{ name: '选择新配件' }, { name: '选择旧配件' }]" :current="result.selected == 'newtitems' ? 0 : 1"
+        @click="changeTabs" />
     <My_listbox v-if="!isBom" ref="listBox" :empty="!list.length" :pullDown="!isBom" @getlist="getList">
         <showList :result="resultIds" :list='list' @onClick="onSelect" />
         <view style="height: 200rpx;" />
@@ -60,7 +60,7 @@
 
     <My_listbox v-else ref="listBox" :empty="true" @getlist="getBomList" />
     <view class="footer">
-        <My-button :text="`确定添加(${resultIds.length})`" @onClick="onAdd" />
+        <My-button :text="`确定添加 ${result.newtitems.length} / ${result.oldtitems.length} 配件`" @onClick="onAdd" />
     </view>
 </template>
 
@@ -72,7 +72,9 @@ const { $Http } = getCurrentInstance().proxy;
 
 const listBox = ref(null);
 const isBom = ref(false);
-let result = reactive([]);
+let result = reactive({
+    ...$Http.basicsData
+});
 const resultIds = ref([]);
 
 const content = reactive({
@@ -84,28 +86,36 @@ const content = reactive({
     }
 })
 
+function changeTabs(e) {
+    uni.setNavigationBarTitle({
+        title: e.name
+    });
+    result.selected = e.name == "选择新配件" ? "newtitems" : "oldtitems";
+    resultIds.value = result[result.selected].map(item => item.itemid);
+}
+
 function onAdd() {
     $Http.selectAcc(result)
 }
 
 function onSelect(e) {
-    if (result.some(item => item.itemid == e.itemid)) {
-        result = result.filter(item => item.itemid != e.itemid);
+    if (result[result.selected].some(item => item.itemid == e.itemid)) {
+        result[result.selected] = result[result.selected].filter(item => item.itemid != e.itemid);
     } else {
-        result.push(e);
+        result[result.selected].push(e);
     }
-    resultIds.value = result.map(item => item.itemid);
+    resultIds.value = result[result.selected].map(item => item.itemid);
 }
 
 const list = ref([]);
 
-onLoad((options) => {
-    console.log("options", options)
-    console.log("$Http", $Http)
+onLoad(() => {
+    console.log("$Http.basicsData", result)
+    uni.setNavigationBarTitle({
+        title: result.selected == "oldtitems" ? "选择旧配件" : "选择新配件",
+    })
+    resultIds.value = result[result.selected].map(item => item.itemid);
 
-    result = result.concat(JSON.parse(options.list || '[]'));
-    resultIds.value = result.map(item => item.itemid);
-    console.log("初始选中", result, resultIds.value)
     let content1 = $Http.content1;
     content.sys_enterpriseid = content1.sys_enterpriseid;
     content.sa_workorderid = content1.sa_workorderid;

+ 89 - 29
pages/workOrder/work.vue

@@ -30,7 +30,7 @@
             </up-form-item>
 
             <view v-if="workpresetjson.additem != 0">
-                <up-form-item label="是否更换配件" prop="oldtitems" :required="workpresetjson.additem == 11">
+                <up-form-item label="是否更换配件" prop="additem" :required="workpresetjson.additem == 11">
                     <view class="options-box">
                         <view class="option" :class="form.additem == item.value ? 'active' : ''" v-for="item in [
                             { value: '1', name: '是' },
@@ -41,14 +41,23 @@
                 </up-form-item>
 
                 <block v-if="form.additem == 1">
-                    <up-form-item label="配件清单" prop="items" required>
+                    <up-form-item :label="`新配件(${data.newtitems.length})`" prop="newtitems" required>
                         <view class="options-box">
-                            <view class="option active" hover-class="navigator-hover" @click="toAddItem">
-                                + 去添加配件
+                            <view class="option active" hover-class="navigator-hover" @click="toAddItem('newtitems')">
+                                + 去添加配件
                             </view>
                         </view>
                     </up-form-item>
-                    <accList :list="data.oldtitems" @deleteItem="deleteItem" />
+                    <accList :list="data.newtitems" @deleteItem="deleteItem($event, 'newtitems')" />
+
+                    <up-form-item :label="`旧配件(${data.oldtitems.length})`">
+                        <view class="options-box">
+                            <view class="option active" hover-class="navigator-hover" @click="toAddItem('oldtitems')">
+                                + 去添加旧配件
+                            </view>
+                        </view>
+                    </up-form-item>
+                    <accList :list="data.oldtitems" @deleteItem="deleteItem($event, 'oldtitems')" />
                 </block>
             </view>
 
@@ -141,24 +150,38 @@ function beforeleave(e) {
 }
 
 // 去添加配件
-function toAddItem() {
+function toAddItem(key = 'oldtitems') {
     if (data.status == '1') return;
+    $Http.basicsData = {
+        selected: key,
+        newtitems: deepCloneArray(data.newtitems) || [],
+        oldtitems: deepCloneArray(data.oldtitems) || [],
+    }
     uni.navigateTo({
-        url: '/pages/select/accessories?list=' + JSON.stringify(data.oldtitems || []),
+        url: '/pages/select/accessories'
     });
-
     $Http.selectAcc = (res) => {
-        data.oldtitems = res;
-        form.oldtitems = data.oldtitems.length ? '1' : '';
+        data.newtitems = res.newtitems;
+        data.oldtitems = res.oldtitems;
+        form.newtitems = res.newtitems.length ? '1' : '';
+
         uni.navigateBack();
         delete $Http.selectAcc
+        delete $Http.basicsData
     }
 }
 
+// 帮我写一个[{},{}] 深拷贝的方法
+function deepCloneArray(arr) {
+    return arr.map(item => {
+        return { ...item };
+    })
+}
+
 // 删除配件
-function deleteItem(item) {
-    data.oldtitems = data.oldtitems.filter(v => v.itemid !== item.itemid);
-    form.oldtitems = data.oldtitems.length ? '1' : '';
+function deleteItem(item, key = 'oldtitems') {
+    data[key] = data[key].filter(v => v.itemid !== item.itemid);
+    if (key == 'newtitems') form.newtitems = data.newtitems.length ? '1' : '';
 }
 
 const form = reactive({
@@ -171,6 +194,7 @@ const form = reactive({
     amountpay: "", // 费用支付
     fileupload: "", // 上传图片
     oldtitems: "",//配件
+    newtitems: "",//配件
 });
 
 let keys = {
@@ -224,9 +248,16 @@ onLoad(() => {
         data.oldtitems = data.detail[0].oldtitems.map(item => {
             item.imageUrl = item.attinfos.length ? $Http.getSpecifiedImage(item.attinfos[0]) : ''
             return item;
-        });;
+        });
+        data.newtitems = data.detail[0].newtitems.map(item => {
+            item.imageUrl = item.attinfos.length ? $Http.getSpecifiedImage(item.attinfos[0]) : ''
+            return item;
+        });
+
+        form.newtitems = data.newtitems.length ? '1' : '';
         form.oldtitems = data.oldtitems.length ? '1' : '';
-        form.additem = form.oldtitems.length ? '1' : '0';
+        form.additem = form.newtitems || form.oldtitems ? '1' : '0';
+
     }
 
     rules = Object.assign(rules, {
@@ -257,6 +288,8 @@ onLoad(() => {
         fileupload: [
             { required: workpresetjson.fileupload == 11, message: '请上传图片', trigger: 'change' }
         ],
+        additem: [{ required: workpresetjson.additem == 11, message: '请选择是否更换配件', trigger: 'change' }]
+
     })
 
     setTimeout(() => {
@@ -298,9 +331,10 @@ function submit() {
     if (loading.value) return;
     if (upload.value.isUploading()) return;
 
-    let traintitem = []
+    let traintitem = [],
+        newtitems = [];
     try {
-        if (form.additem != 0) {
+        if (form.additem == 1) {
             traintitem = data.oldtitems.map(v => {
                 return {
                     itemid: v.itemid,
@@ -310,8 +344,19 @@ function submit() {
                     qty: v.qty || v.packageqty || 1,
                 }
             })
+
+            newtitems = data.newtitems.map(v => {
+                return {
+                    itemid: v.itemid,
+                    itemname: v.itemname,
+                    model: v.model,
+                    price: v.price,
+                    qty: v.qty || v.packageqty || 1,
+                }
+            })
         } else {
             traintitem = []
+            newtitems = []
         }
     } catch (error) {
 
@@ -324,7 +369,8 @@ function submit() {
                 "sa_workorder_nodeid": data.sa_workorder_nodeid,
                 isconfirm: 1,
                 ...formToContent(form),
-                traintitem
+                traintitem,
+                newtitems
             };
             uni.showModal({
                 title: '提示',
@@ -367,10 +413,11 @@ function submit() {
 function save() {
     if (loading1.value) return;
     if (upload.value.isUploading()) return;
-    let traintitem = []
-    console.log("oldtitems", data.oldtitems)
+
+    let traintitem = [],
+        newtitems = [];
     try {
-        if (form.additem != 0) {
+        if (form.additem == 1) {
             traintitem = data.oldtitems.map(v => {
                 return {
                     itemid: v.itemid,
@@ -380,21 +427,34 @@ function save() {
                     qty: v.qty || v.packageqty || 1,
                 }
             })
+
+            newtitems = data.newtitems.map(v => {
+                return {
+                    itemid: v.itemid,
+                    itemname: v.itemname,
+                    model: v.model,
+                    price: v.price,
+                    qty: v.qty || v.packageqty || 1,
+                }
+            })
         } else {
             traintitem = []
+            newtitems = []
         }
     } catch (error) {
-        console.log(error)
 
     }
+
+
     let content = {
         "sa_workorderid": data.sa_workorderid,
         "sa_workorder_nodeid": data.sa_workorder_nodeid,
         isconfirm: 0,
         ...formToContent(form),
-        traintitem
+        traintitem,
+        newtitems
     };
-    console.log('content', content)
+
     loading1.value = true;
     $Http.basic({
         "id": "20230209094203",
@@ -419,7 +479,7 @@ function clickRadio(value, key) {
     if (data.status == '1') return;
     form[key] = form[key] == value ? "" : value;
     if (key == 'passcheck') {
-        if (value == '0') {
+        if (form[key] == '0') {
             rules.textedit[0].required = true;
             rules.fileupload[0].required = true;
         } else {
@@ -428,12 +488,12 @@ function clickRadio(value, key) {
         }
         uFormRef.value.setRules(rules);
     } else if (key == 'additem') {
-        if (value == '1') {
-            rules.oldtitems = [{ required: true, message: '请选择配件清单', trigger: 'change' }];
+        if (form[key] == '1') {
+            rules.newtitems = [{ required: true, message: '请选择新配件', trigger: 'change' }];
         } else {
-            delete rules.oldtitems;
+            delete rules.newtitems;
         }
-        if (value == '1' && !data.oldtitems.length) toAddItem();
+        if (form[key] == '1' && !data.oldtitems.length) toAddItem('newtitems');
         form.oldtitems = data.oldtitems.length ? '1' : '';
         uFormRef.value.setRules(rules);
     }