wenhongquan 1 year ago
parent
commit
ac419fa67a
4 changed files with 327 additions and 105 deletions
  1. 20 1
      src/views/mb/task/detail/index.vue
  2. 205 92
      src/views/mb/task/disposal/index.vue
  3. 100 10
      src/views/task/detail/index.vue
  4. 2 2
      vite.config.js

+ 20 - 1
src/views/mb/task/detail/index.vue

@@ -424,8 +424,27 @@
             </van-row>
           </div>
 
+           <div class="titleheader" :style="`${'margin-top:0px'}`">
+            {{ "主材" }}
+          </div>
+          <div>
+            <van-row>
+              <van-col
+                :span="24"
+                v-for="(item, index1) in JSON.parse(
+                  taskinfo.tblTaskLogList.filter((ii) => ii.taskStatus === 3)[0]
+                    .logDes ?? '{}'
+                ).zcdata"
+                >
+                  <div>{{ item.type }}【{{ item.cz }}、{{ item.gg }}】:{{ item.num }}{{ item.dw }}</div>
+
+
+              </van-col>
+            </van-row>
+          </div>
+
           <div class="titleheader" :style="`${'margin-top:0px'}`">
-            {{ "耗材" }}
+            {{ "材" }}
           </div>
           <div>
             <van-row>

+ 205 - 92
src/views/mb/task/disposal/index.vue

@@ -29,14 +29,20 @@
             </van-field>
           </van-cell-group>
           <div style="margin: 16px">
-            <van-button round block type="primary" native-type="submit" @click="onSubmitbh">
+            <van-button
+              round
+              block
+              type="primary"
+              native-type="submit"
+              @click="onSubmitbh"
+            >
               提交
             </van-button>
           </div>
         </van-form>
       </div>
       <div v-if="route.query.bh != '1'">
-        <van-form >
+        <van-form>
           <van-cell-group>
             <van-field
               v-model="czobj.qsdes"
@@ -77,9 +83,7 @@
                     <div style="margin-bottom: 10px">
                       <van-row>
                         <!-- <van-col :span="8"><div style="text-align: right;padding-right:6px">{{ item.name }}:</div></van-col> -->
-                        <van-col
-                          :span="item.hasOwnProperty('value2') ? 16 : 24"
-                        >
+                        <van-col :span="item.hasOwnProperty('value2') ? 16 : 24">
                           <van-field
                             v-model="item.value1"
                             placeholder="请输入"
@@ -114,9 +118,7 @@
                     <div style="margin-bottom: 10px">
                       <van-row>
                         <!-- <van-col :span="8"><div style="text-align: right;padding-right:6px">{{ item.name }}:</div></van-col> -->
-                        <van-col
-                          :span="item.hasOwnProperty('value2') ? 16 : 24"
-                        >
+                        <van-col :span="item.hasOwnProperty('value2') ? 16 : 24">
                           <van-field
                             v-model="item.value1"
                             placeholder="请输入"
@@ -145,15 +147,138 @@
                   </van-col>
                 </van-row>
               </van-tab>
