productionPlan-search.vue 13 KB

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