广丰卷烟厂数采质量分析系统
baoshiwei
4 小时以前 e97b55310155a2dd691bd698a10295a4d867f60c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<script setup lang="ts">
import { onMounted, ref, toRaw, watch } from 'vue';
import { jsonClone } from '@sa/utils';
import { fetchGetMatList } from '@/service/api/md/mat';
import { useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
 
defineOptions({
  name: 'JudgeSearch'
});
 
interface Emits {
  (e: 'search'): void;
}
 
const emit = defineEmits<Emits>();
 
const { formRef, validate, restoreValidation } = useNaiveForm();
 
const model = defineModel<Api.Qm.JudgeSearchParams>('model', { required: true });
 
const defaultModel = jsonClone(toRaw(model.value));
 
const matOptions = ref<CommonType.Option[]>([]);
 
async function getMatOptions() {
  if (model.value.category !== 0) {
    matOptions.value = [];
    model.value.matName = null;
    model.value.matCode = null;
    return;
  }
  const { data } = await fetchGetMatList({ tid: 1, pageSize: 1000 });
  if (data) {
    matOptions.value = data.rows.map(item => ({
      label: item.name,
      value: item.code
    }));
  }
}
 
watch(
  () => model.value.category,
  newVal => {
    if (newVal === 0) {
      getMatOptions();
    } else {
      matOptions.value = [];
      model.value.matName = null;
      model.value.matCode = null;
    }
  }
);
 
onMounted(() => {
  if (model.value.category === 0) {
    getMatOptions();
  }
});
 
function resetModel() {
  Object.assign(model.value, defaultModel);
}
 
async function reset() {
  await restoreValidation();
  resetModel();
  emit('search');
}
 
async function search() {
  await validate();
  emit('search');
}
</script>
 
<template>
  <NCard :bordered="false" size="small" class="card-wrapper">
    <NCollapse>
      <NCollapseItem :title="$t('common.search')" name="qm-judge-search">
        <NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
          <NGrid responsive="screen" item-responsive>
            <NFormItemGi span="24 s:12 m:6" label="物料类型" label-width="auto" path="category" class="pr-24px">
              <NSelect
                v-model:value="model.category"
                :options="[
                  { label: '成品', value: 0 },
                  { label: '辅料', value: 1 }
                ]"
                placeholder="请选择物料类型"
              />
            </NFormItemGi>
 
            <NFormItemGi span="24 s:12 m:6" label="物料牌号" label-width="auto" path="matCode" class="pr-24px">
              <NSelect
                v-model:value="model.matCode"
                :options="matOptions"
                placeholder="请选择物料牌号"
                :disabled="model.category !== 0"
                clearable
                filterable
              />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="判定名称" label-width="auto" path="judgeName" class="pr-24px">
              <NInput v-model:value="model.judgeName" placeholder="请输入判定名称" />
            </NFormItemGi>
            <NFormItemGi span="24 s:12 m:6" label="是否启用" label-width="auto" path="status" class="pr-24px">
              <NSelect
                v-model:value="model.status"
                :options="[
                  { label: '全部', value: -1 },
                  { label: '启用', value: 1 },
                  { label: '归档', value: 0 }
                ]"
              />
            </NFormItemGi>
            <NFormItemGi :show-feedback="false" span="24" class="pr-24px">
              <NSpace class="w-full" justify="end">
                <NButton @click="reset">
                  <template #icon>
                    <icon-ic-round-refresh class="text-icon" />
                  </template>
                  {{ $t('common.reset') }}
                </NButton>
                <NButton type="primary" ghost @click="search">
                  <template #icon>
                    <icon-ic-round-search class="text-icon" />
                  </template>
                  {{ $t('common.search') }}
                </NButton>
              </NSpace>
            </NFormItemGi>
          </NGrid>
        </NForm>
      </NCollapseItem>
    </NCollapse>
  </NCard>
</template>
 
<style scoped></style>