-              <van-tab title="耗材" name="3">
+              <van-tab title="主材" name="3" style="background:#8080800d">
+                <van-row >
+                  <van-col :span="24" v-for="item in czobj.zcdata">
+                    <van-cell-group inset style="margin-top: 10px;">
+                      <van-field
+                        v-model="item.type"
+                        is-link
+                        readonly
+                        name="picker"
+                        label="类型"
+                        placeholder="点击选择类型"
+                        @click="showpicker = true"
+                      />
+                      <van-popup v-model:show="showpicker" position="bottom">
+                        <van-picker
+                          :columns="
+                            zctype.map((i) => {
+                              return { text: i.label, value: i.label };
+                            })
+                          "
+                          @confirm="
+                            ({ selectedOptions }) => {
+                              item.type = selectedOptions[0].text;
+                            }
+                          "
+                          @cancel="showpicker = false"
+                        />
+                      </van-popup>
+                       <van-field
+                        v-model="item.cz"
+                        is-link
+                        readonly
+                        name="picker"
+                        label="材质"
+                        placeholder="点击选择材质"
+                        @click="showpicker1 = true"
+                      />
+                      <van-popup v-model:show="showpicker1" position="bottom">
+                        <van-picker
+                          :columns="
+                            zccz.map((i) => {
+                              return { text: i.label, value: i.label };
+                            })
+                          "
+                          @confirm="
+                            ({ selectedOptions }) => {
+                              item.cz = selectedOptions[0].text;
+                            }
+                          "
+                          @cancel="showpicker1 = false"
+                        />
+                      </van-popup>
+                       <van-field
+                        v-model="item.gg"
+                        is-link
+                        readonly
+                        name="picker"
+                        label="规格"
+                        placeholder="点击选择规格"
+                        @click="showpicker2 = true"
+                      />
+                      <van-popup v-model:show="showpicker2" position="bottom">
+                        <van-picker
+                          :columns="
+                            zcgg.map((i) => {
+                              return { text: i.label, value: i.label };
+                            })
+                          "
+                          @confirm="
+                            ({ selectedOptions }) => {
+                              item.gg = selectedOptions[0].text;
+                            }
+                          "
+                          @cancel="showpicker2 = false"
+                        />
+                      </van-popup>
+                       <van-field v-model="item.num" type="number" label="数量" />
+                       <van-field
+                        v-model="item.dw"
+                        is-link
+                        readonly
+                        name="picker"
+                        label="单位"
+                        placeholder="点击选择单位"
+                        @click="showpicker3 = true"
+                      />
+                      <van-popup v-model:show="showpicker3" position="bottom">
+                        <van-picker
+                          :columns="
+                            zcdw.map((i) => {
+                              return { text: i.label, value: i.label };
+                            })
+                          "
+                          @confirm="
+                            ({ selectedOptions }) => {
+                              item.dw= selectedOptions[0].text;
+                            }
+                          "
+                          @cancel="showpicker3 = false"
+                        />
+                      </van-popup>
+                    </van-cell-group>
+
+                  </van-col>
+
+                  <van-col :span="24" style="text-align: center;">
+                    <van-button
+                      round
+                      block
+                      type="primary"
+                      style="margin-top: 10px;"
+                      size="small"
+                      @click="
+                        czobj.zcdata.push({
+                          index: czobj.zcdata.length,
+                          label: '',
+                          value: '',
+                        })
+                      "
+                    >
+                      新增
+                    </van-button>
+                  </van-col>
+                </van-row>
+              </van-tab>
+              <van-tab title="辅材" name="3">
                 <van-row>
                   <van-col :span="24" v-for="item in czobj.hcdata">
                     <div style="margin-bottom: 10px">
                       <van-row>
                         <!-- <van-col :span="8"><div style="text-align: right;padding-right:6px">{{ item.name }}:</div></van-col> -->
-                        <van-col
-                          :span="item.hasOwnProperty('value2') ? 16 : 24"
-                        >
+                        <van-col :span="item.hasOwnProperty('value2') ? 16 : 24">
                           <van-field
                             v-model="item.value1"
                             placeholder="请输入"
@@ -184,29 +309,17 @@
               </van-tab>
             </van-tabs>
 
-            <van-field
-              v-model="czobj.images[0]"
-              name="处置前照片"
-              label="处置前照片"
-            >
+            <van-field v-model="czobj.images[0]" name="处置前照片" label="处置前照片">
               <template #input>
                 <ImageUpload v-model="czobj.images[0]"></ImageUpload>
               </template>
             </van-field>
-            <van-field
-              v-model="czobj.images[1]"
-              name="处置中照片"
-              label="处置中照片"
-            >
+            <van-field v-model="czobj.images[1]" name="处置中照片" label="处置中照片">
               <template #input>
                 <ImageUpload v-model="czobj.images[1]"></ImageUpload>
               </template>
             </van-field>
-            <van-field
-              v-model="czobj.images[2]"
-              name="处置后照片"
-              label="处置后照片"
-            >
+            <van-field v-model="czobj.images[2]" name="处置后照片" label="处置后照片">
               <template #input>
                 <ImageUpload v-model="czobj.images[2]"></ImageUpload>
               </template>
@@ -227,10 +340,7 @@
               </template>
             </van-field>
             <div style="padding-top: 10px">
-              <MapSelect
-                ref="mapSelect"
-                v-model:formv="formlocation"
-              ></MapSelect>
+              <MapSelect ref="mapSelect" v-model:formv="formlocation"></MapSelect>
             </div>
           </van-cell-group>
 
@@ -238,14 +348,14 @@
             <van-row>
               <van-col :span="12">
                 <div style="padding-right: 5px">
-                  <van-button round block type="primary"  @click="onSubmit">
+                  <van-button round block type="primary" @click="onSubmit">
                     暂存
                   </van-button>
                 </div>
               </van-col>
               <van-col :span="12">
                 <div style="padding-left: 5px">
