Przeglądaj źródła

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

liujt 1 dzień temu
rodzic
commit
cebb7d9471

+ 26 - 17
src/views/rulesManagement/matterRules/components/ProductModal.vue

@@ -33,12 +33,14 @@
           <!-- 数据表格 -->
           <template v-slot:content>
             <ele-pro-table
-              style="min-height: 400px"
+              max-height="600px"
               ref="table"
               :columns="columns"
               :datasource="datasource"
               :selection.sync="selection"
               row-key="id"
+              @row-click="handleRowClick"
+              @selection-change="handleSelectionChange"
             >
               <template v-slot:action="{ row }">
                 <el-link
@@ -82,6 +84,14 @@
       ProductSearch,
       bomDetail
     },
+    // ===== 新增 props =====
+    props: {
+      mode: {
+        type: String,
+        default: 'multiple', // 'multiple' 多选 | 'single' 单选
+        validator: (val) => ['multiple', 'single'].includes(val)
+      }
+    },
     data() {
       return {
         visible: false,
@@ -105,18 +115,13 @@
             type: 'selection',
             width: 45,
             align: 'center',
-            selectable: (row, index) => {
-              return !this.processData.some((it) => row.id == it.categoryId);
-            },
             reserveSelection: true,
             fixed: 'left'
           },
-
           {
             label: '物料名称',
             prop: 'name'
           },
-
           {
             label: '物料编码',
             prop: 'code'
@@ -129,7 +134,6 @@
             label: '型号',
             prop: 'modelType'
           },
-
           {
             prop: 'availableCountBase',
             label: '包装库存',
@@ -139,18 +143,15 @@
             label: '单位',
             prop: 'weightUnit'
           },
-
           {
             prop: 'packingCountBase',
             label: '计量库存',
             sortable: 'custom'
           },
-
           {
             label: '计量单位',
             prop: 'unit'
           },
-
           {
             label: '数量',
             prop: 'count'
@@ -185,17 +186,27 @@
         });
         return res;
       },
