productionPlan-search.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. <!-- 搜索表单 -->
  2. <template>
  3. <el-form
  4. class="ele-form-search"
  5. @keyup.enter.native="search"
  6. @submit.native.prevent
  7. >
  8. <el-row :gutter="15">
  9. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  10. <!-- <el-form-item label="计划编号:">-->
  11. <!-- <el-input-->
  12. <!-- size="mini"-->
  13. <!-- clearable-->
  14. <!-- v-model="where.code"-->
  15. <!-- placeholder="请输入"-->
  16. <!-- />-->
  17. <!-- </el-form-item>-->
  18. <!-- </el-col>-->
  19. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  20. <!-- <el-form-item label="产品编码:">-->
  21. <!-- <el-input-->
  22. <!-- size="mini"-->
  23. <!-- clearable-->
  24. <!-- v-model="where.productCode"-->
  25. <!-- placeholder="请输入"-->
  26. <!-- />-->
  27. <!-- </el-form-item>-->
  28. <!-- </el-col>-->
  29. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  30. <!-- <el-form-item label="牌号:" label-width="80px">-->
  31. <!-- <el-input-->
  32. <!-- size="mini"-->
  33. <!-- clearable-->
  34. <!-- v-model="where.brandNo"-->
  35. <!-- placeholder="请输入"-->
  36. <!-- />-->
  37. <!-- </el-form-item>-->
  38. <!-- </el-col>-->
  39. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  40. <!-- <el-form-item label="型号:" label-width="80px">-->
  41. <!-- <el-input-->
  42. <!-- size="mini"-->
  43. <!-- clearable-->
  44. <!-- v-model="where.model"-->
  45. <!-- placeholder="请输入"-->
  46. <!-- />-->
  47. <!-- </el-form-item>-->
  48. <!-- </el-col>-->
  49. <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
  50. <el-form-item label="计划类型:" label-width="80px">
  51. <el-select
  52. size="mini"
  53. clearable
  54. v-model="where.planType"
  55. placeholder="请选择"
  56. class="w100"
  57. >
  58. <el-option
  59. v-for="item in planType"
  60. :label="item.label"
  61. :value="item.value"
  62. :key="item.value"
  63. ></el-option>
  64. </el-select>
  65. </el-form-item>
  66. </el-col>
  67. <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
  68. <el-form-item label="计划状态:" label-width="80px">
  69. <el-select
  70. size="mini"
  71. v-model="where.status"
  72. placeholder="请选择"
  73. class="w100"
  74. >
  75. <el-option
  76. v-for="item in statusOpt[activeName]"
  77. :label="item.label"
  78. :value="item.value"
  79. :key="item.value"
  80. ></el-option>
  81. </el-select>
  82. </el-form-item>
  83. </el-col>
  84. <!-- <el-col-->
  85. <!-- v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"-->
  86. <!-- v-if="activeName == 'second'"-->
  87. <!-- >-->
  88. <!-- <el-form-item label-width="150px">-->
  89. <!-- <template slot="label">-->
  90. <!-- <el-select-->
  91. <!-- size="mini"-->
  92. <!-- v-model="deliveryVal"-->
  93. <!-- @change="-->
  94. <!-- () => {-->
  95. <!-- where.deliveryTime = [];-->
  96. <!-- where.formingTime = [];-->
  97. <!-- }-->
  98. <!-- "-->
  99. <!-- >-->
  100. <!-- <el-option label="预测交货日期" value="deliveryTime"></el-option>-->
  101. <!-- <el-option label="实际交货日期" value="formingTime"></el-option>-->
  102. <!-- </el-select>-->
  103. <!-- </template>-->
  104. <!-- <el-date-picker-->
  105. <!-- size="mini"-->
  106. <!-- class="w100"-->
  107. <!-- v-model="where[deliveryVal]"-->
  108. <!-- type="daterange"-->
  109. <!-- range-separator="至"-->
  110. <!-- start-placeholder="开始日期"-->
  111. <!-- end-placeholder="结束日期"-->
  112. <!-- value-format="yyyy-MM-dd HH:mm:ss"-->
  113. <!-- :default-time="['00:00:00', '23:59:59']"-->
  114. <!-- >-->
  115. <!-- </el-date-picker>-->
  116. <!-- </el-form-item>-->
  117. <!-- </el-col>-->
  118. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  119. <el-form-item label="" label-width="150px">
  120. <template slot="label">
  121. <el-select
  122. size="mini"
  123. v-model="shapeVal"
  124. @change="
  125. () => {
  126. where.reqMoldTime = [];
  127. where.planFormingTime = [];
  128. where.formingTime = [];
  129. }
  130. "
  131. >
  132. <el-option label="要求完成日期" value="reqMoldTime"></el-option>
  133. <el-option
  134. label="预测生产日期"
  135. value="planFormingTime"
  136. ></el-option>
  137. <!-- <el-option label="实际生产日期" value="formingTime"></el-option> -->
  138. </el-select>
  139. </template>
  140. <el-date-picker
  141. size="mini"
  142. class="w100"
  143. v-model="where[shapeVal]"
  144. type="daterange"
  145. range-separator="至"
  146. start-placeholder="开始日期"
  147. end-placeholder="结束日期"
  148. value-format="yyyy-MM-dd HH:mm:ss"
  149. :default-time="['00:00:00', '23:59:59']"
  150. >
  151. </el-date-picker>
  152. </el-form-item>
  153. </el-col>
  154. <!-- <el-col-->
  155. <!-- v-bind="styleResponsive ? { lg: 9, md: 12 } : { span: 9 }"-->
  156. <!-- v-if="activeName == 'second'"-->
  157. <!-- >-->
  158. <!-- <el-form-item label="工单发布时间:" label-width="150px">-->
  159. <!-- <el-date-picker-->
  160. <!-- class="w100"-->
  161. <!-- size="mini"-->
  162. <!-- v-model="where.releaseTime"-->
  163. <!-- type="daterange"-->
  164. <!-- range-separator="至"-->
  165. <!-- start-placeholder="开始日期"-->
  166. <!-- end-placeholder="结束日期"-->
  167. <!-- value-format="yyyy-MM-dd HH:mm:ss"-->
  168. <!-- :default-time="['00:00:00', '23:59:59']"-->
  169. <!-- >-->
  170. <!-- </el-date-picker>-->
  171. <!-- </el-form-item>-->
  172. <!-- </el-col>-->
  173. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 6 } : { span: 6 }">-->
  174. <!-- <el-form-item label="组织机构:">-->
  175. <!-- <auth-selection-->
  176. <!-- size="mini"-->
  177. <!-- data-type="Array"-->
  178. <!-- v-model="where.deptIds"-->
  179. <!-- ></auth-selection>-->
  180. <!-- </el-form-item>-->
  181. <!-- </el-col>-->
  182. <el-col v-bind="styleResponsive ? { lg: 3, md: 6 } : { span: 3 }">
  183. <el-form-item label-width="80px" label="加工方式:">
  184. <el-select
  185. size="mini"
  186. clearable
  187. v-model="where.produceType"
  188. placeholder="请选择"
  189. class="w100"
  190. >
  191. <el-option
  192. v-for="item in productTypeList"
  193. :label="item.name"
  194. :value="item.code"
  195. :key="item.code"
  196. ></el-option>
  197. </el-select>
  198. </el-form-item>
  199. </el-col>
  200. <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
  201. <el-form-item>
  202. <el-input
  203. size="mini"
  204. clearable
  205. v-model="where.searchInfo"
  206. placeholder="请输入查询信息"
  207. />
  208. </el-form-item>
  209. </el-col>
  210. <el-col v-bind="styleResponsive ? { lg: 6, md: 6 } : { span: 6 }">
  211. <div class="ele-form-actions">
  212. <el-button
  213. type="primary"
  214. icon="el-icon-search"
  215. size="mini"
  216. @click="search"
  217. >
  218. 查询
  219. </el-button>
  220. <el-button
  221. @click="reset"
  222. icon="el-icon-refresh-left"
  223. size="mini"
  224. type="primary"
  225. >重置</el-button
  226. >
  227. <el-dropdown trigger="click">
  228. <span class="el-dropdown-link">
  229. 展开<i class="el-icon-arrow-down el-icon--right"></i>
  230. </span>
  231. <el-dropdown-menu>
  232. <div class="searchExpend">
  233. <el-row>
  234. <el-form-item label="计划编号:" label-width="80px">
  235. <el-input
  236. size="mini"
  237. clearable
  238. v-model="where.code"
  239. placeholder="请输入"
  240. />
  241. </el-form-item>
  242. </el-row>
  243. <el-row>
  244. <el-form-item label="产品编码:" label-width="80px">
  245. <el-input
  246. size="mini"
  247. clearable
  248. v-model="where.productCode"
  249. placeholder="请输入"
  250. />
  251. </el-form-item>
  252. </el-row>
  253. <el-row>
  254. <el-form-item label="牌号:" label-width="80px">
  255. <el-input
  256. size="mini"
  257. clearable
  258. v-model="where.brandNo"
  259. placeholder="请输入"
  260. />
  261. </el-form-item>
  262. </el-row>
  263. <el-row>
  264. <el-form-item label="型号:" label-width="80px">
  265. <el-input
  266. size="mini"
  267. clearable
  268. v-model="where.model"
  269. placeholder="请输入"
  270. />
  271. </el-form-item>
  272. </el-row>
  273. <el-row v-if="activeName == 'second'">
  274. <el-form-item label-width="150px">
  275. <template slot="label">
  276. <el-select
  277. size="mini"
  278. v-model="deliveryVal"
  279. @change="
  280. () => {
  281. where.deliveryTime = [];
  282. where.formingTime = [];
  283. }
  284. "
  285. >
  286. <el-option label="预测交货日期" value="deliveryTime"></el-option>
  287. <el-option label="实际交货日期" value="formingTime"></el-option>
  288. </el-select>
  289. </template>
  290. <el-date-picker
  291. size="mini"
  292. class="w100"
  293. v-model="where[deliveryVal]"
  294. type="daterange"
  295. range-separator="至"
  296. start-placeholder="开始日期"
  297. end-placeholder="结束日期"
  298. value-format="yyyy-MM-dd HH:mm:ss"
  299. :default-time="['00:00:00', '23:59:59']"
  300. >
  301. </el-date-picker>
  302. </el-form-item>
  303. </el-row>
  304. <el-row v-if="activeName == 'second'">
  305. <el-form-item label="工单发布时间:" label-width="150px">
  306. <el-date-picker
  307. class="w100"
  308. size="mini"
  309. v-model="where.releaseTime"
  310. type="daterange"
  311. range-separator="至"
  312. start-placeholder="开始日期"
  313. end-placeholder="结束日期"
  314. value-format="yyyy-MM-dd HH:mm:ss"
  315. :default-time="['00:00:00', '23:59:59']"
  316. >
  317. </el-date-picker>
  318. </el-form-item>
  319. </el-row>
  320. </div>
  321. </el-dropdown-menu>
  322. </el-dropdown>
  323. </div>
  324. </el-col>
  325. </el-row>
  326. </el-form>
  327. </template>
  328. <script>
  329. export default {
  330. props: ['activeName', 'statusOpt', 'planType'],
  331. data() {
  332. // 默认表单数据
  333. const defaultWhere = {
  334. code: '',
  335. productCode: '',
  336. status: '',
  337. model: '',
  338. brandNo: '',
  339. planType: '',
  340. deptIds: [],
  341. releaseTime: [],
  342. deliveryTime: [],
  343. formingTime: [],
  344. reqMoldTime: [],
  345. planFormingTime: [],
  346. executeUserName: '',
  347. searchInfo: '',
  348. };
  349. return {
  350. // 表单数据
  351. deliveryVal: 'deliveryTime',
  352. shapeVal: 'reqMoldTime',
  353. where: { ...defaultWhere },
  354. treeData: [],
  355. productTypeList: [
  356. { code: 2, name: '加工(MBOM)' },
  357. { code: 3, name: '装配(ABOM)' },
  358. ],
  359. };
  360. },
  361. computed: {
  362. // 是否开启响应式布局
  363. styleResponsive() {
  364. return this.$store.state.theme.styleResponsive;
  365. }
  366. },
  367. watch: {
  368. activeName: {
  369. handler() {
  370. if (this.activeName) {
  371. this.where.status = this.statusOpt[this.activeName][0].value;
  372. this.reset();
  373. }
  374. },
  375. immediate: true
  376. }
  377. },
  378. created() {},
  379. methods: {
  380. /* 搜索 */
  381. search() {
  382. const where = { ...this.where };
  383. for (const key in where) {
  384. if (Array.isArray(where[key]) && key !== 'deptIds') {
  385. where[`${key}End`] = where[key][1];
  386. where[key] = where[key][0];
  387. }
  388. }
  389. where.status = where.status.split(',');
  390. this.$emit('search', where);
  391. },
  392. /* 重置 */
  393. reset() {
  394. this.where = { ...this.defaultWhere };
  395. this.where.status = this.statusOpt[this.activeName][0].value;
  396. this.search();
  397. }
  398. }
  399. };
  400. </script>
  401. <style lang="scss" scoped>
  402. .ele-form-actions {
  403. display: flex;
  404. align-items: center;
  405. justify-content: flex-start;
  406. padding-top: 4.5px;
  407. }
  408. .searchExpend{
  409. padding: 20px 50px 0 30px;
  410. }
  411. </style>