Procházet zdrojové kódy

Merge branch 'master' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-wt

yusheng před 9 měsíci
rodič
revize
1db87a091d

+ 161 - 3
src/views/bpm/doneTickets/maintenance/detail.vue

@@ -8,7 +8,7 @@
               type="primary"
               @click="
                 $router.push({
-                  path: '/tickets',
+                  path: '/doneTickets',
                   query: { title: '保养工单' }
                 })
               "
@@ -137,8 +137,8 @@
         </div> -->
 
         <!-- 巡点检、保养设备 -->
-        <div class="maintain_equipment_info">
-          <HeaderTitle title="巡点检设备" size="16px"></HeaderTitle>
+         <div class="maintain_equipment_info">
+          <HeaderTitle title="保养设备" size="16px"></HeaderTitle>
           <div class="maintain_equipment_info_content">
             <div
               class="equipment_item"
@@ -228,10 +228,40 @@
                       </div>
                     </template>
                   </el-table-column>
+                  <el-table-column
+                    label="现场照片"
+                    prop="photoList"
+                    width="300"
+                  >
+                    <template slot-scope="scope">
+                      <div>
+                        <el-image
+                          v-for="imgItem in scope.row.photoList"
+                          :key="imgItem"
+                          style="width: 100px; height: 100px"
+                          :src="imgItem"
+                          :preview-src-list="scope.row.photoList"
+                        >
+                        </el-image>
+                      </div>
+                    </template>
+                  </el-table-column>
                   <el-table-column label="结果" prop="result" width="200">
                   </el-table-column>
                 </el-table>
               </div>