+      // ===== 新增:行点击处理 =====
+      handleRowClick(row) {
+        if (this.mode === 'single') {
+          // 单选模式:强制选中当前行,清空其他选中
+          this.$refs.table.setSelectedRows([row]);
+        }
+      },
+      // ===== 新增:选择变化处理(防止通过复选框多选) =====
+      handleSelectionChange(val) {
+        if (this.mode === 'single' && val.length > 1) {
+          // 如果选中多个,只保留最后点击的那个
+          const last = val[val.length - 1];
+          this.$refs.table.setSelectedRows([last]);
+        }
+      },
       openBOMForm(row) {
         this.bomDetailDialogFlag = true;
         row.fIndex = this.receiveIndex;
         this.rowDataBom = row;
-        console.log(this.rowDataBom, 'rowDataBom');
-        /*      this.$nextTick(() => {
-          this.$refs.bomDialogRef.open3(row);
-        }); */
       },
       open2(rowData, index, name) {
-        console.log(rowData, index, name, '222222222222');
         this.processData = [];
         this.visible = true;
         this.getTreeData();
@@ -206,7 +217,6 @@
       open(item) {
         this.processData = Array.isArray(item) ? item : [];
         this.visible = true;
-
         this.getTreeData();
       },
 
@@ -220,7 +230,6 @@
             this.treeList = res.data;
 
             this.$nextTick(() => {
-              // 默认高亮第一级树节点
               if (this.treeList[0]) {
                 this.rootTreeId = this.treeList[0].id;
                 this.categoryLevelId = this.treeList[0].id;

+ 1 - 0
src/views/rulesManagement/matterRules/components/matter-add.vue

@@ -251,6 +251,7 @@
       ref="productRefs"
       @chooseRadio="chooseRadio"
       @chooseModal="chooseModal"
+      mode="single"
     />
   </div>
 </template>

+ 11 - 10
src/views/rulesManagement/recordPlan/components/programRulesDialog.vue

@@ -1551,17 +1551,18 @@
           this.addForm.productLineId = '';
         }
         this.productLineList = [];
-        currentTeam.factoryWorkstationVOList.forEach((item) => {
-          if (
-            !this.productLineList.find((p) => p.id === item.productionLineId)
-          ) {
-            this.productLineList.push({
-              name: item.productionLineName,
-              id: item.productionLineId
-            });
-          }
-        });
+
         if (currentTeam) {
+          currentTeam.factoryWorkstationVOList.forEach((item) => {
+            if (
+              !this.productLineList.find((p) => p.id === item.productionLineId)
+            ) {
+              this.productLineList.push({
+                name: item.productionLineName,
+                id: item.productionLineId
+              });
+            }
+          });
           // 同步执行人
           this.addForm.executeUsers = [
             {

+ 59 - 136
src/views/system/user/components/user-search.vue

@@ -1,146 +1,69 @@
 <!-- 搜索表单 -->
 <template>
-  <el-form
-    label-width="77px"
-    class="ele-form-search"
-    @keyup.enter.native="search"
-    @submit.native.prevent
-    :autoComplete="false"
-  >
-    <el-row :gutter="15">
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="用户账号:">
-          <el-input
-            clearable
-            v-model.trim="where.loginName"
-            placeholder="请输入"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="工号:">
-          <el-input
-            clearable
-            v-model.trim="where.jobNumber"
-            placeholder="请输入"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="姓名:">
-          <el-input
-            clearable
-            v-model.trim="where.name"
-            placeholder="请输入"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="手机号:">
-          <el-input
-            clearable
-            v-model.trim="where.phone"
-            placeholder="请输入"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="角色:">
-          <el-select
-            v-model="where.roleIds"
-            filterable
-            multiple
-            clearable
-            style="width: 100%"
-          >
-            <el-option
-              v-for="item in roleList"
-              :value="item.id"
-              :label="item.name"
-              :key="item.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-col>
-
-      <!--      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="用户名:">
-          <el-input clearable v-model.trim="where.nickname" placeholder="请输入" />
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="性别:">
-          <el-select
-            clearable
-            v-model.trim="where.sex"
-            placeholder="请选择"
-            class="ele-fluid"
-          >
-            <el-option label="男" :value="1" />
-            <el-option label="女" :value="2" />
-          </el-select>
-        </el-form-item>
-      </el-col> -->
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <div class="ele-form-actions">
-          <el-button
-            type="primary"
-            icon="el-icon-search"
-            class="ele-btn-icon"
-            @click="search"
-          >
-            查询
-          </el-button>
-          <el-button @click="reset">重置</el-button>
-        </div>
-      </el-col>
-    </el-row>
-  </el-form>
+  <seekPage :seekList="seekList" :formLength="5" @search="search"></seekPage>
 </template>
 
 <script>
-import { getRolesListAPI } from '@/api/system/role';
+  import { getRolesListAPI } from '@/api/system/role';
 
-export default {
-  data() {
-    // 默认表单数据
-    const defaultWhere = {
-      loginName: '',
-      roleIds: [],
-      jobNumber:'',
-      name:'',
-      phone:""
-      // nickname: '',
-      // sex: undefined
-    };
-    return {
-      // 表单数据
-      where: { ...defaultWhere },
-      roleList: []
-    };
-  },
-  computed: {
-    // 是否开启响应式布局
-    styleResponsive() {
-      return this.$store.state.theme.styleResponsive;
-    }
-  },
-  created() {
-    this.getRolesList();
-  },
-  methods: {
-    async getRolesList() {
-      this.roleList = await getRolesListAPI();
+  export default {
+    data() {
+      return {
+        roleList: []
+      };
+    },
+    computed: {
+      seekList() {
+        return [
+          {
+            label: '用户账号:',
+            value: 'loginName',
+            type: 'input',
+            placeholder: '请输入'
+          },
+          {
+            label: '工号:',
+            value: 'jobNumber',
+            type: 'input',
+            placeholder: '请输入'
+          },
+          {
+            label: '姓名:',
+            value: 'name',
+            type: 'input',
+            placeholder: '请输入'
+          },
+          {
+            label: '手机号:',
+            value: 'phone',
+            type: 'input',
+            placeholder: '请输入'
+          },
+          {
+            label: '角色:',
+            value: 'roleIds',
+            type: 'select',
+            multiple: true,
+            planList: this.roleList.map((item) => ({
+              label: item.name,
+              value: item.id
+            })),
+            placeholder: '请选择'
+          }
+        ];
+      }
     },
-    /* 搜索 */
-    search() {
-      this.$emit('search', this.where);
+    created() {
+      this.getRolesList();
     },
-    /*  重置 */
-    reset() {
-      this.where = { ...this.defaultWhere };
-      this.search();
+    methods: {
+      async getRolesList() {
+        this.roleList = await getRolesListAPI();
+      },
+      /* 搜索 */
+      search(where) {
+        this.$emit('search', where);
+      }
     }
-  }
-};
+  };
 </script>