Parcourir la source

设备出入库登记

刘洋 il y a 1 an
Parent
commit
028cfdda9d

+ 31 - 0
src/api/sop.js

@@ -75,3 +75,34 @@ export const flowViolation = (data) =>
     data,
     loading: true,
   });
+//sop管理 - 设备出入库登记查询
+export const deviceOutInSearch = (params) =>
+  request({
+    url: '/api/admin/device/in/out/sop_page',
+    params,
+  });
+export const deviceCanOut = (params) =>
+  request({
+    url: '/api/admin/device/in/out/can_out_info',
+    params,
+  });
+
+//查询可入库的设备信息
+export const deviceCanIn = (params) =>
+  request({
+    url: '/api/admin/device/in/out/can_in_info',
+    params,
+  });
+
+//获取流程部署信息接口
+export const getFlowDeployment = () =>
+  request({
+    url: '/api/admin/flow/deployment/data',
+  });
+
+//流程详细信息接口
+export const getFlowDetail = (data) =>
+  request({
+    url: '/api/admin/flow/view',
+    data,
+  });

+ 22 - 0
src/hooks/useOptions.js

@@ -0,0 +1,22 @@
+import { useRequest } from 'vue-request';
+import { deviceCanOut, deviceCanIn } from '@/api/sop';
+import { ref, watch } from 'vue';
+const apiMap = {
+  deviceCanOut: [deviceCanOut, 'deviceNo', 'deviceModel'],
+  deviceCanIn: [deviceCanIn, 'deviceNo', 'deviceModel'],
+};
+
+export default function (key) {
+  const { data } = useRequest(apiMap[key][0], {
+    manual: false,
+  });
+  const options = ref([]);
+  watch(data, (val) => {
+    options.value = val.map((item) => ({
+      ...item,
+      value: item[apiMap[key][0]],
+      label: item[apiMap[key][1]],
+    }));
+  });
+  return { options };
+}

+ 6 - 3
src/store/modules/app.js

@@ -1,4 +1,5 @@
 import { defineStore } from 'pinia';
