wenningning 6 bulan lalu
induk
melakukan
7323481088

+ 4 - 0
manager-admin/src/views/dashboard/index.vue

@@ -8,6 +8,10 @@
     <el-divider></el-divider>
     <el-card>
       <div>
+        <b>20241224-wnn</b>
+        <p>- 技术也能上传图片</p>
+        <p>- 项目产品列表增加已发货数量、生产备注显示</p>
+        <p>- 页面显示优化</p>
         <b>20241223-wnn</b>
         <p>- 订单产品加上生产填写图片、发货数量、生产备注、生产填写人可以有多个,而且有填写时间,技术填写人也是如此</p>
         <p>- 订单产品的发货情况可以多次发货了</p>

+ 1 - 1
manager-admin/src/views/goods/goodsEdit.vue

@@ -178,7 +178,7 @@ export default {
 
     return {
       boolFounder: JSON.parse(Storage.getItem('admin_user')).founder === 1,
-      permissions: {},
+      permissions: [],
       /** 加载中。。。 */
       loading: false,
 

+ 1 - 1
manager-admin/src/views/pjOrder/Edit.vue

@@ -294,7 +294,7 @@ export default {
 
     return {
       boolFounder: JSON.parse(Storage.getItem('admin_user')).founder === 1,
-      permissions: {},
+      permissions: [],
       /** 加载中。。。 */
       loading: false,
 

+ 21 - 1
manager-admin/src/views/pjOrder/ItemDetail.vue

@@ -131,6 +131,12 @@
             <el-form-item label="备注">
               <el-input type="textarea" rows="3" placeholder="备注,最大150字" maxlength="150" show-word-limit v-model="modelForm.tech_remark"></el-input>
             </el-form-item>
+            <el-form-item label="技术填写图片">
+              <el-upload :action="`${MixinUploadApi}?scene=pjorders`" list-type="picture-card" :file-list="fileList2" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
+                         :on-exceed="handleExceed" :on-success="handleImageSuccess2" :limit="1">
+                <i class="el-icon-plus"></i>
+              </el-upload>
+            </el-form-item>
           </el-form>
         </div>
         <div v-else>
@@ -152,6 +158,10 @@
               <template slot="label">备注</template>
               <span>{{modelForm.tech_remark}}</span>
             </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">技术填写图片</template>
+              <img :src="modelForm.tech_img" style="width: 120px;height: 120px;" @click="handlePictureCardPreview({ url: modelForm.tech_img})">
+            </el-descriptions-item>
           </el-descriptions>
 
         </div>
@@ -181,7 +191,8 @@ export default {
       modelForm: {},
       dialogImage: false,
       dialogImageUrl: null,
-      fileList: []
+      fileList: [],
+      fileList2: []
     }
   },
   mounted() {
@@ -209,6 +220,9 @@ export default {
         if (this.modelForm.produce_img) {
           this.fileList.push({ url: this.modelForm.produce_img })
         }
+        if (this.modelForm.tech_img) {
+          this.fileList2.push({ url: this.modelForm.tech_img })
+        }
       })
     },
     handleTechSave() {
@@ -276,6 +290,12 @@ export default {
         // this.$set(this.baseDevice[this.index], 'produce_img', response.url)
         this.modelForm.produce_img = response.url
       }
+    },
+    async handleImageSuccess2(response, file) {
+      if (file.status === 'success') {
+        // this.$set(this.baseDevice[this.index], 'produce_img', response.url)
+        this.modelForm.tech_img = response.url
+      }
     }
   }
 }

+ 2 - 0
manager-admin/src/views/pjOrder/Items.vue

@@ -71,8 +71,10 @@
               <span>{{scope.row.qty - scope.row.produced_qty}}</span>
             </template>
           </el-table-column>
+          <el-table-column v-if="params.type !== '2'" prop="shipped_qty" label="已发数量"></el-table-column>
           <el-table-column v-if="params.type !== '2'" label="要求发货日期" :formatter="MixinUnixToDay" prop="ship_date_required" sortable width="160"></el-table-column>
           <el-table-column v-if="params.type !== '2'" label="生产状态" prop="produce_status"></el-table-column>
+          <el-table-column v-if="params.type !== '2'" label="生产备注" prop="produced_remark" show-overflow-tooltip></el-table-column>
           <el-table-column label="操作" width="100" fixed="right">
             <template slot-scope="scope">
               <el-button v-if="params.type !== '2'" size="mini" type="primary" @click="handleDetail(scope.row.id)">明细</el-button>

+ 4 - 4
manager-admin/src/views/pjOrder/List.vue

@@ -25,12 +25,12 @@
     </div>
 
     <template slot="table-columns">
-      <el-table-column label="项目号" width="160">
+      <el-table-column label="项目号" width="150">
         <template slot-scope="scope">
           <el-tag>{{scope.row.order_no}}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="状态" width="160">