+              <!-- <div class="matter_info">
+                <el-table :data="item.workItems || []" border>
+                  <el-table-column label="序号" align="center" width="80">
+                    <template slot-scope="scope">
+                      <span>{{ scope.$index + 1 }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="事项" prop="item" />
+                  <el-table-column label="内容" prop="content" />
+                  <el-table-column label="标准" prop="standard" />
+                </el-table>
+              </div> -->
             </div>
             <!-- <div class="btnbox" v-if="$route.query.isshow">
               <el-button class="confirm-btn" type="danger" plain @click="reject"
@@ -264,6 +294,134 @@
           </div>
         </div>
 
+
+        <!-- <div class="maintain_equipment_info">
+          <HeaderTitle title="巡点检设备" size="16px"></HeaderTitle>
+          <div class="maintain_equipment_info_content">
+            <div
+              class="equipment_item"
+              v-for="item in infoData.deviceList"
+              :key="item.id"
+            >
+              <div class="equipment_info" v-if="item.substance">
+                <div class="item_info">
+                  <span class="item_label">设备编码</span>
+                  <span class="item_value">{{ item.substance.code }}</span>
+                </div>
+                <div class="item_info">
+                  <span class="item_label">设备名称</span>
+                  <span class="item_value">{{ item.substance.name }}</span>
+                </div>
+                <div class="item_info">
+                  <span class="item_label">设备型号</span>
+                  <span class="item_value">{{ item.substance.model }}</span>
+                </div>
+                <div class="item_info">
+                  <span class="item_label">设备位置</span>
+                  <span class="item_value">{{
+                    item.substance.positionNames
+                  }}</span>
+                </div>
+              </div>
+              <p>操作事项</p>
+              <div class="ruleMatters_box">
+                <el-table :data="item.workItems" border>
+                  <el-table-column label="序号" width="50">
+                    <template slot-scope="scope">
+                      <span>{{ scope.$index + 1 }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="事项" prop="name" width="100">
+                    <template slot-scope="scope">
+                      <div>
+                        <span>{{ scope.row.name }}</span>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="内容" prop="content" width="300">
+                    <template slot-scope="scope">
+                      <div>
+                        <span>{{ scope.row.content }}</span>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="操作指导" prop="operationGuide">
+                    <template slot-scope="scope">
+                      <div class="operationGuide_box">
+                        <div class="left_content">
+                          <template v-if="scope.row.operationGuide">
+                            <div
+                              v-for="(item, index) in scope.row.operationGuide
+                                .toolList"
+                              :key="item.id"
+                              >{{ index + 1 }}.{{ item.name }}</div
+                            >
+                          </template>
+                        </div>
+                        <div class="line"></div>
+                        <div class="right_content">
+                          <template v-if="scope.row.operationGuide">
+                            <div
+                              v-for="(item, index) in scope.row.operationGuide
+                                .procedureList"
+                              :key="item.id"
+                              >{{ index + 1 }}.{{ item.content }}</div
+                            >
+                          </template>
+                        </div>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="标准" prop="norm" width="100">
+                    <template slot-scope="scope">
+                      <div>
+                        <span>{{ scope.row.norm }}</span>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="状态" prop="status" width="100">
+                    <template slot-scope="scope">
+                      <div>
+                        <span>{{ options[scope.row.status] }}</span>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="结果" prop="result" width="200">
+                  </el-table-column>
+                </el-table>
+              </div>
+            </div> -->
+            <!-- <div class="btnbox" v-if="$route.query.isshow">
+              <el-button class="confirm-btn" type="danger" plain @click="reject"
+                >驳回</el-button
+              >
+              <el-button class="confirm-btn" type="success" plain @click="pass"
+                >通过</el-button
+              >
+              <el-button class="cancel-btn">关闭</el-button>
+            </div> -->
+            <!-- <div class="textbox" v-if="showtext">
+              <el-input
+                type="textarea"
+                placeholder="请输入驳回原因"
+                v-model="cause"
+                maxlength="30"
+                rows="5"
+                show-word-limit
+              >
+              </el-input>
+              <div class="textbtnbox">
+                <el-button size="small" round @click="cancelreject"
+                  >取消</el-button
+                >
+                <el-button size="small" round @click="surereject"
+                  >提交</el-button
+                >
+              </div>
+            </div> -->
+          <!-- </div>
+        </div> -->
+
         <!-- 巡点检、缺陷设备报修记录 -->
         <!-- <div class="repair_notes">
           <HeaderTitle title="缺陷设备报修记录" size="16px"></HeaderTitle>

+ 13 - 2
src/views/bpm/doneTickets/maintenance/index.vue

@@ -129,6 +129,16 @@
               转派
             </el-link>
           </template>
+          <!-- 工单编号slot -->
+          <template v-slot:code="{ row }">
+            <el-link
+              type="primary"
+              :underline="false"
+              @click="openDetail({ id: row.id })"
+            >
+              {{ row.code }}
+            </el-link>
+          </template>
         </ele-pro-table>
       </el-card>
     </div>
@@ -200,7 +210,8 @@
             prop: 'code',
             label: '工单编号',
             minWidth: '200',
-            align: 'center'
+            align: 'center',
+            slot: 'code'
           },
           {
             prop: 'planCode',
@@ -371,7 +382,7 @@
       },
       openDetail({ id }) {
         this.$router.push({
-          path: '/tickets/maintenance/detail',
+          path: '/doneTickets/maintenance/detail',
           query: {
             id
           }

+ 1 - 1
src/views/bpm/doneTickets/patrolInspection/detail.vue

@@ -8,7 +8,7 @@
               type="primary"
               @click="
                 $router.push({
-                  path: '/tickets',
+                  path: '/doneTickets',
                   query: { title: '巡点检工单' }
                 })
               "

+ 13 - 2
src/views/bpm/doneTickets/patrolInspection/index.vue

@@ -129,6 +129,16 @@
               转派
             </el-link>
           </template>
+          <!-- 工单编号slot -->
+          <template v-slot:code="{ row }">
+            <el-link
+              type="primary"
+              :underline="false"
+              @click="openDetail({ id: row.id })"
+            >
+              {{ row.code }}
+            </el-link>
+          </template>
         </ele-pro-table>
       </el-card>
     </div>
@@ -184,7 +194,8 @@
             prop: 'code',
             label: '工单编号',
             minWidth: '200',
-            align: 'center'
+            align: 'center',
+            slot: 'code'
           },
           {
             prop: 'planCode',
@@ -366,7 +377,7 @@
       },
       openDetail({ id }) {
         this.$router.push({
-          path: '/tickets/patrolInspection/detail',
+          path: '/doneTickets/patrolInspection/detail',
           query: {
             id
           }

+ 13 - 2
src/views/bpm/doneTickets/repair/index.vue

@@ -140,13 +140,23 @@
           >
             转派
           </el-link>
-          <el-link
+          <!-- <el-link
             type="primary"
             :underline="false"
             icon="el-icon-edit"
             @click="openDetail(row)"
           >
             详情
+          </el-link> -->
+        </template>
+        <!-- 工单编号列 -->
+        <template v-slot:code="{ row }">
+          <el-link 
+            type="primary" 
+            :underline="false"
+            @click="openDetail(row)"
+          >
+            {{ row.code }}
           </el-link>
         </template>
       </ele-pro-table>
@@ -203,7 +213,8 @@
             label: '工单编号',
             minWidth: '200',
             align: 'center',
-            showOverflowTooltip: true
+            showOverflowTooltip: true,
+            slot: 'code'
           },
           {
             prop: 'planCode',

+ 7 - 2
src/views/bpm/handleTask/components/cuttingPlan/detailDialog.vue

@@ -202,7 +202,7 @@
           },
           {
             prop: 'contractNum',
-            label: '合同数量',
+            label: '订单数量',
             align: 'center'
           },
           {
@@ -281,7 +281,12 @@
             action: 'requireDeliveryTime',
             align: 'center'
           },
-
+          {
+            label: '供应商',
+            slot: 'supplierName',
+            action: 'supplierName',
+            align: 'center'
+          },
           {
             label: '图纸',
             slot: 'imgUrl',

+ 289 - 273
src/views/bpm/handleTask/components/materialPlan/detailDialog.vue

@@ -1,8 +1,13 @@
 <template>
   <div>
-
     <headerTitle title="采购信息"></headerTitle>
-    <el-form :model="formData" ref="formRef" label-width="120px" class="ele-body" :rules="rules">
+    <el-form
+      :model="formData"
+      ref="formRef"
+      label-width="120px"
+      class="ele-body"
+      :rules="rules"
+    >
       <el-row :gutter="32">
         <el-col :span="12">
           <el-form-item label="配料计划名称" prop="name">
@@ -19,16 +24,31 @@
     </el-form>
 
     <el-form :model="formData" ref="tableForm">
-      <ele-pro-table ref="table" :needPage="false" :columns="columns" row-key="id">
+      <ele-pro-table
+        ref="table"
+        :needPage="false"
+        :columns="columns"
+        row-key="id"
+      >
         <!-- 展开内容 -->
         <template v-slot:expand="{ row }">
-          <div style="
+          <div
+            style="
               width: calc(100% - 95px);
               min-height: 60px;
               margin-left: 95px;
-            " v-if="row.materialList.length > 0">
-            <ele-pro-table :toolbar="false" toolsTheme="none" ref="table2" :need-page="false"
-              :datasource="row.materialList" :columns="columns2" row-key="id">
+            "
+            v-if="row.materialList.length > 0"
+          >
+            <ele-pro-table
+              :toolbar="false"
+              toolsTheme="none"
+              ref="table2"
+              :need-page="false"
+              :datasource="row.materialList"
+              :columns="columns2"
+              row-key="id"
+            >
               <template v-slot:sort="{ $index }">
                 {{ $index }}
               </template>
@@ -38,43 +58,47 @@
               </template>
 
               <template v-slot:requireDeliveryTime="{ row }">
-                <span v-if="row.deliveryMethod == 1">{{ row.requireDeliveryTime }}</span>
-
-
-                <el-link type="primary" :underline="false" v-if="row.deliveryMethod == 2"
-                  @click.native="handleMethod(row)">
+                <span v-if="row.deliveryMethod == 1">{{
+                  row.requireDeliveryTime
+                }}</span>
+
+                <el-link
+                  type="primary"
+                  :underline="false"
+                  v-if="row.deliveryMethod == 2"
+                  @click.native="handleMethod(row)"
+                >
                   设置分批时间
                 </el-link>
               </template>
 
-
-
-
-
-
-
-
               <template v-slot:imgUrl="{ row }">
                 <div v-if="row.imgUrl && row.imgUrl?.length">
-                  <el-link v-for="link in row.imgUrl" :key="link.id" type="primary" :underline="false"
-                    @click="downloadFile(link)">
-                    {{ link.name }}</el-link>
+                  <el-link
+                    v-for="link in row.imgUrl"
+                    :key="link.id"
+                    type="primary"
+                    :underline="false"
+                    @click="downloadFile(link)"
+                  >
+                    {{ link.name }}</el-link
+                  >
                 </div>
               </template>
 
               <template v-slot:files="{ row }">
                 <div v-if="row.files && row.files?.length">
-                  <el-link v-for="link in row.files" :key="link.id" type="primary" :underline="false"
-                    @click="downloadFile(link)">
-                    {{ link.name }}</el-link>
+                  <el-link
+                    v-for="link in row.files"
+                    :key="link.id"
+                    type="primary"
+                    :underline="false"
+                    @click="downloadFile(link)"
+                  >
+                    {{ link.name }}</el-link
+                  >
                 </div>
               </template>
-
-
-
-
-
-
             </ele-pro-table>
           </div>
         </template>
@@ -86,253 +110,245 @@
 </template>
 
 <script>
-import { getById } from '@/api/bpm/components/materialPlan/index';
-import { getFile } from '@/api/system/file';
-import timeDialog from './timeDialog'
-
-export default {
-  components: {
-    timeDialog
-  },
-  props: {
-    businessId: {
-      default: ''
-    }
-  },
-  mixins: [],
-
-  data() {
-    return {
-      visible: false,
-      title: '采购配料计划',
-
-      // 表格列配置
-      columns: [
-        {
-          width: 45,
-          type: 'expand',
-          columnKey: 'materialList',
-          align: 'center',
-          slot: 'expand'
-        },
-
-        {
-          width: 50,
-          label: '序号',
-          type: 'index',
-          align: 'center',
-          slot: 'index'
-        },
-
-        {
-          prop: 'salesOrderCode',
-          label: '销售订单号',
-          showOverflowTooltip: true,
-          align: 'center',
-          minWidth: 170
-        },
-        {
-          prop: 'customerName',
-          label: '客户名称',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'serialNo',
-          label: '客户代号',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'productCode',
-          label: '产品编码',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-
-        {
-          prop: 'productName',
-          label: '产品名称',
-          align: 'center',
-          minWidth: 120
-        },
-
-        {
-          prop: 'model',
-          label: '型号',
-          align: 'center',
-          minWidth: 120
-        },
-
-        {
-          prop: 'brandNo',
-          label: '牌号',
-          align: 'center'
-        },
-
-        {
-          prop: 'deliveryTime',
-          label: '交付日期',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'contractNum',
-          label: '订单数量',
-          align: 'center'
-        },
-        {
-          prop: 'lackNum',
-          label: '欠交数量',
-          align: 'center'
-        },
-
-
-
-
-      ],
-
-      columns2: [
-        {
-          width: 50,
-          label: '序号',
-          prop: 'sort',
-          slot: 'sort',
-          align: 'center'
-        },
-
-        {
-          label: '物料名称',
-          prop: 'name',
-          align: 'center'
-        },
-
-        {
-          label: '物料编码',
-          prop: 'code',
-          align: 'center'
-        },
-        {
-          label: '牌号',
-          prop: 'brandNum',
-          align: 'center'
-        },
-        {
-          label: '型号',
-          prop: 'modelType',
-          align: 'center'
-        },
-
-        {
-          prop: 'inventoryQuantity',
-          label: '库存',
-          showOverflowTooltip: true,
-
-        },
-
-        {
-          prop: 'unit',
-          label: '计量单位',
-          showOverflowTooltip: true,
-          action: 'unit',
-        },
-
-        {
-          label: '需求数量',
-          prop: 'demandQuantity',
-          align: 'center',
-        },
-
-        // {
-        //   label: '采购数量',
-        //   prop: 'purchaseQuantity',
-        //   align: 'center'
-        // },
-
-        {
-          label: '到货方式',
-          slot: 'deliveryMethod',
-          action: 'deliveryMethod',
-          align: 'center'
-        },
-
-        {
-          label: '要求到货时间',
-          slot: 'requireDeliveryTime',
-          action: 'requireDeliveryTime',
-          align: 'center'
-        },
-
-
-
-        {
-          label: '图纸',
-          slot: 'imgUrl',
-          action: 'imgUrl',
-          align: 'center',
-        },
-
-
-        {
-          label: '附件',
-          slot: 'files',
-          action: ' files',
-          align: 'center',
-          minWidth: 140
-        },
-
-
-
-
-      ],
-
-      rules: {},
-
-      formData: {
-        name: '',
-        remark: '',
-        detailRemoveIds: [],
-        materialRemoveIds: []
-      }
-    };
-  },
-  created() {
-    this.getDetailData(this.businessId);
-  },
-  methods: {
-    downloadFile(file) {
-      getFile({ objectName: file.storePath }, file.name);
+  import { getById } from '@/api/bpm/components/materialPlan/index';
+  import { getFile } from '@/api/system/file';
+  import timeDialog from './timeDialog';
+
+  export default {
+    components: {
+      timeDialog
     },
-    async getDetailData(id) {
-      this.loading = true;
-      const res = await getById(id);
-      this.loading = false;
-      if (res) {
-        this.$set(this.formData, 'name', res.name);
-        this.$set(this.formData, 'remark', res.remark);
-        this.formData['id'] = res.id;
-        this.$refs.table.setData([...res.salesOrderList]);
-        this.$nextTick(() => {
-          this.$refs.table.toggleRowExpansionAll()
-          this.$forceUpdate()
-        })
+    props: {
+      businessId: {
+        default: ''
       }
     },
-
-    handleMethod(row) {
-      this.$refs.timeDialogRef.open(row)
+    mixins: [],
+
+    data() {
+      return {
+        visible: false,
+        title: '采购配料计划',
+
+        // 表格列配置
+        columns: [
+          {
+            width: 45,
+            type: 'expand',
+            columnKey: 'materialList',
+            align: 'center',
+            slot: 'expand'
+          },
+
+          {
+            width: 50,
+            label: '序号',
+            type: 'index',
+            align: 'center',
+            slot: 'index'
+          },
+
+          {
+            prop: 'salesOrderCode',
+            label: '销售订单号',
+            showOverflowTooltip: true,
+            align: 'center',
+            minWidth: 170
+          },
+          {
+            prop: 'customerName',
+            label: '客户名称',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'serialNo',
+            label: '客户代号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'productCode',
+            label: '产品编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+
+          {
+            prop: 'productName',
+            label: '产品名称',
+            align: 'center',
+            minWidth: 120
+          },
+
+          {
+            prop: 'model',
+            label: '型号',
+            align: 'center',
+            minWidth: 120
+          },
+
+          {
+            prop: 'brandNo',
+            label: '牌号',
+            align: 'center'
+          },
+
+          {
+            prop: 'deliveryTime',
+            label: '交付日期',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'contractNum',
+            label: '订单数量',
+            align: 'center'
+          },
+          {
+            prop: 'lackNum',
+            label: '欠交数量',
+            align: 'center'
+          }
+        ],
+
+        columns2: [
+          {
+            width: 50,
+            label: '序号',
+            prop: 'sort',
+            slot: 'sort',
+            align: 'center'
+          },
+
+          {
+            label: '物料名称',
+            prop: 'name',
+            align: 'center'
+          },
+
+          {
+            label: '物料编码',
+            prop: 'code',
+            align: 'center'
+          },
+          {
+            label: '牌号',
+            prop: 'brandNum',
+            align: 'center'
+          },
+          {
+            label: '型号',
+            prop: 'modelType',
+            align: 'center'
+          },
+
+          {
+            prop: 'inventoryQuantity',
+            label: '库存',
+            showOverflowTooltip: true
+          },
+
+          {
+            prop: 'unit',
+            label: '计量单位',
+            showOverflowTooltip: true,
+            action: 'unit'
+          },
+
+          {
+            label: '需求数量',
+            prop: 'demandQuantity',
+            align: 'center'
+          },
+
+          // {
+          //   label: '采购数量',
+          //   prop: 'purchaseQuantity',
+          //   align: 'center'
+          // },
+
+          {
+            label: '到货方式',
+            slot: 'deliveryMethod',
+            action: 'deliveryMethod',
+            align: 'center'
+          },
+
+          {
+            label: '要求到货时间',
+            slot: 'requireDeliveryTime',
+            action: 'requireDeliveryTime',
+            align: 'center'
+          },
+
+          {
+            label: '供应商',
+            slot: 'supplierName',
+            action: 'supplierName',
+            align: 'center'
+          },
+
+          {
+            label: '图纸',
+            slot: 'imgUrl',
+            action: 'imgUrl',
+            align: 'center'
+          },
+
+          {
+            label: '附件',
+            slot: 'files',
+            action: ' files',
+            align: 'center',
+            minWidth: 140
+          }
+        ],
+
+        rules: {},
+
+        formData: {
+          name: '',
+          remark: '',
+          detailRemoveIds: [],
+          materialRemoveIds: []
+        }
+      };
     },
-  }
-};
+    created() {
+      this.getDetailData(this.businessId);
+    },
+    methods: {
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+      async getDetailData(id) {
+        this.loading = true;
+        const res = await getById(id);
+        this.loading = false;
+        if (res) {
+          this.$set(this.formData, 'name', res.name);
+          this.$set(this.formData, 'remark', res.remark);
+          this.formData['id'] = res.id;
+          this.$refs.table.setData([...res.salesOrderList]);
+          this.$nextTick(() => {
+            this.$refs.table.toggleRowExpansionAll();
+            this.$forceUpdate();
+          });
+        }
+      },
+
+      handleMethod(row) {
+        this.$refs.timeDialogRef.open(row);
+      }
+    }
+  };
 </script>
 
 <style lang="scss" scoped>
-:deep(.el-table__expanded-cell) {
-
-  padding-bottom: 30px !important;
-  border-bottom: 12px solid #CCFFCC !important;
-}
+  :deep(.el-table__expanded-cell) {
+    padding-bottom: 30px !important;
+    border-bottom: 12px solid #ccffcc !important;
+  }
 </style>
-
-

+ 5 - 7
src/views/bpm/handleTask/components/purchasePlanManage/detailDialog.vue

@@ -389,16 +389,14 @@
             prop: 'modelKey',
             label: '机型',
             showOverflowTooltip: true,
-            align: 'center',
-
+            align: 'center'
           },
           {
             minWidth: 120,
             prop: 'colorKey',
             showOverflowTooltip: true,
             label: '颜色',
-            align: 'center',
-
+            align: 'center'
           },
 
           {
@@ -473,9 +471,9 @@
         this.loading = false;
         if (data) {
           data.purchaseDate = data.createTime;
-          let codeList = data.detailList.map((item) => item.productCode);
+          let codeList = data.detailList?.map((item) => item.productCode) || [];
           let inventoryTotalList = await getInventoryTotalAPI(codeList);
-          data.detailList.forEach((item) => {
+          data.detailList?.forEach((item) => {
             let find =
               inventoryTotalList.find((key) => key.code == item.productCode) ||
               {};
@@ -500,7 +498,7 @@
         return {
           returnStorageData:
             this.$refs.inoutBoundRef &&
-            await this.$refs.inoutBoundRef.getReturnStorage()
+            (await this.$refs.inoutBoundRef.getReturnStorage())
         };
       }
     }