+import { getFlowDeployment } from '@/api/sop';
 
 const useAppStore = defineStore('app', {
   state: () => ({
@@ -6,25 +7,27 @@ const useAppStore = defineStore('app', {
     menuWidth: 220,
     collapseWidth: 64,
     language: 'zh_CN',
+    flowParams: null,
   }),
-
   getters: {
     appCurrentSetting(state) {
       return { ...state };
     },
   },
-
   actions: {
     updateSettings(partial) {
       this.$patch(partial);
     },
-
     toggleMenu() {
       this.menuCollapse = !this.menuCollapse;
     },
     changeLanguage(language) {
       this.language = language;
     },
+    async getFlowParams() {
+      let res = await getFlowDeployment();
+      console.log('res:', res);
+    },
   },
 });
 

+ 121 - 33
src/views/sop/sop-manage/device-out-in/add-device-dialog.vue

@@ -10,9 +10,9 @@
       <t-row :gutter="[0, 20]">
         <t-col :span="6">
           <t-form-item label="设备出入库选择">
-            <t-radio-group v-model="formData.a" style="width: 100%">
-              <t-radio value="1">出库</t-radio>
-              <t-radio value="2">入库</t-radio>
+            <t-radio-group v-model="formData.inOutType" style="width: 100%">
+              <t-radio value="OUT">出库</t-radio>
+              <t-radio value="IN">入库</t-radio>
             </t-radio-group>
           </t-form-item>
         </t-col>
@@ -43,23 +43,48 @@
                     <span class="key-index">{{ row.key }}</span>
                   </div>
                 </template>
-                <template #a="{ row }">
-                  <t-select v-model="row.a">
-                    <t-option value="1">111</t-option>
-                    <t-option value="2">222</t-option>
+                <template #deviceNo="{ row }">
+                  <t-select
+                    v-if="formData.inOutType == 'OUT'"
+                    v-model="row.deviceNo"
+                    :options="deviceOutOptions"
+                  >
                   </t-select>
+                  <t-select
+                    v-else
+                    v-model="row.deviceNo"
+                    :options="deviceInOptions"
+                  >
+                  </t-select>
+                </template>
+                <template #deviceStatus="{ row }">
+                  <span v-if="formData.inOutType == 'OUT'">{{
+                    RUNNING_STATUS[row.deviceStatus]
+                  }}</span>
+                  <t-select
+                    v-else
+                    v-model="row.deviceStatus"
+                    :options="dictToOptionList(RUNNING_STATUS)"
+                  ></t-select>
                 </template>
-                <template #d="{ row }">
-                  <span v-if="formData.a == '1'">{{ row.d }}</span>
-                  <t-input v-model="row.d" v-else></t-input>
+                <template #scanCount="{ row }">
+                  <span v-if="formData.inOutType == 'OUT'">{{
+                    row.scanCount
+                  }}</span>
+                  <t-input v-else v-model="row.inOutType"></t-input>
                 </template>
-                <template #e="{ row }">
-                  <span v-if="formData.a == '1'">{{ row.e }}</span>
-                  <t-input v-model="row.e" v-else></t-input>
+                <template #address="{ row }">
+                  <span v-if="formData.inOutType == 'IN'">{{
+                    row.address.join('')
+                  }}</span>
+                  <select-area
+                    v-else
+                    v-model="row.address"
+                    value-type="full"
+                  ></select-area>
                 </template>
-                <template #f="{ row }">
-                  <t-input v-model="row.f" v-if="formData.a == '1'"></t-input>
-                  <span v-else>{{ row.f }}</span>
+                <template #basePhotoPath="{ row }">
+                  <my-upload :imgLength="1"></my-upload>
                 </template>
               </t-table>
               <t-button theme="primary" class="m-t-15px" @click="createOneRow">
@@ -82,17 +107,25 @@
 <script setup name="AddDeviceDialog">
 import { ref, watch } from 'vue';
 import { cloneDeep } from 'lodash';
-import { Icon } from 'tdesign-icons-vue-next';
+import { Icon, MessagePlugin } from 'tdesign-icons-vue-next';
+import useOptions from '@/hooks/useOptions';
+import { RUNNING_STATUS } from '@/config/constants';
+import { dictToOptionList } from '@/utils/tool';
+
+const { options: deviceOutOptions } = useOptions('deviceCanOut');
+const { options: deviceInOptions } = useOptions('deviceCanIn');
+
 const emit = defineEmits(['update:visible', 'success']);
+
 const formRef = ref(null);
 
 const props = defineProps({
   visible: Boolean,
 });
 let data = {
-  a: '1',
-  b: 2,
-  c: [],
+  inOutType: 'OUT',
+  inOutTime: '',
+  deviceInOutFormList: [],
 };
 const formData = ref(cloneDeep(data));
 watch(
@@ -101,6 +134,12 @@ watch(
     formData.value = cloneDeep(data);
   }
 );
+watch(
+  () => formData.inOutType,
+  () => {
+    tableData.value = [];
+  }
+);
 
 const columns = [
   {
@@ -112,35 +151,35 @@ const columns = [
   },
   {
     title: '设备编号',
-    colKey: 'a',
+    colKey: 'deviceNo',
     width: 150,
   },
   {
     title: '供应商',
-    colKey: 'b',
+    colKey: 'supplierName',
   },
   {
     title: '运行状态',
-    colKey: 'c',
-    width: 80,
+    colKey: 'deviceStatus',
+    width: 120,
   },
   {
     title: '总扫描量',
-    colKey: 'd',
-    width: 80,
+    colKey: 'scanCount',
+    width: 90,
   },
   {
     title: '当前所在地',
-    colKey: 'e',
+    colKey: 'location',
   },
   {
     title: '发往地',
-    colKey: 'f',
+    colKey: 'address',
   },
   {
     title: '快递单拍照',
-    colKey: 'g',
-    width: 100,
+    colKey: 'basePhotoPath',
+    width: 98,
   },
 ];
 const tableData = ref([]);
@@ -151,7 +190,15 @@ const resetKeys = () => {
 };
 
 const createOneRow = () => {
-  tableData.value.push({ a: '', b: '', c: '', d: '', e: '', f: '', g: '' });
+  tableData.value.push({
+    deviceNo: '',
+    supplierName: '',
+    deviceStatus: '',
+    scanCount: '',
+    location: '',
+    address: ['', '', ''],
+    basePhotoPath: '',
+  });
   resetKeys();
 };
 
@@ -161,9 +208,26 @@ const deleteRow = (row) => {
   tableData.value.splice(index, 1);
   resetKeys();
 };
-
+const validate = () => {
+  if (!tableData.value.length) {
+    MessagePlugin.error('请填写至少一条记录');
+    return false;
+  }
+  if (formData.inOutType === 'OUT') {
+    return tableData.value.every((item) => {
+      return item.deviceNo && item.address[2];
+    });
+  } else {
+    MessagePlugin.error('设备信息未填写完整');
+    return tableData.value.every((item) => {
+      return item.deviceNo && item.deviceStatus && item.scanCount;
+    });
+  }
+};
 const save = () => {
-  //ajax...
+  if (!validate()) {
+    return;
+  }
   emit('success');
 };
 </script>
@@ -185,5 +249,29 @@ const save = () => {
       }
     }
   }
+  :deep(.t-upload) {
+    .t-upload__card-content {
+      width: 80px;
+      height: 50px;
+    }
+    .t-upload__card-name {
+      display: none;
+    }
+    .t-upload__image-add {
+      .t-icon.t-icon-add {
+        margin-bottom: 0;
+      }
+      .t-size-s {
+        display: none;
+      }
+    }
+    .t-upload__card-container {
+      width: 80px;
+      height: 50px;
+    }
+    .t-upload__tips {
+      display: none;
+    }
+  }
 }
 </style>