-                  <van-button round block type="primary"  @click="onSubmit1">
+                  <van-button round block type="primary" @click="onSubmit1">
                     处置完成
                   </van-button>
                 </div>
@@ -295,15 +405,32 @@ import {
   addUser,
 } from "@/api/system/user";
 
-const { sys_area, task_work, task_car, task_consumables } = useDict(
+const {
+  sys_area,
+  task_work,
+  task_car,
+  task_consumables,
+  zctype,
+  zccz,
+  zcdw,
+  zcgg,
+} = useDict(
   "sys_area",
   "task_work",
   "task_car",
-  "task_consumables"
+  "task_consumables",
+  "zctype",
+  "zccz",
+  "zcdw",
+  "zcgg"
 );
 
 const activeName = "1";
 const route = useRoute();
+const showpicker = ref(false);
+const showpicker1 = ref(false);
+const showpicker2 = ref(false);
+const showpicker3 = ref(false);
 
 const bhobj = ref({ resonRemark: [], files: "", images: [] });
 
@@ -313,6 +440,7 @@ const czobj = ref({
   gzldata: [],
   clsbdata: [],
   hcdata: [],
+  zcdata: [],
 });
 const xyobj = ref({
   bzxytime: "",
@@ -359,11 +487,7 @@ try {
     }
     task.tblTaskLogList = lists;
 
-
-
-    var logs1 = (task.tblTaskLogList ?? []).filter(
-      (i) => i.taskStatus == -1
-    );
+    var logs1 = (task.tblTaskLogList ?? []).filter((i) => i.taskStatus == -1);
 
     if (Array.isArray(logs1) && logs1.length > 0) {
       var log = JSON.parse(logs1[0].logDes);
@@ -373,16 +497,12 @@ try {
       xyobj.value = log;
     }
 
-
-
-
-
     var logs = (task.tblTaskLogList ?? []).filter((i) => i.taskStatus == 3);
 
     if (Array.isArray(logs) && logs.length > 0) {
       var log = JSON.parse(logs[0].logDes);
       czobj.value = log;
-      console.log(log)
+      console.log(log);
       if (Array.isArray(log.images)) {
         if (log.images.length < 3) {
           czobj.value.images = log.images.concat(["", "", ""]);
@@ -401,6 +521,9 @@ try {
       if (!czobj.value.hasOwnProperty("hcdata")) {
         czobj.value.hcdata = [];
       }
+      if (!czobj.value.hasOwnProperty("zcdata")) {
+        czobj.value.zcdata = [];
+      }
     }
   } else {
     Toast.fail("未查到任务");
@@ -470,71 +593,61 @@ if (route.query.bh != "1") {
     () => {
       taskinfo.value.taskLocation = formlocation.value.locations;
       if (formlocation.value.locations != "") {
-        mapSelect.value.getlocationaddr(
-          formlocation.value.locations,
-          (data) => {
-            var qu = data.regeocode.addressComponent.district;
-            if (qu) {
-              for (var i in sys_area.value) {
-                if (sys_area.value[i].label == qu) {
-                  taskinfo.value.taskArea = sys_area.value[i].value;
-                }
+        mapSelect.value.getlocationaddr(formlocation.value.locations, (data) => {
+          var qu = data.regeocode.addressComponent.district;
+          if (qu) {
+            for (var i in sys_area.value) {
+              if (sys_area.value[i].label == qu) {
+                taskinfo.value.taskArea = sys_area.value[i].value;
               }
             }
           }
-        );
+        });
       }
     }
   );
 }
 
-
 const onSubmitbh = async () => {
   Toast.loading({
     message: "加载中...",
     forbidClick: true,
   });
-    closeTask({
+  closeTask({
+    taskId: Number(route.query.id),
+    logDes: JSON.stringify(bhobj.value),
+  }).then(async (res) => {
+    var logc = gettaskitemlogdes(taskinfo.value, -1);
+    if (logc != null) {
+      xyobj.value = logc;
+    }
+    xyobj.value.czwctime = moment().format("YYYY-MM-DD HH:mm:ss");
+    await ddTask({
       taskId: Number(route.query.id),
-      logDes: JSON.stringify(bhobj.value),
-    }).then(async (res) => {
-      var logc = gettaskitemlogdes(taskinfo.value, -1);
-      if (logc != null) {
-        xyobj.value = logc;
-      }
-      xyobj.value.czwctime = moment().format("YYYY-MM-DD HH:mm:ss");
-      await ddTask({
-        taskId: Number(route.query.id),
-        taskStatus: -1,
-        logDes: JSON.stringify(xyobj.value),
-      });
-      Toast.success("成功");
-      router.back();
+      taskStatus: -1,
+      logDes: JSON.stringify(xyobj.value),
     });
-
+    Toast.success("成功");
+    router.back();
+  });
 };
 
-watch(
-  [() => xyobj.value.bzxytime, xyobj.value.ddxctime, xyobj.value.czwctime],
-  () => {
-    if (xyobj.value.bzxytime != "" && xyobj.value.czwctime != "") {
-      xyobj.value.clsc =
-        (
-          (moment(xyobj.value.czwctime).unix() -
-            moment(xyobj.value.bzxytime).unix()) /
-          3600.0
-        ).toFixed(2) + "";
-    }
-    if (xyobj.value.ddxctime != "" && xyobj.value.czwctime != "") {
-      xyobj.value.zysc =
-        (
-          (moment(xyobj.value.czwctime).unix() -
-            moment(xyobj.value.ddxctime).unix()) /
-          3600.0
-        ).toFixed(2) + "";
-    }
+watch([() => xyobj.value.bzxytime, xyobj.value.ddxctime, xyobj.value.czwctime], () => {
+  if (xyobj.value.bzxytime != "" && xyobj.value.czwctime != "") {
+    xyobj.value.clsc =
+      (
+        (moment(xyobj.value.czwctime).unix() - moment(xyobj.value.bzxytime).unix()) /
+        3600.0
+      ).toFixed(2) + "";
   }
-);
+  if (xyobj.value.ddxctime != "" && xyobj.value.czwctime != "") {
+    xyobj.value.zysc =
+      (
+        (moment(xyobj.value.czwctime).unix() - moment(xyobj.value.ddxctime).unix()) /
+        3600.0
+      ).toFixed(2) + "";
+  }
+});
 
 const onSubmit = async () => {
   Toast.loading({

+ 100 - 10
src/views/task/detail/index.vue

@@ -664,9 +664,30 @@
               </el-col>
             </el-row>
           </div>
+           <div class="titleheader" :style="`${'margin-top:0px'}`">
+            {{ "主材" }}
+          </div>
+          <div>
+            <el-row>
+              <el-col :span="24">
+
+               <el-table :data="JSON.parse(
+                  taskinfo.tblTaskLogList.filter((ii) => ii.taskStatus === 3)[0]
+                    .logDes ?? '{}'
+                ).zcdata">
+                 <el-table-column label="类型" prop="type"></el-table-column>
+                 <el-table-column label="材质" prop="cz"></el-table-column>
+                 <el-table-column label="规格" prop="gg"></el-table-column>
+                 <el-table-column label="数量" prop="num"></el-table-column>
+                 <el-table-column label="单位" prop="dw" ></el-table-column>
+               </el-table>
+               </el-col>
+
+            </el-row>
+          </div>
 
           <div class="titleheader" :style="`${'margin-top:0px'}`">
-            {{ "耗材" }}
+            {{ "材" }}
           </div>
           <div>
             <el-row>
@@ -1078,7 +1099,55 @@
                   </el-col>
                 </el-row>
               </el-tab-pane>
-              <el-tab-pane label="耗材" name="hc">
+                <el-tab-pane label="主材" name="zc" style="position:relative">
+
+                <el-row>
+                  <el-col :span="24">
+                    <el-table :data="czobj.zcdata">
+                      <el-table-column label="类型">
+                        <template #default="scope">
+                           <el-select v-model="scope.row.type" >
+                             <el-option :label="item.label" :value="item.label" v-for="item in zctype"></el-option>
+                           </el-select>
+                        </template>
+                      </el-table-column>
+                      <el-table-column label="材质">
+                         <template #default="scope">
+                           <el-select v-model="scope.row.cz" >
+                             <el-option :label="item.label" :value="item.label" v-for="item in zccz"></el-option>
+                           </el-select>
+                        </template>
+                      </el-table-column>
+                      <el-table-column label="规格">
+                      <template #default="scope">
+                           <el-select v-model="scope.row.gg" >
+                             <el-option :label="item.label" :value="item.label" v-for="item in zcgg"></el-option>
+                           </el-select>
+                        </template>
+                        </el-table-column>
+                      <el-table-column label="数量">
+                         <template #default="scope">
+                            <el-input-number v-model="scope.row.num" ></el-input-number>
+                         </template>
+                      </el-table-column>
+                      <el-table-column label="单位">
+                         <template #default="scope">
+                           <el-select v-model="scope.row.dw" >
+                             <el-option :label="item.label" :value="item.label" v-for="item in zcdw"></el-option>
+                           </el-select>
+                        </template>
+                      </el-table-column>
+                      <el-table-column label="操作">
+                        <template #default="scope">
+                           <el-button type="danger" @click="czobj.zcdata.splice(scope.$index, 1)">删除</el-button>
+                        </template>
+                      </el-table-column>
+                    </el-table>
+                  </el-col>
+                </el-row>
+                 <el-button type="primary" style="position:absolute;right:10px;top:10px;z-index: 10;" @click="addnewitem" >新增</el-button>
+              </el-tab-pane>
+              <el-tab-pane label="辅材" name="hc">
                 <el-row>
                   <el-col :span="12" v-for="item in czobj.hcdata">
                     <div style="margin-bottom: 10px">
@@ -1116,23 +1185,28 @@
             </el-tabs>
           </el-form-item>
           <el-row>
-            <el-col :span="8"
+            <el-col :span="6"
               ><el-form-item label="现场照片(处置前)">
                 <ImageUpload
                   v-model="czobj.images[0]"
                   :limit="1"
                 ></ImageUpload> </el-form-item
             ></el-col>
-            <el-col :span="8">
+            <el-col :span="6">
               <el-form-item label="(处置中)">
                 <ImageUpload v-model="czobj.images[1]" :limit="1"></ImageUpload>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
+            <el-col :span="6">
               <el-form-item label="(处置后)">
                 <ImageUpload v-model="czobj.images[2]" :limit="1"></ImageUpload>
               </el-form-item>
             </el-col>
+            <el-col :span="6">
+              <el-form-item label="(处置后远景)">
+                <ImageUpload v-model="czobj.images[3]" :limit="1"></ImageUpload>
+              </el-form-item>
+            </el-col>
           </el-row>
         </el-form>
       </div>
@@ -1194,6 +1268,10 @@ const {
   task_work,
   task_car,
   task_consumables,
+  zctype,
+  zccz,
+  zcdw,
+  zcgg
 } = useDict(
   "task_status",
   "task_type",
@@ -1201,7 +1279,11 @@ const {
   "task_event_category",
   "task_work",
   "task_car",
-  "task_consumables"
+  "task_consumables",
+  "zctype",
+  "zccz",
+  "zcdw",
+  "zcgg"
 );
 
 const route = useRoute();
@@ -1216,10 +1298,11 @@ const bhobj = ref({ resonRemark: [], files: "", images: [] });
 const czobj = ref({
   qsdes: "",
   czff:"",
-  images: ["", "", ""],
+  images: ["", "", "",""],
   gzldata: [],
   clsbdata: [],
   hcdata: [],
+  zcdata:[]
 });
 const xyobj = ref({
   bzxytime: "",
@@ -1344,6 +1427,13 @@ const addnewitem = () => {
       value: "",
     });
   }
+   if (cztblaname.value === "zc") {
+    czobj.value.zcdata.push({
+      index: czobj.value.zcdata.length,
+      label: "",
+      value: "",
+    });
+  }
 };
 
 watch(
@@ -1494,13 +1584,13 @@ const gettasklist = () => {
       var log = JSON.parse(logs[0].logDes);
       czobj.value = log;
       if (Array.isArray(log.images)) {
-        if (log.images.length < 3) {
-          czobj.value.images = log.images.concat(["", "", ""]);
+        if (log.images.length < 4) {
+          czobj.value.images = log.images.concat(["", "", "",""]);
         } else {
           czobj.value.images = log.images;
         }
       } else {
-        czobj.value.images = ["", "", ""];
+        czobj.value.images = ["", "", "",""];
       }
     }
     if (Array.isArray(logs1) && logs1.length > 0) {

+ 2 - 2
vite.config.js

@@ -37,8 +37,8 @@ export default defineConfig(({ mode, command }) => {
         proxy: {
           // 'http://nnbpbg.xt.wenhq.top:8083'
           "/dev-api": {
-            target: "http://39.104.26.229/api",
-            // target:"http://nnbpbg.xt.wenhq.top:8083/api",
+            // target: "http://39.104.26.229/api",
+            target:"http://localhost:8080/api",
             changeOrigin: true,
             rewrite: (p) => p.replace(/^\/dev-api/, ""),
           },