+      <el-table-column label="状态" width="130">
         <template slot-scope="scope">
           <el-tag type="info" v-if="scope.row.status === 0">默认</el-tag>
           <el-tag type="warning" v-if="scope.row.status === 1">技术跟进</el-tag>
@@ -42,11 +42,11 @@
         </template>
       </el-table-column>
       <el-table-column label="创建时间" :formatter="MixinUnixToDate" prop="create_time" sortable width="160"></el-table-column>
-      <el-table-column label="项目名称" prop="name"></el-table-column>
+      <el-table-column label="项目名称" prop="name" show-overflow-tooltip min-width="140"></el-table-column>
       <el-table-column label="类型" prop="type"></el-table-column>
       <el-table-column label="销售" prop="sales"></el-table-column>
       <el-table-column label="规模" prop="scale"></el-table-column>
-      <el-table-column label="要求发货日期" :formatter="MixinUnixToDay" prop="ship_date_required" sortable></el-table-column>
+      <el-table-column label="要求发货日期" :formatter="MixinUnixToDay" prop="ship_date_required" sortable width="160"></el-table-column>
       <el-table-column label="金额" width="150" sortable>
         <template slot-scope="scope">
           <el-tag v-if="scope.row.amount > 1000000" type="danger">{{ scope.row.amount | unitPrice('¥') }}</el-tag>

+ 48 - 10
manager-admin/src/views/pjOrder/OrderItems.vue

@@ -29,7 +29,9 @@
                     <div>价格:{{item.price}}</div>
                   </div>
                 </div>
-                <div class="myFont">{{ item.sales_remark }}</div>
+                <el-tooltip class="item" effect="dark" :content="item.sales_remark" placement="top">
+                  <div class="myFont"><span style="font-size: 11px">{{ item.sales_remark }}</span></div>
+                </el-tooltip>
                 <el-row>
                   <el-col :span="12">
                     <template v-if="boolFounder || permissions.filter(p => p === 'pjTech' || p === 'pjOrderItemsList').length > 0">
@@ -50,6 +52,12 @@
                         <div>硬件版本:<el-input v-model="item.hard_ver" size="small"></el-input></div>
                         <div>软件版本:<el-input v-model="item.soft_ver" size="small"></el-input></div>
                         <div>备注:<el-input type="textarea" rows="3" placeholder="备注,最大150字" maxlength="150" show-word-limit v-model="item.tech_remark"></el-input></div>
+                        <div @click="clickImg(index, 1)">
+                          <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.tech_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
+                                     :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" :limit="1">
+                            <el-button v-if="!item.tech_img" size="small" type="primary">点击上传</el-button>
+                          </el-upload>
+                        </div>
                       </div>
                     </template>
                     <template v-else>
@@ -75,6 +83,11 @@
                         <div>备注:<el-tooltip class="item" effect="dark" :content="item.tech_remark" placement="top">
                           <span style="font-size: 11px">{{item.tech_remark}}</span>
                         </el-tooltip></div>
+                        <div v-if="item.tech_img">
+                          <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.tech_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
+                                     :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" disabled:limit="1">
+                          </el-upload>
+                        </div>
                       </div>
                     </template>
                   </el-col>
@@ -106,7 +119,7 @@
                             <el-option value="完成"></el-option>
                           </el-select>
                         </div>
-                        <div @click="clickImg(index)">
+                        <div @click="clickImg(index, 2)">
                           <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.produce_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
                                      :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" :limit="1">
                             <el-button v-if="!item.produce_img" size="small" type="primary">点击上传</el-button>
@@ -137,7 +150,7 @@
                           <span style="font-size: 11px">{{ item.produced_remark }}</span>
                         </el-tooltip></div>
                         <div>生产状态:<span style="font-size: 11px">{{ item.produce_status }}</span></div>
-                        <div @click="clickImg(index)">
+                        <div v-if="item.produce_img">
                           <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.produce_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
                                      :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" disabled :limit="1">
                           </el-upload>
@@ -173,7 +186,9 @@
                     <div>价格:{{item.price}}</div>
                   </div>
                 </div>
-                <div class="myFont">{{ item.sales_remark }}</div>
+                <el-tooltip class="item" effect="dark" :content="item.sales_remark" placement="top">
+                  <div class="myFont"><span style="font-size: 11px">{{ item.sales_remark }}</span></div>
+                </el-tooltip>
                 <el-row>
                   <el-col :span="12">
                     <template v-if="boolFounder || permissions.filter(p => p === 'pjTech' || p === 'pjOrderItemsList').length > 0">