+ 58 - 26
src/views/sop/sop-manage/device-out-in/index.vue

@@ -1,13 +1,20 @@
 <template>
   <div class="office-sop flex flex-col h-full">
-    <SearchForm :fields="fields" :params="params"></SearchForm>
+    <SearchForm :fields="fields" :params="params">
+      <template #service="{ item, params }">
+        <select-service-unit v-model="params[item.prop]"></select-service-unit>
+      </template>
+      <template #area>
+        <select-area v-model="params.address" value-type="full"></select-area>
+      </template>
+    </SearchForm>
 
     <div class="flex-1 page-wrap">
       <div class="btn-group">
         <t-button theme="success" @click="showAddDeviceDialog = true"
           >新增</t-button
         >
-        <t-button theme="success" :disabled="!selectedRowKeys.length"
+        <t-button theme="danger" :disabled="!selectedRowKeys.length"
           >作废</t-button
         >
       </div>
@@ -17,6 +24,7 @@
         :columns="columns"
         :data="tableData"
         bordered
+        v-loading="tableLoading"
         :pagination="{
           defaultCurrent: 1,
           defaultPageSize: 10,
@@ -35,10 +43,12 @@
 </template>
 
 <script setup lang="jsx" name="DeviceOutIn">
-import { ref, reactive } from 'vue';
-import { getTableData } from '@/api/test';
+import { ref, reactive, computed } from 'vue';
 import useFetchTable from '@/hooks/useFetchTable';
 import AddDeviceDialog from './add-device-dialog.vue';
+import { deviceOutInSearch } from '@/api/sop';
+import { omit } from 'lodash';
+
 const selectedRowKeys = ref([]);
 const selectChange = (value, { selectedRowData }) => {
   selectedRowKeys.value = value;
@@ -51,31 +61,35 @@ const columns = [
     width: 50,
     fixed: 'left',
   },
-  { colKey: 'a', title: '服务单元' },
-  { colKey: 'b', title: '出/入库时间' },
-  { colKey: 'c', title: '登记人' },
-  { colKey: 'd', title: '客户名称' },
-  { colKey: 'e', title: '出库/入库' },
-  { colKey: 'f', title: '设备编号' },
-  { colKey: 'g', title: '发往地' },
+  { colKey: 'serviceUnitName', title: '服务单元' },
+  { colKey: 'usageType', title: '用途类型' },
+  { colKey: 'deviceNo', title: '设备编号' },
+  { colKey: 'deviceStatus', title: '运行状态' },
+  { colKey: 'inOutTime', title: '出/入库时间', width: 150 },
+  { colKey: 'userName', title: '登记人' },
+  { colKey: 'customName', title: '客户名称' },
+  { colKey: 'inOutType', title: '出库/入库' },
+  { colKey: 'location', title: '当前地' },
+  { colKey: 'address', title: '发往地' },
 ];
 const fields = ref([
   {
-    prop: 'a',
+    prop: 'serviceUnitId',
     label: '服务单元',
     type: 'select',
     labelWidth: 100,
     colSpan: 5,
+    cell: 'service',
   },
   {
-    prop: 'b',
+    prop: 'time',
     label: '出/入库时间',
     type: 'daterange',
     labelWidth: 100,
     colSpan: 10,
   },
   {
-    prop: 'c',
+    prop: 'customName',
     label: '客户名称',
     labelWidth: 100,
     colSpan: 5,
@@ -83,36 +97,54 @@ const fields = ref([
   {
     type: 'buttons',
     colSpan: 2,
-    children: [{ type: 'button', text: '查询' }],
+    children: [
+      {
+        type: 'button',
+        text: '查询',
+        onClick: () => {
+          search();
+        },
+      },
+    ],
   },
   {
-    prop: 'd',
+    prop: 'deviceNo',
     label: '设备编号',
     labelWidth: 100,
     colSpan: 5,
   },
   {
-    prop: 'e',
+    prop: 'address',
     label: '发往地',
     labelWidth: 100,
-    colSpan: 5,
+    colSpan: 7,
+    cell: 'area',
   },
 ]);
 const params = reactive({
-  a: '',
-  b: [],
-  c: '',
-  d: '',
-  e: '',
+  serviceUnitId: '',
+  time: [],
+  customName: '',
+  deviceNo: '',
+  address: ['', '', ''],
+});
+const transParams = computed(() => {
+  return {
+    ...omit(params, ['time', 'address']),
+    inOutTimeStart: params.time[0],
+    inOutTimeEnd: params.time[1],
+    address: params.address,
+    deviceNo: params.deviceNo,
+    address: params.address.join(''),
+  };
 });
-
 const {
   loading: tableLoading,
   pagination,
   tableData,
-  fetchData,
+  search,
   onChange,
-} = useFetchTable(getTableData);
+} = useFetchTable(deviceOutInSearch, { params: transParams });
 </script>
 
 <style></style>

+ 1184 - 0
src/views/sop/sop-manage/test_all.js

@@ -0,0 +1,1184 @@
+export default  {
+    "id": "429304793329041408",
+    "flowDeploymentId": "429304793068994560",
+    "flowName": "officeSopFlow.bpmn",
+    "setupMap": {
+        "f_usertask_office_end_0": {
+            "taskName": "结束",
+            "taskKey": "f_usertask_office_end_0",
+            "setup": 0,
+            "formKey": null,
+            "formProperty": null,
+            "approveRejectList": null
+        },
+        "f_usertask_office_first_1": {
+            "taskName": "项目初审",
+            "taskKey": "f_usertask_office_first_1",
+            "setup": 1,
+            "formKey": "office_sop_first.form",
+            "formProperty": [
+                {
+                    "id": "18",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|project_basic_info_title",
+                    "formName": "f_usertask_office_first_1|project_basic_info_title",
+                    "title": "项目基本信息",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "19",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|course_count",
+                    "formName": "f_usertask_office_first_1|course_count",
+                    "title": "科目数量",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 6
+                },
+                {
+                    "id": "20",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|exam_student_course_count",
+                    "formName": "f_usertask_office_first_1|exam_student_course_count",
+                    "title": "考生科次",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 6
+                },
+                {
+                    "id": "21",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|exam_student_Internal_date",
+                    "formName": "f_usertask_office_first_1|exam_student_Internal_date",
+                    "title": "考生数据内部交接时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "22",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|exam_plan_date",
+                    "formName": "f_usertask_office_first_1|exam_plan_date",
+                    "title": "考试时间安排表获取时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "23",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|scan_count",
+                    "formName": "f_usertask_office_first_1|scan_count",
+                    "title": "扫描仪数量(台)",
+                    "inputType": "INT",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 6
+                },
+                {
+                    "id": "24",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|week_people_day",
+                    "formName": "f_usertask_office_first_1|week_people_day",
+                    "title": "现场标准服务周期(人天)",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 6
+                },
+                {
+                    "id": "25",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|project_key_info_date",
+                    "formName": "f_usertask_office_first_1|project_key_info_date",
+                    "title": "项目关键信息提交截止时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "26",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|service_finish_plan_date",
+                    "formName": "f_usertask_office_first_1|service_finish_plan_date",
+                    "title": "现场服务完成撤场计划时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "27",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|project_people_plan_title",
+                    "formName": "f_usertask_office_first_1|project_people_plan_title",
+                    "title": "项目人员安排及风险预估",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "28",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|region_user_id",
+                    "formName": "f_usertask_office_first_1|region_user_id",
+                    "title": "区域协调人",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 4
+                },
+                {
+                    "id": "29",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|engineer_user_id",
+                    "formName": "f_usertask_office_first_1|engineer_user_id",
+                    "title": "实施工程师",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 4
+                },
+                {
+                    "id": "30",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|assistant_engineer_user_id",
+                    "formName": "f_usertask_office_first_1|assistant_engineer_user_id",
+                    "title": "助理实施工程师",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 4
+                },
+                {
+                    "id": "31",
+                    "code": "ONLE_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|project_rish_title",
+                    "formName": "f_usertask_office_first_1|project_rish_title",
+                    "title": "项目风险预估(仅供参考)",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "普通标题,独占一行",
+                    "span": 12
+                },
+                {
+                    "id": "32",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|delay_rish_cb",
+                    "formName": "f_usertask_office_first_1|delay_rish_cb",
+                    "title": "延期风险",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 6,
+                    "options": "[{\"value\":\"LOW\",\"label\":\"低\"},{\"value\":\"MIDDLE\",\"label\":\"中\"},{\"value\":\"HIGH\",\"label\":\"高\"}]"
+                },
+                {
+                    "id": "33",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|engineer_rish_cb",
+                    "formName": "f_usertask_office_first_1|engineer_rish_cb",
+                    "title": "实施难度",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 6,
+                    "options": "[{\"value\":\"LOW\",\"label\":\"低\"},{\"value\":\"MIDDLE\",\"label\":\"中\"},{\"value\":\"HIGH\",\"label\":\"高\"}]"
+                },
+                {
+                    "id": "34",
+                    "code": "TEXTAREA",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|other_ramark",
+                    "formName": "f_usertask_office_first_1|other_ramark",
+                    "title": "其它备注(建议关注的其它方面)",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本域",
+                    "span": 12
+                },
+                {
+                    "id": "35",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|project_contacts_title",
+                    "formName": "f_usertask_office_first_1|project_contacts_title",
+                    "title": "项目联系人",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "36",
+                    "code": "TABLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_first_1|project_contacts_table",
+                    "formName": "f_usertask_office_first_1|project_contacts_table",
+                    "title": "项目联系人表格",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "表格",
+                    "span": 12,
+                    "tablePropList": [
+                        {
+                            "id": "1",
+                            "widgetId": "36",
+                            "tdIndex": 1,
+                            "tdId": "f_usertask_office_first_1|36|college",
+                            "tdName": "f_usertask_office_first_1|36|college",
+                            "title": "学院/分(子)机构",
+                            "tdOrder": true,
+                            "tdSearch": true,
+                            "editWidgetId": "37",
+                            "tdFormWidget": {
+                                "code": "TEXT",
+                                "name": "文本"
+                            }
+                        },
+                        {
+                            "id": "2",
+                            "widgetId": "36",
+                            "tdIndex": 2,
+                            "tdId": "f_usertask_office_first_1|36|name",
+                            "tdName": "f_usertask_office_first_1|36|name",
+                            "title": "姓名",
+                            "tdOrder": true,
+                            "tdSearch": true,
+                            "editWidgetId": "38",
+                            "tdFormWidget": {
+                                "code": "TEXT",
+                                "name": "文本"
+                            }
+                        },
+                        {
+                            "id": "3",
+                            "widgetId": "36",
+                            "tdIndex": 3,
+                            "tdId": "f_usertask_office_first_1|36|job",
+                            "tdName": "f_usertask_office_first_1|36|job",
+                            "title": "职务",
+                            "tdOrder": true,
+                            "tdSearch": true,
+                            "editWidgetId": "39",
+                            "tdFormWidget": {
+                                "code": "TEXT",
+                                "name": "文本"
+                            }
+                        },
+                        {
+                            "id": "4",
+                            "widgetId": "36",
+                            "tdIndex": 4,
+                            "tdId": "f_usertask_office_first_1|36|mobileNumber",
+                            "tdName": "f_usertask_office_first_1|36|mobileNumber",
+                            "title": "电话",
+                            "tdOrder": true,
+                            "tdSearch": true,
+                            "editWidgetId": "40",
+                            "tdFormWidget": {
+                                "code": "TEXT",
+                                "name": "文本"
+                            }
+                        }
+                    ]
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_information_2": {
+            "taskName": "项目关键信息",
+            "taskKey": "f_usertask_office_information_2",
+            "setup": 2,
+            "formKey": "office_sop_information.form",
+            "formProperty": [
+                {
+                    "id": "41",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|cloud_mark_title",
+                    "formName": "f_usertask_office_information_2|cloud_mark_title",
+                    "title": "云阅卷(填写前请先认真查阅移交的项目初审及项目基本信息)",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "42",
+                    "code": "RADIO",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|deploy_way_radio",
+                    "formName": "f_usertask_office_information_2|deploy_way_radio",
+                    "title": "部署方式",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "单选框",
+                    "span": 6,
+                    "options": "[{\"value\":\"ONLINE\",\"label\":\"线上部署\"},{\"value\":\"LOCAL\",\"label\":\"本地部署\"}]"
+                },
+                {
+                    "id": "43",
+                    "code": "RADIO",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|mark_way_radio",
+                    "formName": "f_usertask_office_information_2|mark_way_radio",
+                    "title": "阅卷方式",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "单选框",
+                    "span": 6,
+                    "options": "[{\"value\":\"TOGETHER\",\"label\":\"集中阅卷\"},{\"value\":\"ANYTIME\",\"label\":\"分散阅卷\"}]"
+                },
+                {
+                    "id": "44",
+                    "code": "RADIO",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|scan_net_radio",
+                    "formName": "f_usertask_office_information_2|scan_net_radio",
+                    "title": "扫描场地网络情况",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "单选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"INTERNET\",\"label\":\"提供外网\"},{\"value\":\"LOCALHOST\",\"label\":\"不提供外网\"}]"
+                },
+                {
+                    "id": "45",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|scan_start_time",
+                    "formName": "f_usertask_office_information_2|scan_start_time",
+                    "title": "扫描开始时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "46",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|scan_end_time",
+                    "formName": "f_usertask_office_information_2|scan_end_time",
+                    "title": "扫描结束时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "47",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|mark_start_time",
+                    "formName": "f_usertask_office_information_2|mark_start_time",
+                    "title": "评卷开始时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "48",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|mark_end_time",
+                    "formName": "f_usertask_office_information_2|mark_end_time",
+                    "title": "评卷结束时间",
+                    "inputType": "LONG",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "49",
+                    "code": "TEXTAREA",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|ramark",
+                    "formName": "f_usertask_office_information_2|ramark",
+                    "title": "其它特殊要求",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本域",
+                    "span": 12
+                },
+                {
+                    "id": "50",
+                    "code": "FILE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_information_2|exam_plan_photos",
+                    "formName": "f_usertask_office_information_2|exam_plan_photos",
+                    "title": "考试时间安排表拍照上传",
+                    "inputType": "ARRAY",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "length": 5,
+                    "name": "文件",
+                    "span": 12
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_inside_approve_3": {
+            "taskName": "项目内审",
+            "taskKey": "f_usertask_office_inside_approve_3",
+            "setup": 3,
+            "formKey": "office_sop_inside_approve.form",
+            "formProperty": [
+                {
+                    "id": "51",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_inside_approve_3|inside_title",
+                    "formName": "f_usertask_office_inside_approve_3|inside_title",
+                    "title": "项目内审(请于24小时内完成内审",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "52",
+                    "code": "RADIO",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_inside_approve_3|approve_radio",
+                    "formName": "f_usertask_office_inside_approve_3|approve_radio",
+                    "title": "我对以上项目关键信息已审核,确认内容无误:",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "单选框",
+                    "span": 9,
+                    "options": "[{\"value\":\"1\",\"label\":\"同意\"},{\"value\":\"0\",\"label\":\"不同意\"}]"
+                },
+                {
+                    "id": "53",
+                    "code": "SIGN",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_inside_approve_3|sign",
+                    "formName": "f_usertask_office_inside_approve_3|sign",
+                    "title": "添加签名",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "签名",
+                    "span": 3
+                },
+                {
+                    "id": "54",
+                    "code": "TEXTAREA",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_inside_approve_3|approve_ramark",
+                    "formName": "f_usertask_office_inside_approve_3|approve_ramark",
+                    "title": "审批意见",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本域",
+                    "span": 9
+                }
+            ],
+            "approveRejectList": [
+                {
+                    "afterFlowTaskKey": "f_usertask_office_information_2",
+                    "setup": 2
+                }
+            ]
+        },
+        "f_usertask_office_device_out_4": {
+            "taskName": "设备出库登记",
+            "taskKey": "f_usertask_office_device_out_4",
+            "setup": 4,
+            "formKey": "office_sop_device_out.form",
+            "formProperty": [
+                {
+                    "id": "55",
+                    "code": "LABEL",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_device_out_4|device_in_out_label",
+                    "formName": "f_usertask_office_device_out_4|device_in_out_label",
+                    "title": "设备出入库",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "value": "出库",
+                    "name": "标签",
+                    "span": 6
+                },
+                {
+                    "id": "56",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_device_out_4|device_out_time",
+                    "formName": "f_usertask_office_device_out_4|device_out_time",
+                    "title": "设备出库时间",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "57",
+                    "code": "DEVICE_OUT_TABLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_device_out_4|device_out_table",
+                    "formName": "f_usertask_office_device_out_4|device_out_table",
+                    "title": "设备出库表格",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "设备出库表格",
+                    "span": 12
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_scan_ready_5": {
+            "taskName": "扫描准备",
+            "taskKey": "f_usertask_office_scan_ready_5",
+            "setup": 5,
+            "formKey": "office_sop_scan_ready.form",
+            "formProperty": [
+                {
+                    "id": "58",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|import_data_title",
+                    "formName": "f_usertask_office_scan_ready_5|import_data_title",
+                    "title": "导入数据",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "59",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|data_same",
+                    "formName": "f_usertask_office_scan_ready_5|data_same",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 6,
+                    "options": "[{\"value\":\"true\",\"label\":\"导入数据与原始数据是否一致\"}]"
+                },
+                {
+                    "id": "60",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|import_exam_student_count",
+                    "formName": "f_usertask_office_scan_ready_5|import_exam_student_count",
+                    "title": "导入考生数量",
+                    "inputType": "INT",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 6
+                },
+                {
+                    "id": "61",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|scan_set_title",
+                    "formName": "f_usertask_office_scan_ready_5|scan_set_title",
+                    "title": "扫描仪设置",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "62",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|scan_set_cb",
+                    "formName": "f_usertask_office_scan_ready_5|scan_set_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"1\",\"label\":\"1、扫描仪分辨率设置是否150、扫描模式是否双面、图像类型是否灰度\"},{\"value\":\"2\",\"label\":\"2、选择“扫描模式”-“设置”-“装订边缘”-“上”\"}]"
+                },
+                {
+                    "id": "63",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|card_format_title",
+                    "formName": "f_usertask_office_scan_ready_5|card_format_title",
+                    "title": "卡格式制作",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "64",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_ready_5|card_format_cb",
+                    "formName": "f_usertask_office_scan_ready_5|card_format_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"1\",\"label\":\"1、定位点、校验点是否制作\"},{\"value\":\"2\",\"label\":\"2、缺考区域是否框选\"},{\"value\":\"3\",\"label\":\"3、客观题区域是否正确框选、行列以及单选多选是否正确\"},{\"value\":\"4\",\"label\":\"4、条码识别区是否制作\"},{\"value\":\"5\",\"label\":\"5、屏蔽区是否制作\"},{\"value\":\"6\",\"label\":\"6、卷型:若有,则框选\"},{\"value\":\"7\",\"label\":\"7、页码:若答题卡超过1张,则框选\"}]"
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_scan_6": {
+            "taskName": "正式扫描",
+            "taskKey": "f_usertask_office_scan_6",
+            "setup": 6,
+            "formKey": "office_sop_scan.form",
+            "formProperty": [
+                {
+                    "id": "65",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_6|scan_test_title",
+                    "formName": "f_usertask_office_scan_6|scan_test_title",
+                    "title": "试扫检查",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "66",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_scan_6|scan_test_cb",
+                    "formName": "f_usertask_office_scan_6|scan_test_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"1\",\"label\":\"1、查看条码是否识别正确\"},{\"value\":\"2\",\"label\":\"2、缺考、客观题是否识别正确\"},{\"value\":\"3\",\"label\":\"3、扫描原图正反面是否正确显示\"},{\"value\":\"4\",\"label\":\"4、裁切图屏蔽区是否正确\"},{\"value\":\"5\",\"label\":\"5、卷型:若有,是否识别正确\"},{\"value\":\"6\",\"label\":\"6、页码:若答题卡超过1张,是否页码识别正确\"}]"
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_check_final_7": {
+            "taskName": "校验收尾",
+            "taskKey": "f_usertask_office_check_final_7",
+            "setup": 7,
+            "formKey": "office_sop_check_final.form",
+            "formProperty": [
+                {
+                    "id": "67",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|un_upload_exam_student_title",
+                    "formName": "f_usertask_office_check_final_7|un_upload_exam_student_title",
+                    "title": "未上传考生核对",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "68",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|un_upload_exam_student_cb",
+                    "formName": "f_usertask_office_check_final_7|un_upload_exam_student_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 9,
+                    "options": "[{\"value\":\"1\",\"label\":\"1、未上传考生是否与签到表进行核对,是否为缺考、违纪、免考等情况\"},{\"value\":\"2\",\"label\":\"2、是否将未上传考生发给学校确认\"}]"
+                },
+                {
+                    "id": "69",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|finish_count",
+                    "formName": "f_usertask_office_check_final_7|finish_count",
+                    "title": "完成数量",
+                    "inputType": "INT",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 3
+                },
+                {
+                    "id": "70",
+                    "code": "FILE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|upload_file_un_upload_exam_student_photo",
+                    "formName": "f_usertask_office_check_final_7|upload_file_un_upload_exam_student_photo",
+                    "title": "上传学校未上传考生沟通确认截图",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文件",
+                    "span": 12
+                },
+                {
+                    "id": "71",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|Identify_title",
+                    "formName": "f_usertask_office_check_final_7|Identify_title",
+                    "title": "识别对照",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "72",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|Identify_cb",
+                    "formName": "f_usertask_office_check_final_7|Identify_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"true\",\"label\":\"是否将客观题识别异常的全部人工修改处理\"}]"
+                },
+                {
+                    "id": "73",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|absent_exam_student_title",
+                    "formName": "f_usertask_office_check_final_7|absent_exam_student_title",
+                    "title": "缺考名单比对",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "74",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|absent_exam_student_cb",
+                    "formName": "f_usertask_office_check_final_7|absent_exam_student_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"true\",\"label\":\"核对未上传条数是否与学校提供的缺考名单吻合,人工指定为缺考(考生管理>导入名单>导入缺考名单)\"}]"
+                },
+                {
+                    "id": "75",
+                    "code": "TEXT",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|absent_count",
+                    "formName": "f_usertask_office_check_final_7|absent_count",
+                    "title": "缺考科次数量",
+                    "inputType": "INT",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "文本",
+                    "span": 6
+                },
+                {
+                    "id": "76",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|manual_code_title",
+                    "formName": "f_usertask_office_check_final_7|manual_code_title",
+                    "title": "手工输入条码确认",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "77",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_check_final_7|manual_code_cb",
+                    "formName": "f_usertask_office_check_final_7|manual_code_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"true\",\"label\":\"“数据检查” -“人工确认”,“确认完成”}]"
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_mark_prep_8": {
+            "taskName": "评卷准备",
+            "taskKey": "f_usertask_office_mark_prep_8",
+            "setup": 8,
+            "formKey": "office_sop_mark_prep.form",
+            "formProperty": [
+                {
+                    "id": "78",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_prep_8|mark_model_title",
+                    "formName": "f_usertask_office_mark_prep_8|mark_model_title",
+                    "title": "评卷模式确认",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "79",
+                    "code": "RADIO",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_prep_8|mark_model_radio",
+                    "formName": "f_usertask_office_mark_prep_8|mark_model_radio",
+                    "title": "评卷模式",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "单选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"TRAIL\",\"label\":\"轨迹模式\"},{\"value\":\"NORMAL\",\"label\":\"普通模式\"}]"
+                },
+                {
+                    "id": "80",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_prep_8|mark_params_title",
+                    "formName": "f_usertask_office_mark_prep_8|mark_params_title",
+                    "title": "评卷参数核对",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "81",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_prep_8|mark_params_cb",
+                    "formName": "f_usertask_office_mark_prep_8|mark_params_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"1\",\"label\":\"1、核查每个科目的满分是否正确(大部分科目都是100分)\"},{\"value\":\"2\",\"label\":\"2、核对客观题标答以及分数是否录入正确、多选题判分规则(漏选是否得分、任选得分)\"},{\"value\":\"3\",\"label\":\"检查所有科目结构和分组是否全部导入。(评卷管理>评卷进度查看分组状态)\"}]"
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_mark_final_9": {
+            "taskName": "评卷收尾",
+            "taskKey": "f_usertask_office_mark_final_9",
+            "setup": 9,
+            "formKey": "office_sop_mark_final.form",
+            "formProperty": [
+                {
+                    "id": "82",
+                    "code": "FORM_GROUP_TITLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_final_9|mark_submit_title",
+                    "formName": "f_usertask_office_mark_final_9|mark_submit_title",
+                    "title": "成绩提交核查",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "name": "带虚线分割线的标题",
+                    "span": 12
+                },
+                {
+                    "id": "83",
+                    "code": "CHECKBOX",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_final_9|mark_submit_cb",
+                    "formName": "f_usertask_office_mark_final_9|mark_submit_cb",
+                    "inputType": "STRING",
+                    "required": true,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "复选框",
+                    "span": 12,
+                    "options": "[{\"value\":\"1\",\"label\":\"1、是否已核对不缺考、客观题为0分的情况\"},{\"value\":\"2\",\"label\":\"2、是否已核对主观题为0、客观题有分的情况\"},{\"value\":\"3\",\"label\":\"3、是否检查客观题小题得分率低于20%的情况\"},{\"value\":\"4\",\"label\":\"4、核对导出成绩表数据条数是否与考生表数量一致,不能带有“未导出全量数据”字样;请填写导出成绩数量以及完成时间\"},{\"value\":\"5\",\"label\":\"5、核对导出图片工具是否正常运行\"}]"
+                },
+                {
+                    "id": "84",
+                    "code": "FILE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_mark_final_9|upload_success_photos",
+                    "formName": "f_usertask_office_mark_final_9|upload_success_photos",
+                    "title": "上传验收报告(纸质)拍照",
+                    "inputType": "ARRAY",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "length": 5,
+                    "name": "文件",
+                    "span": 12
+                }
+            ],
+            "approveRejectList": null
+        },
+        "f_usertask_office_device_in_10": {
+            "taskName": "设备入库登记",
+            "taskKey": "f_usertask_office_device_in_10",
+            "setup": 10,
+            "formKey": "office_sop_device_in.form",
+            "formProperty": [
+                {
+                    "id": "85",
+                    "code": "LABEL",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_device_in_10|device_in_out_label",
+                    "formName": "f_usertask_office_device_in_10|device_in_out_label",
+                    "title": "设备出入库",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": true,
+                    "writable": false,
+                    "visable": true,
+                    "value": "入库",
+                    "name": "标签",
+                    "span": 6
+                },
+                {
+                    "id": "86",
+                    "code": "DATE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_device_in_10|device_in_time",
+                    "formName": "f_usertask_office_device_in_10|device_in_time",
+                    "title": "设备入库时间",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "format": "yyyy-MM-dd",
+                    "name": "日期",
+                    "span": 6
+                },
+                {
+                    "id": "87",
+                    "code": "DEVICE_IN_TABLE",
+                    "type": "FORM",
+                    "formId": "f_usertask_office_device_in_10|device_in_table",
+                    "formName": "f_usertask_office_device_in_10|device_in_table",
+                    "title": "设备入库表格",
+                    "inputType": "STRING",
+                    "required": false,
+                    "readable": false,
+                    "writable": true,
+                    "visable": true,
+                    "name": "设备入库表格",
+                    "span": 12
+                }
+            ],
+            "approveRejectList": null
+        }
+    },
+    "version": 1
+}