@@ -194,6 +209,12 @@
                         <div>硬件版本:<el-input v-model="item.hard_ver" size="small"></el-input></div>
                         <div>软件版本:<el-input v-model="item.soft_ver" size="small"></el-input></div>
                         <div>备注:<el-input type="textarea" rows="3" placeholder="备注,最大150字" maxlength="150" show-word-limit v-model="item.tech_remark"></el-input></div>
+                        <div @click="clickImg(index, 1)">
+                          <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.tech_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
+                                     :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" :limit="1">
+                            <el-button v-if="!item.tech_img" size="small" type="primary">点击上传</el-button>
+                          </el-upload>
+                        </div>
                       </div>
                     </template>
                     <template v-else>
@@ -219,6 +240,11 @@
                         <div>备注:<el-tooltip class="item" effect="dark" :content="item.tech_remark" placement="top">
                           <span style="font-size: 11px">{{item.tech_remark}}</span>
                         </el-tooltip></div>
+                        <div v-if="item.tech_img">
+                          <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.tech_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
+                                     :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" disabled:limit="1">
+                          </el-upload>
+                        </div>
                       </div>
                     </template>
                   </el-col>
@@ -250,7 +276,7 @@
                             <el-option value="完成"></el-option>
                           </el-select>
                         </div>
-                        <div @click="clickImg(index)">
+                        <div @click="clickImg(index, 2)">
                           <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.produce_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
                                      :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" :limit="1">
                             <el-button v-if="!item.produce_img" size="small" type="primary">点击上传</el-button>
@@ -281,7 +307,7 @@
                           <span style="font-size: 11px">{{ item.produced_remark }}</span>
                         </el-tooltip></div>
                         <div>生产状态:<span style="font-size: 11px">{{ item.produce_status }}</span></div>
-                        <div @click="clickImg(index)">
+                        <div v-if="item.produce_img">
                           <el-upload :action="`${MixinUploadApi}?scene=pjorders`" :file-list="getImg(item.name, item.produce_img)" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload"
                                      :on-success="handleImageSuccess" :on-remove="handleRemove" :on-exceed="handleExceed" disabled :limit="1">
                           </el-upload>
@@ -297,7 +323,7 @@
       </el-tab-pane>
       <el-tab-pane label="表格">
         <el-table :data="listData" stripe style="width: 100%;">
-          <el-table-column prop="name" label="名称"></el-table-column>
+          <el-table-column prop="name" show-overflow-tooltip label="名称" min-width="140"></el-table-column>
           <el-table-column label="基础件?">
             <template slot-scope="scope">
               <el-tag type="success" v-if="scope.row.type_base">标准件</el-tag>
@@ -315,8 +341,10 @@
               <span>{{ scope.row.qty - scope.row.produced_qty}}</span>
             </template>
           </el-table-column>
+          <el-table-column prop="shipped_qty" label="已发数量" width="100"></el-table-column>
           <el-table-column prop="price" label="价格" width="100"></el-table-column>
           <el-table-column prop="sales_remark" show-overflow-tooltip label="销售备注"></el-table-column>
+          <el-table-column prop="produced_remark" show-overflow-tooltip label="生产备注"></el-table-column>
         </el-table>
         <div style="margin-top: 20px">
           <el-button type="primary" @click="outExcel">导出Excel</el-button>
@@ -375,6 +403,7 @@ export default {
       dialogImageUrl: '',
       changeId: null,
       index: 0,
+      imgType: 1,
       goodsSelectVisible: false,
       type_base: true
     }
@@ -477,19 +506,28 @@ export default {
     /** 文件列表上传成功时的钩子  上传成功校验 */
     async handleImageSuccess(response, file) {
       if (file.status === 'success') {
-        this.$set(this.baseDevice[this.index], 'produce_img', response.url)
+        if (this.imgType === 1) {
+          this.$set(this.baseDevice[this.index], 'tech_img', response.url)
+        } else {
+          this.$set(this.baseDevice[this.index], 'produce_img', response.url)
+        }
       }
     },
     handleRemove(e) {
       setTimeout(() => {
-        this.$set(this.baseDevice[this.index], 'produce_img', null)
+        if (this.imgType === 1) {
+          this.$set(this.baseDevice[this.index], 'tech_img', null)
+        } else {
+          this.$set(this.baseDevice[this.index], 'produce_img', null)
+        }
       }, 400)
     },
     handleExceed(e) {
       this.$message.error('最多只能上传一个文件!')
     },
-    clickImg(index) {
+    clickImg(index, type) {
       this.index = index
+      this.imgType = type
     },
     changeEdit(item) {
       this.changeId = item.id

+ 1 - 1
manager-admin/src/views/pjOrder/Receipt.vue

@@ -103,7 +103,7 @@ export default {
   data() {
     return {
       boolFounder: JSON.parse(Storage.getItem('admin_user')).founder === 1,
-      permissions: {},
+      permissions: [],
       /** 列表loading状态 */
       loading: false,